Version 2.9.0-10.0.dev
Merge commit '86edfbef87b5207a48a0eff386f4dd48bf320f18' into dev
diff --git a/.dart_tool/package_config.json b/.dart_tool/package_config.json
index 7f75303..7f8a7ba 100644
--- a/.dart_tool/package_config.json
+++ b/.dart_tool/package_config.json
@@ -11,7 +11,7 @@
"constraint, update this by running tools/generate_package_config.dart."
],
"configVersion": 2,
- "generated": "2020-04-27T16:42:25.459210",
+ "generated": "2020-05-15T15:16:14.438097",
"generator": "tools/generate_package_config.dart",
"packages": [
{
@@ -36,7 +36,7 @@
"name": "analysis_server_client",
"rootUri": "../pkg/analysis_server_client",
"packageUri": "lib/",
- "languageVersion": "2.1"
+ "languageVersion": "2.8"
},
{
"name": "analysis_tool",
@@ -137,7 +137,7 @@
"name": "crypto",
"rootUri": "../third_party/pkg/crypto",
"packageUri": "lib/",
- "languageVersion": "2.0"
+ "languageVersion": "2.3"
},
{
"name": "csslib",
@@ -191,7 +191,7 @@
"name": "dartfix",
"rootUri": "../pkg/dartfix",
"packageUri": "lib/",
- "languageVersion": "2.3"
+ "languageVersion": "2.8"
},
{
"name": "dds",
@@ -255,6 +255,11 @@
"packageUri": ".nonexisting/"
},
{
+ "name": "front_end_nnbd_mixed",
+ "rootUri": "../pkg/front_end/testcases/nnbd_mixed",
+ "packageUri": ".nonexisting/"
+ },
+ {
"name": "front_end_nonfunction_type_aliases",
"rootUri": "../pkg/front_end/testcases/nonfunction_type_aliases",
"packageUri": ".nonexisting/"
@@ -266,12 +271,6 @@
"languageVersion": "2.7"
},
{
- "name": "gardening",
- "rootUri": "../tools/gardening",
- "packageUri": "lib/",
- "languageVersion": "2.7"
- },
- {
"name": "glob",
"rootUri": "../third_party/pkg/glob",
"packageUri": "lib/",
@@ -305,7 +304,7 @@
"name": "http_parser",
"rootUri": "../third_party/pkg/http_parser",
"packageUri": "lib/",
- "languageVersion": "2.0"
+ "languageVersion": "2.3"
},
{
"name": "http_retry",
@@ -328,8 +327,7 @@
{
"name": "js",
"rootUri": "../pkg/js",
- "packageUri": "lib/",
- "languageVersion": "2.0"
+ "packageUri": "lib/"
},
{
"name": "js_ast",
@@ -585,7 +583,7 @@
"name": "string_scanner",
"rootUri": "../third_party/pkg/string_scanner",
"packageUri": "lib/",
- "languageVersion": "1.8"
+ "languageVersion": "2.0"
},
{
"name": "telemetry",
diff --git a/.packages b/.packages
index 8835444..368824f 100644
--- a/.packages
+++ b/.packages
@@ -44,7 +44,6 @@
fixnum:third_party/pkg/fixnum/lib
frontend_server:pkg/frontend_server/lib
front_end:pkg/front_end/lib
-gardening:tools/gardening/lib
glob:third_party/pkg/glob/lib
html:third_party/pkg/html/lib
http:third_party/pkg/http/lib
diff --git a/BUILD.gn b/BUILD.gn
index e2d4d23..8e24f90 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -90,6 +90,16 @@
}
}
+if (dont_use_nnbd) {
+ group("create_platform_sdk") {
+ public_deps = [ "sdk:create_platform_sdk" ]
+ }
+} else {
+ group("create_platform_sdk") {
+ public_deps = [ "sdk_nnbd:create_platform_sdk" ]
+ }
+}
+
group("dart2js") {
deps = [ "utils/compiler:dart2js" ]
}
diff --git a/CHANGELOG.md b/CHANGELOG.md
index ae01df3..a233ee1 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -68,6 +68,13 @@
### Dart VM
+## 2.8.2 - 2020-05-13
+
+This is a patch release that fixes an AOT compilation bug in global
+transformations which manifests as a NoSuchMethod exception
+(issue [flutter/flutter#56479][]).
+
+[flutter/flutter#56479]: https://github.com/flutter/flutter/issues/56479
## 2.8.1 - 2020-05-06
@@ -279,6 +286,10 @@
`runZonedGuarded()` functions from `dart:async` directly if needing to
specify those.
+* Class `HttpClient` and `HttpServer`, when receiving `HttpRequest` or
+ `HttpClientResponse`, will now put a 8K size limit on its header fields and
+ values.
+
[#33501]: https://github.com/dart-lang/sdk/issues/33501
[#40702]: https://github.com/dart-lang/sdk/issues/40702
[#40483]: https://github.com/dart-lang/sdk/issues/40483
diff --git a/DEPS b/DEPS
index 54149ac..9ba1668 100644
--- a/DEPS
+++ b/DEPS
@@ -44,7 +44,7 @@
# hashes. It requires access to the dart-build-access group, which EngProd
# has.
"co19_rev": "f65f3578f95415c9a2f3ad002aac7b507549e64a",
- "co19_2_rev": "368bfa9e877a2df003547f64bb17e30596af10c7",
+ "co19_2_rev": "ef2cb6474595d3ed60870e1a26e8913a980d6d59",
# As Flutter does, we use Fuchsia's GN and Clang toolchain. These revision
# should be kept up to date with the revisions pulled by the Flutter engine.
@@ -115,7 +115,7 @@
"mockito_tag": "d39ac507483b9891165e422ec98d9fb480037c8b",
"mustache_tag": "664737ecad027e6b96d0d1e627257efa0e46fcb1",
"oauth2_tag": "1.6.0",
- "package_config_tag": "v1.9.2",
+ "package_config_tag": "9c586d04bd26fef01215fd10e7ab96a3050cfa64",
"path_tag": "4b8c83cd5ccfcc8101acd2940ffb5a44d24ec57e",
"pedantic_tag": "v1.9.0",
"ply_rev": "604b32590ffad5cbb82e4afef1d305512d06ae93",
diff --git a/PRESUBMIT.py b/PRESUBMIT.py
index 60c449a..4b5138d 100644
--- a/PRESUBMIT.py
+++ b/PRESUBMIT.py
@@ -337,6 +337,36 @@
]
+def _CheckTestMatrixValid(input_api, output_api):
+ """Run script to check that the test matrix has no errors."""
+
+ def test_matrix_filter(affected_file):
+ """Only run test if either the test matrix or the code that
+ validates it was modified."""
+ path = affected_file.LocalPath()
+ return (path == 'tools/bots/test_matrix.json' or
+ path == 'tools/validate_test_matrix.dart' or
+ path.startswith('pkg/smith/'))
+
+ if len(
+ input_api.AffectedFiles(
+ include_deletes=False, file_filter=test_matrix_filter)) == 0:
+ return []
+
+ command = [
+ 'tools/sdks/dart-sdk/bin/dart',
+ 'tools/validate_test_matrix.dart',
+ ]
+ stdout = input_api.subprocess.check_output(command).strip()
+ if not stdout:
+ return []
+ else:
+ return [
+ output_api.PresubmitError(
+ 'The test matrix is not valid:', long_text=stdout)
+ ]
+
+
def _CommonChecks(input_api, output_api):
results = []
results.extend(_CheckNnbdSdkSync(input_api, output_api))
@@ -347,6 +377,7 @@
results.extend(_CheckStatusFiles(input_api, output_api))
results.extend(_CheckLayering(input_api, output_api))
results.extend(_CheckClangTidy(input_api, output_api))
+ results.extend(_CheckTestMatrixValid(input_api, output_api))
results.extend(
input_api.canned_checks.CheckPatchFormatted(input_api, output_api))
return results
diff --git a/WATCHLISTS b/WATCHLISTS
index e587f14..a0c46b6 100644
--- a/WATCHLISTS
+++ b/WATCHLISTS
@@ -32,6 +32,14 @@
'^tests/compiler/dart2js'
)
},
+ 'dartdevc': {
+ 'filepath': (
+ '^pkg/dev_compiler|'
+ '^sdk/lib/_internal/js_dev_runtime|'
+ '^sdk_nnbd/lib/_internal/js_dev_runtime|'
+ '^tests/compiler/dartdevc_native'
+ )
+ },
'package_vm': {
'filepath': '^pkg/vm/',
},
@@ -68,8 +76,8 @@
'WATCHLISTS': {
'build': [ 'keertip@google.com' ],
- 'dart2js': [ 'sigmund@google.com', 'sra@google.com',
- 'fishythefish@google.com', 'joshualitt@google.com' ],
+ 'dart2js': [ 'dart2js-team+reviews@google.com' ],
+ 'dartdevc': [ 'dart-dc-team+reviews@google.com' ],
'front_end': [ 'dart-fe-team+reviews@google.com' ],
'kernel': [ 'jensj@google.com', 'alexmarkov@google.com' ],
'messages_review': [ 'dart-uxr+reviews@google.com' ],
diff --git a/pkg/_fe_analyzer_shared/lib/src/flow_analysis/factory_type_test_helper.dart b/pkg/_fe_analyzer_shared/lib/src/flow_analysis/factory_type_test_helper.dart
index 1980d46..2ab3414 100644
--- a/pkg/_fe_analyzer_shared/lib/src/flow_analysis/factory_type_test_helper.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/flow_analysis/factory_type_test_helper.dart
@@ -110,8 +110,8 @@
void expect(Type T, Type S, String actualResult, String expectedResult);
void check(Type T, Type S, String expectedStr) {
- var result = factor(T, S);
- var resultStr = typeString(result);
+ Type result = factor(T, S);
+ String resultStr = typeString(result);
expect(T, S, resultStr, expectedStr);
}
diff --git a/pkg/_fe_analyzer_shared/lib/src/flow_analysis/flow_analysis.dart b/pkg/_fe_analyzer_shared/lib/src/flow_analysis/flow_analysis.dart
index 3eb33ac..80e6bc4 100644
--- a/pkg/_fe_analyzer_shared/lib/src/flow_analysis/flow_analysis.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/flow_analysis/flow_analysis.dart
@@ -1244,7 +1244,7 @@
if (newVariableInfo == null) return this;
- return FlowModel<Variable, Type>._(reachable, newVariableInfo);
+ return new FlowModel<Variable, Type>._(reachable, newVariableInfo);
}
/// Updates the state to indicate that the given [writtenVariables] are no
@@ -2065,8 +2065,8 @@
bool skipped2 = false;
List<Type> result;
while (index1 < chain1.length && index2 < chain2.length) {
- var type1 = chain1[index1];
- var type2 = chain2[index2];
+ Type type1 = chain1[index1];
+ Type type2 = chain2[index2];
if (typeOperations.isSameType(type1, type2)) {
result ??= <Type>[];
result.add(type1);
@@ -2838,7 +2838,7 @@
void whileStatement_end() {
_WhileContext<Variable, Type> context =
_stack.removeLast() as _WhileContext<Variable, Type>;
- var afterBody = _current;
+ FlowModel<Variable, Type> afterBody = _current;
_current = _join(context._conditionInfo.ifFalse, context._breakModel);
_current = _current.joinUnassigned(other: afterBody);
}
diff --git a/pkg/_fe_analyzer_shared/lib/src/messages/codes.dart b/pkg/_fe_analyzer_shared/lib/src/messages/codes.dart
index 743f67d..ddece0f 100644
--- a/pkg/_fe_analyzer_shared/lib/src/messages/codes.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/messages/codes.dart
@@ -12,9 +12,7 @@
import 'severity.dart' show Severity;
-import '../util/relativize.dart' show isWindows;
-
-import '../util/relativize.dart' as util show relativizeUri;
+import '../util/relativize.dart' as util show isWindows, relativizeUri;
part 'codes_generated.dart';
@@ -275,7 +273,7 @@
// (otherwise, we might get an `UNUSED_IMPORT` warning).
//
// 2. We can change `base` argument here if needed.
- return uri == null ? null : util.relativizeUri(Uri.base, uri, isWindows);
+ return uri == null ? null : util.relativizeUri(Uri.base, uri, util.isWindows);
}
typedef SummaryTemplate = Message Function(int, int, num, num, num);
diff --git a/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart b/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart
index 8f062d2..31de7c2 100644
--- a/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart
@@ -7844,6 +7844,15 @@
tip: r"""Try removing the keyword 'static'.""");
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Code<Null> codeStrongModeNNBDButOptOut = messageStrongModeNNBDButOptOut;
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const MessageCode messageStrongModeNNBDButOptOut = const MessageCode(
+ "StrongModeNNBDButOptOut",
+ message:
+ r"""A library can't opt out of non-nullable by default, when in nnbd-strong mode.""");
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
const Code<Null> codeSuperAsExpression = messageSuperAsExpression;
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
diff --git a/pkg/_fe_analyzer_shared/lib/src/parser/forwarding_listener.dart b/pkg/_fe_analyzer_shared/lib/src/parser/forwarding_listener.dart
index a241b0f..c738205 100644
--- a/pkg/_fe_analyzer_shared/lib/src/parser/forwarding_listener.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/parser/forwarding_listener.dart
@@ -534,10 +534,17 @@
}
@override
- void endClassFields(Token staticToken, Token covariantToken, Token lateToken,
- Token varFinalOrConst, int count, Token beginToken, Token endToken) {
- listener?.endClassFields(staticToken, covariantToken, lateToken,
- varFinalOrConst, count, beginToken, endToken);
+ void endClassFields(
+ Token externalToken,
+ Token staticToken,
+ Token covariantToken,
+ Token lateToken,
+ Token varFinalOrConst,
+ int count,
+ Token beginToken,
+ Token endToken) {
+ listener?.endClassFields(externalToken, staticToken, covariantToken,
+ lateToken, varFinalOrConst, count, beginToken, endToken);
}
@override
@@ -641,6 +648,7 @@
@override
void endExtensionFields(
+ Token externalToken,
Token staticToken,
Token covariantToken,
Token lateToken,
@@ -648,8 +656,8 @@
int count,
Token beginToken,
Token endToken) {
- listener?.endExtensionFields(staticToken, covariantToken, lateToken,
- varFinalOrConst, count, beginToken, endToken);
+ listener?.endExtensionFields(externalToken, staticToken, covariantToken,
+ lateToken, varFinalOrConst, count, beginToken, endToken);
}
@override
@@ -866,10 +874,17 @@
}
@override
- void endMixinFields(Token staticToken, Token covariantToken, Token lateToken,
- Token varFinalOrConst, int count, Token beginToken, Token endToken) {
- listener?.endMixinFields(staticToken, covariantToken, lateToken,
- varFinalOrConst, count, beginToken, endToken);
+ void endMixinFields(
+ Token externalToken,
+ Token staticToken,
+ Token covariantToken,
+ Token lateToken,
+ Token varFinalOrConst,
+ int count,
+ Token beginToken,
+ Token endToken) {
+ listener?.endMixinFields(externalToken, staticToken, covariantToken,
+ lateToken, varFinalOrConst, count, beginToken, endToken);
}
@override
@@ -969,6 +984,7 @@
@override
void endTopLevelFields(
+ Token externalToken,
Token staticToken,
Token covariantToken,
Token lateToken,
@@ -976,8 +992,8 @@
int count,
Token beginToken,
Token endToken) {
- listener?.endTopLevelFields(staticToken, covariantToken, lateToken,
- varFinalOrConst, count, beginToken, endToken);
+ listener?.endTopLevelFields(externalToken, staticToken, covariantToken,
+ lateToken, varFinalOrConst, count, beginToken, endToken);
}
@override
diff --git a/pkg/_fe_analyzer_shared/lib/src/parser/listener.dart b/pkg/_fe_analyzer_shared/lib/src/parser/listener.dart
index d284d8a..479289a 100644
--- a/pkg/_fe_analyzer_shared/lib/src/parser/listener.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/parser/listener.dart
@@ -366,8 +366,15 @@
/// - Variable declarations (count times)
///
/// Doesn't have a corresponding begin event, use [beginMember] instead.
- void endClassFields(Token staticToken, Token covariantToken, Token lateToken,
- Token varFinalOrConst, int count, Token beginToken, Token endToken) {
+ void endClassFields(
+ Token externalToken,
+ Token staticToken,
+ Token covariantToken,
+ Token lateToken,
+ Token varFinalOrConst,
+ int count,
+ Token beginToken,
+ Token endToken) {
logEvent("Fields");
}
@@ -378,11 +385,18 @@
/// - Variable declarations (count times)
///
/// Doesn't have a corresponding begin event, use [beginMember] instead.
- void endMixinFields(Token staticToken, Token covariantToken, Token lateToken,
- Token varFinalOrConst, int count, Token beginToken, Token endToken) {
+ void endMixinFields(
+ Token externalToken,
+ Token staticToken,
+ Token covariantToken,
+ Token lateToken,
+ Token varFinalOrConst,
+ int count,
+ Token beginToken,
+ Token endToken) {
// TODO(danrubel): push implementation into subclasses
- endClassFields(staticToken, covariantToken, lateToken, varFinalOrConst,
- count, beginToken, endToken);
+ endClassFields(externalToken, staticToken, covariantToken, lateToken,
+ varFinalOrConst, count, beginToken, endToken);
}
/// Handle the end of a extension field declaration. Substructures:
@@ -393,6 +407,7 @@
///
/// Doesn't have a corresponding begin event, use [beginMember] instead.
void endExtensionFields(
+ Token externalToken,
Token staticToken,
Token covariantToken,
Token lateToken,
@@ -401,8 +416,8 @@
Token beginToken,
Token endToken) {
// TODO(danrubel): push implementation into subclasses
- endClassFields(staticToken, covariantToken, lateToken, varFinalOrConst,
- count, beginToken, endToken);
+ endClassFields(externalToken, staticToken, covariantToken, lateToken,
+ varFinalOrConst, count, beginToken, endToken);
}
/// Marks that the grammar term `forInitializerStatement` has been parsed and
@@ -1089,6 +1104,7 @@
/// Doesn't have a corresponding begin event.
/// Use [beginTopLevelMember] instead.
void endTopLevelFields(
+ Token externalToken,
Token staticToken,
Token covariantToken,
Token lateToken,
diff --git a/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart b/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart
index 6ed311f..2f50fa0 100644
--- a/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart
@@ -4,8 +4,6 @@
library _fe_analyzer_shared.parser.parser;
-import '../messages/codes.dart' show Message, Template;
-
import '../messages/codes.dart' as codes;
import '../scanner/scanner.dart' show ErrorToken, Token;
@@ -1305,7 +1303,7 @@
/// Return the message that should be produced when the formal parameters are
/// missing.
- Message missingParameterMessage(MemberKind kind) {
+ codes.Message missingParameterMessage(MemberKind kind) {
if (kind == MemberKind.FunctionTypeAlias) {
return codes.messageMissingTypedefParameters;
} else if (kind == MemberKind.NonStaticMethod ||
@@ -2188,7 +2186,7 @@
/// message based on the given [context]. Return the synthetic identifier that
/// was inserted.
Token insertSyntheticIdentifier(Token token, IdentifierContext context,
- {Message message, Token messageOnToken}) {
+ {codes.Message message, Token messageOnToken}) {
Token next = token.next;
reportRecoverableError(messageOnToken ?? next,
message ?? context.recoveryTemplate.withArguments(next));
@@ -2458,9 +2456,6 @@
DeclarationKind kind,
String enclosingDeclarationName,
bool nameIsRecovered) {
- if (externalToken != null) {
- reportRecoverableError(externalToken, codes.messageExternalField);
- }
// Covariant affects only the setter and final fields do not have a setter,
// unless it's a late field (dartbug.com/40805).
// Field that are covariant late final with initializers are checked further
@@ -2503,12 +2498,12 @@
}
int fieldCount = 1;
- token = parseFieldInitializerOpt(
- name, name, lateToken, varFinalOrConst, kind, enclosingDeclarationName);
+ token = parseFieldInitializerOpt(name, name, lateToken, externalToken,
+ varFinalOrConst, kind, enclosingDeclarationName);
while (optional(',', token.next)) {
name = ensureIdentifier(token.next, context);
- token = parseFieldInitializerOpt(name, name, lateToken, varFinalOrConst,
- kind, enclosingDeclarationName);
+ token = parseFieldInitializerOpt(name, name, lateToken, externalToken,
+ varFinalOrConst, kind, enclosingDeclarationName);
++fieldCount;
}
Token semicolon = token.next;
@@ -2534,24 +2529,24 @@
}
switch (kind) {
case DeclarationKind.TopLevel:
- listener.endTopLevelFields(staticToken, covariantToken, lateToken,
- varFinalOrConst, fieldCount, beforeStart.next, token);
+ listener.endTopLevelFields(externalToken, staticToken, covariantToken,
+ lateToken, varFinalOrConst, fieldCount, beforeStart.next, token);
break;
case DeclarationKind.Class:
- listener.endClassFields(staticToken, covariantToken, lateToken,
- varFinalOrConst, fieldCount, beforeStart.next, token);
+ listener.endClassFields(externalToken, staticToken, covariantToken,
+ lateToken, varFinalOrConst, fieldCount, beforeStart.next, token);
break;
case DeclarationKind.Mixin:
- listener.endMixinFields(staticToken, covariantToken, lateToken,
- varFinalOrConst, fieldCount, beforeStart.next, token);
+ listener.endMixinFields(externalToken, staticToken, covariantToken,
+ lateToken, varFinalOrConst, fieldCount, beforeStart.next, token);
break;
case DeclarationKind.Extension:
- if (staticToken == null) {
+ if (staticToken == null && externalToken == null) {
reportRecoverableError(
firstName, codes.messageExtensionDeclaresInstanceField);
}
- listener.endExtensionFields(staticToken, covariantToken, lateToken,
- varFinalOrConst, fieldCount, beforeStart.next, token);
+ listener.endExtensionFields(externalToken, staticToken, covariantToken,
+ lateToken, varFinalOrConst, fieldCount, beforeStart.next, token);
break;
}
return token;
@@ -2624,6 +2619,7 @@
Token token,
Token name,
Token lateToken,
+ Token externalToken,
Token varFinalOrConst,
DeclarationKind kind,
String enclosingDeclarationName) {
@@ -2645,7 +2641,8 @@
.withArguments(name.lexeme));
} else if (kind == DeclarationKind.TopLevel &&
optional("final", varFinalOrConst) &&
- lateToken == null) {
+ lateToken == null &&
+ externalToken == null) {
reportRecoverableError(
name,
codes.templateFinalFieldWithoutInitializer
@@ -2894,7 +2891,7 @@
/// a default error message instead.
Token ensureBlock(
Token token,
- Template<Message Function(Token token)> template,
+ codes.Template<codes.Message Function(Token token)> template,
String missingBlockName) {
Token next = token.next;
if (optional('{', next)) return next;
@@ -2956,7 +2953,7 @@
Token ensureColon(Token token) {
Token next = token.next;
if (optional(':', next)) return next;
- Message message = codes.templateExpectedButGot.withArguments(':');
+ codes.Message message = codes.templateExpectedButGot.withArguments(':');
Token newToken = new SyntheticToken(TokenType.COLON, next.charOffset);
return rewriteAndRecover(token, message, newToken);
}
@@ -2967,7 +2964,7 @@
Token ensureLiteralString(Token token) {
Token next = token.next;
if (!identical(next.kind, STRING_TOKEN)) {
- Message message = codes.templateExpectedString.withArguments(next);
+ codes.Message message = codes.templateExpectedString.withArguments(next);
Token newToken =
new SyntheticStringToken(TokenType.STRING, '""', next.charOffset, 0);
rewriteAndRecover(token, message, newToken);
@@ -2995,7 +2992,7 @@
/// Report an error at the token after [token] that has the given [message].
/// Insert the [newToken] after [token] and return [newToken].
- Token rewriteAndRecover(Token token, Message message, Token newToken) {
+ Token rewriteAndRecover(Token token, codes.Message message, Token newToken) {
reportRecoverableError(token.next, message);
return rewriter.insertToken(token, newToken);
}
@@ -4978,7 +4975,7 @@
// This looks like the start of an expression.
// Report an error, insert the comma, and continue parsing.
SyntheticToken comma = new SyntheticToken(TokenType.COMMA, next.offset);
- Message message = ifCount > 0
+ codes.Message message = ifCount > 0
? codes.messageExpectedElseOrComma
: codes.templateExpectedButGot.withArguments(',');
next = rewriteAndRecover(token, message, comma);
@@ -5061,7 +5058,7 @@
// TODO(danrubel): Consider better error message
SyntheticToken comma =
new SyntheticToken(TokenType.COMMA, next.offset);
- Message message = ifCount > 0
+ codes.Message message = ifCount > 0
? codes.messageExpectedElseOrComma
: codes.templateExpectedButGot.withArguments(',');
token = rewriteAndRecover(token, message, comma);
@@ -6962,14 +6959,14 @@
return token;
}
- void reportRecoverableError(Token token, Message message) {
+ void reportRecoverableError(Token token, codes.Message message) {
// Find a non-synthetic token on which to report the error.
token = findNonZeroLengthToken(token);
listener.handleRecoverableError(message, token, token);
}
void reportRecoverableErrorWithToken(
- Token token, Template<_MessageWithArgument<Token>> template) {
+ Token token, codes.Template<_MessageWithArgument<Token>> template) {
// Find a non-synthetic token on which to report the error.
token = findNonZeroLengthToken(token);
listener.handleRecoverableError(
@@ -7358,4 +7355,4 @@
}
// TODO(ahe): Remove when analyzer supports generalized function syntax.
-typedef _MessageWithArgument<T> = Message Function(T);
+typedef _MessageWithArgument<T> = codes.Message Function(T);
diff --git a/pkg/_fe_analyzer_shared/lib/src/parser/quote.dart b/pkg/_fe_analyzer_shared/lib/src/parser/quote.dart
index 6303272..f5aca05 100644
--- a/pkg/_fe_analyzer_shared/lib/src/parser/quote.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/parser/quote.dart
@@ -52,7 +52,7 @@
if (first.startsWith('r"')) return Quote.RawDouble;
if (first.startsWith("'")) return Quote.Single;
if (first.startsWith("r'")) return Quote.RawSingle;
- return throw UnsupportedError("'$first' in analyzeQuote");
+ return throw new UnsupportedError("'$first' in analyzeQuote");
}
// Note: based on [StringValidator.quotingFromString]
@@ -102,7 +102,7 @@
case Quote.RawMultiLineDouble:
return lengthOfOptionalWhitespacePrefix(first, 4);
}
- return throw UnsupportedError("'$quote' in firstQuoteLength");
+ return throw new UnsupportedError("'$quote' in firstQuoteLength");
}
int lastQuoteLength(Quote quote) {
@@ -119,7 +119,7 @@
case Quote.RawMultiLineDouble:
return 3;
}
- return throw UnsupportedError("'$quote' in lastQuoteLength");
+ return throw new UnsupportedError("'$quote' in lastQuoteLength");
}
String unescapeFirstStringPart(String first, Quote quote, Object location,
diff --git a/pkg/_fe_analyzer_shared/lib/src/parser/token_stream_rewriter.dart b/pkg/_fe_analyzer_shared/lib/src/parser/token_stream_rewriter.dart
index d2b8ed3..ac26b16 100644
--- a/pkg/_fe_analyzer_shared/lib/src/parser/token_stream_rewriter.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/parser/token_stream_rewriter.dart
@@ -224,27 +224,27 @@
@override
void _setEndGroup(BeginToken setOn, Token endGroup) {
- throw UnimplementedError("_setEndGroup");
+ throw new UnimplementedError("_setEndGroup");
}
@override
Token _setNext(Token setOn, Token nextToken) {
- throw UnimplementedError("_setNext");
+ throw new UnimplementedError("_setNext");
}
@override
void _setOffset(Token setOn, int offset) {
- throw UnimplementedError("_setOffset");
+ throw new UnimplementedError("_setOffset");
}
@override
void _setPrecedingComments(SimpleToken setOn, CommentToken comment) {
- throw UnimplementedError("_setPrecedingComments");
+ throw new UnimplementedError("_setPrecedingComments");
}
@override
void _setPrevious(Token setOn, Token previous) {
- throw UnimplementedError("_setPrevious");
+ throw new UnimplementedError("_setPrevious");
}
}
diff --git a/pkg/_fe_analyzer_shared/tool/smoke_test_quick.dart b/pkg/_fe_analyzer_shared/tool/smoke_test_quick.dart
index 14c65da..e5c6d2b 100644
--- a/pkg/_fe_analyzer_shared/tool/smoke_test_quick.dart
+++ b/pkg/_fe_analyzer_shared/tool/smoke_test_quick.dart
@@ -13,6 +13,11 @@
List<Future> futures = new List<Future>();
futures.add(run("pkg/front_end/test/spelling_test_src_suite.dart",
["--", "spelling_test_src/_fe_analyzer_shared/..."]));
+ futures.add(run(
+ "pkg/front_end/test/explicit_creation_test.dart", ["--shared-only"],
+ filter: false));
+ futures.add(run("pkg/front_end/test/lint_suite.dart",
+ ["--", "lint/_fe_analyzer_shared/..."]));
await Future.wait(futures);
print("\n-----------------------\n");
print("Done with exitcode $exitCode in ${stopwatch.elapsedMilliseconds} ms");
diff --git a/pkg/analysis_server/benchmark/perf/memory_tests.dart b/pkg/analysis_server/benchmark/perf/memory_tests.dart
index 7d30cec..5f242cd 100644
--- a/pkg/analysis_server/benchmark/perf/memory_tests.dart
+++ b/pkg/analysis_server/benchmark/perf/memory_tests.dart
@@ -98,11 +98,16 @@
socket.listen(_handleMessage);
}
- Future<Map> call(String method, [Map args]) {
+ Future<Map> call(String method, [Map args = const {}]) {
var id = '${++_id}';
var completer = Completer<Map>();
_completers[id] = completer;
- var m = <String, dynamic>{'id': id, 'method': method};
+ var m = <String, dynamic>{
+ 'jsonrpc': '2.0',
+ 'id': id,
+ 'method': method,
+ 'args': args
+ };
if (args != null) m['params'] = args;
var message = jsonEncode(m);
socket.add(message);
diff --git a/pkg/analysis_server/doc/api.html b/pkg/analysis_server/doc/api.html
index 616ebe9..130585f 100644
--- a/pkg/analysis_server/doc/api.html
+++ b/pkg/analysis_server/doc/api.html
@@ -2509,7 +2509,7 @@
<p>
Organizes all of the directives - removes unused imports and sorts
directives of the given Dart file according to the
- <a href="https://www.dartlang.org/articles/style-guide/">Dart Style
+ <a href="https://dart.dev/guides/language/effective-dart/style">Dart Style
Guide</a>.
</p>
<p>
diff --git a/pkg/analysis_server/lib/src/analysis_server_abstract.dart b/pkg/analysis_server/lib/src/analysis_server_abstract.dart
index c7a9f65..31adb88 100644
--- a/pkg/analysis_server/lib/src/analysis_server_abstract.dart
+++ b/pkg/analysis_server/lib/src/analysis_server_abstract.dart
@@ -7,6 +7,7 @@
import 'dart:io' as io;
import 'package:analysis_server/src/analysis_server.dart';
+import 'package:analysis_server/src/api_for_nnbd_migration.dart';
import 'package:analysis_server/src/collections.dart';
import 'package:analysis_server/src/context_manager.dart';
import 'package:analysis_server/src/domains/completion/available_suggestions.dart';
@@ -47,7 +48,6 @@
import 'package:analyzer/src/generated/sdk.dart';
import 'package:analyzer/src/services/available_declarations.dart';
import 'package:analyzer/src/util/glob.dart';
-import 'package:nnbd_migration/api_for_analysis_server/driver_provider.dart';
/// Implementations of [AbstractAnalysisServer] implement a server that listens
/// on a [CommunicationChannel] for analysis messages and process them.
diff --git a/pkg/analysis_server/lib/src/api_for_nnbd_migration.dart b/pkg/analysis_server/lib/src/api_for_nnbd_migration.dart
new file mode 100644
index 0000000..f39fbd3
--- /dev/null
+++ b/pkg/analysis_server/lib/src/api_for_nnbd_migration.dart
@@ -0,0 +1,57 @@
+// Copyright (c) 2020, 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 'package:analyzer/dart/analysis/session.dart';
+import 'package:analyzer/file_system/file_system.dart';
+import 'package:analyzer/src/generated/source.dart';
+import 'package:analyzer_plugin/protocol/protocol_common.dart';
+
+/// Abstract interface formerly used by NNBD migration to report changes to the
+/// analysis server. Now that the analysis server no longer integrates with
+/// NNBD migration, this exists only to support some tests that haven't yet been
+/// modified to use the new NNBD migration infrastructure.
+///
+/// TODO(paulberry): remove this interface once it's no longer needed.
+abstract class DartFixListenerInterface {
+ DriverProvider get server;
+
+ SourceChange get sourceChange;
+
+ /// Add the given [detail] to the list of details to be returned to the
+ /// client.
+ void addDetail(String detail);
+
+ /// Record an edit to be sent to the client.
+ ///
+ /// The associated suggestion should be separately added by calling
+ /// [addSuggestion].
+ void addEditWithoutSuggestion(Source source, SourceEdit edit);
+
+ /// Record a recommendation to be sent to the client.
+ void addRecommendation(String description, [Location location]);
+
+ /// Record a source change to be sent to the client.
+ void addSourceFileEdit(
+ String description, Location location, SourceFileEdit fileEdit);
+
+ /// Record a suggestion to be sent to the client.
+ ///
+ /// The associated edits should be separately added by calling
+ /// [addEditWithoutRecommendation].
+ void addSuggestion(String description, Location location);
+}
+
+/// Abstract interface formerly used by NNBD migration to access the resource
+/// provider and the analysis session. Now that the analysis server no longer
+/// integrates with NNBD migration, this exists only to support some tests that
+/// haven't yet been modified to use the new NNBD migration infrastructure.
+///
+/// TODO(paulberry): remove this interface once it's no longer needed.
+abstract class DriverProvider {
+ ResourceProvider get resourceProvider;
+
+ /// Return the appropriate analysis session for the file with the given
+ /// [path].
+ AnalysisSession getAnalysisSession(String path);
+}
diff --git a/pkg/analysis_server/lib/src/edit/edit_dartfix.dart b/pkg/analysis_server/lib/src/edit/edit_dartfix.dart
index 82bb849..ef883bc 100644
--- a/pkg/analysis_server/lib/src/edit/edit_dartfix.dart
+++ b/pkg/analysis_server/lib/src/edit/edit_dartfix.dart
@@ -14,7 +14,6 @@
import 'package:analyzer/dart/analysis/results.dart';
import 'package:analyzer/dart/analysis/session.dart';
import 'package:analyzer/file_system/file_system.dart';
-import 'package:analyzer/src/dart/analysis/driver.dart';
import 'package:analyzer/src/generated/engine.dart' show AnalysisOptionsImpl;
import 'package:analyzer/src/generated/source.dart' show SourceKind;
@@ -122,9 +121,6 @@
};
});
- // Set up the rerun function on the NNBD migration for interactivity.
- nonNullableFixTask?.rerunFunction = rerunTasks;
-
bool hasErrors;
try {
hasErrors = await runAllTasks();
@@ -148,7 +144,6 @@
hasErrors,
listener.sourceChange.edits,
details: listener.details,
- urls: nonNullableFixTask?.previewUrls,
).toResponse(request.id);
}
@@ -250,26 +245,6 @@
}
}
- Future<bool> rerunTasks([List<String> changedPaths]) async {
- listener.reset();
- if (changedPaths == null) {
- final drivers = <AnalysisDriver>{};
- for (var path in getPathsToProcess()) {
- drivers.add(server.getAnalysisDriver(path));
- }
- for (final driver in drivers) {
- driver.knownFiles.forEach(driver.changeFile);
- }
- } else {
- for (var path in changedPaths) {
- var driver = server.getAnalysisDriver(path);
- driver.changeFile(path);
- }
- }
-
- return await runAllTasks();
- }
-
Future<bool> runAllTasks() async {
// Process each package
for (var pkgFolder in pkgFolders) {
diff --git a/pkg/analysis_server/lib/src/edit/fix/dartfix_info.dart b/pkg/analysis_server/lib/src/edit/fix/dartfix_info.dart
index 80f3f5a..0fe5aba 100644
--- a/pkg/analysis_server/lib/src/edit/fix/dartfix_info.dart
+++ b/pkg/analysis_server/lib/src/edit/fix/dartfix_info.dart
@@ -9,7 +9,6 @@
import 'package:analysis_server/src/edit/fix/dartfix_registrar.dart';
import 'package:analysis_server/src/edit/fix/fix_error_task.dart';
import 'package:analysis_server/src/edit/fix/fix_lint_task.dart';
-import 'package:analysis_server/src/edit/fix/non_nullable_fix.dart';
import 'package:analysis_server/src/edit/fix/prefer_mixin_fix.dart';
import 'package:analysis_server/src/services/correction/fix.dart';
import 'package:analyzer/src/lint/registry.dart';
@@ -96,17 +95,6 @@
LintFixInfo.unnecessaryThis,
LintFixInfo.useFunctionTypeSyntaxForParameters,
LintFixInfo.useRethrowWhenPossible,
- //
- // Experimental fixes
- //
- DartFixInfo(
- 'non-nullable',
- '''
-EXPERIMENTAL: Update sources to be non-nullable by default.
-This requires the experimental non-nullable flag to be enabled
-when running the updated application.''',
- NonNullableFix.task,
- ),
];
/// [DartFixInfo] represents a fix that can be applied by [EditDartFix].
diff --git a/pkg/analysis_server/lib/src/edit/fix/dartfix_listener.dart b/pkg/analysis_server/lib/src/edit/fix/dartfix_listener.dart
index 7fb7a80..fd2b337 100644
--- a/pkg/analysis_server/lib/src/edit/fix/dartfix_listener.dart
+++ b/pkg/analysis_server/lib/src/edit/fix/dartfix_listener.dart
@@ -4,12 +4,12 @@
import 'package:analysis_server/protocol/protocol_generated.dart';
import 'package:analysis_server/src/analysis_server.dart';
+import 'package:analysis_server/src/api_for_nnbd_migration.dart';
import 'package:analyzer/dart/analysis/results.dart';
import 'package:analyzer/file_system/file_system.dart';
import 'package:analyzer/src/generated/source.dart';
import 'package:analyzer_plugin/protocol/protocol_common.dart'
show Location, SourceChange, SourceEdit, SourceFileEdit;
-import 'package:nnbd_migration/api_for_analysis_server/dartfix_listener_interface.dart';
/// Tasks use this API to report results.
class DartFixListener implements DartFixListenerInterface {
@@ -100,15 +100,4 @@
result.path, offset, length, locInfo.lineNumber, locInfo.columnNumber);
return location;
}
-
- /// Reset this listener so that it can accrue a new set of changes.
- void reset() {
- suggestions.clear();
- otherSuggestions.clear();
- sourceChange
- ..edits.clear()
- ..linkedEditGroups.clear()
- ..selection = null
- ..id = null;
- }
}
diff --git a/pkg/analysis_server/lib/src/edit/fix/fix_code_task.dart b/pkg/analysis_server/lib/src/edit/fix/fix_code_task.dart
index bdd3a48..fff1df7 100644
--- a/pkg/analysis_server/lib/src/edit/fix/fix_code_task.dart
+++ b/pkg/analysis_server/lib/src/edit/fix/fix_code_task.dart
@@ -5,7 +5,6 @@
import 'dart:math' show max;
import 'package:analysis_server/src/edit/edit_dartfix.dart';
-import 'package:analysis_server/src/edit/fix/non_nullable_fix.dart';
import 'package:analyzer/dart/analysis/results.dart';
import 'package:analyzer/file_system/file_system.dart';
@@ -15,16 +14,6 @@
int _numPhases = 0;
- /// Return the task used to migrate to NNBD.
- NonNullableFix get nonNullableFixTask {
- for (var task in _codeTasks) {
- if (task is NonNullableFix) {
- return task;
- }
- }
- return null;
- }
-
int get numPhases => _numPhases;
Future<void> finishCodeTasks() async {
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handler_completion.dart b/pkg/analysis_server/lib/src/lsp/handlers/handler_completion.dart
index 04f7092..45d9d1a 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/handler_completion.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/handler_completion.dart
@@ -17,8 +17,10 @@
import 'package:analysis_server/src/services/completion/completion_performance.dart';
import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
import 'package:analyzer/dart/analysis/results.dart';
+import 'package:analyzer/source/line_info.dart';
import 'package:analyzer/src/services/available_declarations.dart';
import 'package:analyzer_plugin/protocol/protocol_common.dart';
+import 'package:analyzer_plugin/protocol/protocol_generated.dart' as plugin;
// If the client does not provide capabilities.completion.completionItemKind.valueSet
// then we must never send a kind that's not in this list.
@@ -44,7 +46,8 @@
]);
class CompletionHandler
- extends MessageHandler<CompletionParams, List<CompletionItem>> {
+ extends MessageHandler<CompletionParams, List<CompletionItem>>
+ with LspPluginRequestHandlerMixin {
final bool suggestFromUnimportedLibraries;
CompletionHandler(
LspAnalysisServer server, this.suggestFromUnimportedLibraries)
@@ -60,10 +63,6 @@
@override
Future<ErrorOr<List<CompletionItem>>> handle(
CompletionParams params, CancellationToken token) async {
- if (!isDartDocument(params.textDocument)) {
- return success(const []);
- }
-
final completionCapabilities =
server?.clientCapabilities?.textDocument?.completion;
@@ -79,15 +78,37 @@
final pos = params.position;
final path = pathOfDoc(params.textDocument);
final unit = await path.mapResult(requireResolvedUnit);
- final offset = await unit.mapResult((unit) => toOffset(unit.lineInfo, pos));
- return offset.mapResult((offset) => _getItems(
+
+ final lineInfo = unit.map<ErrorOr<LineInfo>>(
+ // If we don't have a unit, we can still try to obtain the line info for
+ // plugin contributors.
+ (error) => path.mapResult(getLineInfo),
+ (unit) => success(unit.lineInfo),
+ );
+ final offset =
+ await lineInfo.mapResult((lineInfo) => toOffset(lineInfo, pos));
+
+ return offset.mapResult((offset) {
+ if (unit.isError) {
+ return _getItemsFromPluginsOnly(
+ completionCapabilities,
+ clientSupportedCompletionKinds,
+ lineInfo.result,
+ path.result,
+ offset,
+ token,
+ );
+ } else {
+ return _getItems(
completionCapabilities,
clientSupportedCompletionKinds,
includeSuggestionSets,
unit.result,
offset,
token,
- ));
+ );
+ }
+ });
}
/// Build a list of existing imports so we can filter out any suggestions
@@ -154,22 +175,37 @@
includedElementNames: includedElementNames,
includedSuggestionRelevanceTags: includedSuggestionRelevanceTags,
);
- final suggestions =
- await contributor.computeSuggestions(completionRequest);
+
+ final suggestions = await Future.wait([
+ contributor.computeSuggestions(completionRequest),
+ _getPluginSuggestions(unit.path, offset),
+ ]);
+ final serverSuggestions = suggestions[0];
+ final pluginSuggestions = suggestions[1];
if (token.isCancellationRequested) {
return cancelled();
}
- final results = suggestions
- .map((item) => toCompletionItem(
- completionCapabilities,
- clientSupportedCompletionKinds,
- unit.lineInfo,
- item,
- completionRequest.replacementOffset,
- completionRequest.replacementLength,
- ))
+ final results = serverSuggestions
+ .map(
+ (item) => toCompletionItem(
+ completionCapabilities,
+ clientSupportedCompletionKinds,
+ unit.lineInfo,
+ item,
+ completionRequest.replacementOffset,
+ completionRequest.replacementLength,
+ ),
+ )
+ .followedBy(
+ _pluginResultsToItems(
+ completionCapabilities,
+ clientSupportedCompletionKinds,
+ unit.lineInfo,
+ pluginSuggestions,
+ ),
+ )
.toList();
// Now compute items in suggestion sets.
@@ -198,9 +234,19 @@
includedSuggestionRelevanceTags
.forEach((t) => tagBoosts[t.tag] = t.relevanceBoost);
+ // Only specific types of child declarations should be included.
+ // This list matches what's in _protocolAvailableSuggestion in
+ // the DAS implementation.
+ bool shouldIncludeChild(Declaration child) =>
+ child.kind == DeclarationKind.CONSTRUCTOR ||
+ child.kind == DeclarationKind.ENUM_CONSTANT ||
+ (child.kind == DeclarationKind.GETTER && child.isStatic) ||
+ (child.kind == DeclarationKind.FIELD && child.isStatic);
+
// Collect declarations and their children.
final allDeclarations = library.declarations
- .followedBy(library.declarations.expand((decl) => decl.children))
+ .followedBy(library.declarations
+ .expand((decl) => decl.children.where(shouldIncludeChild)))
.toList();
final setResults = allDeclarations
@@ -256,4 +302,58 @@
return success([]);
}
}
+
+ Future<ErrorOr<List<CompletionItem>>> _getItemsFromPluginsOnly(
+ TextDocumentClientCapabilitiesCompletion completionCapabilities,
+ HashSet<CompletionItemKind> clientSupportedCompletionKinds,
+ LineInfo lineInfo,
+ String path,
+ int offset,
+ CancellationToken token,
+ ) async {
+ final pluginResults = await _getPluginSuggestions(path, offset);
+
+ if (token.isCancellationRequested) {
+ return cancelled();
+ }
+
+ return success(_pluginResultsToItems(
+ completionCapabilities,
+ clientSupportedCompletionKinds,
+ lineInfo,
+ pluginResults,
+ ).toList());
+ }
+
+ Future<List<plugin.CompletionGetSuggestionsResult>> _getPluginSuggestions(
+ String path,
+ int offset,
+ ) async {
+ final requestParams = plugin.CompletionGetSuggestionsParams(path, offset);
+ final responses = await requestFromPlugins(path, requestParams);
+
+ return responses
+ .map((e) => plugin.CompletionGetSuggestionsResult.fromResponse(e))
+ .toList();
+ }
+
+ Iterable<CompletionItem> _pluginResultsToItems(
+ TextDocumentClientCapabilitiesCompletion completionCapabilities,
+ HashSet<CompletionItemKind> clientSupportedCompletionKinds,
+ LineInfo lineInfo,
+ List<plugin.CompletionGetSuggestionsResult> pluginResults,
+ ) {
+ return pluginResults.expand((result) {
+ return result.results.map(
+ (item) => toCompletionItem(
+ completionCapabilities,
+ clientSupportedCompletionKinds,
+ lineInfo,
+ item,
+ result.replacementOffset,
+ result.replacementLength,
+ ),
+ );
+ });
+ }
}
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handler_completion_resolve.dart b/pkg/analysis_server/lib/src/lsp/handlers/handler_completion_resolve.dart
index fd016be..e6a8cfe 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/handler_completion_resolve.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/handler_completion_resolve.dart
@@ -105,7 +105,7 @@
if (requestedElement == null) {
return error(
ErrorCodes.InvalidParams,
- 'No such element: $requestedName',
+ 'No such element: $requestedName in ${library.uriStr}',
requestedName,
);
}
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handler_definition.dart b/pkg/analysis_server/lib/src/lsp/handlers/handler_definition.dart
index e9009a3..b831ada 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/handler_definition.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/handler_definition.dart
@@ -19,7 +19,8 @@
import 'package:analyzer_plugin/utilities/navigation/navigation_dart.dart';
class DefinitionHandler
- extends MessageHandler<TextDocumentPositionParams, List<Location>> {
+ extends MessageHandler<TextDocumentPositionParams, List<Location>>
+ with LspPluginRequestHandlerMixin {
DefinitionHandler(LspAnalysisServer server) : super(server);
@override
Method get handlesMessage => Method.textDocument_definition;
@@ -35,13 +36,7 @@
// LSP requests must be converted to DAS-protocol requests for compatibility
// with plugins.
final requestParams = plugin.AnalysisGetNavigationParams(path, offset, 0);
-
- final driver = server.getAnalysisDriver(path);
- final pluginFutures = server.pluginManager
- .broadcastRequest(requestParams, contextRoot: driver.contextRoot);
-
- final responses =
- await waitForResponses(pluginFutures, requestParameters: requestParams);
+ final responses = await requestFromPlugins(path, requestParams);
return responses
.map((response) =>
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handler_text_document_changes.dart b/pkg/analysis_server/lib/src/lsp/handlers/handler_text_document_changes.dart
index d23bc22..0c3a3a8 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/handler_text_document_changes.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/handler_text_document_changes.dart
@@ -64,11 +64,12 @@
null,
);
}
- final newContents =
- applyEdits(oldContents, params.contentChanges, failureIsCritical: true);
- return newContents.mapResult((newcontents) {
+ final newContents = applyAndConvertEditsToServer(
+ oldContents, params.contentChanges,
+ failureIsCritical: true);
+ return newContents.mapResult((result) {
server.documentVersions[path] = params.textDocument;
- server.updateOverlay(path, newContents.result);
+ server.onOverlayUpdated(path, result.last, newContent: result.first);
return success();
});
}
@@ -96,7 +97,7 @@
return path.mapResult((path) {
server.removePriorityFile(path);
server.documentVersions.remove(path);
- server.updateOverlay(path, null);
+ server.onOverlayDestroyed(path);
if (updateAnalysisRoots) {
// If there are no other open files in this context, we can remove it
@@ -151,7 +152,7 @@
params.textDocument.version,
params.textDocument.uri,
);
- server.updateOverlay(path, doc.text);
+ server.onOverlayCreated(path, doc.text);
final driver = server.contextManager.getDriverFor(path);
// If the file did not exist, and is "overlay only", it still should be
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handlers.dart b/pkg/analysis_server/lib/src/lsp/handlers/handlers.dart
index 4d36a7e..55b9980 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/handlers.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/handlers.dart
@@ -6,6 +6,7 @@
import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/src/analysis_server_abstract.dart';
import 'package:analysis_server/src/domain_abstract.dart';
import 'package:analysis_server/src/lsp/constants.dart';
import 'package:analysis_server/src/lsp/handlers/handler_cancel_request.dart';
@@ -13,6 +14,9 @@
import 'package:analysis_server/src/lsp/json_parsing.dart';
import 'package:analysis_server/src/lsp/lsp_analysis_server.dart';
import 'package:analyzer/dart/analysis/results.dart';
+import 'package:analyzer/source/line_info.dart';
+import 'package:analyzer_plugin/protocol/protocol.dart';
+import 'package:analyzer_plugin/src/protocol/protocol_internal.dart';
/// Converts an iterable using the provided function and skipping over any
/// null values.
@@ -49,6 +53,16 @@
mixin Handler<P, R> {
LspAnalysisServer server;
+ ErrorOr<LineInfo> getLineInfo(String path) {
+ final lineInfo = server.getLineInfo(path);
+
+ if (lineInfo == null) {
+ return error(ServerErrorCodes.InvalidFilePath, 'Invalid file path', path);
+ } else {
+ return success(lineInfo);
+ }
+ }
+
Future<ErrorOr<ResolvedUnitResult>> requireResolvedUnit(String path) async {
final result = await server.getResolvedUnit(path);
if (result?.state != ResultState.VALID) {
@@ -66,6 +80,17 @@
}
}
+mixin LspPluginRequestHandlerMixin<T extends AbstractAnalysisServer>
+ on RequestHandlerMixin<T> {
+ Future<List<Response>> requestFromPlugins(String path, RequestParams params) {
+ final driver = server.getAnalysisDriver(path);
+ final pluginFutures = server.pluginManager
+ .broadcastRequest(params, contextRoot: driver.contextRoot);
+
+ return waitForResponses(pluginFutures, requestParameters: params);
+ }
+}
+
/// An object that can handle messages and produce responses for requests.
///
/// Clients may not extend, implement or mix-in this class.
diff --git a/pkg/analysis_server/lib/src/lsp/lsp_analysis_server.dart b/pkg/analysis_server/lib/src/lsp/lsp_analysis_server.dart
index cecd4f4..c0aa0da 100644
--- a/pkg/analysis_server/lib/src/lsp/lsp_analysis_server.dart
+++ b/pkg/analysis_server/lib/src/lsp/lsp_analysis_server.dart
@@ -45,7 +45,9 @@
import 'package:analyzer/src/dart/analysis/status.dart' as nd;
import 'package:analyzer/src/generated/engine.dart';
import 'package:analyzer/src/generated/sdk.dart';
+import 'package:analyzer_plugin/protocol/protocol_common.dart' as plugin;
import 'package:analyzer_plugin/protocol/protocol_generated.dart' as plugin;
+import 'package:analyzer_plugin/src/protocol/protocol_internal.dart' as plugin;
import 'package:watcher/watcher.dart';
/// Instances of the class [LspAnalysisServer] implement an LSP-based server
@@ -293,6 +295,37 @@
));
}
+ void onOverlayCreated(String path, String content) {
+ resourceProvider.setOverlay(path, content: content, modificationStamp: 0);
+
+ _afterOverlayChanged(path, plugin.AddContentOverlay(content));
+ }
+
+ void onOverlayDestroyed(String path) {
+ resourceProvider.removeOverlay(path);
+
+ _afterOverlayChanged(path, plugin.RemoveContentOverlay());
+ }
+
+ /// Updates an overlay on [path] by applying the [edits] to the current
+ /// overlay.
+ ///
+ /// If the result of applying the edits is already known, [newContent] can be
+ /// set to avoid doing that calculation twice.
+ void onOverlayUpdated(String path, Iterable<plugin.SourceEdit> edits,
+ {String newContent}) {
+ assert(resourceProvider.hasOverlay(path));
+ if (newContent == null) {
+ final oldContent = resourceProvider.getFile(path).readAsStringSync();
+ newContent = plugin.applySequenceOfEdits(oldContent, edits);
+ }
+
+ resourceProvider.setOverlay(path,
+ content: newContent, modificationStamp: 0);
+
+ _afterOverlayChanged(path, plugin.ChangeContentOverlay(edits));
+ }
+
void publishClosingLabels(String path, List<ClosingLabel> labels) {
final params =
PublishClosingLabelsParams(Uri.file(path).toString(), labels);
@@ -504,14 +537,11 @@
setAnalysisRoots(newPaths.toList());
}
- void updateOverlay(String path, String contents) {
- if (contents != null) {
- resourceProvider.setOverlay(path,
- content: contents, modificationStamp: 0);
- } else {
- resourceProvider.removeOverlay(path);
- }
+ void _afterOverlayChanged(String path, dynamic changeForPlugins) {
driverMap.values.forEach((driver) => driver.changeFile(path));
+ pluginManager.setAnalysisUpdateContentParams(
+ plugin.AnalysisUpdateContentParams({path: changeForPlugins}),
+ );
notifyDeclarationsTracker(path);
notifyFlutterWidgetDescriptions(path);
diff --git a/pkg/analysis_server/lib/src/lsp/mapping.dart b/pkg/analysis_server/lib/src/lsp/mapping.dart
index 00efe02..2933638 100644
--- a/pkg/analysis_server/lib/src/lsp/mapping.dart
+++ b/pkg/analysis_server/lib/src/lsp/mapping.dart
@@ -196,6 +196,14 @@
case DeclarationKind.ENUM_CONSTANT:
label = '${declaration.parent.name}.${declaration.name}';
break;
+ case DeclarationKind.GETTER:
+ case DeclarationKind.FIELD:
+ label = declaration.parent != null &&
+ declaration.parent.name != null &&
+ declaration.parent.name.isNotEmpty
+ ? '${declaration.parent.name}.${declaration.name}'
+ : declaration.name;
+ break;
case DeclarationKind.CONSTRUCTOR:
label = declaration.parent.name;
if (declaration.name.isNotEmpty) {
diff --git a/pkg/analysis_server/lib/src/lsp/server_capabilities_computer.dart b/pkg/analysis_server/lib/src/lsp/server_capabilities_computer.dart
index a359d36..a154b95 100644
--- a/pkg/analysis_server/lib/src/lsp/server_capabilities_computer.dart
+++ b/pkg/analysis_server/lib/src/lsp/server_capabilities_computer.dart
@@ -243,7 +243,7 @@
dartCompletionTriggerCharacters,
null,
true,
- [dartFiles],
+ allTypes,
),
);
register(
diff --git a/pkg/analysis_server/lib/src/lsp/source_edits.dart b/pkg/analysis_server/lib/src/lsp/source_edits.dart
index 0153601..e3bfb8a 100644
--- a/pkg/analysis_server/lib/src/lsp/source_edits.dart
+++ b/pkg/analysis_server/lib/src/lsp/source_edits.dart
@@ -4,18 +4,30 @@
import 'package:analysis_server/src/protocol_server.dart' as server
show SourceEdit;
import 'package:analyzer/source/line_info.dart';
+import 'package:analyzer_plugin/protocol/protocol_common.dart' as plugin;
+import 'package:analyzer_plugin/utilities/pair.dart';
import 'package:dart_style/dart_style.dart';
final DartFormatter formatter = DartFormatter();
-ErrorOr<String> applyEdits(
+/// Transforms a sequence of LSP document change events to a sequence of source
+/// edits used by analysis plugins.
+///
+/// Since the translation from line/characters to offsets needs to take previous
+/// changes into account, this will also apply the edits to [oldContent].
+ErrorOr<Pair<String, List<plugin.SourceEdit>>> applyAndConvertEditsToServer(
String oldContent,
List<TextDocumentContentChangeEvent> changes, {
failureIsCritical = false,
}) {
var newContent = oldContent;
+ final serverEdits = <server.SourceEdit>[];
+
for (var change in changes) {
if (change.range == null && change.rangeLength == null) {
+ serverEdits
+ ..clear()
+ ..add(server.SourceEdit(0, newContent.length, change.text));
newContent = change.text;
} else {
final lines = LineInfo.fromContent(newContent);
@@ -24,16 +36,18 @@
final offsetEnd = toOffset(lines, change.range.end,
failureIsCritial: failureIsCritical);
if (offsetStart.isError) {
- return ErrorOr<String>.error(offsetStart.error);
+ return ErrorOr.error(offsetStart.error);
}
if (offsetEnd.isError) {
- return ErrorOr<String>.error(offsetEnd.error);
+ return ErrorOr.error(offsetEnd.error);
}
newContent = newContent.replaceRange(
offsetStart.result, offsetEnd.result, change.text);
+ serverEdits.add(server.SourceEdit(offsetStart.result,
+ offsetEnd.result - offsetStart.result, change.text));
}
}
- return ErrorOr<String>.success(newContent);
+ return ErrorOr.success(Pair(newContent, serverEdits));
}
List<TextEdit> generateEditsForFormatting(String unformattedSource) {
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/completion_manager.dart b/pkg/analysis_server/lib/src/services/completion/dart/completion_manager.dart
index 8a72ce7..41e52a4 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/completion_manager.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/completion_manager.dart
@@ -78,16 +78,21 @@
/// relevance than other included suggestions.
final List<IncludedSuggestionRelevanceTag> includedSuggestionRelevanceTags;
+ /// The listener to be notified at certain points in the process of building
+ /// suggestions, or `null` if no notification should occur.
+ final SuggestionListener listener;
+
/// Initialize a newly created completion manager. The parameters
/// [includedElementKinds], [includedElementNames], and
/// [includedSuggestionRelevanceTags] must either all be `null` or must all be
/// non-`null`.
- DartCompletionManager({
- this.dartdocDirectiveInfo,
- this.includedElementKinds,
- this.includedElementNames,
- this.includedSuggestionRelevanceTags,
- }) : assert((includedElementKinds != null &&
+ DartCompletionManager(
+ {this.dartdocDirectiveInfo,
+ this.includedElementKinds,
+ this.includedElementNames,
+ this.includedSuggestionRelevanceTags,
+ this.listener})
+ : assert((includedElementKinds != null &&
includedElementNames != null &&
includedSuggestionRelevanceTags != null) ||
(includedElementKinds == null &&
@@ -123,7 +128,7 @@
// Request Dart specific completions from each contributor
var suggestionMap = <String, CompletionSuggestion>{};
var constructorMap = <String, List<String>>{};
- var builder = SuggestionBuilder(dartRequest);
+ var builder = SuggestionBuilder(dartRequest, listener: listener);
var contributors = <DartCompletionContributor>[
ArgListContributor(),
CombinatorContributor(),
@@ -420,7 +425,10 @@
@override
DartType get contextType {
if (!_hasComputedContextType) {
- _contextType = featureComputer.computeContextType(target.containingNode);
+ var entity = target.entity;
+ if (entity is AstNode) {
+ _contextType = featureComputer.computeContextType(entity);
+ }
_hasComputedContextType = true;
}
return _contextType;
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/feature_computer.dart b/pkg/analysis_server/lib/src/services/completion/dart/feature_computer.dart
index d81478d..7139b46 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/feature_computer.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/feature_computer.dart
@@ -7,16 +7,17 @@
import 'dart:math' as math;
import 'package:analysis_server/src/protocol_server.dart'
- show convertElementToElementKind;
+ show ElementKind, convertElementToElementKind;
import 'package:analysis_server/src/services/completion/dart/relevance_tables.g.dart';
+import 'package:analysis_server/src/utilities/extensions/element.dart';
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/ast/visitor.dart';
import 'package:analyzer/dart/element/element.dart'
- show ClassElement, CompilationUnitElement, Element, FieldElement;
+ show ClassElement, Element, FieldElement, LibraryElement;
import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer/dart/element/type_provider.dart';
import 'package:analyzer/dart/element/type_system.dart';
-import 'package:analyzer/src/dart/element/type.dart';
+import 'package:analyzer/src/dart/resolver/body_inference_context.dart';
/// Convert a relevance score (assumed to be between `0.0` and `1.0` inclusive)
/// to a relevance value between `0` and `1000`. If the score is outside that
@@ -106,7 +107,12 @@
if (locationTable == null) {
return -1.0;
}
- var kind = convertElementToElementKind(element);
+ ElementKind kind;
+ if (element is LibraryElement) {
+ kind = ElementKind.PREFIX;
+ } else {
+ kind = convertElementToElementKind(element);
+ }
var range = locationTable[kind];
if (range == null) {
return 0.0;
@@ -198,7 +204,10 @@
}
}
-/// An object used to compute metrics for a single file or directory.
+/// An visitor used to compute the required type of an expression or identifier
+/// based on its context. The visitor should be initialized with the node whose
+/// context type is to be computed and the parent of that node should be
+/// visited.
class _ContextTypeVisitor extends SimpleAstVisitor<DartType> {
final TypeProvider typeProvider;
@@ -265,6 +274,15 @@
}
@override
+ DartType visitConditionalExpression(ConditionalExpression node) {
+ if (childNode == node.condition) {
+ return typeProvider.boolType;
+ } else {
+ return _visitParent(node);
+ }
+ }
+
+ @override
DartType visitConstructorFieldInitializer(ConstructorFieldInitializer node) {
if (childNode == node.expression) {
var element = node.fieldName.staticElement;
@@ -292,6 +310,23 @@
}
@override
+ DartType visitExpressionFunctionBody(ExpressionFunctionBody node) {
+ if (childNode == node.expression) {
+ var parent = node.parent;
+ if (parent is MethodDeclaration) {
+ return BodyInferenceContext.of(parent.body).contextType;
+ } else if (parent is FunctionExpression) {
+ var grandparent = parent.parent;
+ if (grandparent is FunctionDeclaration) {
+ return BodyInferenceContext.of(parent.body).contextType;
+ }
+ return _visitParent(parent);
+ }
+ }
+ return null;
+ }
+
+ @override
DartType visitForEachPartsWithDeclaration(ForEachPartsWithDeclaration node) {
if (childNode == node.iterable) {
var parent = node.parent;
@@ -362,7 +397,7 @@
DartType visitIndexExpression(IndexExpression node) {
if (childNode == node.index) {
var parameters = node.staticElement?.parameters;
- if (parameters != null && parameters.length == 1) {
+ if (parameters != null && parameters.isNotEmpty) {
return parameters[0].type;
}
}
@@ -394,7 +429,7 @@
@override
DartType visitMethodInvocation(MethodInvocation node) {
- if (childNode == node.target) {
+ if (childNode == node.target || childNode == node.methodName) {
return _visitParent(node);
}
return null;
@@ -411,22 +446,27 @@
}
@override
+ DartType visitPrefixedIdentifier(PrefixedIdentifier node) {
+ return _visitParent(node);
+ }
+
+ @override
DartType visitPrefixExpression(PrefixExpression node) {
return (childNode as Expression).staticParameterElement?.type;
}
@override
DartType visitPropertyAccess(PropertyAccess node) {
- if (childNode == node.target) {
- return _visitParent(node);
- }
- return null;
+ return _visitParent(node);
}
@override
DartType visitReturnStatement(ReturnStatement node) {
if (childNode == node.expression) {
- return _returnType(node);
+ var functionBody = node.thisOrAncestorOfType<FunctionBody>();
+ if (functionBody != null) {
+ return BodyInferenceContext.of(functionBody).contextType;
+ }
}
return null;
}
@@ -466,8 +506,8 @@
DartType visitVariableDeclaration(VariableDeclaration node) {
if (childNode == node.initializer) {
var parent = node.parent;
- if (parent is VariableDeclarationList && parent.type != null) {
- return parent.type.type;
+ if (parent is VariableDeclarationList) {
+ return parent.type?.type;
}
}
return null;
@@ -484,78 +524,23 @@
@override
DartType visitYieldStatement(YieldStatement node) {
if (childNode == node.expression) {
- return _returnType(node);
+ var functionBody = node.thisOrAncestorOfType<FunctionBody>();
+ if (functionBody != null) {
+ return BodyInferenceContext.of(functionBody).contextType;
+ }
}
return null;
}
- DartType _returnType(AstNode node) {
- DartType unwrap(DartType returnType, FunctionBody body) {
- if (returnType is InterfaceTypeImpl) {
- DartType unwrapAs(ClassElement superclass) {
- var convertedType = returnType.asInstanceOf(superclass);
- if (convertedType != null) {
- return convertedType.typeArguments[0];
- }
- return null;
- }
-
- if (body.isAsynchronous) {
- if (body.isGenerator) {
- // async* implies Stream<T>
- return unwrapAs(typeProvider.streamElement);
- } else {
- // async implies Future<T>
- return unwrapAs(typeProvider.futureElement);
- }
- } else if (body.isGenerator) {
- // sync* implies Iterable<T>
- return unwrapAs(typeProvider.iterableElement);
- }
- }
- return returnType;
- }
-
- var parent = node.parent;
- while (parent != null) {
- if (parent is MethodDeclaration) {
- return unwrap(parent.declaredElement.returnType, parent.body);
- } else if (parent is ConstructorDeclaration) {
- return parent.declaredElement.returnType;
- } else if (parent is FunctionDeclaration) {
- return unwrap(
- parent.declaredElement.returnType, parent.functionExpression.body);
- }
- parent = parent.parent;
- }
- return null;
- }
-
+ /// Return the result of visiting the parent of the [node] after setting the
+ /// [childNode] to the [node]. Note that this method is destructive in that it
+ /// does not reset the [childNode] before returning.
DartType _visitParent(AstNode node) {
- if (node.parent != null) {
- childNode = node;
- return node.parent.accept(this);
+ var parent = node.parent;
+ if (parent == null) {
+ return null;
}
- return null;
- }
-}
-
-/// Additional behavior for elements related to the computation of features.
-extension ElementExtension on Element {
- /// Return `true` if this element, or any enclosing element, has been
- /// annotated with the `@deprecated` annotation.
- bool get hasOrInheritsDeprecated {
- if (hasDeprecated) {
- return true;
- }
- var element = enclosingElement;
- if (element is ClassElement) {
- if (element.hasDeprecated) {
- return true;
- }
- element = element.enclosingElement;
- }
- return element is CompilationUnitElement &&
- element.enclosingElement.hasDeprecated;
+ childNode = node;
+ return parent.accept(this);
}
}
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/local_library_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/local_library_contributor.dart
index fb142fa..38c868a 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/local_library_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/local_library_contributor.dart
@@ -10,7 +10,6 @@
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart'
show SuggestionBuilder;
import 'package:analyzer/dart/element/element.dart';
-import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer/dart/element/visitor.dart';
import 'package:analyzer_plugin/src/utilities/completion/optype.dart';
@@ -24,8 +23,6 @@
final OpType opType;
- DartType contextType;
-
CompletionSuggestionKind kind;
final String prefix;
@@ -35,8 +32,6 @@
LibraryElementSuggestionBuilder(this.request, this.builder, [this.prefix])
: opType = request.opType {
- contextType = request.featureComputer
- .computeContextType(request.target.containingNode);
kind = request.target.isFunctionalArgument()
? CompletionSuggestionKind.IDENTIFIER
: opType.suggestKind;
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/local_reference_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/local_reference_contributor.dart
index 1164992..c8f6f70 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/local_reference_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/local_reference_contributor.dart
@@ -11,7 +11,6 @@
import 'package:analysis_server/src/utilities/strings.dart';
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/element/element.dart';
-import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer/dart/element/type_provider.dart';
import 'package:analyzer_plugin/src/utilities/completion/optype.dart';
import 'package:analyzer_plugin/src/utilities/visitors/local_declaration_visitor.dart'
@@ -92,10 +91,6 @@
final Map<String, CompletionSuggestion> suggestionMap =
<String, CompletionSuggestion>{};
- /// The context type of the completion offset, or `null` if there is no
- /// context type at that location.
- DartType contextType;
-
/// Only used when [useNewRelevance] is `false`.
int privateMemberRelevance = DART_RELEVANCE_DEFAULT;
@@ -106,10 +101,7 @@
super(request.offset) {
// Suggestions for inherited members are provided by
// InheritedReferenceContributor.
- if (useNewRelevance) {
- contextType = request.featureComputer
- .computeContextType(request.target.containingNode);
- } else {
+ if (!useNewRelevance) {
// If the user typed an identifier starting with '_' then do not suppress
// the relevance of private members.
var data = request.result != null
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/relevance_tables.g.dart b/pkg/analysis_server/lib/src/services/completion/dart/relevance_tables.g.dart
index ab6d997..561608f 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/relevance_tables.g.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/relevance_tables.g.dart
@@ -15,8 +15,8 @@
/// ranges of the relevance of those element kinds in those locations.
const elementKindRelevance = {
'Annotation_name': {
- ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.000, upper: 0.029),
- ElementKind.GETTER: ProbabilityRange(lower: 0.029, upper: 1.000),
+ ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.000, upper: 0.042),
+ ElementKind.GETTER: ProbabilityRange(lower: 0.042, upper: 1.000),
},
'ArgumentList_annotation_named': {
ElementKind.METHOD: ProbabilityRange(lower: 0.000, upper: 0.979),
@@ -27,12 +27,12 @@
ElementKind.FUNCTION: ProbabilityRange(lower: 0.000, upper: 1.000),
},
'ArgumentList_constructorRedirect_named': {
- ElementKind.METHOD: ProbabilityRange(lower: 0.000, upper: 0.027),
- ElementKind.GETTER: ProbabilityRange(lower: 0.027, upper: 0.029),
- ElementKind.ENUM: ProbabilityRange(lower: 0.029, upper: 0.031),
- ElementKind.CLASS: ProbabilityRange(lower: 0.031, upper: 0.034),
- ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.034, upper: 0.044),
- ElementKind.PARAMETER: ProbabilityRange(lower: 0.044, upper: 1.000),
+ ElementKind.METHOD: ProbabilityRange(lower: 0.000, upper: 0.041),
+ ElementKind.GETTER: ProbabilityRange(lower: 0.041, upper: 0.044),
+ ElementKind.ENUM: ProbabilityRange(lower: 0.044, upper: 0.047),
+ ElementKind.CLASS: ProbabilityRange(lower: 0.047, upper: 0.050),
+ ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.050, upper: 0.064),
+ ElementKind.PARAMETER: ProbabilityRange(lower: 0.064, upper: 1.000),
},
'ArgumentList_constructorRedirect_unnamed': {
ElementKind.FUNCTION: ProbabilityRange(lower: 0.000, upper: 0.199),
@@ -44,24 +44,24 @@
ElementKind.PARAMETER: ProbabilityRange(lower: 0.279, upper: 1.000),
},
'ArgumentList_constructor_named': {
- ElementKind.METHOD: ProbabilityRange(lower: 0.000, upper: 0.485),
- ElementKind.PREFIX: ProbabilityRange(lower: 0.485, upper: 0.487),
- ElementKind.FUNCTION: ProbabilityRange(lower: 0.487, upper: 0.489),
- ElementKind.ENUM: ProbabilityRange(lower: 0.489, upper: 0.501),
- ElementKind.GETTER: ProbabilityRange(lower: 0.501, upper: 0.539),
- ElementKind.PARAMETER: ProbabilityRange(lower: 0.539, upper: 0.579),
- ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.579, upper: 0.646),
- ElementKind.CLASS: ProbabilityRange(lower: 0.646, upper: 0.735),
- ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.735, upper: 1.000),
+ ElementKind.METHOD: ProbabilityRange(lower: 0.000, upper: 0.492),
+ ElementKind.PREFIX: ProbabilityRange(lower: 0.492, upper: 0.493),
+ ElementKind.FUNCTION: ProbabilityRange(lower: 0.493, upper: 0.495),
+ ElementKind.ENUM: ProbabilityRange(lower: 0.495, upper: 0.507),
+ ElementKind.PARAMETER: ProbabilityRange(lower: 0.507, upper: 0.536),
+ ElementKind.GETTER: ProbabilityRange(lower: 0.536, upper: 0.574),
+ ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.574, upper: 0.642),
+ ElementKind.CLASS: ProbabilityRange(lower: 0.642, upper: 0.731),
+ ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.731, upper: 1.000),
},
'ArgumentList_constructor_unnamed': {
ElementKind.PREFIX: ProbabilityRange(lower: 0.000, upper: 0.617),
- ElementKind.METHOD: ProbabilityRange(lower: 0.617, upper: 0.621),
- ElementKind.ENUM: ProbabilityRange(lower: 0.621, upper: 0.629),
- ElementKind.FUNCTION: ProbabilityRange(lower: 0.629, upper: 0.645),
- ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.645, upper: 0.683),
- ElementKind.GETTER: ProbabilityRange(lower: 0.683, upper: 0.733),
- ElementKind.PARAMETER: ProbabilityRange(lower: 0.733, upper: 0.811),
+ ElementKind.METHOD: ProbabilityRange(lower: 0.617, upper: 0.622),
+ ElementKind.ENUM: ProbabilityRange(lower: 0.622, upper: 0.630),
+ ElementKind.FUNCTION: ProbabilityRange(lower: 0.630, upper: 0.646),
+ ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.646, upper: 0.684),
+ ElementKind.GETTER: ProbabilityRange(lower: 0.684, upper: 0.734),
+ ElementKind.PARAMETER: ProbabilityRange(lower: 0.734, upper: 0.811),
ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.811, upper: 0.905),
ElementKind.CLASS: ProbabilityRange(lower: 0.905, upper: 1.000),
},
@@ -82,34 +82,34 @@
ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.583, upper: 1.000),
},
'ArgumentList_method_named': {
- ElementKind.PREFIX: ProbabilityRange(lower: 0.000, upper: 0.548),
- ElementKind.FUNCTION: ProbabilityRange(lower: 0.548, upper: 0.551),
- ElementKind.METHOD: ProbabilityRange(lower: 0.551, upper: 0.555),
- ElementKind.ENUM: ProbabilityRange(lower: 0.555, upper: 0.568),
- ElementKind.CLASS: ProbabilityRange(lower: 0.568, upper: 0.626),
- ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.626, upper: 0.686),
+ ElementKind.PREFIX: ProbabilityRange(lower: 0.000, upper: 0.549),
+ ElementKind.FUNCTION: ProbabilityRange(lower: 0.549, upper: 0.552),
+ ElementKind.METHOD: ProbabilityRange(lower: 0.552, upper: 0.556),
+ ElementKind.ENUM: ProbabilityRange(lower: 0.556, upper: 0.569),
+ ElementKind.CLASS: ProbabilityRange(lower: 0.569, upper: 0.627),
+ ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.627, upper: 0.686),
ElementKind.GETTER: ProbabilityRange(lower: 0.686, upper: 0.764),
ElementKind.PARAMETER: ProbabilityRange(lower: 0.764, upper: 0.854),
ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.854, upper: 1.000),
},
'ArgumentList_method_unnamed': {
- ElementKind.MIXIN: ProbabilityRange(lower: 0.000, upper: 0.387),
- ElementKind.SETTER: ProbabilityRange(lower: 0.387, upper: 0.387),
- ElementKind.TYPE_PARAMETER: ProbabilityRange(lower: 0.387, upper: 0.387),
- ElementKind.PREFIX: ProbabilityRange(lower: 0.387, upper: 0.388),
- ElementKind.ENUM: ProbabilityRange(lower: 0.388, upper: 0.394),
- ElementKind.METHOD: ProbabilityRange(lower: 0.394, upper: 0.402),
- ElementKind.FUNCTION: ProbabilityRange(lower: 0.402, upper: 0.425),
- ElementKind.CLASS: ProbabilityRange(lower: 0.425, upper: 0.452),
- ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.452, upper: 0.510),
- ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.510, upper: 0.624),
- ElementKind.GETTER: ProbabilityRange(lower: 0.624, upper: 0.746),
- ElementKind.PARAMETER: ProbabilityRange(lower: 0.746, upper: 1.000),
+ ElementKind.MIXIN: ProbabilityRange(lower: 0.000, upper: 0.388),
+ ElementKind.SETTER: ProbabilityRange(lower: 0.388, upper: 0.388),
+ ElementKind.TYPE_PARAMETER: ProbabilityRange(lower: 0.388, upper: 0.388),
+ ElementKind.PREFIX: ProbabilityRange(lower: 0.388, upper: 0.389),
+ ElementKind.ENUM: ProbabilityRange(lower: 0.389, upper: 0.395),
+ ElementKind.METHOD: ProbabilityRange(lower: 0.395, upper: 0.403),
+ ElementKind.FUNCTION: ProbabilityRange(lower: 0.403, upper: 0.426),
+ ElementKind.CLASS: ProbabilityRange(lower: 0.426, upper: 0.453),
+ ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.453, upper: 0.511),
+ ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.511, upper: 0.625),
+ ElementKind.GETTER: ProbabilityRange(lower: 0.625, upper: 0.747),
+ ElementKind.PARAMETER: ProbabilityRange(lower: 0.747, upper: 1.000),
},
'ArgumentList_widgetConstructor_named': {
- ElementKind.SETTER: ProbabilityRange(lower: 0.000, upper: 0.351),
- ElementKind.PREFIX: ProbabilityRange(lower: 0.351, upper: 0.352),
- ElementKind.FUNCTION: ProbabilityRange(lower: 0.352, upper: 0.355),
+ ElementKind.SETTER: ProbabilityRange(lower: 0.000, upper: 0.352),
+ ElementKind.PREFIX: ProbabilityRange(lower: 0.352, upper: 0.353),
+ ElementKind.FUNCTION: ProbabilityRange(lower: 0.353, upper: 0.355),
ElementKind.METHOD: ProbabilityRange(lower: 0.355, upper: 0.368),
ElementKind.PARAMETER: ProbabilityRange(lower: 0.368, upper: 0.387),
ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.387, upper: 0.422),
@@ -119,14 +119,14 @@
ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.636, upper: 1.000),
},
'ArgumentList_widgetConstructor_unnamed': {
- ElementKind.ENUM: ProbabilityRange(lower: 0.000, upper: 0.461),
- ElementKind.PREFIX: ProbabilityRange(lower: 0.461, upper: 0.463),
- ElementKind.FUNCTION: ProbabilityRange(lower: 0.463, upper: 0.469),
- ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.469, upper: 0.475),
- ElementKind.METHOD: ProbabilityRange(lower: 0.475, upper: 0.491),
- ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.491, upper: 0.541),
- ElementKind.PARAMETER: ProbabilityRange(lower: 0.541, upper: 0.612),
- ElementKind.GETTER: ProbabilityRange(lower: 0.612, upper: 0.757),
+ ElementKind.ENUM: ProbabilityRange(lower: 0.000, upper: 0.462),
+ ElementKind.PREFIX: ProbabilityRange(lower: 0.462, upper: 0.464),
+ ElementKind.FUNCTION: ProbabilityRange(lower: 0.464, upper: 0.470),
+ ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.470, upper: 0.476),
+ ElementKind.METHOD: ProbabilityRange(lower: 0.476, upper: 0.492),
+ ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.492, upper: 0.542),
+ ElementKind.PARAMETER: ProbabilityRange(lower: 0.542, upper: 0.613),
+ ElementKind.GETTER: ProbabilityRange(lower: 0.613, upper: 0.757),
ElementKind.CLASS: ProbabilityRange(lower: 0.757, upper: 1.000),
},
'AsExpression_type': {
@@ -144,12 +144,12 @@
ElementKind.PARAMETER: ProbabilityRange(lower: 0.000, upper: 1.000),
},
'AssertStatement_condition': {
- ElementKind.PREFIX: ProbabilityRange(lower: 0.000, upper: 0.142),
- ElementKind.METHOD: ProbabilityRange(lower: 0.142, upper: 0.176),
- ElementKind.FUNCTION: ProbabilityRange(lower: 0.176, upper: 0.226),
- ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.226, upper: 0.332),
- ElementKind.GETTER: ProbabilityRange(lower: 0.332, upper: 0.662),
- ElementKind.PARAMETER: ProbabilityRange(lower: 0.662, upper: 1.000),
+ ElementKind.PREFIX: ProbabilityRange(lower: 0.000, upper: 0.144),
+ ElementKind.METHOD: ProbabilityRange(lower: 0.144, upper: 0.179),
+ ElementKind.FUNCTION: ProbabilityRange(lower: 0.179, upper: 0.230),
+ ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.230, upper: 0.346),
+ ElementKind.PARAMETER: ProbabilityRange(lower: 0.346, upper: 0.644),
+ ElementKind.GETTER: ProbabilityRange(lower: 0.644, upper: 1.000),
},
'AssertStatement_message': {
ElementKind.METHOD: ProbabilityRange(lower: 0.000, upper: 1.000),
@@ -157,99 +157,99 @@
'AssignmentExpression_rightHandSide': {
ElementKind.SETTER: ProbabilityRange(lower: 0.000, upper: 0.305),
ElementKind.PREFIX: ProbabilityRange(lower: 0.305, upper: 0.306),
- ElementKind.FUNCTION: ProbabilityRange(lower: 0.306, upper: 0.318),
- ElementKind.METHOD: ProbabilityRange(lower: 0.318, upper: 0.329),
- ElementKind.ENUM: ProbabilityRange(lower: 0.329, upper: 0.350),
- ElementKind.CLASS: ProbabilityRange(lower: 0.350, upper: 0.395),
- ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.395, upper: 0.490),
- ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.490, upper: 0.601),
- ElementKind.GETTER: ProbabilityRange(lower: 0.601, upper: 0.740),
- ElementKind.PARAMETER: ProbabilityRange(lower: 0.740, upper: 1.000),
+ ElementKind.FUNCTION: ProbabilityRange(lower: 0.306, upper: 0.317),
+ ElementKind.METHOD: ProbabilityRange(lower: 0.317, upper: 0.329),
+ ElementKind.ENUM: ProbabilityRange(lower: 0.329, upper: 0.349),
+ ElementKind.CLASS: ProbabilityRange(lower: 0.349, upper: 0.395),
+ ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.395, upper: 0.489),
+ ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.489, upper: 0.600),
+ ElementKind.GETTER: ProbabilityRange(lower: 0.600, upper: 0.739),
+ ElementKind.PARAMETER: ProbabilityRange(lower: 0.739, upper: 1.000),
},
'AwaitExpression_expression': {
ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.000, upper: 0.022),
ElementKind.PREFIX: ProbabilityRange(lower: 0.022, upper: 0.049),
ElementKind.METHOD: ProbabilityRange(lower: 0.049, upper: 0.144),
- ElementKind.FUNCTION: ProbabilityRange(lower: 0.144, upper: 0.291),
- ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.291, upper: 0.448),
- ElementKind.CLASS: ProbabilityRange(lower: 0.448, upper: 0.606),
- ElementKind.PARAMETER: ProbabilityRange(lower: 0.606, upper: 0.773),
- ElementKind.GETTER: ProbabilityRange(lower: 0.773, upper: 1.000),
+ ElementKind.FUNCTION: ProbabilityRange(lower: 0.144, upper: 0.292),
+ ElementKind.CLASS: ProbabilityRange(lower: 0.292, upper: 0.450),
+ ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.450, upper: 0.608),
+ ElementKind.PARAMETER: ProbabilityRange(lower: 0.608, upper: 0.772),
+ ElementKind.GETTER: ProbabilityRange(lower: 0.772, upper: 1.000),
},
'BinaryExpression_!=_rightOperand': {
ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.000, upper: 0.874),
- ElementKind.PREFIX: ProbabilityRange(lower: 0.874, upper: 0.874),
- ElementKind.METHOD: ProbabilityRange(lower: 0.874, upper: 0.875),
+ ElementKind.PREFIX: ProbabilityRange(lower: 0.874, upper: 0.875),
+ ElementKind.METHOD: ProbabilityRange(lower: 0.875, upper: 0.875),
ElementKind.CLASS: ProbabilityRange(lower: 0.875, upper: 0.886),
ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.886, upper: 0.903),
ElementKind.ENUM: ProbabilityRange(lower: 0.903, upper: 0.921),
- ElementKind.GETTER: ProbabilityRange(lower: 0.921, upper: 0.958),
- ElementKind.PARAMETER: ProbabilityRange(lower: 0.958, upper: 1.000),
+ ElementKind.GETTER: ProbabilityRange(lower: 0.921, upper: 0.957),
+ ElementKind.PARAMETER: ProbabilityRange(lower: 0.957, upper: 1.000),
},
'BinaryExpression_%_rightOperand': {
- ElementKind.ENUM: ProbabilityRange(lower: 0.000, upper: 0.719),
- ElementKind.MIXIN: ProbabilityRange(lower: 0.719, upper: 0.725),
- ElementKind.CLASS: ProbabilityRange(lower: 0.725, upper: 0.752),
- ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.752, upper: 0.784),
- ElementKind.PARAMETER: ProbabilityRange(lower: 0.784, upper: 0.853),
- ElementKind.GETTER: ProbabilityRange(lower: 0.853, upper: 1.000),
+ ElementKind.ENUM: ProbabilityRange(lower: 0.000, upper: 0.722),
+ ElementKind.MIXIN: ProbabilityRange(lower: 0.722, upper: 0.728),
+ ElementKind.CLASS: ProbabilityRange(lower: 0.728, upper: 0.755),
+ ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.755, upper: 0.788),
+ ElementKind.PARAMETER: ProbabilityRange(lower: 0.788, upper: 0.851),
+ ElementKind.GETTER: ProbabilityRange(lower: 0.851, upper: 1.000),
},
'BinaryExpression_&&_rightOperand': {
- ElementKind.PREFIX: ProbabilityRange(lower: 0.000, upper: 0.108),
- ElementKind.METHOD: ProbabilityRange(lower: 0.108, upper: 0.113),
- ElementKind.FUNCTION: ProbabilityRange(lower: 0.113, upper: 0.123),
- ElementKind.CLASS: ProbabilityRange(lower: 0.123, upper: 0.138),
- ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.138, upper: 0.260),
- ElementKind.PARAMETER: ProbabilityRange(lower: 0.260, upper: 0.442),
- ElementKind.GETTER: ProbabilityRange(lower: 0.442, upper: 1.000),
+ ElementKind.PREFIX: ProbabilityRange(lower: 0.000, upper: 0.107),
+ ElementKind.METHOD: ProbabilityRange(lower: 0.107, upper: 0.112),
+ ElementKind.FUNCTION: ProbabilityRange(lower: 0.112, upper: 0.122),
+ ElementKind.CLASS: ProbabilityRange(lower: 0.122, upper: 0.137),
+ ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.137, upper: 0.259),
+ ElementKind.PARAMETER: ProbabilityRange(lower: 0.259, upper: 0.439),
+ ElementKind.GETTER: ProbabilityRange(lower: 0.439, upper: 1.000),
},
'BinaryExpression_&_rightOperand': {
- ElementKind.CLASS: ProbabilityRange(lower: 0.000, upper: 0.266),
- ElementKind.GETTER: ProbabilityRange(lower: 0.266, upper: 0.364),
- ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.364, upper: 0.462),
- ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.462, upper: 0.723),
- ElementKind.PARAMETER: ProbabilityRange(lower: 0.723, upper: 1.000),
+ ElementKind.CLASS: ProbabilityRange(lower: 0.000, upper: 0.285),
+ ElementKind.GETTER: ProbabilityRange(lower: 0.285, upper: 0.390),
+ ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.390, upper: 0.494),
+ ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.494, upper: 0.703),
+ ElementKind.PARAMETER: ProbabilityRange(lower: 0.703, upper: 1.000),
},
'BinaryExpression_*_rightOperand': {
- ElementKind.MIXIN: ProbabilityRange(lower: 0.000, upper: 0.611),
- ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.611, upper: 0.613),
- ElementKind.METHOD: ProbabilityRange(lower: 0.613, upper: 0.616),
- ElementKind.CLASS: ProbabilityRange(lower: 0.616, upper: 0.625),
- ElementKind.FUNCTION: ProbabilityRange(lower: 0.625, upper: 0.640),
- ElementKind.PREFIX: ProbabilityRange(lower: 0.640, upper: 0.663),
- ElementKind.PARAMETER: ProbabilityRange(lower: 0.663, upper: 0.714),
- ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.714, upper: 0.850),
- ElementKind.GETTER: ProbabilityRange(lower: 0.850, upper: 1.000),
+ ElementKind.MIXIN: ProbabilityRange(lower: 0.000, upper: 0.622),
+ ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.622, upper: 0.624),
+ ElementKind.METHOD: ProbabilityRange(lower: 0.624, upper: 0.627),
+ ElementKind.CLASS: ProbabilityRange(lower: 0.627, upper: 0.636),
+ ElementKind.FUNCTION: ProbabilityRange(lower: 0.636, upper: 0.651),
+ ElementKind.PREFIX: ProbabilityRange(lower: 0.651, upper: 0.672),
+ ElementKind.PARAMETER: ProbabilityRange(lower: 0.672, upper: 0.722),
+ ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.722, upper: 0.851),
+ ElementKind.GETTER: ProbabilityRange(lower: 0.851, upper: 1.000),
},
'BinaryExpression_+_rightOperand': {
- ElementKind.PREFIX: ProbabilityRange(lower: 0.000, upper: 0.500),
- ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.500, upper: 0.505),
- ElementKind.METHOD: ProbabilityRange(lower: 0.505, upper: 0.511),
- ElementKind.FUNCTION: ProbabilityRange(lower: 0.511, upper: 0.526),
- ElementKind.CLASS: ProbabilityRange(lower: 0.526, upper: 0.549),
- ElementKind.PARAMETER: ProbabilityRange(lower: 0.549, upper: 0.668),
- ElementKind.GETTER: ProbabilityRange(lower: 0.668, upper: 0.825),
- ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.825, upper: 1.000),
+ ElementKind.PREFIX: ProbabilityRange(lower: 0.000, upper: 0.508),
+ ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.508, upper: 0.510),
+ ElementKind.METHOD: ProbabilityRange(lower: 0.510, upper: 0.517),
+ ElementKind.FUNCTION: ProbabilityRange(lower: 0.517, upper: 0.532),
+ ElementKind.CLASS: ProbabilityRange(lower: 0.532, upper: 0.556),
+ ElementKind.PARAMETER: ProbabilityRange(lower: 0.556, upper: 0.675),
+ ElementKind.GETTER: ProbabilityRange(lower: 0.675, upper: 0.829),
+ ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.829, upper: 1.000),
},
'BinaryExpression_-_rightOperand': {
- ElementKind.FUNCTION: ProbabilityRange(lower: 0.000, upper: 0.473),
- ElementKind.PREFIX: ProbabilityRange(lower: 0.473, upper: 0.477),
- ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.477, upper: 0.483),
- ElementKind.METHOD: ProbabilityRange(lower: 0.483, upper: 0.491),
- ElementKind.CLASS: ProbabilityRange(lower: 0.491, upper: 0.506),
- ElementKind.PARAMETER: ProbabilityRange(lower: 0.506, upper: 0.597),
- ElementKind.GETTER: ProbabilityRange(lower: 0.597, upper: 0.793),
- ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.793, upper: 1.000),
+ ElementKind.PREFIX: ProbabilityRange(lower: 0.000, upper: 0.485),
+ ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.485, upper: 0.488),
+ ElementKind.FUNCTION: ProbabilityRange(lower: 0.488, upper: 0.490),
+ ElementKind.METHOD: ProbabilityRange(lower: 0.490, upper: 0.499),
+ ElementKind.CLASS: ProbabilityRange(lower: 0.499, upper: 0.515),
+ ElementKind.PARAMETER: ProbabilityRange(lower: 0.515, upper: 0.605),
+ ElementKind.GETTER: ProbabilityRange(lower: 0.605, upper: 0.802),
+ ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.802, upper: 1.000),
},
'BinaryExpression_/_rightOperand': {
- ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.000, upper: 0.762),
- ElementKind.METHOD: ProbabilityRange(lower: 0.762, upper: 0.763),
- ElementKind.PREFIX: ProbabilityRange(lower: 0.763, upper: 0.765),
- ElementKind.FUNCTION: ProbabilityRange(lower: 0.765, upper: 0.771),
- ElementKind.CLASS: ProbabilityRange(lower: 0.771, upper: 0.779),
- ElementKind.PARAMETER: ProbabilityRange(lower: 0.779, upper: 0.818),
- ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.818, upper: 0.907),
- ElementKind.GETTER: ProbabilityRange(lower: 0.907, upper: 1.000),
+ ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.000, upper: 0.768),
+ ElementKind.METHOD: ProbabilityRange(lower: 0.768, upper: 0.768),
+ ElementKind.PREFIX: ProbabilityRange(lower: 0.768, upper: 0.771),
+ ElementKind.FUNCTION: ProbabilityRange(lower: 0.771, upper: 0.777),
+ ElementKind.CLASS: ProbabilityRange(lower: 0.777, upper: 0.786),
+ ElementKind.PARAMETER: ProbabilityRange(lower: 0.786, upper: 0.822),
+ ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.822, upper: 0.910),
+ ElementKind.GETTER: ProbabilityRange(lower: 0.910, upper: 1.000),
},
'BinaryExpression_<<_rightOperand': {
ElementKind.PARAMETER: ProbabilityRange(lower: 0.000, upper: 0.756),
@@ -257,61 +257,61 @@
ElementKind.GETTER: ProbabilityRange(lower: 0.854, upper: 1.000),
},
'BinaryExpression_<=_rightOperand': {
- ElementKind.CLASS: ProbabilityRange(lower: 0.000, upper: 0.607),
- ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.607, upper: 0.717),
- ElementKind.PARAMETER: ProbabilityRange(lower: 0.717, upper: 0.848),
+ ElementKind.CLASS: ProbabilityRange(lower: 0.000, upper: 0.609),
+ ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.609, upper: 0.721),
+ ElementKind.PARAMETER: ProbabilityRange(lower: 0.721, upper: 0.848),
ElementKind.GETTER: ProbabilityRange(lower: 0.848, upper: 1.000),
},
'BinaryExpression_<_rightOperand': {
ElementKind.ENUM: ProbabilityRange(lower: 0.000, upper: 0.424),
- ElementKind.METHOD: ProbabilityRange(lower: 0.424, upper: 0.425),
- ElementKind.FUNCTION: ProbabilityRange(lower: 0.425, upper: 0.426),
- ElementKind.CLASS: ProbabilityRange(lower: 0.426, upper: 0.438),
- ElementKind.PARAMETER: ProbabilityRange(lower: 0.438, upper: 0.557),
- ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.557, upper: 0.773),
- ElementKind.GETTER: ProbabilityRange(lower: 0.773, upper: 1.000),
+ ElementKind.METHOD: ProbabilityRange(lower: 0.424, upper: 0.426),
+ ElementKind.FUNCTION: ProbabilityRange(lower: 0.426, upper: 0.427),
+ ElementKind.CLASS: ProbabilityRange(lower: 0.427, upper: 0.439),
+ ElementKind.PARAMETER: ProbabilityRange(lower: 0.439, upper: 0.557),
+ ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.557, upper: 0.771),
+ ElementKind.GETTER: ProbabilityRange(lower: 0.771, upper: 1.000),
},
'BinaryExpression_==_rightOperand': {
- ElementKind.UNKNOWN: ProbabilityRange(lower: 0.000, upper: 0.567),
- ElementKind.FUNCTION: ProbabilityRange(lower: 0.567, upper: 0.567),
- ElementKind.METHOD: ProbabilityRange(lower: 0.567, upper: 0.567),
- ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.567, upper: 0.567),
- ElementKind.PREFIX: ProbabilityRange(lower: 0.567, upper: 0.568),
- ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.568, upper: 0.591),
- ElementKind.CLASS: ProbabilityRange(lower: 0.591, upper: 0.629),
- ElementKind.GETTER: ProbabilityRange(lower: 0.629, upper: 0.679),
+ ElementKind.UNKNOWN: ProbabilityRange(lower: 0.000, upper: 0.568),
+ ElementKind.FUNCTION: ProbabilityRange(lower: 0.568, upper: 0.568),
+ ElementKind.METHOD: ProbabilityRange(lower: 0.568, upper: 0.568),
+ ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.568, upper: 0.569),
+ ElementKind.PREFIX: ProbabilityRange(lower: 0.569, upper: 0.569),
+ ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.569, upper: 0.593),
+ ElementKind.CLASS: ProbabilityRange(lower: 0.593, upper: 0.631),
+ ElementKind.GETTER: ProbabilityRange(lower: 0.631, upper: 0.679),
ElementKind.ENUM: ProbabilityRange(lower: 0.679, upper: 0.807),
ElementKind.PARAMETER: ProbabilityRange(lower: 0.807, upper: 1.000),
},
'BinaryExpression_>=_rightOperand': {
ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.000, upper: 0.714),
ElementKind.CLASS: ProbabilityRange(lower: 0.714, upper: 0.731),
- ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.731, upper: 0.791),
- ElementKind.PARAMETER: ProbabilityRange(lower: 0.791, upper: 0.854),
+ ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.731, upper: 0.792),
+ ElementKind.PARAMETER: ProbabilityRange(lower: 0.792, upper: 0.854),
ElementKind.GETTER: ProbabilityRange(lower: 0.854, upper: 1.000),
},
'BinaryExpression_>>_rightOperand': {
ElementKind.PARAMETER: ProbabilityRange(lower: 0.000, upper: 1.000),
},
'BinaryExpression_>_rightOperand': {
- ElementKind.PREFIX: ProbabilityRange(lower: 0.000, upper: 0.813),
- ElementKind.FUNCTION: ProbabilityRange(lower: 0.813, upper: 0.814),
- ElementKind.ENUM: ProbabilityRange(lower: 0.814, upper: 0.815),
- ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.815, upper: 0.818),
- ElementKind.CLASS: ProbabilityRange(lower: 0.818, upper: 0.826),
- ElementKind.PARAMETER: ProbabilityRange(lower: 0.826, upper: 0.867),
- ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.867, upper: 0.928),
+ ElementKind.PREFIX: ProbabilityRange(lower: 0.000, upper: 0.815),
+ ElementKind.FUNCTION: ProbabilityRange(lower: 0.815, upper: 0.815),
+ ElementKind.ENUM: ProbabilityRange(lower: 0.815, upper: 0.817),
+ ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.817, upper: 0.820),
+ ElementKind.CLASS: ProbabilityRange(lower: 0.820, upper: 0.828),
+ ElementKind.PARAMETER: ProbabilityRange(lower: 0.828, upper: 0.868),
+ ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.868, upper: 0.928),
ElementKind.GETTER: ProbabilityRange(lower: 0.928, upper: 1.000),
},
'BinaryExpression_??_rightOperand': {
ElementKind.PREFIX: ProbabilityRange(lower: 0.000, upper: 0.665),
ElementKind.METHOD: ProbabilityRange(lower: 0.665, upper: 0.668),
ElementKind.FUNCTION: ProbabilityRange(lower: 0.668, upper: 0.673),
- ElementKind.ENUM: ProbabilityRange(lower: 0.673, upper: 0.684),
- ElementKind.PARAMETER: ProbabilityRange(lower: 0.684, upper: 0.726),
- ElementKind.GETTER: ProbabilityRange(lower: 0.726, upper: 0.768),
- ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.768, upper: 0.816),
- ElementKind.CLASS: ProbabilityRange(lower: 0.816, upper: 0.871),
+ ElementKind.ENUM: ProbabilityRange(lower: 0.673, upper: 0.685),
+ ElementKind.PARAMETER: ProbabilityRange(lower: 0.685, upper: 0.726),
+ ElementKind.GETTER: ProbabilityRange(lower: 0.726, upper: 0.769),
+ ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.769, upper: 0.817),
+ ElementKind.CLASS: ProbabilityRange(lower: 0.817, upper: 0.871),
ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.871, upper: 1.000),
},
'BinaryExpression_^_rightOperand': {
@@ -324,48 +324,48 @@
ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.429, upper: 1.000),
},
'BinaryExpression_||_rightOperand': {
- ElementKind.METHOD: ProbabilityRange(lower: 0.000, upper: 0.144),
- ElementKind.FUNCTION: ProbabilityRange(lower: 0.144, upper: 0.148),
- ElementKind.CLASS: ProbabilityRange(lower: 0.148, upper: 0.168),
- ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.168, upper: 0.378),
- ElementKind.GETTER: ProbabilityRange(lower: 0.378, upper: 0.663),
- ElementKind.PARAMETER: ProbabilityRange(lower: 0.663, upper: 1.000),
+ ElementKind.METHOD: ProbabilityRange(lower: 0.000, upper: 0.143),
+ ElementKind.FUNCTION: ProbabilityRange(lower: 0.143, upper: 0.147),
+ ElementKind.CLASS: ProbabilityRange(lower: 0.147, upper: 0.167),
+ ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.167, upper: 0.380),
+ ElementKind.GETTER: ProbabilityRange(lower: 0.380, upper: 0.666),
+ ElementKind.PARAMETER: ProbabilityRange(lower: 0.666, upper: 1.000),
},
'BinaryExpression_~/_rightOperand': {
- ElementKind.CLASS: ProbabilityRange(lower: 0.000, upper: 0.627),
- ElementKind.MIXIN: ProbabilityRange(lower: 0.627, upper: 0.640),
- ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.640, upper: 0.677),
- ElementKind.PARAMETER: ProbabilityRange(lower: 0.677, upper: 0.795),
- ElementKind.GETTER: ProbabilityRange(lower: 0.795, upper: 1.000),
+ ElementKind.CLASS: ProbabilityRange(lower: 0.000, upper: 0.635),
+ ElementKind.MIXIN: ProbabilityRange(lower: 0.635, upper: 0.648),
+ ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.648, upper: 0.686),
+ ElementKind.PARAMETER: ProbabilityRange(lower: 0.686, upper: 0.792),
+ ElementKind.GETTER: ProbabilityRange(lower: 0.792, upper: 1.000),
},
'Block_statement': {
ElementKind.TYPE_PARAMETER: ProbabilityRange(lower: 0.000, upper: 0.537),
ElementKind.FUNCTION_TYPE_ALIAS:
ProbabilityRange(lower: 0.537, upper: 0.537),
- ElementKind.UNKNOWN: ProbabilityRange(lower: 0.537, upper: 0.538),
- ElementKind.ENUM: ProbabilityRange(lower: 0.538, upper: 0.538),
- ElementKind.MIXIN: ProbabilityRange(lower: 0.538, upper: 0.539),
- ElementKind.PREFIX: ProbabilityRange(lower: 0.539, upper: 0.540),
+ ElementKind.UNKNOWN: ProbabilityRange(lower: 0.537, upper: 0.537),
+ ElementKind.ENUM: ProbabilityRange(lower: 0.537, upper: 0.538),
+ ElementKind.MIXIN: ProbabilityRange(lower: 0.538, upper: 0.538),
+ ElementKind.PREFIX: ProbabilityRange(lower: 0.538, upper: 0.540),
ElementKind.PARAMETER: ProbabilityRange(lower: 0.540, upper: 0.563),
- ElementKind.METHOD: ProbabilityRange(lower: 0.563, upper: 0.614),
- ElementKind.FUNCTION: ProbabilityRange(lower: 0.614, upper: 0.674),
- ElementKind.GETTER: ProbabilityRange(lower: 0.674, upper: 0.743),
- ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.743, upper: 0.825),
- ElementKind.SETTER: ProbabilityRange(lower: 0.825, upper: 0.911),
+ ElementKind.METHOD: ProbabilityRange(lower: 0.563, upper: 0.613),
+ ElementKind.FUNCTION: ProbabilityRange(lower: 0.613, upper: 0.673),
+ ElementKind.GETTER: ProbabilityRange(lower: 0.673, upper: 0.742),
+ ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.742, upper: 0.824),
+ ElementKind.SETTER: ProbabilityRange(lower: 0.824, upper: 0.911),
ElementKind.CLASS: ProbabilityRange(lower: 0.911, upper: 1.000),
},
'CatchClause_exceptionType': {
ElementKind.CLASS: ProbabilityRange(lower: 0.000, upper: 1.000),
},
'ClassDeclaration_member': {
- ElementKind.MIXIN: ProbabilityRange(lower: 0.000, upper: 0.390),
- ElementKind.PREFIX: ProbabilityRange(lower: 0.390, upper: 0.390),
- ElementKind.UNKNOWN: ProbabilityRange(lower: 0.390, upper: 0.391),
- ElementKind.TYPE_PARAMETER: ProbabilityRange(lower: 0.391, upper: 0.392),
+ ElementKind.MIXIN: ProbabilityRange(lower: 0.000, upper: 0.424),
+ ElementKind.PREFIX: ProbabilityRange(lower: 0.424, upper: 0.425),
+ ElementKind.UNKNOWN: ProbabilityRange(lower: 0.425, upper: 0.426),
+ ElementKind.TYPE_PARAMETER: ProbabilityRange(lower: 0.426, upper: 0.426),
ElementKind.FUNCTION_TYPE_ALIAS:
- ProbabilityRange(lower: 0.392, upper: 0.393),
- ElementKind.ENUM: ProbabilityRange(lower: 0.393, upper: 0.399),
- ElementKind.CLASS: ProbabilityRange(lower: 0.399, upper: 1.000),
+ ProbabilityRange(lower: 0.426, upper: 0.428),
+ ElementKind.ENUM: ProbabilityRange(lower: 0.428, upper: 0.433),
+ ElementKind.CLASS: ProbabilityRange(lower: 0.433, upper: 1.000),
},
'ClassTypeAlias_superclass': {
ElementKind.CLASS: ProbabilityRange(lower: 0.000, upper: 1.000),
@@ -374,32 +374,32 @@
ElementKind.UNKNOWN: ProbabilityRange(lower: 0.000, upper: 0.001),
ElementKind.SETTER: ProbabilityRange(lower: 0.001, upper: 0.001),
ElementKind.FUNCTION_TYPE_ALIAS:
- ProbabilityRange(lower: 0.001, upper: 0.002),
- ElementKind.TYPE_PARAMETER: ProbabilityRange(lower: 0.002, upper: 0.004),
- ElementKind.PREFIX: ProbabilityRange(lower: 0.004, upper: 0.008),
- ElementKind.FUNCTION: ProbabilityRange(lower: 0.008, upper: 0.021),
- ElementKind.METHOD: ProbabilityRange(lower: 0.021, upper: 0.054),
- ElementKind.PARAMETER: ProbabilityRange(lower: 0.054, upper: 0.106),
- ElementKind.ENUM: ProbabilityRange(lower: 0.106, upper: 0.167),
- ElementKind.GETTER: ProbabilityRange(lower: 0.167, upper: 0.425),
- ElementKind.CLASS: ProbabilityRange(lower: 0.425, upper: 1.000),
+ ProbabilityRange(lower: 0.001, upper: 0.003),
+ ElementKind.TYPE_PARAMETER: ProbabilityRange(lower: 0.003, upper: 0.005),
+ ElementKind.PREFIX: ProbabilityRange(lower: 0.005, upper: 0.009),
+ ElementKind.FUNCTION: ProbabilityRange(lower: 0.009, upper: 0.022),
+ ElementKind.METHOD: ProbabilityRange(lower: 0.022, upper: 0.056),
+ ElementKind.PARAMETER: ProbabilityRange(lower: 0.056, upper: 0.114),
+ ElementKind.ENUM: ProbabilityRange(lower: 0.114, upper: 0.177),
+ ElementKind.GETTER: ProbabilityRange(lower: 0.177, upper: 0.456),
+ ElementKind.CLASS: ProbabilityRange(lower: 0.456, upper: 1.000),
},
'CompilationUnit_declaration': {
- ElementKind.PREFIX: ProbabilityRange(lower: 0.000, upper: 0.820),
- ElementKind.UNKNOWN: ProbabilityRange(lower: 0.820, upper: 0.820),
- ElementKind.TYPE_PARAMETER: ProbabilityRange(lower: 0.820, upper: 0.821),
- ElementKind.ENUM: ProbabilityRange(lower: 0.821, upper: 0.823),
+ ElementKind.PREFIX: ProbabilityRange(lower: 0.000, upper: 0.818),
+ ElementKind.UNKNOWN: ProbabilityRange(lower: 0.818, upper: 0.819),
+ ElementKind.TYPE_PARAMETER: ProbabilityRange(lower: 0.819, upper: 0.820),
+ ElementKind.ENUM: ProbabilityRange(lower: 0.820, upper: 0.822),
ElementKind.FUNCTION_TYPE_ALIAS:
- ProbabilityRange(lower: 0.823, upper: 0.837),
- ElementKind.CLASS: ProbabilityRange(lower: 0.837, upper: 1.000),
+ ProbabilityRange(lower: 0.822, upper: 0.836),
+ ElementKind.CLASS: ProbabilityRange(lower: 0.836, upper: 1.000),
},
'ConditionalExpression_elseExpression': {
- ElementKind.PREFIX: ProbabilityRange(lower: 0.000, upper: 0.370),
- ElementKind.SETTER: ProbabilityRange(lower: 0.370, upper: 0.375),
+ ElementKind.PREFIX: ProbabilityRange(lower: 0.000, upper: 0.369),
+ ElementKind.SETTER: ProbabilityRange(lower: 0.369, upper: 0.375),
ElementKind.FUNCTION: ProbabilityRange(lower: 0.375, upper: 0.383),
- ElementKind.METHOD: ProbabilityRange(lower: 0.383, upper: 0.403),
- ElementKind.ENUM: ProbabilityRange(lower: 0.403, upper: 0.427),
- ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.427, upper: 0.482),
+ ElementKind.METHOD: ProbabilityRange(lower: 0.383, upper: 0.402),
+ ElementKind.ENUM: ProbabilityRange(lower: 0.402, upper: 0.426),
+ ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.426, upper: 0.482),
ElementKind.PARAMETER: ProbabilityRange(lower: 0.482, upper: 0.549),
ElementKind.GETTER: ProbabilityRange(lower: 0.549, upper: 0.655),
ElementKind.CLASS: ProbabilityRange(lower: 0.655, upper: 0.790),
@@ -407,15 +407,15 @@
},
'ConditionalExpression_thenExpression': {
ElementKind.PREFIX: ProbabilityRange(lower: 0.000, upper: 0.390),
- ElementKind.SETTER: ProbabilityRange(lower: 0.390, upper: 0.395),
- ElementKind.FUNCTION: ProbabilityRange(lower: 0.395, upper: 0.402),
- ElementKind.METHOD: ProbabilityRange(lower: 0.402, upper: 0.424),
+ ElementKind.SETTER: ProbabilityRange(lower: 0.390, upper: 0.396),
+ ElementKind.FUNCTION: ProbabilityRange(lower: 0.396, upper: 0.403),
+ ElementKind.METHOD: ProbabilityRange(lower: 0.403, upper: 0.424),
ElementKind.ENUM: ProbabilityRange(lower: 0.424, upper: 0.450),
ElementKind.PARAMETER: ProbabilityRange(lower: 0.450, upper: 0.500),
ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.500, upper: 0.556),
- ElementKind.GETTER: ProbabilityRange(lower: 0.556, upper: 0.634),
- ElementKind.CLASS: ProbabilityRange(lower: 0.634, upper: 0.777),
- ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.777, upper: 1.000),
+ ElementKind.GETTER: ProbabilityRange(lower: 0.556, upper: 0.633),
+ ElementKind.CLASS: ProbabilityRange(lower: 0.633, upper: 0.776),
+ ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.776, upper: 1.000),
},
'ConstructorDeclaration_initializer': {
ElementKind.FIELD: ProbabilityRange(lower: 0.000, upper: 1.000),
@@ -424,22 +424,22 @@
ElementKind.CLASS: ProbabilityRange(lower: 0.000, upper: 1.000),
},
'ConstructorFieldInitializer_expression': {
- ElementKind.GETTER: ProbabilityRange(lower: 0.000, upper: 0.183),
- ElementKind.METHOD: ProbabilityRange(lower: 0.183, upper: 0.187),
- ElementKind.ENUM: ProbabilityRange(lower: 0.187, upper: 0.195),
- ElementKind.FUNCTION: ProbabilityRange(lower: 0.195, upper: 0.220),
- ElementKind.CLASS: ProbabilityRange(lower: 0.220, upper: 0.272),
- ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.272, upper: 0.396),
- ElementKind.PARAMETER: ProbabilityRange(lower: 0.396, upper: 1.000),
+ ElementKind.GETTER: ProbabilityRange(lower: 0.000, upper: 0.185),
+ ElementKind.METHOD: ProbabilityRange(lower: 0.185, upper: 0.188),
+ ElementKind.ENUM: ProbabilityRange(lower: 0.188, upper: 0.196),
+ ElementKind.FUNCTION: ProbabilityRange(lower: 0.196, upper: 0.221),
+ ElementKind.CLASS: ProbabilityRange(lower: 0.221, upper: 0.274),
+ ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.274, upper: 0.399),
+ ElementKind.PARAMETER: ProbabilityRange(lower: 0.399, upper: 1.000),
},
'DefaultFormalParameter_defaultValue': {
- ElementKind.PREFIX: ProbabilityRange(lower: 0.000, upper: 0.716),
- ElementKind.METHOD: ProbabilityRange(lower: 0.716, upper: 0.716),
- ElementKind.FUNCTION: ProbabilityRange(lower: 0.716, upper: 0.717),
- ElementKind.GETTER: ProbabilityRange(lower: 0.717, upper: 0.733),
- ElementKind.ENUM: ProbabilityRange(lower: 0.733, upper: 0.776),
- ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.776, upper: 0.838),
- ElementKind.CLASS: ProbabilityRange(lower: 0.838, upper: 1.000),
+ ElementKind.PREFIX: ProbabilityRange(lower: 0.000, upper: 0.694),
+ ElementKind.METHOD: ProbabilityRange(lower: 0.694, upper: 0.695),
+ ElementKind.FUNCTION: ProbabilityRange(lower: 0.695, upper: 0.696),
+ ElementKind.GETTER: ProbabilityRange(lower: 0.696, upper: 0.713),
+ ElementKind.ENUM: ProbabilityRange(lower: 0.713, upper: 0.760),
+ ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.760, upper: 0.827),
+ ElementKind.CLASS: ProbabilityRange(lower: 0.827, upper: 1.000),
},
'DoStatement_condition': {
ElementKind.PARAMETER: ProbabilityRange(lower: 0.000, upper: 0.333),
@@ -449,46 +449,46 @@
ElementKind.UNKNOWN: ProbabilityRange(lower: 0.000, upper: 0.386),
ElementKind.FUNCTION_TYPE_ALIAS:
ProbabilityRange(lower: 0.386, upper: 0.386),
- ElementKind.TYPE_PARAMETER: ProbabilityRange(lower: 0.386, upper: 0.386),
+ ElementKind.TYPE_PARAMETER: ProbabilityRange(lower: 0.386, upper: 0.387),
ElementKind.TOP_LEVEL_VARIABLE:
- ProbabilityRange(lower: 0.386, upper: 0.386),
- ElementKind.MIXIN: ProbabilityRange(lower: 0.386, upper: 0.386),
- ElementKind.PREFIX: ProbabilityRange(lower: 0.386, upper: 0.388),
- ElementKind.SETTER: ProbabilityRange(lower: 0.388, upper: 0.402),
- ElementKind.ENUM: ProbabilityRange(lower: 0.402, upper: 0.418),
- ElementKind.METHOD: ProbabilityRange(lower: 0.418, upper: 0.434),
- ElementKind.FUNCTION: ProbabilityRange(lower: 0.434, upper: 0.450),
- ElementKind.CLASS: ProbabilityRange(lower: 0.450, upper: 0.522),
- ElementKind.PARAMETER: ProbabilityRange(lower: 0.522, upper: 0.607),
- ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.607, upper: 0.701),
- ElementKind.GETTER: ProbabilityRange(lower: 0.701, upper: 0.839),
- ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.839, upper: 1.000),
+ ProbabilityRange(lower: 0.387, upper: 0.387),
+ ElementKind.MIXIN: ProbabilityRange(lower: 0.387, upper: 0.387),
+ ElementKind.PREFIX: ProbabilityRange(lower: 0.387, upper: 0.388),
+ ElementKind.SETTER: ProbabilityRange(lower: 0.388, upper: 0.403),
+ ElementKind.ENUM: ProbabilityRange(lower: 0.403, upper: 0.419),
+ ElementKind.METHOD: ProbabilityRange(lower: 0.419, upper: 0.435),
+ ElementKind.FUNCTION: ProbabilityRange(lower: 0.435, upper: 0.452),
+ ElementKind.CLASS: ProbabilityRange(lower: 0.452, upper: 0.524),
+ ElementKind.PARAMETER: ProbabilityRange(lower: 0.524, upper: 0.608),
+ ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.608, upper: 0.704),
+ ElementKind.GETTER: ProbabilityRange(lower: 0.704, upper: 0.835),
+ ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.835, upper: 1.000),
},
'ExpressionFunctionBody_expression': {
- ElementKind.MIXIN: ProbabilityRange(lower: 0.000, upper: 0.352),
- ElementKind.TYPE_PARAMETER: ProbabilityRange(lower: 0.352, upper: 0.352),
- ElementKind.PREFIX: ProbabilityRange(lower: 0.352, upper: 0.358),
- ElementKind.ENUM: ProbabilityRange(lower: 0.358, upper: 0.363),
- ElementKind.SETTER: ProbabilityRange(lower: 0.363, upper: 0.373),
- ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.373, upper: 0.394),
- ElementKind.FUNCTION: ProbabilityRange(lower: 0.394, upper: 0.419),
- ElementKind.CLASS: ProbabilityRange(lower: 0.419, upper: 0.452),
- ElementKind.METHOD: ProbabilityRange(lower: 0.452, upper: 0.487),
- ElementKind.PARAMETER: ProbabilityRange(lower: 0.487, upper: 0.613),
- ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.613, upper: 0.794),
- ElementKind.GETTER: ProbabilityRange(lower: 0.794, upper: 1.000),
+ ElementKind.MIXIN: ProbabilityRange(lower: 0.000, upper: 0.162),
+ ElementKind.TYPE_PARAMETER: ProbabilityRange(lower: 0.162, upper: 0.163),
+ ElementKind.ENUM: ProbabilityRange(lower: 0.163, upper: 0.164),
+ ElementKind.PREFIX: ProbabilityRange(lower: 0.164, upper: 0.171),
+ ElementKind.SETTER: ProbabilityRange(lower: 0.171, upper: 0.184),
+ ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.184, upper: 0.211),
+ ElementKind.FUNCTION: ProbabilityRange(lower: 0.211, upper: 0.244),
+ ElementKind.CLASS: ProbabilityRange(lower: 0.244, upper: 0.286),
+ ElementKind.METHOD: ProbabilityRange(lower: 0.286, upper: 0.332),
+ ElementKind.PARAMETER: ProbabilityRange(lower: 0.332, upper: 0.496),
+ ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.496, upper: 0.731),
+ ElementKind.GETTER: ProbabilityRange(lower: 0.731, upper: 1.000),
},
'ExpressionStatement_expression': {
ElementKind.ENUM: ProbabilityRange(lower: 0.000, upper: 0.132),
ElementKind.MIXIN: ProbabilityRange(lower: 0.132, upper: 0.134),
ElementKind.PREFIX: ProbabilityRange(lower: 0.134, upper: 0.136),
ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.136, upper: 0.139),
- ElementKind.PARAMETER: ProbabilityRange(lower: 0.139, upper: 0.190),
- ElementKind.CLASS: ProbabilityRange(lower: 0.190, upper: 0.255),
- ElementKind.METHOD: ProbabilityRange(lower: 0.255, upper: 0.361),
- ElementKind.FUNCTION: ProbabilityRange(lower: 0.361, upper: 0.482),
- ElementKind.GETTER: ProbabilityRange(lower: 0.482, upper: 0.625),
- ElementKind.SETTER: ProbabilityRange(lower: 0.625, upper: 0.801),
+ ElementKind.PARAMETER: ProbabilityRange(lower: 0.139, upper: 0.189),
+ ElementKind.CLASS: ProbabilityRange(lower: 0.189, upper: 0.254),
+ ElementKind.METHOD: ProbabilityRange(lower: 0.254, upper: 0.359),
+ ElementKind.FUNCTION: ProbabilityRange(lower: 0.359, upper: 0.481),
+ ElementKind.GETTER: ProbabilityRange(lower: 0.481, upper: 0.624),
+ ElementKind.SETTER: ProbabilityRange(lower: 0.624, upper: 0.801),
ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.801, upper: 1.000),
},
'ExtendsClause_superclass': {
@@ -504,50 +504,87 @@
ElementKind.TYPE_PARAMETER: ProbabilityRange(lower: 0.000, upper: 0.120),
ElementKind.CLASS: ProbabilityRange(lower: 0.120, upper: 1.000),
},
+ 'FieldDeclaration_fields': {
+ ElementKind.UNKNOWN: ProbabilityRange(lower: 0.000, upper: 0.617),
+ ElementKind.PREFIX: ProbabilityRange(lower: 0.617, upper: 0.618),
+ ElementKind.TYPE_PARAMETER: ProbabilityRange(lower: 0.618, upper: 0.619),
+ ElementKind.FUNCTION_TYPE_ALIAS:
+ ProbabilityRange(lower: 0.619, upper: 0.620),
+ ElementKind.ENUM: ProbabilityRange(lower: 0.620, upper: 0.628),
+ ElementKind.CLASS: ProbabilityRange(lower: 0.628, upper: 1.000),
+ },
'ForEachPartsWithDeclaration_iterable': {
ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.000, upper: 0.016),
ElementKind.ENUM: ProbabilityRange(lower: 0.016, upper: 0.018),
ElementKind.FUNCTION: ProbabilityRange(lower: 0.018, upper: 0.022),
ElementKind.PREFIX: ProbabilityRange(lower: 0.022, upper: 0.029),
- ElementKind.CLASS: ProbabilityRange(lower: 0.029, upper: 0.036),
- ElementKind.GETTER: ProbabilityRange(lower: 0.036, upper: 0.288),
- ElementKind.PARAMETER: ProbabilityRange(lower: 0.288, upper: 0.607),
- ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.607, upper: 1.000),
+ ElementKind.CLASS: ProbabilityRange(lower: 0.029, upper: 0.037),
+ ElementKind.GETTER: ProbabilityRange(lower: 0.037, upper: 0.287),
+ ElementKind.PARAMETER: ProbabilityRange(lower: 0.287, upper: 0.606),
+ ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.606, upper: 1.000),
},
'ForEachPartsWithDeclaration_loopVariable': {
ElementKind.TYPE_PARAMETER: ProbabilityRange(lower: 0.000, upper: 0.703),
ElementKind.FUNCTION_TYPE_ALIAS:
ProbabilityRange(lower: 0.703, upper: 0.704),
- ElementKind.UNKNOWN: ProbabilityRange(lower: 0.704, upper: 0.706),
- ElementKind.PREFIX: ProbabilityRange(lower: 0.706, upper: 0.708),
+ ElementKind.UNKNOWN: ProbabilityRange(lower: 0.704, upper: 0.705),
+ ElementKind.PREFIX: ProbabilityRange(lower: 0.705, upper: 0.708),
ElementKind.ENUM: ProbabilityRange(lower: 0.708, upper: 0.712),
ElementKind.CLASS: ProbabilityRange(lower: 0.712, upper: 1.000),
},
'ForElement_body': {
- ElementKind.GETTER: ProbabilityRange(lower: 0.000, upper: 0.900),
- ElementKind.FUNCTION: ProbabilityRange(lower: 0.900, upper: 0.904),
- ElementKind.PARAMETER: ProbabilityRange(lower: 0.904, upper: 0.908),
- ElementKind.METHOD: ProbabilityRange(lower: 0.908, upper: 0.918),
- ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.918, upper: 0.937),
- ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.937, upper: 1.000),
+ ElementKind.FUNCTION: ProbabilityRange(lower: 0.000, upper: 0.172),
+ ElementKind.PARAMETER: ProbabilityRange(lower: 0.172, upper: 0.221),
+ ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.221, upper: 0.290),
+ ElementKind.METHOD: ProbabilityRange(lower: 0.290, upper: 0.366),
+ ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.366, upper: 1.000),
+ },
+ 'ForElement_forLoopParts': {
+ ElementKind.ENUM: ProbabilityRange(lower: 0.000, upper: 0.634),
+ ElementKind.CLASS: ProbabilityRange(lower: 0.634, upper: 1.000),
},
'ForParts_condition': {
- ElementKind.GETTER: ProbabilityRange(lower: 0.000, upper: 0.023),
- ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.023, upper: 1.000),
+ ElementKind.GETTER: ProbabilityRange(lower: 0.000, upper: 0.024),
+ ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.024, upper: 1.000),
},
'ForParts_updater': {
- ElementKind.SETTER: ProbabilityRange(lower: 0.000, upper: 0.067),
- ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.067, upper: 1.000),
+ ElementKind.SETTER: ProbabilityRange(lower: 0.000, upper: 0.068),
+ ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.068, upper: 1.000),
+ },
+ 'ForStatement_body': {
+ ElementKind.METHOD: ProbabilityRange(lower: 0.000, upper: 0.981),
+ ElementKind.GETTER: ProbabilityRange(lower: 0.981, upper: 0.986),
+ ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.986, upper: 1.000),
+ },
+ 'ForStatement_forLoopParts': {
+ ElementKind.TYPE_PARAMETER: ProbabilityRange(lower: 0.000, upper: 0.536),
+ ElementKind.FUNCTION_TYPE_ALIAS:
+ ProbabilityRange(lower: 0.536, upper: 0.537),
+ ElementKind.UNKNOWN: ProbabilityRange(lower: 0.537, upper: 0.538),
+ ElementKind.ENUM: ProbabilityRange(lower: 0.538, upper: 0.539),
+ ElementKind.PREFIX: ProbabilityRange(lower: 0.539, upper: 0.541),
+ ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.541, upper: 0.551),
+ ElementKind.SETTER: ProbabilityRange(lower: 0.551, upper: 0.561),
+ ElementKind.CLASS: ProbabilityRange(lower: 0.561, upper: 1.000),
},
'FormalParameterList_parameter': {
- ElementKind.MIXIN: ProbabilityRange(lower: 0.000, upper: 0.245),
- ElementKind.TYPE_PARAMETER: ProbabilityRange(lower: 0.245, upper: 0.247),
+ ElementKind.MIXIN: ProbabilityRange(lower: 0.000, upper: 0.251),
+ ElementKind.PREFIX: ProbabilityRange(lower: 0.251, upper: 0.252),
+ ElementKind.TYPE_PARAMETER: ProbabilityRange(lower: 0.252, upper: 0.255),
ElementKind.FUNCTION_TYPE_ALIAS:
- ProbabilityRange(lower: 0.247, upper: 0.255),
- ElementKind.ENUM: ProbabilityRange(lower: 0.255, upper: 0.267),
- ElementKind.UNKNOWN: ProbabilityRange(lower: 0.267, upper: 0.284),
- ElementKind.PREFIX: ProbabilityRange(lower: 0.284, upper: 0.311),
- ElementKind.CLASS: ProbabilityRange(lower: 0.311, upper: 1.000),
+ ProbabilityRange(lower: 0.255, upper: 0.263),
+ ElementKind.ENUM: ProbabilityRange(lower: 0.263, upper: 0.276),
+ ElementKind.UNKNOWN: ProbabilityRange(lower: 0.276, upper: 0.293),
+ ElementKind.CLASS: ProbabilityRange(lower: 0.293, upper: 1.000),
+ },
+ 'FunctionDeclaration_returnType': {
+ ElementKind.PREFIX: ProbabilityRange(lower: 0.000, upper: 0.284),
+ ElementKind.UNKNOWN: ProbabilityRange(lower: 0.284, upper: 0.286),
+ ElementKind.TYPE_PARAMETER: ProbabilityRange(lower: 0.286, upper: 0.290),
+ ElementKind.ENUM: ProbabilityRange(lower: 0.290, upper: 0.301),
+ ElementKind.FUNCTION_TYPE_ALIAS:
+ ProbabilityRange(lower: 0.301, upper: 0.354),
+ ElementKind.CLASS: ProbabilityRange(lower: 0.354, upper: 1.000),
},
'GenericTypeAlias_functionType': {
ElementKind.FUNCTION_TYPE_ALIAS:
@@ -561,55 +598,55 @@
ElementKind.CLASS: ProbabilityRange(lower: 0.059, upper: 1.000),
},
'IfElement_condition': {
- ElementKind.FUNCTION: ProbabilityRange(lower: 0.000, upper: 0.157),
- ElementKind.CLASS: ProbabilityRange(lower: 0.157, upper: 0.172),
- ElementKind.PARAMETER: ProbabilityRange(lower: 0.172, upper: 0.338),
- ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.338, upper: 0.633),
- ElementKind.GETTER: ProbabilityRange(lower: 0.633, upper: 1.000),
+ ElementKind.FUNCTION: ProbabilityRange(lower: 0.000, upper: 0.158),
+ ElementKind.CLASS: ProbabilityRange(lower: 0.158, upper: 0.174),
+ ElementKind.PARAMETER: ProbabilityRange(lower: 0.174, upper: 0.335),
+ ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.335, upper: 0.629),
+ ElementKind.GETTER: ProbabilityRange(lower: 0.629, upper: 1.000),
},
'IfElement_elseElement': {
- ElementKind.METHOD: ProbabilityRange(lower: 0.000, upper: 0.333),
- ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.333, upper: 1.000),
+ ElementKind.METHOD: ProbabilityRange(lower: 0.000, upper: 0.346),
+ ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.346, upper: 1.000),
},
'IfElement_thenElement': {
- ElementKind.FUNCTION: ProbabilityRange(lower: 0.000, upper: 0.212),
- ElementKind.PARAMETER: ProbabilityRange(lower: 0.212, upper: 0.219),
- ElementKind.CLASS: ProbabilityRange(lower: 0.219, upper: 0.228),
- ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.228, upper: 0.239),
- ElementKind.GETTER: ProbabilityRange(lower: 0.239, upper: 0.254),
- ElementKind.METHOD: ProbabilityRange(lower: 0.254, upper: 0.281),
- ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.281, upper: 1.000),
+ ElementKind.FUNCTION: ProbabilityRange(lower: 0.000, upper: 0.215),
+ ElementKind.PARAMETER: ProbabilityRange(lower: 0.215, upper: 0.222),
+ ElementKind.CLASS: ProbabilityRange(lower: 0.222, upper: 0.230),
+ ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.230, upper: 0.242),
+ ElementKind.GETTER: ProbabilityRange(lower: 0.242, upper: 0.257),
+ ElementKind.METHOD: ProbabilityRange(lower: 0.257, upper: 0.284),
+ ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.284, upper: 1.000),
},
'IfStatement_condition': {
- ElementKind.TYPE_PARAMETER: ProbabilityRange(lower: 0.000, upper: 0.117),
- ElementKind.MIXIN: ProbabilityRange(lower: 0.117, upper: 0.118),
+ ElementKind.TYPE_PARAMETER: ProbabilityRange(lower: 0.000, upper: 0.118),
+ ElementKind.MIXIN: ProbabilityRange(lower: 0.118, upper: 0.118),
ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.118, upper: 0.118),
ElementKind.ENUM: ProbabilityRange(lower: 0.118, upper: 0.118),
ElementKind.PREFIX: ProbabilityRange(lower: 0.118, upper: 0.119),
ElementKind.METHOD: ProbabilityRange(lower: 0.119, upper: 0.129),
ElementKind.CLASS: ProbabilityRange(lower: 0.129, upper: 0.145),
ElementKind.FUNCTION: ProbabilityRange(lower: 0.145, upper: 0.167),
- ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.167, upper: 0.388),
- ElementKind.PARAMETER: ProbabilityRange(lower: 0.388, upper: 0.688),
+ ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.167, upper: 0.389),
+ ElementKind.PARAMETER: ProbabilityRange(lower: 0.389, upper: 0.688),
ElementKind.GETTER: ProbabilityRange(lower: 0.688, upper: 1.000),
},
- 'IfStatement_else': {
- ElementKind.PARAMETER: ProbabilityRange(lower: 0.000, upper: 0.968),
- ElementKind.FUNCTION: ProbabilityRange(lower: 0.968, upper: 0.969),
- ElementKind.SETTER: ProbabilityRange(lower: 0.969, upper: 0.972),
- ElementKind.CLASS: ProbabilityRange(lower: 0.972, upper: 0.976),
- ElementKind.GETTER: ProbabilityRange(lower: 0.976, upper: 0.981),
- ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.981, upper: 0.990),
- ElementKind.METHOD: ProbabilityRange(lower: 0.990, upper: 1.000),
+ 'IfStatement_elseStatement': {
+ ElementKind.PARAMETER: ProbabilityRange(lower: 0.000, upper: 0.969),
+ ElementKind.FUNCTION: ProbabilityRange(lower: 0.969, upper: 0.970),
+ ElementKind.SETTER: ProbabilityRange(lower: 0.970, upper: 0.973),
+ ElementKind.CLASS: ProbabilityRange(lower: 0.973, upper: 0.976),
+ ElementKind.GETTER: ProbabilityRange(lower: 0.976, upper: 0.982),
+ ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.982, upper: 0.991),
+ ElementKind.METHOD: ProbabilityRange(lower: 0.991, upper: 1.000),
},
- 'IfStatement_then': {
- ElementKind.MIXIN: ProbabilityRange(lower: 0.000, upper: 0.934),
- ElementKind.FUNCTION: ProbabilityRange(lower: 0.934, upper: 0.935),
- ElementKind.CLASS: ProbabilityRange(lower: 0.935, upper: 0.937),
- ElementKind.SETTER: ProbabilityRange(lower: 0.937, upper: 0.942),
- ElementKind.METHOD: ProbabilityRange(lower: 0.942, upper: 0.952),
- ElementKind.GETTER: ProbabilityRange(lower: 0.952, upper: 0.964),
- ElementKind.PARAMETER: ProbabilityRange(lower: 0.964, upper: 0.981),
+ 'IfStatement_thenStatement': {
+ ElementKind.MIXIN: ProbabilityRange(lower: 0.000, upper: 0.935),
+ ElementKind.FUNCTION: ProbabilityRange(lower: 0.935, upper: 0.936),
+ ElementKind.CLASS: ProbabilityRange(lower: 0.936, upper: 0.938),
+ ElementKind.SETTER: ProbabilityRange(lower: 0.938, upper: 0.943),
+ ElementKind.METHOD: ProbabilityRange(lower: 0.943, upper: 0.952),
+ ElementKind.GETTER: ProbabilityRange(lower: 0.952, upper: 0.965),
+ ElementKind.PARAMETER: ProbabilityRange(lower: 0.965, upper: 0.981),
ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.981, upper: 1.000),
},
'ImplementsClause_interface': {
@@ -624,41 +661,46 @@
ElementKind.METHOD: ProbabilityRange(lower: 0.656, upper: 0.657),
ElementKind.ENUM: ProbabilityRange(lower: 0.657, upper: 0.659),
ElementKind.CLASS: ProbabilityRange(lower: 0.659, upper: 0.664),
- ElementKind.GETTER: ProbabilityRange(lower: 0.664, upper: 0.760),
- ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.760, upper: 0.863),
+ ElementKind.GETTER: ProbabilityRange(lower: 0.664, upper: 0.761),
+ ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.761, upper: 0.863),
ElementKind.PARAMETER: ProbabilityRange(lower: 0.863, upper: 1.000),
},
+ 'InstanceCreationExpression_constructorName': {
+ ElementKind.PREFIX: ProbabilityRange(lower: 0.000, upper: 0.006),
+ ElementKind.CLASS: ProbabilityRange(lower: 0.006, upper: 1.000),
+ },
'InterpolationExpression_expression': {
ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.000, upper: 0.035),
ElementKind.TYPE_PARAMETER: ProbabilityRange(lower: 0.035, upper: 0.035),
ElementKind.PREFIX: ProbabilityRange(lower: 0.035, upper: 0.036),
- ElementKind.ENUM: ProbabilityRange(lower: 0.036, upper: 0.036),
- ElementKind.METHOD: ProbabilityRange(lower: 0.036, upper: 0.044),
+ ElementKind.ENUM: ProbabilityRange(lower: 0.036, upper: 0.037),
+ ElementKind.METHOD: ProbabilityRange(lower: 0.037, upper: 0.044),
ElementKind.FUNCTION: ProbabilityRange(lower: 0.044, upper: 0.074),
ElementKind.CLASS: ProbabilityRange(lower: 0.074, upper: 0.198),
- ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.198, upper: 0.388),
- ElementKind.PARAMETER: ProbabilityRange(lower: 0.388, upper: 0.633),
- ElementKind.GETTER: ProbabilityRange(lower: 0.633, upper: 1.000),
+ ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.198, upper: 0.389),
+ ElementKind.PARAMETER: ProbabilityRange(lower: 0.389, upper: 0.635),
+ ElementKind.GETTER: ProbabilityRange(lower: 0.635, upper: 1.000),
},
'IsExpression_type': {
- ElementKind.TYPE_PARAMETER: ProbabilityRange(lower: 0.000, upper: 0.002),
- ElementKind.ENUM: ProbabilityRange(lower: 0.002, upper: 0.005),
- ElementKind.PREFIX: ProbabilityRange(lower: 0.005, upper: 0.008),
+ ElementKind.MIXIN: ProbabilityRange(lower: 0.000, upper: 0.001),
+ ElementKind.TYPE_PARAMETER: ProbabilityRange(lower: 0.001, upper: 0.003),
+ ElementKind.ENUM: ProbabilityRange(lower: 0.003, upper: 0.006),
+ ElementKind.PREFIX: ProbabilityRange(lower: 0.006, upper: 0.009),
ElementKind.FUNCTION_TYPE_ALIAS:
- ProbabilityRange(lower: 0.008, upper: 0.013),
+ ProbabilityRange(lower: 0.009, upper: 0.013),
ElementKind.CLASS: ProbabilityRange(lower: 0.013, upper: 1.000),
},
'ListLiteral_element': {
ElementKind.SETTER: ProbabilityRange(lower: 0.000, upper: 0.324),
- ElementKind.PREFIX: ProbabilityRange(lower: 0.324, upper: 0.325),
- ElementKind.FUNCTION: ProbabilityRange(lower: 0.325, upper: 0.327),
- ElementKind.ENUM: ProbabilityRange(lower: 0.327, upper: 0.331),
+ ElementKind.PREFIX: ProbabilityRange(lower: 0.324, upper: 0.324),
+ ElementKind.FUNCTION: ProbabilityRange(lower: 0.324, upper: 0.326),
+ ElementKind.ENUM: ProbabilityRange(lower: 0.326, upper: 0.331),
ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.331, upper: 0.338),
- ElementKind.PARAMETER: ProbabilityRange(lower: 0.338, upper: 0.349),
- ElementKind.GETTER: ProbabilityRange(lower: 0.349, upper: 0.362),
- ElementKind.METHOD: ProbabilityRange(lower: 0.362, upper: 0.379),
- ElementKind.CLASS: ProbabilityRange(lower: 0.379, upper: 0.407),
- ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.407, upper: 1.000),
+ ElementKind.PARAMETER: ProbabilityRange(lower: 0.338, upper: 0.348),
+ ElementKind.GETTER: ProbabilityRange(lower: 0.348, upper: 0.361),
+ ElementKind.METHOD: ProbabilityRange(lower: 0.361, upper: 0.379),
+ ElementKind.CLASS: ProbabilityRange(lower: 0.379, upper: 0.406),
+ ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.406, upper: 1.000),
},
'MapLiteralEntry_value': {
ElementKind.PREFIX: ProbabilityRange(lower: 0.000, upper: 0.814),
@@ -671,6 +713,16 @@
ElementKind.GETTER: ProbabilityRange(lower: 0.849, upper: 0.884),
ElementKind.CLASS: ProbabilityRange(lower: 0.884, upper: 1.000),
},
+ 'MethodDeclaration_returnType': {
+ ElementKind.MIXIN: ProbabilityRange(lower: 0.000, upper: 0.169),
+ ElementKind.PREFIX: ProbabilityRange(lower: 0.169, upper: 0.169),
+ ElementKind.UNKNOWN: ProbabilityRange(lower: 0.169, upper: 0.171),
+ ElementKind.TYPE_PARAMETER: ProbabilityRange(lower: 0.171, upper: 0.172),
+ ElementKind.FUNCTION_TYPE_ALIAS:
+ ProbabilityRange(lower: 0.172, upper: 0.175),
+ ElementKind.ENUM: ProbabilityRange(lower: 0.175, upper: 0.179),
+ ElementKind.CLASS: ProbabilityRange(lower: 0.179, upper: 1.000),
+ },
'MixinDeclaration_member': {
ElementKind.TYPE_PARAMETER: ProbabilityRange(lower: 0.000, upper: 0.116),
ElementKind.ENUM: ProbabilityRange(lower: 0.116, upper: 0.121),
@@ -682,25 +734,25 @@
ElementKind.CLASS: ProbabilityRange(lower: 0.392, upper: 1.000),
},
'ParenthesizedExpression_expression': {
- ElementKind.MIXIN: ProbabilityRange(lower: 0.000, upper: 0.217),
- ElementKind.ENUM: ProbabilityRange(lower: 0.217, upper: 0.218),
- ElementKind.PREFIX: ProbabilityRange(lower: 0.218, upper: 0.220),
- ElementKind.SETTER: ProbabilityRange(lower: 0.220, upper: 0.223),
- ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.223, upper: 0.225),
- ElementKind.FUNCTION: ProbabilityRange(lower: 0.225, upper: 0.230),
- ElementKind.CLASS: ProbabilityRange(lower: 0.230, upper: 0.276),
- ElementKind.METHOD: ProbabilityRange(lower: 0.276, upper: 0.333),
- ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.333, upper: 0.516),
- ElementKind.PARAMETER: ProbabilityRange(lower: 0.516, upper: 0.730),
- ElementKind.GETTER: ProbabilityRange(lower: 0.730, upper: 1.000),
+ ElementKind.MIXIN: ProbabilityRange(lower: 0.000, upper: 0.218),
+ ElementKind.ENUM: ProbabilityRange(lower: 0.218, upper: 0.219),
+ ElementKind.PREFIX: ProbabilityRange(lower: 0.219, upper: 0.221),
+ ElementKind.SETTER: ProbabilityRange(lower: 0.221, upper: 0.223),
+ ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.223, upper: 0.226),
+ ElementKind.FUNCTION: ProbabilityRange(lower: 0.226, upper: 0.231),
+ ElementKind.CLASS: ProbabilityRange(lower: 0.231, upper: 0.277),
+ ElementKind.METHOD: ProbabilityRange(lower: 0.277, upper: 0.334),
+ ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.334, upper: 0.517),
+ ElementKind.PARAMETER: ProbabilityRange(lower: 0.517, upper: 0.731),
+ ElementKind.GETTER: ProbabilityRange(lower: 0.731, upper: 1.000),
},
'PrefixExpression_!_operand': {
- ElementKind.FUNCTION: ProbabilityRange(lower: 0.000, upper: 0.063),
- ElementKind.METHOD: ProbabilityRange(lower: 0.063, upper: 0.094),
- ElementKind.CLASS: ProbabilityRange(lower: 0.094, upper: 0.142),
- ElementKind.PARAMETER: ProbabilityRange(lower: 0.142, upper: 0.330),
- ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.330, upper: 0.584),
- ElementKind.GETTER: ProbabilityRange(lower: 0.584, upper: 1.000),
+ ElementKind.FUNCTION: ProbabilityRange(lower: 0.000, upper: 0.062),
+ ElementKind.METHOD: ProbabilityRange(lower: 0.062, upper: 0.090),
+ ElementKind.CLASS: ProbabilityRange(lower: 0.090, upper: 0.139),
+ ElementKind.PARAMETER: ProbabilityRange(lower: 0.139, upper: 0.326),
+ ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.326, upper: 0.582),
+ ElementKind.GETTER: ProbabilityRange(lower: 0.582, upper: 1.000),
},
'PrefixExpression_++_operand': {
ElementKind.PARAMETER: ProbabilityRange(lower: 0.000, upper: 0.035),
@@ -715,42 +767,42 @@
ElementKind.GETTER: ProbabilityRange(lower: 0.625, upper: 1.000),
},
'PrefixExpression_-_operand': {
- ElementKind.METHOD: ProbabilityRange(lower: 0.000, upper: 0.810),
- ElementKind.FUNCTION: ProbabilityRange(lower: 0.810, upper: 0.813),
- ElementKind.PREFIX: ProbabilityRange(lower: 0.813, upper: 0.820),
- ElementKind.PARAMETER: ProbabilityRange(lower: 0.820, upper: 0.841),
- ElementKind.CLASS: ProbabilityRange(lower: 0.841, upper: 0.866),
- ElementKind.GETTER: ProbabilityRange(lower: 0.866, upper: 0.925),
- ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.925, upper: 1.000),
+ ElementKind.METHOD: ProbabilityRange(lower: 0.000, upper: 0.830),
+ ElementKind.FUNCTION: ProbabilityRange(lower: 0.830, upper: 0.832),
+ ElementKind.PREFIX: ProbabilityRange(lower: 0.832, upper: 0.839),
+ ElementKind.PARAMETER: ProbabilityRange(lower: 0.839, upper: 0.857),
+ ElementKind.CLASS: ProbabilityRange(lower: 0.857, upper: 0.883),
+ ElementKind.GETTER: ProbabilityRange(lower: 0.883, upper: 0.930),
+ ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.930, upper: 1.000),
},
'PrefixExpression_~_operand': {
ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.000, upper: 1.000),
},
'PropertyAccess_propertyName': {
ElementKind.METHOD: ProbabilityRange(lower: 0.000, upper: 0.002),
- ElementKind.SETTER: ProbabilityRange(lower: 0.002, upper: 0.104),
- ElementKind.GETTER: ProbabilityRange(lower: 0.104, upper: 1.000),
+ ElementKind.SETTER: ProbabilityRange(lower: 0.002, upper: 0.103),
+ ElementKind.GETTER: ProbabilityRange(lower: 0.103, upper: 1.000),
},
'ReturnStatement_expression': {
- ElementKind.TYPE_PARAMETER: ProbabilityRange(lower: 0.000, upper: 0.242),
- ElementKind.SETTER: ProbabilityRange(lower: 0.242, upper: 0.242),
- ElementKind.PREFIX: ProbabilityRange(lower: 0.242, upper: 0.245),
- ElementKind.ENUM: ProbabilityRange(lower: 0.245, upper: 0.252),
- ElementKind.FUNCTION: ProbabilityRange(lower: 0.252, upper: 0.269),
- ElementKind.METHOD: ProbabilityRange(lower: 0.269, upper: 0.294),
- ElementKind.PARAMETER: ProbabilityRange(lower: 0.294, upper: 0.346),
- ElementKind.GETTER: ProbabilityRange(lower: 0.346, upper: 0.403),
- ElementKind.CLASS: ProbabilityRange(lower: 0.403, upper: 0.464),
- ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.464, upper: 0.561),
- ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.561, upper: 1.000),
+ ElementKind.TYPE_PARAMETER: ProbabilityRange(lower: 0.000, upper: 0.243),
+ ElementKind.SETTER: ProbabilityRange(lower: 0.243, upper: 0.243),
+ ElementKind.PREFIX: ProbabilityRange(lower: 0.243, upper: 0.247),
+ ElementKind.ENUM: ProbabilityRange(lower: 0.247, upper: 0.254),
+ ElementKind.FUNCTION: ProbabilityRange(lower: 0.254, upper: 0.271),
+ ElementKind.METHOD: ProbabilityRange(lower: 0.271, upper: 0.295),
+ ElementKind.PARAMETER: ProbabilityRange(lower: 0.295, upper: 0.348),
+ ElementKind.GETTER: ProbabilityRange(lower: 0.348, upper: 0.406),
+ ElementKind.CLASS: ProbabilityRange(lower: 0.406, upper: 0.466),
+ ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.466, upper: 0.564),
+ ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.564, upper: 1.000),
},
'SetOrMapLiteral_element': {
ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.000, upper: 0.974),
ElementKind.METHOD: ProbabilityRange(lower: 0.974, upper: 0.974),
ElementKind.FUNCTION: ProbabilityRange(lower: 0.974, upper: 0.974),
ElementKind.PREFIX: ProbabilityRange(lower: 0.974, upper: 0.974),
- ElementKind.PARAMETER: ProbabilityRange(lower: 0.974, upper: 0.974),
- ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.974, upper: 0.978),
+ ElementKind.PARAMETER: ProbabilityRange(lower: 0.974, upper: 0.975),
+ ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.975, upper: 0.978),
ElementKind.ENUM: ProbabilityRange(lower: 0.978, upper: 0.983),
ElementKind.GETTER: ProbabilityRange(lower: 0.983, upper: 0.991),
ElementKind.CLASS: ProbabilityRange(lower: 0.991, upper: 1.000),
@@ -759,67 +811,67 @@
ElementKind.FUNCTION_TYPE_ALIAS:
ProbabilityRange(lower: 0.000, upper: 0.005),
ElementKind.ENUM: ProbabilityRange(lower: 0.005, upper: 0.032),
- ElementKind.FUNCTION: ProbabilityRange(lower: 0.032, upper: 0.212),
+ ElementKind.FUNCTION: ProbabilityRange(lower: 0.032, upper: 0.216),
ElementKind.TOP_LEVEL_VARIABLE:
- ProbabilityRange(lower: 0.212, upper: 0.561),
- ElementKind.CLASS: ProbabilityRange(lower: 0.561, upper: 1.000),
+ ProbabilityRange(lower: 0.216, upper: 0.568),
+ ElementKind.CLASS: ProbabilityRange(lower: 0.568, upper: 1.000),
},
'SpreadElement_expression': {
- ElementKind.ENUM: ProbabilityRange(lower: 0.000, upper: 0.332),
- ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.332, upper: 0.347),
- ElementKind.CLASS: ProbabilityRange(lower: 0.347, upper: 0.376),
- ElementKind.FUNCTION: ProbabilityRange(lower: 0.376, upper: 0.443),
- ElementKind.METHOD: ProbabilityRange(lower: 0.443, upper: 0.531),
- ElementKind.PARAMETER: ProbabilityRange(lower: 0.531, upper: 0.631),
- ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.631, upper: 0.734),
- ElementKind.GETTER: ProbabilityRange(lower: 0.734, upper: 1.000),
+ ElementKind.ENUM: ProbabilityRange(lower: 0.000, upper: 0.335),
+ ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.335, upper: 0.349),
+ ElementKind.CLASS: ProbabilityRange(lower: 0.349, upper: 0.379),
+ ElementKind.FUNCTION: ProbabilityRange(lower: 0.379, upper: 0.446),
+ ElementKind.METHOD: ProbabilityRange(lower: 0.446, upper: 0.535),
+ ElementKind.PARAMETER: ProbabilityRange(lower: 0.535, upper: 0.636),
+ ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.636, upper: 0.740),
+ ElementKind.GETTER: ProbabilityRange(lower: 0.740, upper: 1.000),
},
'Statement': {
- ElementKind.TYPE_PARAMETER: ProbabilityRange(lower: 0.000, upper: 0.600),
+ ElementKind.TYPE_PARAMETER: ProbabilityRange(lower: 0.000, upper: 0.599),
ElementKind.FUNCTION_TYPE_ALIAS:
- ProbabilityRange(lower: 0.600, upper: 0.600),
- ElementKind.UNKNOWN: ProbabilityRange(lower: 0.600, upper: 0.600),
- ElementKind.ENUM: ProbabilityRange(lower: 0.600, upper: 0.601),
- ElementKind.MIXIN: ProbabilityRange(lower: 0.601, upper: 0.601),
- ElementKind.PREFIX: ProbabilityRange(lower: 0.601, upper: 0.603),
- ElementKind.PARAMETER: ProbabilityRange(lower: 0.603, upper: 0.623),
- ElementKind.METHOD: ProbabilityRange(lower: 0.623, upper: 0.666),
- ElementKind.FUNCTION: ProbabilityRange(lower: 0.666, upper: 0.716),
- ElementKind.GETTER: ProbabilityRange(lower: 0.716, upper: 0.774),
- ElementKind.SETTER: ProbabilityRange(lower: 0.774, upper: 0.846),
- ElementKind.CLASS: ProbabilityRange(lower: 0.846, upper: 0.919),
+ ProbabilityRange(lower: 0.599, upper: 0.599),
+ ElementKind.UNKNOWN: ProbabilityRange(lower: 0.599, upper: 0.600),
+ ElementKind.ENUM: ProbabilityRange(lower: 0.600, upper: 0.600),
+ ElementKind.MIXIN: ProbabilityRange(lower: 0.600, upper: 0.601),
+ ElementKind.PREFIX: ProbabilityRange(lower: 0.601, upper: 0.602),
+ ElementKind.PARAMETER: ProbabilityRange(lower: 0.602, upper: 0.622),
+ ElementKind.METHOD: ProbabilityRange(lower: 0.622, upper: 0.665),
+ ElementKind.FUNCTION: ProbabilityRange(lower: 0.665, upper: 0.715),
+ ElementKind.GETTER: ProbabilityRange(lower: 0.715, upper: 0.773),
+ ElementKind.SETTER: ProbabilityRange(lower: 0.773, upper: 0.845),
+ ElementKind.CLASS: ProbabilityRange(lower: 0.845, upper: 0.919),
ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.919, upper: 1.000),
},
'SwitchCase_expression': {
- ElementKind.GETTER: ProbabilityRange(lower: 0.000, upper: 0.541),
- ElementKind.CLASS: ProbabilityRange(lower: 0.541, upper: 0.677),
- ElementKind.ENUM: ProbabilityRange(lower: 0.677, upper: 1.000),
+ ElementKind.GETTER: ProbabilityRange(lower: 0.000, upper: 0.525),
+ ElementKind.CLASS: ProbabilityRange(lower: 0.525, upper: 0.668),
+ ElementKind.ENUM: ProbabilityRange(lower: 0.668, upper: 1.000),
},
'SwitchMember_statement': {
- ElementKind.UNKNOWN: ProbabilityRange(lower: 0.000, upper: 0.691),
- ElementKind.MIXIN: ProbabilityRange(lower: 0.691, upper: 0.691),
- ElementKind.PARAMETER: ProbabilityRange(lower: 0.691, upper: 0.697),
- ElementKind.CLASS: ProbabilityRange(lower: 0.697, upper: 0.708),
- ElementKind.FUNCTION: ProbabilityRange(lower: 0.708, upper: 0.719),
- ElementKind.SETTER: ProbabilityRange(lower: 0.719, upper: 0.733),
- ElementKind.METHOD: ProbabilityRange(lower: 0.733, upper: 0.748),
- ElementKind.GETTER: ProbabilityRange(lower: 0.748, upper: 0.765),
- ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.765, upper: 1.000),
+ ElementKind.UNKNOWN: ProbabilityRange(lower: 0.000, upper: 0.683),
+ ElementKind.MIXIN: ProbabilityRange(lower: 0.683, upper: 0.683),
+ ElementKind.PARAMETER: ProbabilityRange(lower: 0.683, upper: 0.690),
+ ElementKind.CLASS: ProbabilityRange(lower: 0.690, upper: 0.701),
+ ElementKind.FUNCTION: ProbabilityRange(lower: 0.701, upper: 0.713),
+ ElementKind.SETTER: ProbabilityRange(lower: 0.713, upper: 0.726),
+ ElementKind.METHOD: ProbabilityRange(lower: 0.726, upper: 0.742),
+ ElementKind.GETTER: ProbabilityRange(lower: 0.742, upper: 0.759),
+ ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.759, upper: 1.000),
},
'SwitchStatement_expression': {
- ElementKind.TYPE_PARAMETER: ProbabilityRange(lower: 0.000, upper: 0.009),
- ElementKind.FUNCTION: ProbabilityRange(lower: 0.009, upper: 0.011),
- ElementKind.METHOD: ProbabilityRange(lower: 0.011, upper: 0.015),
- ElementKind.CLASS: ProbabilityRange(lower: 0.015, upper: 0.030),
- ElementKind.GETTER: ProbabilityRange(lower: 0.030, upper: 0.211),
- ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.211, upper: 0.504),
- ElementKind.PARAMETER: ProbabilityRange(lower: 0.504, upper: 1.000),
+ ElementKind.TYPE_PARAMETER: ProbabilityRange(lower: 0.000, upper: 0.010),
+ ElementKind.FUNCTION: ProbabilityRange(lower: 0.010, upper: 0.012),
+ ElementKind.METHOD: ProbabilityRange(lower: 0.012, upper: 0.016),
+ ElementKind.CLASS: ProbabilityRange(lower: 0.016, upper: 0.031),
+ ElementKind.GETTER: ProbabilityRange(lower: 0.031, upper: 0.212),
+ ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.212, upper: 0.516),
+ ElementKind.PARAMETER: ProbabilityRange(lower: 0.516, upper: 1.000),
},
'ThrowExpression_expression': {
- ElementKind.PARAMETER: ProbabilityRange(lower: 0.000, upper: 0.833),
- ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.833, upper: 0.834),
- ElementKind.CLASS: ProbabilityRange(lower: 0.834, upper: 0.836),
- ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.836, upper: 1.000),
+ ElementKind.PARAMETER: ProbabilityRange(lower: 0.000, upper: 0.834),
+ ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.834, upper: 0.835),
+ ElementKind.CLASS: ProbabilityRange(lower: 0.835, upper: 0.837),
+ ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.837, upper: 1.000),
},
'TypeArgumentList_argument': {
ElementKind.MIXIN: ProbabilityRange(lower: 0.000, upper: 0.021),
@@ -828,23 +880,33 @@
ElementKind.PREFIX: ProbabilityRange(lower: 0.024, upper: 0.031),
ElementKind.ENUM: ProbabilityRange(lower: 0.031, upper: 0.039),
ElementKind.TYPE_PARAMETER: ProbabilityRange(lower: 0.039, upper: 0.053),
- ElementKind.UNKNOWN: ProbabilityRange(lower: 0.053, upper: 0.163),
- ElementKind.CLASS: ProbabilityRange(lower: 0.163, upper: 1.000),
+ ElementKind.UNKNOWN: ProbabilityRange(lower: 0.053, upper: 0.164),
+ ElementKind.CLASS: ProbabilityRange(lower: 0.164, upper: 1.000),
},
'TypeParameter_bound': {
ElementKind.MIXIN: ProbabilityRange(lower: 0.000, upper: 0.016),
ElementKind.TYPE_PARAMETER: ProbabilityRange(lower: 0.016, upper: 0.039),
ElementKind.CLASS: ProbabilityRange(lower: 0.039, upper: 1.000),
},
+ 'VariableDeclarationList_type': {
+ ElementKind.MIXIN: ProbabilityRange(lower: 0.000, upper: 0.002),
+ ElementKind.TYPE_PARAMETER: ProbabilityRange(lower: 0.002, upper: 0.003),
+ ElementKind.PREFIX: ProbabilityRange(lower: 0.003, upper: 0.007),
+ ElementKind.UNKNOWN: ProbabilityRange(lower: 0.007, upper: 0.015),
+ ElementKind.FUNCTION_TYPE_ALIAS:
+ ProbabilityRange(lower: 0.015, upper: 0.031),
+ ElementKind.ENUM: ProbabilityRange(lower: 0.031, upper: 0.047),
+ ElementKind.CLASS: ProbabilityRange(lower: 0.047, upper: 1.000),
+ },
'VariableDeclaration_initializer': {
ElementKind.MIXIN: ProbabilityRange(lower: 0.000, upper: 0.452),
ElementKind.TYPE_PARAMETER: ProbabilityRange(lower: 0.452, upper: 0.452),
- ElementKind.PREFIX: ProbabilityRange(lower: 0.452, upper: 0.456),
- ElementKind.ENUM: ProbabilityRange(lower: 0.456, upper: 0.460),
- ElementKind.METHOD: ProbabilityRange(lower: 0.460, upper: 0.472),
- ElementKind.FUNCTION: ProbabilityRange(lower: 0.472, upper: 0.497),
- ElementKind.PARAMETER: ProbabilityRange(lower: 0.497, upper: 0.561),
- ElementKind.CLASS: ProbabilityRange(lower: 0.561, upper: 0.630),
+ ElementKind.PREFIX: ProbabilityRange(lower: 0.452, upper: 0.455),
+ ElementKind.ENUM: ProbabilityRange(lower: 0.455, upper: 0.459),
+ ElementKind.METHOD: ProbabilityRange(lower: 0.459, upper: 0.471),
+ ElementKind.FUNCTION: ProbabilityRange(lower: 0.471, upper: 0.497),
+ ElementKind.PARAMETER: ProbabilityRange(lower: 0.497, upper: 0.560),
+ ElementKind.CLASS: ProbabilityRange(lower: 0.560, upper: 0.630),
ElementKind.GETTER: ProbabilityRange(lower: 0.630, upper: 0.712),
ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.712, upper: 0.794),
ElementKind.CONSTRUCTOR: ProbabilityRange(lower: 0.794, upper: 1.000),
@@ -859,8 +921,8 @@
ElementKind.LOCAL_VARIABLE: ProbabilityRange(lower: 0.109, upper: 1.000),
},
'WithClause_mixinType': {
- ElementKind.CLASS: ProbabilityRange(lower: 0.000, upper: 0.280),
- ElementKind.MIXIN: ProbabilityRange(lower: 0.280, upper: 1.000),
+ ElementKind.CLASS: ProbabilityRange(lower: 0.000, upper: 0.282),
+ ElementKind.MIXIN: ProbabilityRange(lower: 0.282, upper: 1.000),
},
'YieldStatement_expression': {
ElementKind.FUNCTION: ProbabilityRange(lower: 0.000, upper: 0.065),
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart b/pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart
index 18c203c..b2eb79a 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart
@@ -4,6 +4,7 @@
import 'dart:collection';
+import 'package:_fe_analyzer_shared/src/base/syntactic_entity.dart';
import 'package:analysis_server/src/computer/computer_hover.dart';
import 'package:analysis_server/src/protocol_server.dart' as protocol;
import 'package:analysis_server/src/protocol_server.dart'
@@ -14,6 +15,7 @@
import 'package:analysis_server/src/services/completion/dart/feature_computer.dart';
import 'package:analysis_server/src/services/completion/dart/utilities.dart';
import 'package:analysis_server/src/utilities/extensions/ast.dart';
+import 'package:analysis_server/src/utilities/extensions/element.dart';
import 'package:analysis_server/src/utilities/flutter.dart';
import 'package:analyzer/dart/analysis/features.dart';
import 'package:analyzer/dart/ast/ast.dart';
@@ -137,6 +139,10 @@
/// The completion request for which suggestions are being built.
final DartCompletionRequest request;
+ /// The listener to be notified at certain points in the process of building
+ /// suggestions, or `null` if no notification should occur.
+ final SuggestionListener listener;
+
/// A map from a completion identifier to a completion suggestion.
final Map<String, CompletionSuggestion> _suggestionMap =
<String, CompletionSuggestion>{};
@@ -158,22 +164,13 @@
/// computed. In the latter case, [_hasContainingMemberName] will be `false`.
String _cachedContainingMemberName;
- /// A flag indicating whether the [_cachedContextType] has been computed.
- bool _hasContextType = false;
-
- /// The context type associated with the completion location, or `null` if
- /// either the location doesn't have a context type, or the context type
- /// hasn't yet been computed. In the latter case, [_hasContextType] will be
- /// `false`.
- DartType _cachedContextType;
-
/// The cached instance of the flutter utilities, or `null` if it hasn't been
/// created yet.
Flutter _flutter;
/// Initialize a newly created suggestion builder to build suggestions for the
/// given [request].
- SuggestionBuilder(this.request);
+ SuggestionBuilder(this.request, {this.listener});
/// Return an object that can answer questions about Flutter code based on the
/// flavor of Flutter being used.
@@ -203,17 +200,6 @@
return _cachedContainingMemberName;
}
- /// Return the context type associated with the completion location, or `null`
- /// if the location doesn't have a context type.
- DartType get _contextType {
- if (!_hasContextType) {
- _hasContextType = true;
- _cachedContextType = request.featureComputer
- .computeContextType(request.target.containingNode);
- }
- return _cachedContextType;
- }
-
/// Add a suggestion for an [accessor] declared within a class or extension.
/// If the accessor is being invoked with a target of `super`, then the
/// [containingMemberName] should be the name of the member containing the
@@ -241,8 +227,7 @@
var featureComputer = request.featureComputer;
var contextType =
featureComputer.contextTypeFeature(request.contextType, type);
- var elementKind = featureComputer.elementKindFeature(
- accessor, request.opType.completionLocation);
+ var elementKind = _computeElementKind(accessor);
var hasDeprecated = featureComputer.hasDeprecatedFeature(accessor);
var startsWithDollar =
featureComputer.startsWithDollarFeature(accessor.name);
@@ -255,6 +240,13 @@
inheritanceDistance: inheritanceDistance,
startsWithDollar: startsWithDollar,
superMatches: superMatches);
+ listener?.computedFeatures(
+ contextType: contextType,
+ elementKind: elementKind,
+ hasDeprecated: hasDeprecated,
+ inheritanceDistance: inheritanceDistance,
+ startsWithDollar: startsWithDollar,
+ superMatches: superMatches);
} else {
relevance = accessor.hasOrInheritsDeprecated
? DART_RELEVANCE_LOW
@@ -276,9 +268,12 @@
var variableType = parameter.type;
int relevance;
if (request.useNewRelevance) {
- var contextTypeFeature = request.featureComputer
- .contextTypeFeature(_contextType, variableType);
- relevance = toRelevance(contextTypeFeature, 800);
+ var contextType = request.featureComputer
+ .contextTypeFeature(request.contextType, variableType);
+ var elementKind = _computeElementKind(parameter);
+ relevance = toRelevance(
+ weightedAverage([contextType, elementKind], [1.0, 1.0]), 800);
+ listener?.computedFeatures(contextType: contextType);
} else {
relevance = _computeOldMemberRelevance(parameter);
relevance =
@@ -381,7 +376,8 @@
// If the class name is already in the text, then we don't support
// prepending a prefix.
assert(!hasClassName || prefix == null);
- var className = constructor.enclosingElement?.name;
+ var enclosingClass = constructor.enclosingElement;
+ var className = enclosingClass?.name;
if (className == null || className.isEmpty) {
return;
}
@@ -399,14 +395,16 @@
}
int relevance;
+ var returnType = _instantiateClassElement(enclosingClass);
if (request.useNewRelevance) {
- relevance = _computeTopLevelRelevance(constructor);
+ relevance =
+ _computeTopLevelRelevance(constructor, elementType: returnType);
} else {
relevance = constructor.hasOrInheritsDeprecated
? DART_RELEVANCE_LOW
: DART_RELEVANCE_DEFAULT;
- relevance = request.opType.returnValueSuggestionsFilter(
- _instantiateClassElement(constructor.enclosingElement), relevance);
+ relevance =
+ request.opType.returnValueSuggestionsFilter(returnType, relevance);
if (relevance == null) {
return;
}
@@ -500,8 +498,7 @@
var featureComputer = request.featureComputer;
var contextType =
featureComputer.contextTypeFeature(request.contextType, field.type);
- var elementKind = featureComputer.elementKindFeature(
- field, request.opType.completionLocation);
+ var elementKind = _computeElementKind(field);
var hasDeprecated = featureComputer.hasDeprecatedFeature(field);
var startsWithDollar =
featureComputer.startsWithDollarFeature(field.name);
@@ -514,6 +511,13 @@
inheritanceDistance: inheritanceDistance,
startsWithDollar: startsWithDollar,
superMatches: superMatches);
+ listener?.computedFeatures(
+ contextType: contextType,
+ elementKind: elementKind,
+ hasDeprecated: hasDeprecated,
+ inheritanceDistance: inheritanceDistance,
+ startsWithDollar: startsWithDollar,
+ superMatches: superMatches);
} else {
relevance = _computeOldMemberRelevance(field);
if (request.opType.includeReturnValueSuggestions) {
@@ -637,9 +641,12 @@
if (request.useNewRelevance) {
// TODO(brianwilkerson) Use the distance to the local variable as
// another feature.
- var contextTypeFeature = request.featureComputer
- .contextTypeFeature(_contextType, variableType);
- relevance = toRelevance(contextTypeFeature, 800);
+ var contextType = request.featureComputer
+ .contextTypeFeature(request.contextType, variableType);
+ var elementKind = _computeElementKind(variable);
+ relevance = toRelevance(
+ weightedAverage([contextType, elementKind], [1.0, 1.0]), 800);
+ listener?.computedFeatures(contextType: contextType);
} else {
relevance = _computeOldMemberRelevance(variable);
relevance =
@@ -667,8 +674,7 @@
var featureComputer = request.featureComputer;
var contextType = featureComputer.contextTypeFeature(
request.contextType, method.returnType);
- var elementKind = featureComputer.elementKindFeature(
- method, request.opType.completionLocation);
+ var elementKind = _computeElementKind(method);
var hasDeprecated = featureComputer.hasDeprecatedFeature(method);
var startsWithDollar =
featureComputer.startsWithDollarFeature(method.name);
@@ -681,6 +687,13 @@
inheritanceDistance: inheritanceDistance,
startsWithDollar: startsWithDollar,
superMatches: superMatches);
+ listener?.computedFeatures(
+ contextType: contextType,
+ elementKind: elementKind,
+ hasDeprecated: hasDeprecated,
+ inheritanceDistance: inheritanceDistance,
+ startsWithDollar: startsWithDollar,
+ superMatches: superMatches);
} else {
relevance = _computeOldMemberRelevance(method);
if (request.opType.includeReturnValueSuggestions) {
@@ -869,9 +882,12 @@
if (request.useNewRelevance) {
// TODO(brianwilkerson) Use the distance to the declaring function as
// another feature.
- var contextTypeFeature = request.featureComputer
- .contextTypeFeature(_contextType, variableType);
- relevance = toRelevance(contextTypeFeature, 800);
+ var contextType = request.featureComputer
+ .contextTypeFeature(request.contextType, variableType);
+ var elementKind = _computeElementKind(parameter);
+ relevance = toRelevance(
+ weightedAverage([contextType, elementKind], [1.0, 1.0]), 800);
+ listener?.computedFeatures(contextType: contextType);
} else {
relevance = _computeOldMemberRelevance(parameter);
relevance =
@@ -888,7 +904,9 @@
void suggestPrefix(LibraryElement library, String prefix) {
var relevance;
if (request.useNewRelevance) {
- relevance = Relevance.prefix;
+ var elementKind = _computeElementKind(library);
+ relevance = toRelevance(elementKind, Relevance.prefix);
+ listener?.computedFeatures(elementKind: elementKind);
} else {
relevance =
library.hasDeprecated ? DART_RELEVANCE_LOW : DART_RELEVANCE_DEFAULT;
@@ -951,8 +969,7 @@
var featureComputer = request.featureComputer;
var contextType =
featureComputer.contextTypeFeature(request.contextType, type);
- var elementKind = featureComputer.elementKindFeature(
- accessor, request.opType.completionLocation);
+ var elementKind = _computeElementKind(accessor);
var hasDeprecated = featureComputer.hasDeprecatedFeature(accessor);
var startsWithDollar =
featureComputer.startsWithDollarFeature(accessor.name);
@@ -963,6 +980,11 @@
inheritanceDistance: -1.0,
startsWithDollar: startsWithDollar,
superMatches: -1.0);
+ listener?.computedFeatures(
+ contextType: contextType,
+ elementKind: elementKind,
+ hasDeprecated: hasDeprecated,
+ startsWithDollar: startsWithDollar);
} else {
relevance = accessor.hasOrInheritsDeprecated
? DART_RELEVANCE_LOW
@@ -1009,7 +1031,9 @@
void suggestTypeParameter(TypeParameterElement parameter) {
int relevance;
if (request.useNewRelevance) {
- relevance = Relevance.typeParameter;
+ var elementKind = _computeElementKind(parameter);
+ relevance = toRelevance(elementKind, Relevance.typeParameter);
+ listener?.computedFeatures(elementKind: elementKind);
} else {
relevance = _computeOldMemberRelevance(parameter);
}
@@ -1040,6 +1064,7 @@
if (suggestion.element?.kind == protocol.ElementKind.CONSTRUCTOR) {
key = '$key()';
}
+ listener?.builtSuggestion(suggestion);
if (laterReplacesEarlier) {
_suggestionMap[key] = suggestion;
} else {
@@ -1048,6 +1073,23 @@
}
}
+ /// Compute the value of the _element kind_ feature for the given [element] in
+ /// the completion context.
+ double _computeElementKind(Element element) {
+ var location = request.opType.completionLocation;
+ var elementKind =
+ request.featureComputer.elementKindFeature(element, location);
+ if (elementKind < 0.0) {
+ if (location == null) {
+ listener?.missingCompletionLocationAt(
+ request.target.containingNode, request.target.entity);
+ } else {
+ listener?.missingElementKindTableFor(location);
+ }
+ }
+ return elementKind;
+ }
+
/// Compute a relevance value from the given feature scores:
/// - [contextType] is higher if the type of the element matches the context
/// type,
@@ -1125,21 +1167,25 @@
/// Return the relevance score for a top-level [element].
int _computeTopLevelRelevance(Element element,
- {int defaultRelevance = 800, DartType elementType}) {
+ {int defaultRelevance = 800, @required DartType elementType}) {
// TODO(brianwilkerson) The old relevance computation used a signal based
// on whether the element being suggested was from the same library in
// which completion is being performed. Explore whether that's a useful
// signal.
var featureComputer = request.featureComputer;
- var contextTypeFeature =
- featureComputer.contextTypeFeature(_contextType, elementType);
- var elementKind = featureComputer.elementKindFeature(
- element, request.opType.completionLocation);
+ var contextType =
+ featureComputer.contextTypeFeature(request.contextType, elementType);
+ var elementKind = _computeElementKind(element);
var hasDeprecated = featureComputer.hasDeprecatedFeature(element);
- return toRelevance(
+ var relevance = toRelevance(
weightedAverage(
- [contextTypeFeature, elementKind, hasDeprecated], [1.0, 0.75, 0.2]),
+ [contextType, elementKind, hasDeprecated], [1.0, 0.75, 0.2]),
defaultRelevance);
+ listener?.computedFeatures(
+ contextType: contextType,
+ elementKind: elementKind,
+ hasDeprecated: hasDeprecated);
+ return relevance;
}
/// Return a suggestion based on the [element], or `null` if a suggestion is
@@ -1270,3 +1316,29 @@
}
}
}
+
+abstract class SuggestionListener {
+ /// Invoked when a suggestion has been built.
+ void builtSuggestion(protocol.CompletionSuggestion suggestion);
+
+ /// Invoked with the values of the features that were computed in the process
+ /// of building a suggestion. This method is only invoked when using the new
+ /// relevance computations. If invoked, it is invoked prior to invoking
+ /// [builtSuggestion].
+ void computedFeatures(
+ {double contextType,
+ double elementKind,
+ double hasDeprecated,
+ double inheritanceDistance,
+ double startsWithDollar,
+ double superMatches});
+
+ /// Invoked when an element kind feature cannot be produced because there is
+ /// no completion location label associated with the completion offset.
+ void missingCompletionLocationAt(
+ AstNode containingNode, SyntacticEntity entity);
+
+ /// Invoked when an element kind feature cannot be produced because there is
+ /// no `elementKindRelevance` table associated with the [completionLocation].
+ void missingElementKindTableFor(String completionLocation);
+}
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/abstract_producer.dart b/pkg/analysis_server/lib/src/services/correction/dart/abstract_producer.dart
index 00fa1c3..234e13d 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/abstract_producer.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/abstract_producer.dart
@@ -20,15 +20,8 @@
import 'package:analyzer_plugin/utilities/fixes/fixes.dart';
import 'package:meta/meta.dart';
-abstract class CorrectionProducer {
- CorrectionProducerContext _context;
-
- /// The most deeply nested node that completely covers the highlight region of
- /// the diagnostic, or `null` if there is no diagnostic, such a node does not
- /// exist, or if it hasn't been computed yet. Use [coveredNode] to access this
- /// field.
- AstNode _coveredNode;
-
+/// An object that can compute a correction (fix or assist).
+abstract class CorrectionProducer extends _AbstractCorrectionProducer {
/// Return the arguments that should be used when composing the message for an
/// assist, or `null` if the assist message has no parameters or if this
/// producer doesn't support assists.
@@ -38,6 +31,90 @@
/// if this producer doesn't support assists.
AssistKind get assistKind => null;
+ /// Return the arguments that should be used when composing the message for a
+ /// fix, or `null` if the fix message has no parameters or if this producer
+ /// doesn't support fixes.
+ List<Object> get fixArguments => null;
+
+ /// Return the fix kind that should be used to build a fix, or `null` if this
+ /// producer doesn't support fixes.
+ FixKind get fixKind => null;
+
+ Future<void> compute(DartChangeBuilder builder);
+}
+
+class CorrectionProducerContext {
+ final int selectionOffset;
+ final int selectionLength;
+ final int selectionEnd;
+
+ final CompilationUnit unit;
+ final CorrectionUtils utils;
+ final String file;
+
+ final TypeProvider typeProvider;
+ final Flutter flutter;
+
+ final AnalysisSession session;
+ final AnalysisSessionHelper sessionHelper;
+ final ResolvedUnitResult resolvedResult;
+ final ChangeWorkspace workspace;
+
+ final Diagnostic diagnostic;
+
+ AstNode _node;
+
+ CorrectionProducerContext({
+ @required this.resolvedResult,
+ @required this.workspace,
+ this.diagnostic,
+ this.selectionOffset = -1,
+ this.selectionLength = 0,
+ }) : file = resolvedResult.path,
+ flutter = Flutter.of(resolvedResult),
+ session = resolvedResult.session,
+ sessionHelper = AnalysisSessionHelper(resolvedResult.session),
+ typeProvider = resolvedResult.typeProvider,
+ selectionEnd = (selectionOffset ?? 0) + (selectionLength ?? 0),
+ unit = resolvedResult.unit,
+ utils = CorrectionUtils(resolvedResult);
+
+ AstNode get node => _node;
+
+ /// Return `true` the lint with the given [name] is enabled.
+ bool isLintEnabled(String name) {
+ var analysisOptions = session.analysisContext.analysisOptions;
+ return analysisOptions.isLintEnabled(name);
+ }
+
+ bool setupCompute() {
+ final locator = NodeLocator(selectionOffset, selectionEnd);
+ _node = locator.searchWithin(resolvedResult.unit);
+ return _node != null;
+ }
+}
+
+/// An object that can dynamically compute multiple corrections (fixes or
+/// assists).
+abstract class MultiCorrectionProducer extends _AbstractCorrectionProducer {
+ /// Return each of the individual producers generated by this producer.
+ Iterable<CorrectionProducer> get producers;
+}
+
+/// The behavior shared by [CorrectionProducer] and [MultiCorrectionProducer].
+abstract class _AbstractCorrectionProducer {
+ /// The context used to produce corrections.
+ CorrectionProducerContext _context;
+
+ /// The most deeply nested node that completely covers the highlight region of
+ /// the diagnostic, or `null` if there is no diagnostic, such a node does not
+ /// exist, or if it hasn't been computed yet. Use [coveredNode] to access this
+ /// field.
+ AstNode _coveredNode;
+
+ /// Initialize a newly created producer.
+ _AbstractCorrectionProducer();
+
/// The most deeply nested node that completely covers the highlight region of
/// the diagnostic, or `null` if there is no diagnostic or if such a node does
/// not exist.
@@ -66,15 +143,6 @@
String get file => _context.file;
- /// Return the arguments that should be used when composing the message for a
- /// fix, or `null` if the fix message has no parameters or if this producer
- /// doesn't support fixes.
- List<Object> get fixArguments => null;
-
- /// Return the fix kind that should be used to build a fix, or `null` if this
- /// producer doesn't support fixes.
- FixKind get fixKind => null;
-
Flutter get flutter => _context.flutter;
AstNode get node => _context.node;
@@ -85,14 +153,15 @@
int get selectionOffset => _context.selectionOffset;
+ AnalysisSessionHelper get sessionHelper => _context.sessionHelper;
+
TypeProvider get typeProvider => _context.typeProvider;
CompilationUnit get unit => _context.unit;
CorrectionUtils get utils => _context.utils;
- Future<void> compute(DartChangeBuilder builder);
-
+ /// Configure this producer based on the [context].
void configure(CorrectionProducerContext context) {
_context = context;
}
@@ -151,54 +220,3 @@
return false;
}
}
-
-class CorrectionProducerContext {
- final int selectionOffset;
- final int selectionLength;
- final int selectionEnd;
-
- final CompilationUnit unit;
- final CorrectionUtils utils;
- final String file;
-
- final TypeProvider typeProvider;
- final Flutter flutter;
-
- final AnalysisSession session;
- final AnalysisSessionHelper sessionHelper;
- final ResolvedUnitResult resolvedResult;
- final ChangeWorkspace workspace;
-
- final Diagnostic diagnostic;
-
- AstNode _node;
-
- CorrectionProducerContext({
- @required this.resolvedResult,
- @required this.workspace,
- this.diagnostic,
- this.selectionOffset = -1,
- this.selectionLength = 0,
- }) : file = resolvedResult.path,
- flutter = Flutter.of(resolvedResult),
- session = resolvedResult.session,
- sessionHelper = AnalysisSessionHelper(resolvedResult.session),
- typeProvider = resolvedResult.typeProvider,
- selectionEnd = (selectionOffset ?? 0) + (selectionLength ?? 0),
- unit = resolvedResult.unit,
- utils = CorrectionUtils(resolvedResult);
-
- AstNode get node => _node;
-
- /// Return `true` the lint with the given [name] is enabled.
- bool isLintEnabled(String name) {
- var analysisOptions = session.analysisContext.analysisOptions;
- return analysisOptions.isLintEnabled(name);
- }
-
- bool setupCompute() {
- final locator = NodeLocator(selectionOffset, selectionEnd);
- _node = locator.searchWithin(resolvedResult.unit);
- return _node != null;
- }
-}
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/add_explicit_cast.dart b/pkg/analysis_server/lib/src/services/correction/dart/add_explicit_cast.dart
index f4127ef..36a1f39 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/add_explicit_cast.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/add_explicit_cast.dart
@@ -5,7 +5,6 @@
import 'package:analysis_server/src/services/correction/dart/abstract_producer.dart';
import 'package:analysis_server/src/services/correction/fix.dart';
import 'package:analysis_server/src/utilities/extensions/ast.dart';
-import 'package:analysis_server/src/utilities/extensions/type.dart';
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/ast/precedence.dart';
import 'package:analyzer/dart/element/type.dart';
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/change_argument_name.dart b/pkg/analysis_server/lib/src/services/correction/dart/change_argument_name.dart
new file mode 100644
index 0000000..6ec06fc
--- /dev/null
+++ b/pkg/analysis_server/lib/src/services/correction/dart/change_argument_name.dart
@@ -0,0 +1,88 @@
+// Copyright (c) 2020, 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 'package:analysis_server/src/services/correction/dart/abstract_producer.dart';
+import 'package:analysis_server/src/services/correction/executable_parameters.dart';
+import 'package:analysis_server/src/services/correction/fix.dart';
+import 'package:analysis_server/src/services/correction/levenshtein.dart';
+import 'package:analyzer/dart/ast/ast.dart';
+import 'package:analyzer_plugin/utilities/change_builder/change_builder_dart.dart';
+import 'package:analyzer_plugin/utilities/fixes/fixes.dart';
+import 'package:analyzer_plugin/utilities/range_factory.dart';
+
+class ChangeArgumentName extends MultiCorrectionProducer {
+ static const maxDistance = 4;
+
+ @override
+ Iterable<CorrectionProducer> get producers sync* {
+ var names = _getNamedParameterNames();
+ if (names == null || names.isEmpty) {
+ return;
+ }
+ SimpleIdentifier argumentName = node;
+ var invalidName = argumentName.name;
+ for (var proposedName in names) {
+ var distance = _computeDistance(invalidName, proposedName);
+ if (distance <= maxDistance) {
+ // TODO(brianwilkerson) Create a way to use the distance as part of the
+ // computation of the priority (so that closer names sort first).
+ yield _ChangeName(argumentName, proposedName);
+ }
+ }
+ }
+
+ int _computeDistance(String current, String proposal) {
+ if ((current == 'child' && proposal == 'children') ||
+ (current == 'children' && proposal == 'child')) {
+ // Special case handling for 'child' and 'children' is unnecessary if
+ // `maxDistance >= 3`, but is included to prevent regression in case the
+ // value is changed to improve results.
+ return 1;
+ }
+ return levenshtein(current, proposal, maxDistance, caseSensitive: false);
+ }
+
+ List<String> _getNamedParameterNames() {
+ var namedExpression = node?.parent?.parent;
+ if (node is SimpleIdentifier &&
+ namedExpression is NamedExpression &&
+ namedExpression.name == node.parent &&
+ namedExpression.parent is ArgumentList) {
+ var parameters = ExecutableParameters(
+ sessionHelper,
+ namedExpression.parent.parent,
+ );
+ return parameters?.namedNames;
+ }
+ return null;
+ }
+
+ /// Return an instance of this class. Used as a tear-off in `FixProcessor`.
+ static ChangeArgumentName newInstance() => ChangeArgumentName();
+}
+
+/// A correction processor that can make one of the possible change computed by
+/// the [ChangeArgumentName] producer.
+class _ChangeName extends CorrectionProducer {
+ /// The name of the argument being changed.
+ final SimpleIdentifier argumentName;
+
+ /// The name to which the argument name will be changed.
+ final String proposedName;
+
+ _ChangeName(this.argumentName, this.proposedName);
+
+ @override
+ List<Object> get fixArguments => [proposedName];
+
+ @override
+ FixKind get fixKind => DartFixKind.CHANGE_ARGUMENT_NAME;
+
+ @override
+ Future<void> compute(DartChangeBuilder builder) async {
+ await builder.addFileEdit(file, (builder) {
+ builder.addSimpleReplacement(range.node(argumentName), proposedName);
+ });
+ }
+}
diff --git a/pkg/analysis_server/lib/src/services/correction/executable_parameters.dart b/pkg/analysis_server/lib/src/services/correction/executable_parameters.dart
new file mode 100644
index 0000000..522ca6d
--- /dev/null
+++ b/pkg/analysis_server/lib/src/services/correction/executable_parameters.dart
@@ -0,0 +1,88 @@
+// Copyright (c) 2014, 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 'dart:core';
+
+import 'package:analyzer/dart/ast/ast.dart';
+import 'package:analyzer/dart/element/element.dart';
+import 'package:analyzer/src/dart/analysis/session_helper.dart';
+
+/// [ExecutableElement], its parameters, and operations on them.
+class ExecutableParameters {
+ final AnalysisSessionHelper sessionHelper;
+ final ExecutableElement executable;
+
+ final List<ParameterElement> required = [];
+ final List<ParameterElement> optionalPositional = [];
+ final List<ParameterElement> named = [];
+
+ factory ExecutableParameters(
+ AnalysisSessionHelper sessionHelper, AstNode invocation) {
+ Element element;
+ // This doesn't handle FunctionExpressionInvocation.
+ if (invocation is Annotation) {
+ element = invocation.element;
+ } else if (invocation is InstanceCreationExpression) {
+ element = invocation.staticElement;
+ } else if (invocation is MethodInvocation) {
+ element = invocation.methodName.staticElement;
+ } else if (invocation is ConstructorReferenceNode) {
+ element = invocation.staticElement;
+ }
+ if (element is ExecutableElement && !element.isSynthetic) {
+ return ExecutableParameters._(sessionHelper, element);
+ } else {
+ return null;
+ }
+ }
+
+ ExecutableParameters._(this.sessionHelper, this.executable) {
+ for (var parameter in executable.parameters) {
+ if (parameter.isRequiredPositional) {
+ required.add(parameter);
+ } else if (parameter.isOptionalPositional) {
+ optionalPositional.add(parameter);
+ } else if (parameter.isNamed) {
+ named.add(parameter);
+ }
+ }
+ }
+
+ /// Return the path of the file in which the executable is declared.
+ String get file => executable.source.fullName;
+
+ /// Return the names of the named parameters.
+ List<String> get namedNames {
+ return named.map((parameter) => parameter.name).toList();
+ }
+
+ /// Return the [FormalParameterList] of the [executable], or `nul be found.
+ Future<FormalParameterList> getParameterList() async {
+ var result = await sessionHelper.getElementDeclaration(executable);
+ var targetDeclaration = result.node;
+ if (targetDeclaration is ConstructorDeclaration) {
+ return targetDeclaration.parameters;
+ } else if (targetDeclaration is FunctionDeclaration) {
+ var function = targetDeclaration.functionExpression;
+ return function.parameters;
+ } else if (targetDeclaration is MethodDeclaration) {
+ return targetDeclaration.parameters;
+ }
+ return null;
+ }
+
+ /// Return the [FormalParameter] of the [element] in [FormalParameterList],
+ /// or `null` if it can't be found.
+ Future<FormalParameter> getParameterNode(ParameterElement element) async {
+ var result = await sessionHelper.getElementDeclaration(element);
+ var declaration = result.node;
+ for (var node = declaration; node != null; node = node.parent) {
+ if (node is FormalParameter && node.parent is FormalParameterList) {
+ return node;
+ }
+ }
+ return null;
+ }
+}
diff --git a/pkg/analysis_server/lib/src/services/correction/fix_internal.dart b/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
index 12d3153..db30359 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
@@ -25,6 +25,7 @@
import 'package:analysis_server/src/services/correction/dart/add_return_type.dart';
import 'package:analysis_server/src/services/correction/dart/add_static.dart';
import 'package:analysis_server/src/services/correction/dart/add_type_annotation.dart';
+import 'package:analysis_server/src/services/correction/dart/change_argument_name.dart';
import 'package:analysis_server/src/services/correction/dart/convert_add_all_to_spread.dart';
import 'package:analysis_server/src/services/correction/dart/convert_conditional_expression_to_if_element.dart';
import 'package:analysis_server/src/services/correction/dart/convert_documentation_into_line.dart';
@@ -100,6 +101,9 @@
/// A predicate is a one-argument function that returns a boolean value.
typedef ElementPredicate = bool Function(Element argument);
+/// A function that can be executed to create a multi-correction producer.
+typedef MultiProducerGenerator = MultiCorrectionProducer Function();
+
/// A function that can be executed to create a correction producer.
typedef ProducerGenerator = CorrectionProducer Function();
@@ -349,6 +353,16 @@
// LintNames.use_rethrow_when_possible : [],
};
+ /// A map from error codes to a list of generators used to create multiple
+ /// correction producers used to build fixes for those diagnostics. The
+ /// generators used for lint rules are in the [lintMultiProducerMap].
+ static const Map<ErrorCode, List<MultiProducerGenerator>>
+ nonLintMultiProducerMap = {
+ CompileTimeErrorCode.UNDEFINED_NAMED_PARAMETER: [
+ ChangeArgumentName.newInstance
+ ],
+ };
+
/// A map from error codes to a list of generators used to create the
/// correction producers used to build fixes for those diagnostics. The
/// generators used for lint rules are in the [lintProducerMap].
@@ -802,7 +816,6 @@
}
if (errorCode == CompileTimeErrorCode.UNDEFINED_NAMED_PARAMETER) {
await _addFix_addMissingParameterNamed();
- await _addFix_changeArgumentName();
}
if (errorCode == StaticTypeWarningCode.ILLEGAL_ASYNC_RETURN_TYPE) {
await _addFix_illegalAsyncReturnType();
@@ -1217,57 +1230,6 @@
}
}
- Future<void> _addFix_changeArgumentName() async {
- const maxDistance = 4;
-
- List<String> getNamedParameterNames() {
- var namedExpression = node?.parent?.parent;
- if (node is SimpleIdentifier &&
- namedExpression is NamedExpression &&
- namedExpression.name == node.parent &&
- namedExpression.parent is ArgumentList) {
- var parameters = _ExecutableParameters(
- sessionHelper,
- namedExpression.parent.parent,
- );
- return parameters?.namedNames;
- }
- return null;
- }
-
- int computeDistance(String current, String proposal) {
- if ((current == 'child' && proposal == 'children') ||
- (current == 'children' && proposal == 'child')) {
- // Special case handling for 'child' and 'children' is unnecessary if
- // `maxDistance >= 3`, but is included to prevent regression in case the
- // value is changed to improve results.
- return 1;
- }
- return levenshtein(current, proposal, maxDistance, caseSensitive: false);
- }
-
- var names = getNamedParameterNames();
- if (names == null || names.isEmpty) {
- return;
- }
-
- SimpleIdentifier argumentName = node;
- var invalidName = argumentName.name;
- for (var proposedName in names) {
- var distance = computeDistance(invalidName, proposedName);
- if (distance <= maxDistance) {
- var changeBuilder = _newDartChangeBuilder();
- await changeBuilder.addFileEdit(file, (builder) {
- builder.addSimpleReplacement(range.node(argumentName), proposedName);
- });
- // TODO(brianwilkerson) Create a way to use the distance as part of the
- // computation of the priority (so that closer names sort first).
- _addFixFromBuilder(changeBuilder, DartFixKind.CHANGE_ARGUMENT_NAME,
- args: [proposedName]);
- }
- }
- }
-
Future<void> _addFix_changeToNearestPreciseValue() async {
IntegerLiteral integer = node;
var lexeme = integer.literal.lexeme;
@@ -4271,10 +4233,8 @@
Future<void> compute(CorrectionProducer producer) async {
producer.configure(context);
-
var builder = _newDartChangeBuilder();
await producer.compute(builder);
-
_addFixFromBuilder(builder, producer.fixKind,
args: producer.fixArguments);
}
@@ -4294,6 +4254,16 @@
await compute(generator());
}
}
+ var multiGenerators = nonLintMultiProducerMap[errorCode];
+ if (multiGenerators != null) {
+ for (var multiGenerator in multiGenerators) {
+ var multiProducer = multiGenerator();
+ multiProducer.configure(context);
+ for (var producer in multiProducer.producers) {
+ await compute(producer);
+ }
+ }
+ }
}
}
diff --git a/pkg/analysis_server/lib/src/status/diagnostics.dart b/pkg/analysis_server/lib/src/status/diagnostics.dart
index c633e59..e0c20bb 100644
--- a/pkg/analysis_server/lib/src/status/diagnostics.dart
+++ b/pkg/analysis_server/lib/src/status/diagnostics.dart
@@ -682,7 +682,7 @@
<nav class="masthead-nav">
<a href="/status" ${isNavPage ? ' class="active"' : ''}>Diagnostics</a>
<a href="/feedback" ${isCurrentPage('/feedback') ? ' class="active"' : ''}>Feedback</a>
- <a href="https://www.dartlang.org/tools/analyzer" target="_blank">Docs</a>
+ <a href="https://dart.dev/tools/dartanalyzer" target="_blank">Docs</a>
<a href="https://htmlpreview.github.io/?https://github.com/dart-lang/sdk/blob/master/pkg/analysis_server/doc/api.html" target="_blank">Spec</a>
</nav>
</div>
@@ -785,10 +785,10 @@
// sorted later.
var server = socketServer.analysisServer;
pages.add(MLCompletionPage(this, server));
+ pages.add(PluginsPage(this, server));
if (server is AnalysisServer) {
pages.add(CompletionPage(this, server));
- pages.add(PluginsPage(this, server));
pages.add(SubscriptionsPage(this, server));
} else if (server is LspAnalysisServer) {
pages.add(LspCompletionPage(this, server));
@@ -1200,7 +1200,7 @@
class PluginsPage extends DiagnosticPageWithNav {
@override
- AnalysisServer server;
+ AbstractAnalysisServer server;
PluginsPage(DiagnosticsSite site, this.server)
: super(site, 'plugins', 'Plugins', description: 'Plugins in use.');
diff --git a/pkg/analysis_server/lib/src/utilities/extensions/ast.dart b/pkg/analysis_server/lib/src/utilities/extensions/ast.dart
index f974740..1287b2e 100644
--- a/pkg/analysis_server/lib/src/utilities/extensions/ast.dart
+++ b/pkg/analysis_server/lib/src/utilities/extensions/ast.dart
@@ -6,7 +6,6 @@
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/element/element.dart';
-/// Extensions for [AstNode]s
extension AstNodeExtensions on AstNode {
/// Return `true` if this node has an `override` annotation.
bool get hasOverride {
@@ -61,7 +60,6 @@
bool get inWhileLoop => thisOrAncestorOfType<WhileStatement>() != null;
}
-/// Extensions for [Expression]s
extension ExpressionExtensions on Expression {
/// Return `true` if this expression is an invocation of the method `cast`
/// from either Iterable`, `List`, `Map`, or `Set`.
@@ -84,7 +82,6 @@
}
}
-/// Extensions for [FunctionBody]s
extension FunctionBodyExtensions on FunctionBody {
bool get isEmpty =>
this is EmptyFunctionBody ||
diff --git a/pkg/analysis_server/lib/src/utilities/extensions/element.dart b/pkg/analysis_server/lib/src/utilities/extensions/element.dart
index f502725..1d6b14c 100644
--- a/pkg/analysis_server/lib/src/utilities/extensions/element.dart
+++ b/pkg/analysis_server/lib/src/utilities/extensions/element.dart
@@ -4,7 +4,6 @@
import 'package:analyzer/dart/element/element.dart';
-/// Extensions for [ClassElement]s
extension ClassElementExtensions on ClassElement {
/// Return `true` if this element represents the class `Iterable` from
/// `dart:core`.
@@ -25,7 +24,26 @@
bool get isDartCoreSet => this != null && name == 'Set' && library.isDartCore;
}
-/// Extensions for [MethodElement]s
+extension ElementExtension on Element {
+ /// Return `true` if this element, the enclosing class (if there is one), or
+ /// the enclosing library, has been annotated with the `@deprecated`
+ /// annotation.
+ bool get hasOrInheritsDeprecated {
+ if (hasDeprecated) {
+ return true;
+ }
+ var ancestor = enclosingElement;
+ if (ancestor is ClassElement) {
+ if (ancestor.hasDeprecated) {
+ return true;
+ }
+ ancestor = ancestor.enclosingElement;
+ }
+ return ancestor is CompilationUnitElement &&
+ ancestor.enclosingElement.hasDeprecated;
+ }
+}
+
extension MethodElementExtensions on MethodElement {
/// Return `true` if this element represents the method `cast` from either
/// `Iterable`, `List`, `Map`, or `Set`.
diff --git a/pkg/analysis_server/lib/src/utilities/extensions/type.dart b/pkg/analysis_server/lib/src/utilities/extensions/type.dart
deleted file mode 100644
index 8964365..0000000
--- a/pkg/analysis_server/lib/src/utilities/extensions/type.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2020, 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 'package:analysis_server/src/utilities/extensions/element.dart';
-import 'package:analyzer/dart/element/type.dart';
-
-/// Extensions for [DartType]s.
-extension DartTypeExtensions on DartType {
- /// Return `true` if this type represents the class `Iterable` from
- /// `dart:core`.
- bool get isDartCoreIterable =>
- this is InterfaceType &&
- (this as InterfaceType).element.isDartCoreIterable;
-}
diff --git a/pkg/analysis_server/pubspec.yaml b/pkg/analysis_server/pubspec.yaml
index b33c8d0..03a88e3 100644
--- a/pkg/analysis_server/pubspec.yaml
+++ b/pkg/analysis_server/pubspec.yaml
@@ -16,7 +16,6 @@
linter: any
logging: any
meta: any
- nnbd_migration: any
pub_semver: any
source_span: any
stream_channel: any
diff --git a/pkg/analysis_server/test/analysis/get_hover_test.dart b/pkg/analysis_server/test/analysis/get_hover_test.dart
index 493f406..b31a487 100644
--- a/pkg/analysis_server/test/analysis/get_hover_test.dart
+++ b/pkg/analysis_server/test/analysis/get_hover_test.dart
@@ -336,7 +336,7 @@
library my.library;
/// doc aaa
/// doc bbb
-List<String> fff(int a, String b) {
+List<String> fff(int a, [String b = 'b']) {
}
''');
var hover = await prepareHover('fff(int a');
@@ -345,7 +345,8 @@
expect(hover.containingLibraryPath, testFile);
expect(hover.containingClassDescription, isNull);
expect(hover.dartdoc, '''doc aaa\ndoc bbb''');
- expect(hover.elementDescription, 'List<String> fff(int a, String b)');
+ expect(
+ hover.elementDescription, "List<String> fff(int a, [String b = 'b'])");
expect(hover.elementKind, 'function');
// types
expect(hover.staticType, isNull);
@@ -694,6 +695,14 @@
expect(hover.parameter, isNull);
}
+ Future<void> test_parameter_defaultValue() async {
+ addTestFile('void b([int a=123]) { }');
+ var hover = await prepareHover('a=');
+ // element
+ expect(hover.elementDescription, '[int a = 123]');
+ expect(hover.elementKind, 'parameter');
+ }
+
Future<void> test_parameter_reference_fieldFormal() async {
addTestFile('''
class A {
diff --git a/pkg/analysis_server/test/domain_edit_dartfix_test.dart b/pkg/analysis_server/test/domain_edit_dartfix_test.dart
index 69a64aa..0d639ac 100644
--- a/pkg/analysis_server/test/domain_edit_dartfix_test.dart
+++ b/pkg/analysis_server/test/domain_edit_dartfix_test.dart
@@ -68,7 +68,6 @@
var fix = EditDartFix(server, request);
final response = await fix.compute();
- fix.nonNullableFixTask?.shutdownServer();
expect(response.id, id);
return response;
}
@@ -161,91 +160,6 @@
expect(result.error, isNotNull);
}
- Future<void> test_nonNullable() async {
- createAnalysisOptionsFile(experiments: ['non-nullable']);
- addTestFile('''
-int f(int i) => 0;
-int g(int i) => f(i);
-void test() {
- g(null);
-}
-''');
- createProject();
- expectLater(() async => await performFix(includedFixes: ['non-nullable']),
- throwsA(TypeMatcher<StateError>()));
- }
-
- Future<void> test_nonNullable_pubspec_environmentAdded() async {
- var originalContent = '''
-name: foo
-''';
- newFile('/project/pubspec.yaml', content: originalContent);
- createProject();
- var result = await performFix(includedFixes: ['non-nullable']);
- expect(result.suggestions.length, greaterThanOrEqualTo(1));
- expect(result.hasErrors, isFalse);
- expect(result.edits, hasLength(1));
- expectFileEdits(originalContent, result.edits[0], '''
-environment:
- sdk: '>=2.9.0 <2.10.0'
-
-name: foo
-''');
- }
-
- Future<void> test_nonNullable_pubspec_sdkAdded() async {
- var originalContent = '''
-name: foo
-environment:
- x: y
-''';
- newFile('/project/pubspec.yaml', content: originalContent);
- createProject();
- var result = await performFix(includedFixes: ['non-nullable']);
- expect(result.suggestions.length, greaterThanOrEqualTo(1));
- expect(result.hasErrors, isFalse);
- expect(result.edits, hasLength(1));
- expectFileEdits(originalContent, result.edits[0], '''
-name: foo
-environment:
- x: y
- sdk: '>=2.9.0 <2.10.0'
-''');
- }
-
- Future<void> test_nonNullable_pubspec_sdkNotUpdated() async {
- var originalContent = '''
-name: foo
-environment:
- sdk: '>=2.9.0 <2.10.0'
-''';
- newFile('/project/pubspec.yaml', content: originalContent);
- createProject();
- var result = await performFix(includedFixes: ['non-nullable']);
- expect(result.suggestions, isEmpty);
- expect(result.hasErrors, isFalse);
- expect(result.edits, isEmpty);
- }
-
- Future<void> test_nonNullable_pubspec_sdkUpdated() async {
- var originalContent = '''
-name: foo
-environment:
- sdk: '>=2.7.0 <3.0.0'
-''';
- newFile('/project/pubspec.yaml', content: originalContent);
- createProject();
- var result = await performFix(includedFixes: ['non-nullable']);
- expect(result.suggestions.length, greaterThanOrEqualTo(1));
- expect(result.hasErrors, isFalse);
- expect(result.edits, hasLength(1));
- expectFileEdits(originalContent, result.edits[0], '''
-name: foo
-environment:
- sdk: '>=2.9.0 <2.10.0'
-''');
- }
-
Future<void> test_partFile() async {
newFile('/project/lib/lib.dart', content: '''
library lib2;
diff --git a/pkg/analysis_server/test/integration/support/integration_tests.dart b/pkg/analysis_server/test/integration/support/integration_tests.dart
index eeb9a1c..e51eace 100644
--- a/pkg/analysis_server/test/integration/support/integration_tests.dart
+++ b/pkg/analysis_server/test/integration/support/integration_tests.dart
@@ -587,7 +587,9 @@
serverPath = normalize(join(rootDir, 'bin', 'server.dart'));
}
- var arguments = <String>[];
+ var arguments = <String>[
+ '--disable-dart-dev',
+ ];
//
// Add VM arguments.
//
diff --git a/pkg/analysis_server/test/lsp/completion_test.dart b/pkg/analysis_server/test/lsp/completion_test.dart
index e0e4f19..8f11819 100644
--- a/pkg/analysis_server/test/lsp/completion_test.dart
+++ b/pkg/analysis_server/test/lsp/completion_test.dart
@@ -3,6 +3,8 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
+import 'package:analyzer_plugin/protocol/protocol_common.dart' as plugin;
+import 'package:analyzer_plugin/protocol/protocol_generated.dart' as plugin;
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -114,6 +116,82 @@
request, throwsA(isResponseError(ErrorCodes.InvalidParams)));
}
+ Future<void> test_fromPlugin_dartFile() async {
+ final content = '''
+ void main() {
+ var x = '';
+ print(^);
+ }
+ ''';
+
+ final pluginResult = plugin.CompletionGetSuggestionsResult(
+ content.indexOf('^'),
+ 0,
+ [
+ plugin.CompletionSuggestion(
+ plugin.CompletionSuggestionKind.INVOCATION,
+ 100,
+ 'x.toUpperCase()',
+ -1,
+ -1,
+ false,
+ false,
+ ),
+ ],
+ );
+ configureTestPlugin(respondWith: pluginResult);
+
+ await initialize();
+ await openFile(mainFileUri, withoutMarkers(content));
+
+ final res = await getCompletion(mainFileUri, positionFromMarker(content));
+ final fromServer = res.singleWhere((c) => c.label == 'x');
+ final fromPlugin = res.singleWhere((c) => c.label == 'x.toUpperCase()');
+
+ expect(fromServer.kind, equals(CompletionItemKind.Variable));
+ expect(fromPlugin.kind, equals(CompletionItemKind.Method));
+ }
+
+ Future<void> test_fromPlugin_nonDartFile() async {
+ final pluginAnalyzedFilePath = join(projectFolderPath, 'lib', 'foo.foo');
+ final pluginAnalyzedFileUri = Uri.file(pluginAnalyzedFilePath);
+ final content = '''
+ CREATE TABLE foo (
+ id INTEGER NOT NULL PRIMARY KEY
+ );
+
+ query: SELECT ^ FROM foo;
+ ''';
+
+ final pluginResult = plugin.CompletionGetSuggestionsResult(
+ content.indexOf('^'),
+ 0,
+ [
+ plugin.CompletionSuggestion(
+ plugin.CompletionSuggestionKind.IDENTIFIER,
+ 100,
+ 'id',
+ -1,
+ -1,
+ false,
+ false,
+ ),
+ ],
+ );
+ configureTestPlugin(respondWith: pluginResult);
+
+ await initialize();
+ await openFile(pluginAnalyzedFileUri, withoutMarkers(content));
+ final res =
+ await getCompletion(pluginAnalyzedFileUri, positionFromMarker(content));
+
+ expect(res, hasLength(1));
+ final suggestion = res.single;
+
+ expect(suggestion.kind, CompletionItemKind.Variable);
+ expect(suggestion.label, equals('id'));
+ }
+
Future<void> test_gettersAndSetters() async {
final content = '''
class MyClass {
@@ -693,6 +771,77 @@
part 'main.dart';'''));
}
+ Future<void> test_suggestionSets_members() async {
+ newFile(
+ join(projectFolderPath, 'source_file.dart'),
+ content: '''
+ class MyExportedClass {
+ DateTime myInstanceDateTime;
+ static DateTime myStaticDateTimeField;
+ static DateTime get myStaticDateTimeGetter => null;
+ }
+ ''',
+ );
+
+ final content = '''
+main() {
+ var a = MyExported^
+}
+ ''';
+
+ final initialAnalysis = waitForAnalysisComplete();
+ await initialize(
+ workspaceCapabilities:
+ withApplyEditSupport(emptyWorkspaceClientCapabilities));
+ await openFile(mainFileUri, withoutMarkers(content));
+ await initialAnalysis;
+ final res = await getCompletion(mainFileUri, positionFromMarker(content));
+
+ final completions =
+ res.where((c) => c.label.startsWith('MyExportedClass')).toList();
+ expect(
+ completions.map((c) => c.label),
+ unorderedEquals([
+ 'MyExportedClass',
+ 'MyExportedClass()',
+ // The instance field should not show up.
+ 'MyExportedClass.myStaticDateTimeField',
+ 'MyExportedClass.myStaticDateTimeGetter'
+ ]));
+
+ final completion = completions
+ .singleWhere((c) => c.label == 'MyExportedClass.myStaticDateTimeField');
+
+ // Resolve the completion item (via server) to get its edits. This is the
+ // LSP's equiv of getSuggestionDetails() and is invoked by LSP clients to
+ // populate additional info (in our case, the additional edits for inserting
+ // the import).
+ final resolved = await resolveCompletion(completion);
+ expect(resolved, isNotNull);
+
+ // Ensure the detail field was update to show this will auto-import.
+ expect(
+ resolved.detail, startsWith("Auto import from '../source_file.dart'"));
+
+ // Ensure the edit was added on.
+ expect(resolved.textEdit, isNotNull);
+
+ // Apply both the main completion edit and the additionalTextEdits atomically.
+ final newContent = applyTextEdits(
+ withoutMarkers(content),
+ [resolved.textEdit].followedBy(resolved.additionalTextEdits).toList(),
+ );
+
+ // Ensure both edits were made - the completion, and the inserted import.
+ expect(newContent, equals('''
+import '../source_file.dart';
+
+main() {
+ var a = MyExportedClass.myStaticDateTimeField
+}
+ '''));
+ }
+
Future<void> test_suggestionSets_namedConstructors() async {
newFile(
join(projectFolderPath, 'other_file.dart'),
diff --git a/pkg/analysis_server/test/lsp/document_changes_test.dart b/pkg/analysis_server/test/lsp/document_changes_test.dart
new file mode 100644
index 0000000..b2f6368
--- /dev/null
+++ b/pkg/analysis_server/test/lsp/document_changes_test.dart
@@ -0,0 +1,107 @@
+import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
+import 'package:analysis_server/src/protocol/protocol_internal.dart';
+import 'package:analyzer_plugin/protocol/protocol_common.dart' hide Position;
+import 'package:test/test.dart';
+import 'package:test_reflective_loader/test_reflective_loader.dart';
+
+import 'server_abstract.dart';
+
+void main() {
+ defineReflectiveSuite(() {
+ defineReflectiveTests(DocumentChangesTest);
+ });
+}
+
+@reflectiveTest
+class DocumentChangesTest extends AbstractLspAnalysisServerTest {
+ String get content => '''
+class Foo {
+ String get bar => 'baz';
+}
+''';
+
+ String get contentAfterUpdate => '''
+class Bar {
+ String get bar => 'updated';
+}
+''';
+
+ Future<void> test_documentChange_notifiesPlugins() async {
+ await _initializeAndOpen();
+ await changeFile(2, mainFileUri, [
+ TextDocumentContentChangeEvent(
+ Range(Position(0, 6), Position(0, 9)),
+ 0,
+ 'Bar',
+ ),
+ TextDocumentContentChangeEvent(
+ Range(Position(1, 21), Position(1, 24)),
+ 0,
+ 'updated',
+ ),
+ ]);
+
+ final notifiedChanges = pluginManager.analysisUpdateContentParams
+ .files[mainFilePath] as ChangeContentOverlay;
+
+ expect(
+ applySequenceOfEdits(content, notifiedChanges.edits),
+ contentAfterUpdate,
+ );
+ }
+
+ Future<void> test_documentChange_updatesOverlay() async {
+ await _initializeAndOpen();
+ await changeFile(2, mainFileUri, [
+ TextDocumentContentChangeEvent(
+ Range(Position(0, 6), Position(0, 9)),
+ 0,
+ 'Bar',
+ ),
+ TextDocumentContentChangeEvent(
+ Range(Position(1, 21), Position(1, 24)),
+ 0,
+ 'updated',
+ ),
+ ]);
+
+ expect(server.resourceProvider.hasOverlay(mainFilePath), isTrue);
+ expect(server.resourceProvider.getFile(mainFilePath).readAsStringSync(),
+ equals(contentAfterUpdate));
+ }
+
+ Future<void> test_documentClose_deletesOverlay() async {
+ await _initializeAndOpen();
+ await closeFile(mainFileUri);
+
+ expect(server.resourceProvider.hasOverlay(mainFilePath), isFalse);
+ }
+
+ Future<void> test_documentClose_notifiesPlugins() async {
+ await _initializeAndOpen();
+ await closeFile(mainFileUri);
+
+ expect(pluginManager.analysisUpdateContentParams.files,
+ equals({mainFilePath: RemoveContentOverlay()}));
+ }
+
+ Future<void> test_documentOpen_createsOverlay() async {
+ await _initializeAndOpen();
+
+ expect(server.resourceProvider.hasOverlay(mainFilePath), isTrue);
+ expect(server.resourceProvider.getFile(mainFilePath).readAsStringSync(),
+ equals(content));
+ }
+
+ Future<void> test_documentOpen_notifiesPlugins() async {
+ await _initializeAndOpen();
+
+ expect(pluginManager.analysisUpdateContentParams.files,
+ equals({mainFilePath: AddContentOverlay(content)}));
+ }
+
+ Future<void> _initializeAndOpen() async {
+ await initialize();
+ await openFile(mainFileUri, content);
+ }
+}
diff --git a/pkg/analysis_server/test/lsp/test_all.dart b/pkg/analysis_server/test/lsp/test_all.dart
index 6ed924f..2e086d8 100644
--- a/pkg/analysis_server/test/lsp/test_all.dart
+++ b/pkg/analysis_server/test/lsp/test_all.dart
@@ -16,6 +16,7 @@
import 'completion_test.dart' as completion;
import 'definition_test.dart' as definition;
import 'diagnostic_test.dart' as diagnostic;
+import 'document_changes_test.dart' as document_changes;
import 'document_highlights_test.dart' as document_highlights;
import 'document_symbols_test.dart' as document_symbols;
import 'file_modification_test.dart' as file_modification;
@@ -48,6 +49,7 @@
completion.main();
definition.main();
diagnostic.main();
+ document_changes.main();
document_highlights.main();
document_symbols.main();
file_modification.main();
diff --git a/pkg/analysis_server/test/src/edit/fix/dartfix_listener_test.dart b/pkg/analysis_server/test/src/edit/fix/dartfix_listener_test.dart
deleted file mode 100644
index a904622..0000000
--- a/pkg/analysis_server/test/src/edit/fix/dartfix_listener_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright (c) 2020, 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 'package:analysis_server/src/edit/fix/dartfix_listener.dart';
-import 'package:analysis_server/src/protocol_server.dart';
-import 'package:test/test.dart';
-import 'package:test_reflective_loader/test_reflective_loader.dart';
-
-void main() {
- defineReflectiveSuite(() {
- defineReflectiveTests(DartFixListenerTest);
- });
-}
-
-@reflectiveTest
-class DartFixListenerTest {
- DartFixListener listener;
-
- void setUp() {
- listener = DartFixListener(null);
- }
-
- void test_clear_clears_edits() {
- listener.addSourceChange(
- 'Example',
- null,
- SourceChange('foo')
- ..edits = [
- SourceFileEdit('foo', 2, edits: [SourceEdit(0, 0, 'foo')])
- ]);
- expect(listener.sourceChange.edits, hasLength(1));
- listener.reset();
- expect(listener.sourceChange.edits, isEmpty);
- }
-}
diff --git a/pkg/analysis_server/test/src/edit/fix/non_nullable_fix_test.dart b/pkg/analysis_server/test/src/edit/fix/non_nullable_fix_test.dart
deleted file mode 100644
index 658b309..0000000
--- a/pkg/analysis_server/test/src/edit/fix/non_nullable_fix_test.dart
+++ /dev/null
@@ -1,143 +0,0 @@
-// Copyright (c) 2019, 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 'package:analysis_server/protocol/protocol.dart';
-import 'package:analysis_server/protocol/protocol_generated.dart';
-import 'package:analysis_server/src/edit/edit_dartfix.dart';
-import 'package:analysis_server/src/edit/fix/dartfix_listener.dart';
-import 'package:analysis_server/src/edit/fix/non_nullable_fix.dart';
-import 'package:analyzer/file_system/memory_file_system.dart';
-import 'package:path/path.dart' as path;
-import 'package:test/test.dart';
-import 'package:test_reflective_loader/test_reflective_loader.dart';
-
-import '../../../analysis_abstract.dart';
-
-void main() {
- defineReflectiveSuite(() {
- defineReflectiveTests(NonNullableFixTest);
- });
-}
-
-@reflectiveTest
-class NonNullableFixTest extends AbstractAnalysisTest {
- int requestId = 30;
-
- path.Context context;
-
- DartFixListener listener;
-
- String get nextRequestId => (++requestId).toString();
-
- Future<EditDartfixResult> performFix({List<String> included}) async {
- final id = nextRequestId;
- final params = EditDartfixParams(included);
- params.includedFixes = ['non-nullable'];
- var request = Request(id, 'edit.dartfix', params.toJson());
- var response = await EditDartFix(server, request).compute();
- expect(response.id, id);
- expect(response.error, isNull);
- return EditDartfixResult.fromResponse(response);
- }
-
- @override
- Future<void> setUp() async {
- context = path.style == path.Style.windows
- // On Windows, ensure that the current drive matches
- // the drive inserted by MemoryResourceProvider.convertPath
- // so that packages are mapped to the correct drive
- ? path.Context(current: 'C:\\project')
- : path.Context(current: '/project');
- resourceProvider = MemoryResourceProvider(context: context);
- super.setUp();
- newFile('/project/bin/bin.dart', content: 'var x = 1;');
- newFile('/project/lib/lib1.dart', content: 'var x = 1;');
- newFile('/project/lib/lib2.dart', content: 'var x = 1;');
- newFile('/project/lib/src/lib3.dart', content: 'var x = 1;');
- newFile('/project/test/test.dart', content: 'var x = 1;');
- newFile('/project2/bin/bin.dart', content: 'var x = 1;');
- newFile('/project2/lib/lib1.dart', content: 'var x = 1;');
- newFile('/project2/lib/lib2.dart', content: 'var x = 1;');
- newFile('/project2/lib/src/lib3.dart', content: 'var x = 1;');
- newFile('/project2/test/test.dart', content: 'var x = 1;');
- // Compute the analysis results.
- server.setAnalysisRoots(
- '0', [resourceProvider.pathContext.dirname(testFile)], [], {});
- await server
- .getAnalysisDriver(testFile)
- .currentSession
- .getResolvedUnit(testFile);
- listener = DartFixListener(server);
- }
-
- Future<void> test_included_multipleRelativeDirectories() async {
- var fix =
- NonNullableFix(listener, resourceProvider, included: ['lib', 'test']);
- expect(fix.includedRoot, equals(convertPath('/project')));
- }
-
- Future<void> test_included_multipleRelativeDirectories_nonCanonical() async {
- var fix = NonNullableFix(listener, resourceProvider, included: [
- convertPath('../project2/lib'),
- convertPath('../project2/lib/src')
- ]);
- expect(fix.includedRoot, equals(convertPath('/project2/lib')));
- }
-
- Future<void>
- test_included_multipleRelativeDirectories_nonCanonical_atRoot() async {
- var fix = NonNullableFix(listener, resourceProvider, included: [
- convertPath('../project2/lib'),
- convertPath('../project/lib')
- ]);
- expect(fix.includedRoot, equals(convertPath('/')));
- }
-
- Future<void>
- test_included_multipleRelativeDirectories_subAndSuperDirectories() async {
- var fix =
- NonNullableFix(listener, resourceProvider, included: ['lib', '.']);
- expect(fix.includedRoot, equals(convertPath('/project')));
- }
-
- Future<void> test_included_multipleRelativeFiles() async {
- var fix = NonNullableFix(listener, resourceProvider, included: [
- convertPath('lib/lib1.dart'),
- convertPath('test/test.dart')
- ]);
- expect(fix.includedRoot, equals(convertPath('/project')));
- }
-
- Future<void> test_included_multipleRelativeFiles_sameDirectory() async {
- var fix = NonNullableFix(listener, resourceProvider,
- included: [convertPath('lib/lib1.dart'), convertPath('lib/lib2.dart')]);
- expect(fix.includedRoot, equals(convertPath('/project/lib')));
- }
-
- Future<void> test_included_multipleRelativeFilesAndDirectories() async {
- var fix = NonNullableFix(listener, resourceProvider, included: [
- convertPath('lib/lib1.dart'),
- convertPath('lib/src'),
- convertPath('../project/lib/src/lib3.dart')
- ]);
- expect(fix.includedRoot, equals(convertPath('/project/lib')));
- }
-
- Future<void> test_included_singleAbsoluteDirectory() async {
- var fix = NonNullableFix(listener, resourceProvider,
- included: [convertPath('/project')]);
- expect(fix.includedRoot, equals(convertPath('/project')));
- }
-
- Future<void> test_included_singleAbsoluteFile() async {
- var fix = NonNullableFix(listener, resourceProvider,
- included: [convertPath('/project/bin/bin.dart')]);
- expect(fix.includedRoot, equals(convertPath('/project/bin')));
- }
-
- Future<void> test_included_singleRelativeDirectory() async {
- var fix = NonNullableFix(listener, resourceProvider, included: ['.']);
- expect(fix.includedRoot, equals(convertPath('/project')));
- }
-}
diff --git a/pkg/analysis_server/test/src/edit/fix/test_all.dart b/pkg/analysis_server/test/src/edit/fix/test_all.dart
deleted file mode 100644
index d503cd9..0000000
--- a/pkg/analysis_server/test/src/edit/fix/test_all.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2019, 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 'package:test_reflective_loader/test_reflective_loader.dart';
-
-import 'dartfix_listener_test.dart' as dartfix_listener;
-import 'non_nullable_fix_test.dart' as non_nullable_fix;
-
-void main() {
- defineReflectiveSuite(() {
- dartfix_listener.main();
- non_nullable_fix.main();
- }, name: 'fix');
-}
diff --git a/pkg/analysis_server/test/src/edit/test_all.dart b/pkg/analysis_server/test/src/edit/test_all.dart
deleted file mode 100644
index b91a43d..0000000
--- a/pkg/analysis_server/test/src/edit/test_all.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright (c) 2019, 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 'package:test_reflective_loader/test_reflective_loader.dart';
-
-import 'fix/test_all.dart' as fix;
-
-void main() {
- defineReflectiveSuite(() {
- fix.main();
- }, name: 'edit');
-}
diff --git a/pkg/analysis_server/test/src/test_all.dart b/pkg/analysis_server/test/src/test_all.dart
index 1681ecc..0cb76aa 100644
--- a/pkg/analysis_server/test/src/test_all.dart
+++ b/pkg/analysis_server/test/src/test_all.dart
@@ -8,7 +8,6 @@
import 'computer/test_all.dart' as computer;
import 'domain_abstract_test.dart' as domain_abstract;
import 'domains/test_all.dart' as domains;
-import 'edit/test_all.dart' as edit;
import 'flutter/test_all.dart' as flutter;
import 'lsp/test_all.dart' as lsp;
import 'plugin/test_all.dart' as plugin;
@@ -22,7 +21,6 @@
computer.main();
domain_abstract.main();
domains.main();
- edit.main();
flutter.main();
lsp.main();
plugin.main();
diff --git a/pkg/analysis_server/tool/completion_metrics/completion_metrics.dart b/pkg/analysis_server/tool/completion_metrics/completion_metrics.dart
index 38dcbeb..367c005 100644
--- a/pkg/analysis_server/tool/completion_metrics/completion_metrics.dart
+++ b/pkg/analysis_server/tool/completion_metrics/completion_metrics.dart
@@ -4,16 +4,29 @@
import 'dart:async';
import 'dart:io' as io;
+import 'dart:math' as math;
+import 'package:_fe_analyzer_shared/src/base/syntactic_entity.dart';
import 'package:analysis_server/src/domains/completion/available_suggestions.dart';
-import 'package:analysis_server/src/protocol_server.dart';
+import 'package:analysis_server/src/protocol_server.dart' as protocol;
import 'package:analysis_server/src/services/completion/completion_core.dart';
import 'package:analysis_server/src/services/completion/completion_performance.dart';
import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
+import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
import 'package:analysis_server/src/services/completion/dart/utilities.dart';
import 'package:analyzer/dart/analysis/analysis_context_collection.dart';
import 'package:analyzer/dart/analysis/context_root.dart';
import 'package:analyzer/dart/analysis/results.dart';
+import 'package:analyzer/dart/ast/ast.dart';
+import 'package:analyzer/dart/element/element.dart'
+ show
+ ClassElement,
+ Element,
+ ExtensionElement,
+ ClassMemberElement,
+ ExecutableElement,
+ FieldElement,
+ VariableElement;
import 'package:analyzer/diagnostic/diagnostic.dart';
import 'package:analyzer/error/error.dart' as err;
import 'package:analyzer/file_system/overlay_file_system.dart';
@@ -24,9 +37,9 @@
import 'package:analyzer/src/generated/engine.dart';
import 'package:analyzer/src/services/available_declarations.dart';
import 'package:args/args.dart';
+import 'package:meta/meta.dart';
import 'metrics_util.dart';
-import 'utils.dart';
import 'visitors.dart';
Future<void> main(List<String> args) async {
@@ -41,9 +54,10 @@
print('Analyzing root: "$root"');
var stopwatch = Stopwatch()..start();
var code = await CompletionMetricsComputer(root,
- verbose: result['verbose'],
availableSuggestions: result[AVAILABLE_SUGGESTIONS],
- overlay: result[OVERLAY])
+ overlay: result[OVERLAY],
+ skipOldRelevance: result[SKIP_OLD_RELEVANCE],
+ verbose: result[VERBOSE])
.compute();
stopwatch.stop();
@@ -55,14 +69,27 @@
const String AVAILABLE_SUGGESTIONS = 'available-suggestions';
+/// An option to control whether and how overlays should be produced.
const String OVERLAY = 'overlay';
+/// A mode indicating that no overlays should be produced.
const String OVERLAY_NONE = 'none';
+/// A mode indicating that everything from the completion offset to the end of
+/// the file should be removed.
const String OVERLAY_REMOVE_REST_OF_FILE = 'remove-rest-of-file';
+/// A mode indicating that the token whose offset is the same as the
+/// completion offset should be removed.
const String OVERLAY_REMOVE_TOKEN = 'remove-token';
+/// A flag that causes metrics using the old relevance scores to not be
+/// produced.
+const String SKIP_OLD_RELEVANCE = 'skip-old-relevance';
+
+/// A flag that causes additional output to be produced.
+const String VERBOSE = 'verbose';
+
/// Create a parser that can be used to parse the command-line arguments.
ArgParser createArgParser() {
return ArgParser()
@@ -72,7 +99,7 @@
help: 'Print this help message.',
)
..addFlag(
- 'verbose',
+ VERBOSE,
abbr: 'v',
help: 'Print additional information about the analysis',
negatable: false,
@@ -97,7 +124,12 @@
'Before attempting a completion at the location of each token, the '
'token can be removed, or the rest of the file can be removed to test '
'code completion with diverse methods. The default mode is to '
- 'complete at the start of the token without modifying the file.');
+ 'complete at the start of the token without modifying the file.')
+ ..addFlag(SKIP_OLD_RELEVANCE,
+ help: 'Used to skip the computation of suggestions using the old '
+ 'relevance scores.',
+ defaultsTo: false,
+ negatable: false);
}
/// Print usage information for this tool.
@@ -131,14 +163,18 @@
return true;
}
+/// An indication of the group in which the completion falls for the purposes of
+/// subdividing the results.
+enum CompletionGroup { instanceMember, staticMember, topLevel }
+
/// A wrapper for the collection of [Counter] and [MeanReciprocalRankComputer]
/// objects for a run of [CompletionMetricsComputer].
class CompletionMetrics {
- /// The maximum number of longest results to collect.
- static const maxLongestResults = 10;
+ /// The maximum number of slowest results to collect.
+ static const maxSlowestResults = 5;
/// The maximum number of worst results to collect.
- static const maxWorstResults = 10;
+ static const maxWorstResults = 5;
/// The name associated with this set of metrics.
final String name;
@@ -169,7 +205,7 @@
MeanReciprocalRankComputer staticMemberMrrComputer =
MeanReciprocalRankComputer('static member completions');
- MeanReciprocalRankComputer nonTypeMemberMrrComputer =
+ MeanReciprocalRankComputer topLevelMrrComputer =
MeanReciprocalRankComputer('non-type member completions');
ArithmeticMeanComputer charsBeforeTop =
@@ -181,20 +217,126 @@
ArithmeticMeanComputer insertionLengthTheoretical =
ArithmeticMeanComputer('insertion_length_theoretical');
- /// A list of the top [maxWorstResults] completion results with the highest
- /// (worst) ranks.
- List<CompletionResult> worstResults = [];
+ /// The places in which a completion location was requested when none was
+ /// available.
+ Set<String> missingCompletionLocations = {};
- /// A list of the top [maxLongestResults] completion results with the highest
- /// (worst) ranks.
- List<CompletionResult> longestResults = [];
+ /// The completion locations for which no relevance table was available.
+ Set<String> missingCompletionLocationTables = {};
+
+ /// A list of the top [maxWorstResults] completion results with the highest
+ /// (worst) ranks for completing to instance members.
+ List<CompletionResult> instanceMemberWorstResults = [];
+
+ /// A list of the top [maxWorstResults] completion results with the highest
+ /// (worst) ranks for completing to static members.
+ List<CompletionResult> staticMemberWorstResults = [];
+
+ /// A list of the top [maxWorstResults] completion results with the highest
+ /// (worst) ranks for completing to top-level declarations.
+ List<CompletionResult> topLevelWorstResults = [];
+
+ /// A list of the top [maxSlowestResults] completion results that took the
+ /// longest top compute for instance members.
+ List<CompletionResult> instanceMemberSlowestResults = [];
+
+ /// A list of the top [maxSlowestResults] completion results that took the
+ /// longest top compute for static members.
+ List<CompletionResult> staticMemberSlowestResults = [];
+
+ /// A list of the top [maxSlowestResults] completion results that took the
+ /// longest top compute for top-level declarations.
+ List<CompletionResult> topLevelSlowestResults = [];
CompletionMetrics(this.name);
/// Record this completion result, this method handles the worst ranked items
/// as well as the longest sets of results to compute.
void recordCompletionResult(CompletionResult result) {
- // If the [result] is worse than any previously recorded results, record it.
+ _recordTime(result);
+ _recordMmr(result);
+ _recordWorstResult(result);
+ _recordSlowestResult(result);
+ _recordMissingInformation(result);
+ }
+
+ /// If the completion location was requested but missing when computing the
+ /// [result], then record where that happened.
+ void _recordMissingInformation(CompletionResult result) {
+ var location = result.listener?.missingCompletionLocation;
+ if (location != null) {
+ missingCompletionLocations.add(location);
+ } else {
+ location = result.listener?.missingCompletionLocationTable;
+ if (location != null) {
+ missingCompletionLocationTables.add(location);
+ }
+ }
+ }
+
+ /// Record the MMR for the [result].
+ void _recordMmr(CompletionResult result) {
+ var place = result.place;
+ successfulMrrComputer.addRank(place.rank);
+ switch (result.group) {
+ case CompletionGroup.instanceMember:
+ instanceMemberMrrComputer.addRank(place.rank);
+ break;
+ case CompletionGroup.staticMember:
+ staticMemberMrrComputer.addRank(place.rank);
+ break;
+ case CompletionGroup.topLevel:
+ topLevelMrrComputer.addRank(place.rank);
+ break;
+ }
+ }
+
+ /// If the [result] is took longer than any previously recorded results,
+ /// record it.
+ void _recordSlowestResult(CompletionResult result) {
+ List<CompletionResult> getSlowestResults() {
+ switch (result.group) {
+ case CompletionGroup.instanceMember:
+ return instanceMemberSlowestResults;
+ case CompletionGroup.staticMember:
+ return staticMemberSlowestResults;
+ case CompletionGroup.topLevel:
+ return topLevelSlowestResults;
+ }
+ return const <CompletionResult>[];
+ }
+
+ var slowestResults = getSlowestResults();
+ if (slowestResults.length >= maxSlowestResults) {
+ if (result.elapsedMS <= slowestResults.last.elapsedMS) {
+ return;
+ }
+ slowestResults.removeLast();
+ }
+ slowestResults.add(result);
+ slowestResults.sort((first, second) => second.elapsedMS - first.elapsedMS);
+ }
+
+ /// Record this elapsed ms count for the average ms count.
+ void _recordTime(CompletionResult result) {
+ meanCompletionMS.addValue(result.elapsedMS);
+ }
+
+ /// If the [result] is worse than any previously recorded results, record it.
+ void _recordWorstResult(CompletionResult result) {
+ List<CompletionResult> getWorstResults() {
+ switch (result.group) {
+ case CompletionGroup.instanceMember:
+ return instanceMemberWorstResults;
+ case CompletionGroup.staticMember:
+ return staticMemberWorstResults;
+ case CompletionGroup.topLevel:
+ return topLevelWorstResults;
+ }
+ return const <CompletionResult>[];
+ }
+
+ var worstResults = getWorstResults();
if (worstResults.length >= maxWorstResults) {
if (result.place.rank <= worstResults.last.place.rank) {
return;
@@ -203,20 +345,6 @@
}
worstResults.add(result);
worstResults.sort((first, second) => second.place.rank - first.place.rank);
-
- // Record this elapsed ms count for the average ms count.
- meanCompletionMS.addValue(result.elapsedMS);
-
- // If the [result] is took longer than any previously recorded results,
- // record it.
- if (longestResults.length >= maxLongestResults) {
- if (result.elapsedMS <= longestResults.last.elapsedMS) {
- return;
- }
- longestResults.removeLast();
- }
- longestResults.add(result);
- longestResults.sort((first, second) => second.elapsedMS - first.elapsedMS);
}
}
@@ -226,12 +354,14 @@
class CompletionMetricsComputer {
final String rootPath;
- final bool verbose;
-
final bool availableSuggestions;
final String overlay;
+ final bool skipOldRelevance;
+
+ final bool verbose;
+
ResolvedUnitResult _resolvedUnitResult;
/// The int to be returned from the [compute] call.
@@ -247,7 +377,10 @@
int overlayModificationStamp = 0;
CompletionMetricsComputer(this.rootPath,
- {this.verbose, this.availableSuggestions, this.overlay})
+ {@required this.availableSuggestions,
+ @required this.overlay,
+ @required this.skipOldRelevance,
+ @required this.verbose})
: assert(overlay == OVERLAY_NONE ||
overlay == OVERLAY_REMOVE_TOKEN ||
overlay == OVERLAY_REMOVE_REST_OF_FILE);
@@ -263,18 +396,23 @@
for (var context in collection.contexts) {
await _computeInContext(context.contextRoot);
}
- printMetrics(metricsOldMode);
+ if (!skipOldRelevance) {
+ printMetrics(metricsOldMode);
+ }
printMetrics(metricsNewMode);
if (verbose) {
printWorstResults(metricsNewMode);
- printLongestResults(metricsNewMode);
+ printSlowestResults(metricsNewMode);
+ printMissingInformation(metricsNewMode);
}
return resultCode;
}
bool forEachExpectedCompletion(
+ CompletionRequestImpl request,
+ MetricsSuggestionListener listener,
ExpectedCompletion expectedCompletion,
- List<CompletionSuggestion> suggestions,
+ List<protocol.CompletionSuggestion> suggestions,
CompletionMetrics metrics,
int elapsedMS,
bool doPrintMissedCompletions) {
@@ -289,20 +427,10 @@
if (place.denominator != 0) {
successfulCompletion = true;
- metrics.successfulMrrComputer.addRank(place.rank);
metrics.completionCounter.count('successful');
- metrics.recordCompletionResult(
- CompletionResult(place, suggestions, expectedCompletion, elapsedMS));
-
- var element = getElement(expectedCompletion.syntacticEntity);
- if (isInstanceMember(element)) {
- metrics.instanceMemberMrrComputer.addRank(place.rank);
- } else if (isStaticMember(element)) {
- metrics.staticMemberMrrComputer.addRank(place.rank);
- } else {
- metrics.nonTypeMemberMrrComputer.addRank(place.rank);
- }
+ metrics.recordCompletionResult(CompletionResult(place, request, listener,
+ suggestions, expectedCompletion, elapsedMS));
var charsBeforeTop =
_computeCharsBeforeTop(expectedCompletion, suggestions);
@@ -341,22 +469,6 @@
return successfulCompletion;
}
- void printLongestResults(CompletionMetrics metrics) {
- print('');
- print('====================');
- print('The longest completion results to compute:');
- for (var result in metrics.longestResults) {
- var elapsedMS = result.elapsedMS;
- var expected = result.expectedCompletion;
- print('');
- print('Elapsed ms: $elapsedMS');
- print('Completion: ${expected.completion}');
- print('Completion kind: ${expected.kind}');
- print('Element kind: ${expected.elementKind}');
- print('Location: ${expected.location}');
- }
- }
-
void printMetrics(CompletionMetrics metrics) {
print('');
print('');
@@ -385,7 +497,7 @@
metrics.staticMemberMrrComputer.printMean();
print('');
- metrics.nonTypeMemberMrrComputer.printMean();
+ metrics.topLevelMrrComputer.printMean();
print('');
metrics.charsBeforeTop.printMean();
@@ -399,34 +511,49 @@
print('====================');
}
- void printWorstResults(CompletionMetrics metrics) {
- print('');
- print('====================');
- print('The worst completion results:');
- for (var result in metrics.worstResults) {
- var rank = result.place.rank;
- var expected = result.expectedCompletion;
- var suggestions = result.suggestions;
- var preceeding = StringBuffer();
- for (var i = 0; i < rank - 1; i++) {
- if (i > 0) {
- preceeding.write(', ');
- }
- preceeding.write(suggestions[i].relevance);
- }
+ void printMissingInformation(CompletionMetrics metrics) {
+ var locations = metrics.missingCompletionLocations;
+ if (locations.isNotEmpty) {
print('');
- print('Rank: $rank');
- print('Completion: ${expected.completion}');
- print('Completion kind: ${expected.kind}');
- print('Element kind: ${expected.elementKind}');
- print('Location: ${expected.location}');
- print('Preceeding: $preceeding');
- print('Suggestion: ${suggestions[rank - 1]}');
+ print('====================');
+ print('Missing completion location in the following places:');
+ for (var location in locations.toList()..sort()) {
+ print(' $location');
+ }
+ }
+
+ var tables = metrics.missingCompletionLocationTables;
+ if (tables.isNotEmpty) {
+ print('');
+ print('====================');
+ print('Missing tables for the following completion locations:');
+ for (var table in tables.toList()..sort()) {
+ print(' $table');
+ }
}
}
- int _computeCharsBeforeTop(
- ExpectedCompletion target, List<CompletionSuggestion> suggestions,
+ void printSlowestResults(CompletionMetrics metrics) {
+ print('');
+ print('====================');
+ print('The slowest completion results to compute');
+ _printSlowestResults(
+ 'Instance members', metrics.instanceMemberSlowestResults);
+ _printSlowestResults('Static members', metrics.staticMemberSlowestResults);
+ _printSlowestResults('Top level', metrics.topLevelSlowestResults);
+ }
+
+ void printWorstResults(CompletionMetrics metrics) {
+ print('');
+ print('====================');
+ print('The worst completion results');
+ _printWorstResults('Instance members', metrics.instanceMemberWorstResults);
+ _printWorstResults('Static members', metrics.staticMemberWorstResults);
+ _printWorstResults('Top level', metrics.topLevelWorstResults);
+ }
+
+ int _computeCharsBeforeTop(ExpectedCompletion target,
+ List<protocol.CompletionSuggestion> suggestions,
{int minRank = 1}) {
var rank = placementInSuggestionList(suggestions, target).rank;
if (rank <= minRank) {
@@ -444,43 +571,35 @@
return expected.length;
}
- Future<List<CompletionSuggestion>> _computeCompletionSuggestions(
- ResolvedUnitResult resolvedUnitResult,
- int offset,
- CompletionMetrics metrics,
- [bool useNewRelevance = false,
- DeclarationsTracker declarationsTracker,
- CompletionAvailableSuggestionsParams availableSuggestionsParams]) async {
- var completionRequest = CompletionRequestImpl(
- resolvedUnitResult,
- offset,
- useNewRelevance,
- CompletionPerformance(),
- );
-
+ Future<List<protocol.CompletionSuggestion>> _computeCompletionSuggestions(
+ MetricsSuggestionListener listener, CompletionRequestImpl request,
+ [DeclarationsTracker declarationsTracker,
+ protocol.CompletionAvailableSuggestionsParams
+ availableSuggestionsParams]) async {
var suggestions;
if (declarationsTracker == null) {
// available suggestions == false
suggestions = await DartCompletionManager(
- dartdocDirectiveInfo: DartdocDirectiveInfo())
- .computeSuggestions(completionRequest);
+ dartdocDirectiveInfo: DartdocDirectiveInfo(), listener: listener)
+ .computeSuggestions(request);
} else {
// available suggestions == true
- var includedElementKinds = <ElementKind>{};
+ var includedElementKinds = <protocol.ElementKind>{};
var includedElementNames = <String>{};
var includedSuggestionRelevanceTagList =
- <IncludedSuggestionRelevanceTag>[];
- var includedSuggestionSetList = <IncludedSuggestionSet>[];
+ <protocol.IncludedSuggestionRelevanceTag>[];
+ var includedSuggestionSetList = <protocol.IncludedSuggestionSet>[];
suggestions = await DartCompletionManager(
dartdocDirectiveInfo: DartdocDirectiveInfo(),
includedElementKinds: includedElementKinds,
includedElementNames: includedElementNames,
includedSuggestionRelevanceTags:
- includedSuggestionRelevanceTagList)
- .computeSuggestions(completionRequest);
+ includedSuggestionRelevanceTagList,
+ listener: listener)
+ .computeSuggestions(request);
- computeIncludedSetList(declarationsTracker, resolvedUnitResult,
+ computeIncludedSetList(declarationsTracker, request.result,
includedSuggestionSetList, includedElementNames);
var includedSuggestionSetMap = {
@@ -588,7 +707,7 @@
_resolvedUnitResult.unit.accept(visitor);
for (var expectedCompletion in visitor.expectedCompletions) {
- var resolvedUnitResultWithOverlay = _resolvedUnitResult;
+ var resolvedUnitResult = _resolvedUnitResult;
// If an overlay option is being used, compute the overlay file, and
// have the context reanalyze the file
@@ -602,7 +721,7 @@
(context as DriverBasedAnalysisContext)
.driver
.changeFile(filePath);
- resolvedUnitResultWithOverlay =
+ resolvedUnitResult =
await context.currentSession.getResolvedUnit(filePath);
}
@@ -610,48 +729,54 @@
// and results are collected with varying settings for
// comparison:
+ Future<bool> handleExpectedCompletion(
+ {MetricsSuggestionListener listener,
+ @required CompletionMetrics metrics,
+ @required bool printMissedCompletions,
+ @required bool useNewRelevance}) async {
+ var stopwatch = Stopwatch()..start();
+ var request = CompletionRequestImpl(
+ resolvedUnitResult,
+ expectedCompletion.offset,
+ useNewRelevance,
+ CompletionPerformance(),
+ );
+ var suggestions = await _computeCompletionSuggestions(listener,
+ request, declarationsTracker, availableSuggestionsParams);
+ stopwatch.stop();
+
+ return forEachExpectedCompletion(
+ request,
+ listener,
+ expectedCompletion,
+ suggestions,
+ metrics,
+ stopwatch.elapsedMilliseconds,
+ printMissedCompletions);
+ }
+
// First we compute the completions useNewRelevance set to
// false:
- var stopwatch = Stopwatch()..start();
- var suggestions = await _computeCompletionSuggestions(
- resolvedUnitResultWithOverlay,
- expectedCompletion.offset,
- metricsOldMode,
- false,
- declarationsTracker,
- availableSuggestionsParams);
- stopwatch.stop();
-
- var successfulnessUseOldRelevance = forEachExpectedCompletion(
- expectedCompletion,
- suggestions,
- metricsOldMode,
- stopwatch.elapsedMilliseconds,
- false);
+ var oldRelevanceSucceeded = false;
+ if (!skipOldRelevance) {
+ oldRelevanceSucceeded = await handleExpectedCompletion(
+ metrics: metricsOldMode,
+ printMissedCompletions: false,
+ useNewRelevance: false);
+ }
// And again here with useNewRelevance set to true:
- stopwatch = Stopwatch()..start();
- suggestions = await _computeCompletionSuggestions(
- resolvedUnitResultWithOverlay,
- expectedCompletion.offset,
- metricsNewMode,
- true,
- declarationsTracker,
- availableSuggestionsParams);
- stopwatch.stop();
+ var listener = MetricsSuggestionListener();
+ var newRelevanceSucceeded = await handleExpectedCompletion(
+ listener: listener,
+ metrics: metricsNewMode,
+ printMissedCompletions: verbose,
+ useNewRelevance: true);
- var successfulnessUseNewRelevance = forEachExpectedCompletion(
- expectedCompletion,
- suggestions,
- metricsNewMode,
- stopwatch.elapsedMilliseconds,
- verbose);
-
- if (verbose &&
- successfulnessUseOldRelevance !=
- successfulnessUseNewRelevance) {
- if (successfulnessUseNewRelevance &&
- !successfulnessUseOldRelevance) {
+ if (!skipOldRelevance &&
+ verbose &&
+ oldRelevanceSucceeded != newRelevanceSucceeded) {
+ if (newRelevanceSucceeded) {
print(' ===========');
print(
' The `useNewRelevance = true` generated a completion that `useNewRelevance = false` did not:');
@@ -683,8 +808,8 @@
}
}
- List<CompletionSuggestion> _filterSuggestions(
- String prefix, List<CompletionSuggestion> suggestions) {
+ List<protocol.CompletionSuggestion> _filterSuggestions(
+ String prefix, List<protocol.CompletionSuggestion> suggestions) {
// TODO(brianwilkerson) Replace this with a more realistic filtering algorithm.
return suggestions
.where((suggestion) => suggestion.completion.startsWith(prefix))
@@ -709,6 +834,69 @@
}
}
+ void _printSlowestResults(
+ String title, List<CompletionResult> slowestResults) {
+ print('');
+ print(title);
+ for (var result in slowestResults) {
+ var elapsedMS = result.elapsedMS;
+ var expected = result.expectedCompletion;
+ print('');
+ print(' Elapsed ms: $elapsedMS');
+ print(' Completion: ${expected.completion}');
+ print(' Completion kind: ${expected.kind}');
+ print(' Element kind: ${expected.elementKind}');
+ print(' Location: ${expected.location}');
+ }
+ }
+
+ void _printWorstResults(String title, List<CompletionResult> worstResults) {
+ print('');
+ print(title);
+ for (var result in worstResults) {
+ var rank = result.place.rank;
+ var expected = result.expectedCompletion;
+ var suggestions = result.suggestions;
+ var suggestion = suggestions[rank - 1];
+
+ var features = result.listener?.featureMap[suggestion];
+ var topSuggestions =
+ suggestions.sublist(0, math.min(10, suggestions.length));
+ var topSuggestionCount = topSuggestions.length;
+
+ var preceding = <int, int>{};
+ for (var i = 0; i < rank - 1; i++) {
+ var relevance = suggestions[i].relevance;
+ preceding[relevance] = (preceding[relevance] ?? 0) + 1;
+ }
+ var precedingRelevances = preceding.keys.toList();
+ precedingRelevances.sort();
+
+ print('');
+ print(' Rank: $rank');
+ print(' Location: ${expected.location}');
+ print(' Suggestion: $suggestion');
+ print(' Features: $features');
+ print(' Top $topSuggestionCount suggestions:');
+ for (var i = 0; i < topSuggestionCount; i++) {
+ var topSuggestion = topSuggestions[i];
+ print(' $i Suggestion: $topSuggestion');
+ if (result.listener != null) {
+ var feature = result.listener.featureMap[topSuggestion];
+ if (feature.isEmpty) {
+ print(' Features: <none>');
+ } else {
+ print(' Features: $feature');
+ }
+ }
+ }
+ print(' Preceding relevance scores and counts:');
+ for (var relevance in precedingRelevances.reversed) {
+ print(' $relevance: ${preceding[relevance]}');
+ }
+ }
+ }
+
/// Given some [ResolvedUnitResult] return the first error of high severity
/// if such an error exists, `null` otherwise.
static err.AnalysisError getFirstErrorOrNull(
@@ -721,7 +909,8 @@
return null;
}
- static Place placementInSuggestionList(List<CompletionSuggestion> suggestions,
+ static Place placementInSuggestionList(
+ List<protocol.CompletionSuggestion> suggestions,
ExpectedCompletion expectedCompletion) {
var placeCounter = 1;
for (var completionSuggestion in suggestions) {
@@ -738,21 +927,140 @@
class CompletionResult {
final Place place;
- final List<CompletionSuggestion> suggestions;
+ final CompletionRequestImpl request;
+
+ final MetricsSuggestionListener listener;
+
+ final List<protocol.CompletionSuggestion> suggestions;
final ExpectedCompletion expectedCompletion;
final int elapsedMS;
- CompletionResult(
- this.place, this.suggestions, this.expectedCompletion, this.elapsedMS);
+ CompletionResult(this.place, this.request, this.listener, this.suggestions,
+ this.expectedCompletion, this.elapsedMS);
+
+ /// Return `true` if the [element] is an instance member of a class or
+ /// extension.
+ CompletionGroup get group {
+ var element = _getElement(expectedCompletion.syntacticEntity);
+ if (element != null) {
+ var parent = element.enclosingElement;
+ if (parent is ClassElement || parent is ExtensionElement) {
+ if (_isStatic(element)) {
+ return CompletionGroup.staticMember;
+ } else {
+ return CompletionGroup.instanceMember;
+ }
+ }
+ }
+ return CompletionGroup.topLevel;
+ }
+
+ /// Return the element associated with the syntactic [entity], or `null` if
+ /// there is no such element.
+ Element _getElement(SyntacticEntity entity) {
+ if (entity is SimpleIdentifier) {
+ return entity.staticElement;
+ }
+ return null;
+ }
+
+ /// Return `true` if the [element] is static (either top-level or a static
+ /// member of a class or extension).
+ bool _isStatic(Element element) {
+ if (element is ClassMemberElement) {
+ return element.isStatic;
+ } else if (element is ExecutableElement) {
+ return element.isStatic;
+ } else if (element is FieldElement) {
+ return element.isStatic;
+ } else if (element is VariableElement) {
+ return element.isStatic;
+ }
+ return true;
+ }
}
-extension AvailableSuggestionsExtension on AvailableSuggestion {
+class MetricsSuggestionListener implements SuggestionListener {
+ Map<protocol.CompletionSuggestion, String> featureMap = {};
+
+ String cachedFeatures = '';
+
+ String missingCompletionLocation;
+ String missingCompletionLocationTable;
+
+ @override
+ void builtSuggestion(protocol.CompletionSuggestion suggestion) {
+ featureMap[suggestion] = cachedFeatures;
+ cachedFeatures = '';
+ }
+
+ @override
+ void computedFeatures(
+ {double contextType,
+ double elementKind,
+ double hasDeprecated,
+ double inheritanceDistance,
+ double startsWithDollar,
+ double superMatches}) {
+ var buffer = StringBuffer();
+
+ bool write(String label, double value, bool needsComma) {
+ if (value != null) {
+ if (needsComma) {
+ buffer.write(', ');
+ }
+ buffer.write('$label: $value');
+ return true;
+ }
+ return needsComma;
+ }
+
+ var needsComma = false;
+ needsComma = write('contextType', contextType, needsComma);
+ needsComma = write('elementKind', elementKind, needsComma);
+ needsComma = write('hasDeprecated', hasDeprecated, needsComma);
+ needsComma = write('inheritanceDistance', inheritanceDistance, needsComma);
+ needsComma = write('startsWithDollar', startsWithDollar, needsComma);
+ needsComma = write('superMatches', superMatches, needsComma);
+ cachedFeatures = buffer.toString();
+ }
+
+ @override
+ void missingCompletionLocationAt(AstNode parent, SyntacticEntity child) {
+ if (missingCompletionLocation == null) {
+ String className(SyntacticEntity entity) {
+ var className = entity.runtimeType.toString();
+ if (className.endsWith('Impl')) {
+ className = className.substring(0, className.length - 4);
+ }
+ return className;
+ }
+
+ var parentClass = className(parent);
+ var childClass = className(child);
+ missingCompletionLocation = '$parentClass/$childClass';
+ }
+ }
+
+ @override
+ void missingElementKindTableFor(String completionLocation) {
+ missingCompletionLocationTable = completionLocation;
+ }
+}
+
+extension AvailableSuggestionsExtension on protocol.AvailableSuggestion {
// TODO(jwren) I am not sure if we want CompletionSuggestionKind.INVOCATION in
// call cases here, to iterate I need to figure out why this algorithm is
// taking so much time.
- CompletionSuggestion toCompletionSuggestion(int relevance) =>
- CompletionSuggestion(CompletionSuggestionKind.INVOCATION, relevance,
- label, label.length, 0, element.isDeprecated, false);
+ protocol.CompletionSuggestion toCompletionSuggestion(int relevance) =>
+ protocol.CompletionSuggestion(
+ protocol.CompletionSuggestionKind.INVOCATION,
+ relevance,
+ label,
+ label.length,
+ 0,
+ element.isDeprecated,
+ false);
}
diff --git a/pkg/analysis_server/tool/completion_metrics/relevance_table_generator.dart b/pkg/analysis_server/tool/completion_metrics/relevance_table_generator.dart
index 9d4e2bb..fed80b42 100644
--- a/pkg/analysis_server/tool/completion_metrics/relevance_table_generator.dart
+++ b/pkg/analysis_server/tool/completion_metrics/relevance_table_generator.dart
@@ -408,13 +408,7 @@
@override
void visitCommentReference(CommentReference node) {
- void recordDataForCommentReference(String context, AstNode node) {
- _recordElementKind(context, node);
- _recordTokenType(context, node);
- }
-
- recordDataForCommentReference(
- 'CommentReference_identifier', node.identifier);
+ _recordDataForNode('CommentReference_identifier', node.identifier);
super.visitCommentReference(node);
}
@@ -606,7 +600,7 @@
@override
void visitFieldDeclaration(FieldDeclaration node) {
- // There are no completions.
+ _recordDataForNode('FieldDeclaration_fields', node.fields);
super.visitFieldDeclaration(node);
}
@@ -636,7 +630,7 @@
@override
void visitForElement(ForElement node) {
- _recordTokenType('ForElement_parts', node.forLoopParts);
+ _recordDataForNode('ForElement_forLoopParts', node.forLoopParts);
_recordDataForNode('ForElement_body', node.body);
super.visitForElement(node);
}
@@ -674,15 +668,15 @@
@override
void visitForStatement(ForStatement node) {
- _recordTokenType('ForElement_parts', node.forLoopParts);
- _recordDataForNode('ForElement_body', node.body,
+ _recordDataForNode('ForStatement_forLoopParts', node.forLoopParts);
+ _recordDataForNode('ForStatement_body', node.body,
allowedKeywords: statementKeywords);
super.visitForStatement(node);
}
@override
void visitFunctionDeclaration(FunctionDeclaration node) {
- // There are no completions.
+ _recordDataForNode('FunctionDeclaration_returnType', node.returnType);
super.visitFunctionDeclaration(node);
}
@@ -750,9 +744,9 @@
void visitIfStatement(IfStatement node) {
_recordDataForNode('IfStatement_condition', node.condition,
allowedKeywords: expressionKeywords);
- _recordDataForNode('IfStatement_then', node.thenStatement,
+ _recordDataForNode('IfStatement_thenStatement', node.thenStatement,
allowedKeywords: statementKeywords);
- _recordDataForNode('IfStatement_else', node.elseStatement,
+ _recordDataForNode('IfStatement_elseStatement', node.elseStatement,
allowedKeywords: statementKeywords);
super.visitIfStatement(node);
}
@@ -803,7 +797,8 @@
@override
void visitInstanceCreationExpression(InstanceCreationExpression node) {
- // There are no completions.
+ _recordDataForNode(
+ 'InstanceCreationExpression_constructorName', node.constructorName);
super.visitInstanceCreationExpression(node);
}
@@ -877,13 +872,13 @@
@override
void visitMethodDeclaration(MethodDeclaration node) {
- // There are no completions.
+ _recordDataForNode('MethodDeclaration_returnType', node.returnType);
super.visitMethodDeclaration(node);
}
@override
void visitMethodInvocation(MethodInvocation node) {
- // There are no completions.
+ _recordDataForNode('MethodInvocation_argumentList', node.argumentList);
super.visitMethodInvocation(node);
}
@@ -1171,7 +1166,7 @@
@override
void visitVariableDeclarationList(VariableDeclarationList node) {
- // There are no completions.
+ _recordDataForNode('VariableDeclarationList_type', node.type);
super.visitVariableDeclarationList(node);
}
diff --git a/pkg/analysis_server/tool/completion_metrics/utils.dart b/pkg/analysis_server/tool/completion_metrics/utils.dart
deleted file mode 100644
index f9920c7..0000000
--- a/pkg/analysis_server/tool/completion_metrics/utils.dart
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright (c) 2020, 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 'package:analyzer/dart/ast/ast.dart';
-import 'package:analyzer/dart/ast/syntactic_entity.dart';
-import 'package:analyzer/dart/element/element.dart';
-
-/// Return the element associated with the syntactic [entity], or `null` if
-/// there is no such element.
-Element getElement(SyntacticEntity entity) {
- if (entity is SimpleIdentifier) {
- return entity.staticElement;
- }
- return null;
-}
-
-/// Return `true` if the [element] is an instance member of a class or
-/// extension.
-bool isInstanceMember(Element element) {
- if (element == null || _isStatic(element)) {
- return false;
- }
- var parent = element.enclosingElement;
- return parent is ClassElement || parent is ExtensionElement;
-}
-
-/// Return `true` if the [element] is an static member of a class or extension.
-bool isStaticMember(Element element) {
- if (element == null || !_isStatic(element)) {
- return false;
- }
- var parent = element.enclosingElement;
- return parent is ClassElement || parent is ExtensionElement;
-}
-
-/// Return `true` if the [element] is static (either top-level or a static
-/// member of a class or extension).
-bool _isStatic(Element element) {
- if (element is ClassMemberElement) {
- return element.isStatic;
- } else if (element is ExecutableElement) {
- return element.isStatic;
- } else if (element is FieldElement) {
- return element.isStatic;
- } else if (element is VariableElement) {
- return element.isStatic;
- }
- return true;
-}
diff --git a/pkg/analysis_server/tool/spec/spec_input.html b/pkg/analysis_server/tool/spec/spec_input.html
index 058ac50..a85f883 100644
--- a/pkg/analysis_server/tool/spec/spec_input.html
+++ b/pkg/analysis_server/tool/spec/spec_input.html
@@ -2676,7 +2676,7 @@
<p>
Organizes all of the directives - removes unused imports and sorts
directives of the given Dart file according to the
- <a href="https://www.dartlang.org/articles/style-guide/">Dart Style
+ <a href="https://dart.dev/guides/language/effective-dart/style">Dart Style
Guide</a>.
</p>
<p>
diff --git a/pkg/analyzer/CHANGELOG.md b/pkg/analyzer/CHANGELOG.md
index 0680d6b..3c9232f 100644
--- a/pkg/analyzer/CHANGELOG.md
+++ b/pkg/analyzer/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.39.9-dev
+* Deprecated `DartType.isObject`, use `DartType.isDartCoreObject` for
+ consistency with other similar getters.
+
## 0.39.8
* Deprecated `VariableElement.constantValue`, it does not guarantee that
the value has been computed. Use `computeConstantValue()` instead.
diff --git a/pkg/analyzer/README.md b/pkg/analyzer/README.md
index fb43fa4..590e1ac 100644
--- a/pkg/analyzer/README.md
+++ b/pkg/analyzer/README.md
@@ -105,4 +105,4 @@
[dartfmt]: https://github.com/dart-lang/dart_style
[dartdoc]: https://github.com/dart-lang/dartdoc
[analysis_sever]: https://github.com/dart-lang/sdk/tree/master/pkg/analysis_server
-[custom_analysis]: https://www.dartlang.org/guides/language/analysis-options
+[custom_analysis]: https://dart.dev/guides/language/analysis-options
diff --git a/pkg/analyzer/lib/dart/element/type.dart b/pkg/analyzer/lib/dart/element/type.dart
index 281e3c6..4adbf46 100644
--- a/pkg/analyzer/lib/dart/element/type.dart
+++ b/pkg/analyzer/lib/dart/element/type.dart
@@ -68,6 +68,10 @@
/// dart:core library.
bool get isDartCoreInt;
+ /// Returns `true` if this type represents the type 'Iterable' defined in the
+ /// dart:core library.
+ bool get isDartCoreIterable;
+
/// Returns `true` if this type represents the type 'List' defined in the
/// dart:core library.
bool get isDartCoreList;
@@ -104,6 +108,7 @@
bool get isDynamic;
/// Return `true` if this type represents the type 'Object'.
+ @Deprecated('Use isDartCoreObject')
bool get isObject;
/// Return `true` if this type represents the type 'void'.
diff --git a/pkg/analyzer/lib/src/context/builder.dart b/pkg/analyzer/lib/src/context/builder.dart
index 56a0059..7aec79d 100644
--- a/pkg/analyzer/lib/src/context/builder.dart
+++ b/pkg/analyzer/lib/src/context/builder.dart
@@ -5,7 +5,6 @@
import 'dart:collection';
import 'dart:core';
-import 'package:analyzer/dart/analysis/analysis_context.dart' as api;
import 'package:analyzer/dart/analysis/context_locator.dart' as api;
import 'package:analyzer/dart/analysis/declared_variables.dart';
import 'package:analyzer/file_system/file_system.dart';
@@ -15,7 +14,6 @@
import 'package:analyzer/src/context/context_root.dart';
import 'package:analyzer/src/context/packages.dart';
import 'package:analyzer/src/dart/analysis/byte_store.dart';
-import 'package:analyzer/src/dart/analysis/context_root.dart' as api;
import 'package:analyzer/src/dart/analysis/driver.dart'
show AnalysisDriver, AnalysisDriverScheduler;
import 'package:analyzer/src/dart/analysis/driver_based_analysis_context.dart'
diff --git a/pkg/analyzer/lib/src/context/package_config_json.dart b/pkg/analyzer/lib/src/context/package_config_json.dart
index c54dc18..afc2047 100644
--- a/pkg/analyzer/lib/src/context/package_config_json.dart
+++ b/pkg/analyzer/lib/src/context/package_config_json.dart
@@ -177,28 +177,28 @@
var name = _getRequiredField<String>(map, 'name');
var rootUriStr = _getRequiredField<String>(map, 'rootUri');
- rootUriStr = _ensureDirectoryUri(rootUriStr);
var rootUri = uri.resolve(rootUriStr);
+ rootUri = _ensureDirectoryUri(rootUri);
var packageUri = rootUri;
var packageUriStr = _getOptionalField<String>(map, 'packageUri');
if (packageUriStr != null) {
- packageUriStr = _ensureDirectoryUri(packageUriStr);
-
var packageUriRel = Uri.parse(packageUriStr);
if (packageUriRel.isAbsolute) {
throw FormatException(
"The value of the field 'packageUri' must be relative, "
- "actualy '$packageUriStr', for the package '$name'.",
+ "actually '$packageUriStr', for the package '$name'.",
content,
);
}
packageUri = rootUri.resolveUri(packageUriRel);
+ packageUri = _ensureDirectoryUri(packageUri);
+
if (!_isNestedUri(packageUri, rootUri)) {
throw FormatException(
"The resolved 'packageUri' must be inside the rootUri, "
- "actualy '$packageUri' is not in '$rootUri', "
+ "actually '$packageUri' is not in '$rootUri', "
"for the package '$name'.",
content,
);
@@ -252,11 +252,12 @@
}
}
- static String _ensureDirectoryUri(String uriStr) {
- if (uriStr.endsWith('/')) {
- return uriStr;
+ static Uri _ensureDirectoryUri(Uri uri) {
+ var path = uri.path;
+ if (path.endsWith('/')) {
+ return uri;
} else {
- return '$uriStr/';
+ return uri.replace(path: '$path/');
}
}
diff --git a/pkg/analyzer/lib/src/dart/analysis/library_context.dart b/pkg/analyzer/lib/src/dart/analysis/library_context.dart
index 0a1f5c6..0ad4a80 100644
--- a/pkg/analyzer/lib/src/dart/analysis/library_context.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/library_context.dart
@@ -155,6 +155,26 @@
unit,
),
);
+
+ // TODO(scheglov) remove after fixing linking issues
+ {
+ var existingLibraryReference =
+ elementFactory.rootReference[libraryFile.uriStr];
+ if (existingLibraryReference != null) {
+ var existingElement = existingLibraryReference.element;
+ if (existingElement != null) {
+ var existingSource = existingElement?.source;
+ throw StateError(
+ '[The library is already loaded]'
+ '[oldUri: ${existingSource.uri}]'
+ '[oldPath: ${existingSource.fullName}]'
+ '[newUri: ${libraryFile.uriStr}]'
+ '[newPath: ${libraryFile.path}]'
+ '[cycle: $cycle]',
+ );
+ }
+ }
+ }
}
inputLibraries.add(
diff --git a/pkg/analyzer/lib/src/dart/constant/evaluation.dart b/pkg/analyzer/lib/src/dart/constant/evaluation.dart
index 7d7607e..721ad3c 100644
--- a/pkg/analyzer/lib/src/dart/constant/evaluation.dart
+++ b/pkg/analyzer/lib/src/dart/constant/evaluation.dart
@@ -356,7 +356,7 @@
// manually insert a reference to the implicit superconstructor.
InterfaceType superclass =
(constant.returnType as InterfaceType).superclass;
- if (superclass != null && !superclass.isObject) {
+ if (superclass != null && !superclass.isDartCoreObject) {
ConstructorElement unnamedConstructor =
superclass.element.unnamedConstructor?.declaration;
if (unnamedConstructor != null) {
@@ -736,7 +736,7 @@
}
// Evaluate explicit or implicit call to super().
InterfaceType superclass = definingClass.superclass;
- if (superclass != null && !superclass.isObject) {
+ if (superclass != null && !superclass.isDartCoreObject) {
ConstructorElement superConstructor =
superclass.lookUpConstructor(superName, constructor.library);
if (superConstructor != null) {
diff --git a/pkg/analyzer/lib/src/dart/element/display_string_builder.dart b/pkg/analyzer/lib/src/dart/element/display_string_builder.dart
index 5a1b31b..dcdf36e 100644
--- a/pkg/analyzer/lib/src/dart/element/display_string_builder.dart
+++ b/pkg/analyzer/lib/src/dart/element/display_string_builder.dart
@@ -65,7 +65,7 @@
_write(element.displayName);
}
- _writeFormalParameters(element.parameters);
+ _writeFormalParameters(element.parameters, forElement: true);
}
void writeDynamicType() {
@@ -85,7 +85,7 @@
if (element.kind != ElementKind.GETTER) {
_writeTypeParameters(element.typeParameters);
- _writeFormalParameters(element.parameters);
+ _writeFormalParameters(element.parameters, forElement: true);
}
}
@@ -103,14 +103,14 @@
void writeFormalParameter(ParameterElement element) {
if (element.isRequiredPositional) {
- _writeWithoutDelimiters(element);
+ _writeWithoutDelimiters(element, forElement: true);
} else if (element.isOptionalPositional) {
_write('[');
- _writeWithoutDelimiters(element);
+ _writeWithoutDelimiters(element, forElement: true);
_write(']');
} else if (element.isNamed) {
_write('{');
- _writeWithoutDelimiters(element);
+ _writeWithoutDelimiters(element, forElement: true);
_write('}');
}
}
@@ -121,7 +121,7 @@
_writeType(type.returnType);
_write(' Function');
_writeTypeParameters(type.typeFormals);
- _writeFormalParameters(type.parameters, withNamesOfPositional: false);
+ _writeFormalParameters(type.parameters, forElement: false);
_writeNullability(type.nullabilitySuffix);
}
@@ -129,7 +129,7 @@
_writeType(element.returnType);
_write(' Function');
_writeTypeParameters(element.typeParameters);
- _writeFormalParameters(element.parameters);
+ _writeFormalParameters(element.parameters, forElement: true);
}
void writeGenericTypeAliasElement(GenericTypeAliasElementImpl element) {
@@ -191,7 +191,7 @@
}
void writeUnknownInferredType() {
- _write('?');
+ _write('_');
}
void writeVariableElement(VariableElement element) {
@@ -210,7 +210,7 @@
void _writeFormalParameters(
List<ParameterElement> parameters, {
- bool withNamesOfPositional = true,
+ @required bool forElement,
}) {
_write('(');
@@ -239,10 +239,7 @@
} else if (parameter.isNamed) {
openGroup(_WriteFormalParameterKind.named, '{', '}');
}
- _writeWithoutDelimiters(
- parameter,
- withNamesOfPositional: withNamesOfPositional,
- );
+ _writeWithoutDelimiters(parameter, forElement: forElement);
}
_write(lastClose);
@@ -334,7 +331,7 @@
void _writeWithoutDelimiters(
ParameterElement element, {
- bool withNamesOfPositional = true,
+ @required bool forElement,
}) {
if (element.isRequiredNamed) {
_write('required ');
@@ -342,10 +339,15 @@
_writeType(element.type);
- if (element.isNamed || withNamesOfPositional) {
+ if (forElement || element.isNamed) {
_write(' ');
_write(element.displayName);
}
+
+ if (forElement && element.defaultValueCode != null) {
+ _write(' = ');
+ _write(element.defaultValueCode);
+ }
}
static FunctionType _uniqueTypeParameters(FunctionType type) {
diff --git a/pkg/analyzer/lib/src/dart/element/element.dart b/pkg/analyzer/lib/src/dart/element/element.dart
index 5234c13..834bb39 100644
--- a/pkg/analyzer/lib/src/dart/element/element.dart
+++ b/pkg/analyzer/lib/src/dart/element/element.dart
@@ -777,7 +777,7 @@
if (hasReferenceToSuper) {
return false;
}
- if (!supertype.isObject) {
+ if (!supertype.isDartCoreObject) {
return false;
}
for (ConstructorElement constructor in constructors) {
diff --git a/pkg/analyzer/lib/src/dart/element/extensions.dart b/pkg/analyzer/lib/src/dart/element/extensions.dart
new file mode 100644
index 0000000..05bab210
--- /dev/null
+++ b/pkg/analyzer/lib/src/dart/element/extensions.dart
@@ -0,0 +1,20 @@
+// Copyright (c) 2020, 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 'package:analyzer/dart/element/element.dart';
+import 'package:analyzer/dart/element/type.dart';
+import 'package:analyzer/src/dart/element/element.dart';
+import 'package:analyzer/src/generated/utilities_dart.dart';
+
+extension ParameterElementExtensions on ParameterElement {
+ /// Return [ParameterElement] with the specified properties replaced.
+ ParameterElement copyWith({DartType type, ParameterKind kind}) {
+ return ParameterElementImpl.synthetic(
+ name,
+ type ?? this.type,
+ // ignore: deprecated_member_use_from_same_package
+ kind ?? this.parameterKind,
+ )..isExplicitlyCovariant = isCovariant;
+ }
+}
diff --git a/pkg/analyzer/lib/src/dart/element/generic_inferrer.dart b/pkg/analyzer/lib/src/dart/element/generic_inferrer.dart
index 076a6f4..a74cca0 100644
--- a/pkg/analyzer/lib/src/dart/element/generic_inferrer.dart
+++ b/pkg/analyzer/lib/src/dart/element/generic_inferrer.dart
@@ -39,7 +39,7 @@
return _isLegacyTop((t as InterfaceType).typeArguments[0],
orTrueTop: orTrueTop);
}
- if (t.isObject && t.nullabilitySuffix == NullabilitySuffix.none) {
+ if (t.isDartCoreObject && t.nullabilitySuffix == NullabilitySuffix.none) {
return true;
}
return orTrueTop ? _isTop(t) : false;
@@ -50,7 +50,7 @@
return _isTop((t as InterfaceType).typeArguments[0]);
}
return t.isDynamic ||
- (t.isObject && t.nullabilitySuffix != NullabilitySuffix.none) ||
+ (t.isDartCoreObject && t.nullabilitySuffix != NullabilitySuffix.none) ||
t.isVoid ||
identical(t, UnknownInferredType.instance);
}
@@ -153,9 +153,9 @@
///
/// If [downwardsInferPhase] is set, we are in the first pass of inference,
/// pushing context types down. At that point we are allowed to push down
- /// `?` to precisely represent an unknown type. If [downwardsInferPhase] is
+ /// `_` to precisely represent an unknown type. If [downwardsInferPhase] is
/// false, we are on our final inference pass, have all available information
- /// including argument types, and must not conclude `?` for any type formal.
+ /// including argument types, and must not conclude `_` for any type formal.
List<DartType> infer(List<TypeParameterElement> typeFormals,
{bool considerExtendsClause = true,
ErrorReporter errorReporter,
@@ -164,7 +164,7 @@
bool downwardsInferPhase = false}) {
// Initialize the inferred type array.
//
- // In the downwards phase, they all start as `?` to offer reasonable
+ // In the downwards phase, they all start as `_` to offer reasonable
// degradation for f-bounded type parameters.
var inferredTypes =
List<DartType>.filled(typeFormals.length, UnknownInferredType.instance);
diff --git a/pkg/analyzer/lib/src/dart/element/greatest_lower_bound.dart b/pkg/analyzer/lib/src/dart/element/greatest_lower_bound.dart
index 1085211..96dab6b 100644
--- a/pkg/analyzer/lib/src/dart/element/greatest_lower_bound.dart
+++ b/pkg/analyzer/lib/src/dart/element/greatest_lower_bound.dart
@@ -5,7 +5,7 @@
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/nullability_suffix.dart';
import 'package:analyzer/dart/element/type.dart';
-import 'package:analyzer/src/dart/element/element.dart';
+import 'package:analyzer/src/dart/element/extensions.dart';
import 'package:analyzer/src/dart/element/type.dart';
import 'package:analyzer/src/dart/element/type_provider.dart';
import 'package:analyzer/src/dart/element/type_schema.dart';
@@ -302,10 +302,12 @@
fIndex++;
gIndex++;
parameters.add(
- ParameterElementImpl.synthetic(
- fParameter.name,
- _typeSystem.getLeastUpperBound(fParameter.type, gParameter.type),
- fParameter.isOptional || gParameter.isOptional
+ fParameter.copyWith(
+ type: _typeSystem.getLeastUpperBound(
+ fParameter.type,
+ gParameter.type,
+ ),
+ kind: fParameter.isOptional || gParameter.isOptional
? ParameterKind.POSITIONAL
: ParameterKind.REQUIRED,
),
@@ -320,11 +322,12 @@
fIndex++;
gIndex++;
parameters.add(
- ParameterElementImpl.synthetic(
- fParameter.name,
- _typeSystem.getLeastUpperBound(
- fParameter.type, gParameter.type),
- fParameter.isRequiredNamed && gParameter.isRequiredNamed
+ fParameter.copyWith(
+ type: _typeSystem.getLeastUpperBound(
+ fParameter.type,
+ gParameter.type,
+ ),
+ kind: fParameter.isRequiredNamed && gParameter.isRequiredNamed
? ParameterKind.NAMED_REQUIRED
: ParameterKind.NAMED,
),
@@ -332,21 +335,13 @@
} else if (compareNames < 0) {
fIndex++;
parameters.add(
- ParameterElementImpl.synthetic(
- fParameter.name,
- fParameter.type,
- ParameterKind.NAMED,
- ),
+ fParameter.copyWith(kind: ParameterKind.NAMED),
);
} else {
assert(compareNames > 0);
gIndex++;
parameters.add(
- ParameterElementImpl.synthetic(
- gParameter.name,
- gParameter.type,
- ParameterKind.NAMED,
- ),
+ gParameter.copyWith(kind: ParameterKind.NAMED),
);
}
} else {
@@ -359,20 +354,12 @@
var fParameter = fParameters[fIndex++];
if (fParameter.isPositional) {
parameters.add(
- ParameterElementImpl.synthetic(
- fParameter.name,
- fParameter.type,
- ParameterKind.POSITIONAL,
- ),
+ fParameter.copyWith(kind: ParameterKind.POSITIONAL),
);
} else {
assert(fParameter.isNamed);
parameters.add(
- ParameterElementImpl.synthetic(
- fParameter.name,
- fParameter.type,
- ParameterKind.NAMED,
- ),
+ fParameter.copyWith(kind: ParameterKind.NAMED),
);
}
}
@@ -381,20 +368,12 @@
var gParameter = gParameters[gIndex++];
if (gParameter.isPositional) {
parameters.add(
- ParameterElementImpl.synthetic(
- gParameter.name,
- gParameter.type,
- ParameterKind.POSITIONAL,
- ),
+ gParameter.copyWith(kind: ParameterKind.POSITIONAL),
);
} else {
assert(gParameter.isNamed);
parameters.add(
- ParameterElementImpl.synthetic(
- gParameter.name,
- gParameter.type,
- ParameterKind.NAMED,
- ),
+ gParameter.copyWith(kind: ParameterKind.NAMED),
);
}
}
diff --git a/pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart b/pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart
index 5535d6c..5ffaddc 100644
--- a/pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart
+++ b/pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart
@@ -4,7 +4,6 @@
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/type.dart';
-import 'package:analyzer/dart/element/type_system.dart';
import 'package:analyzer/src/dart/element/element.dart';
import 'package:analyzer/src/dart/element/member.dart';
import 'package:analyzer/src/dart/element/type_algebra.dart';
@@ -55,8 +54,6 @@
/// self-referencing cycles.
final Set<ClassElement> _processingClasses = <ClassElement>{};
- InheritanceManager3([@deprecated TypeSystem typeSystem]);
-
/// Return the result of [getInherited2] with [type] substitution.
ExecutableElement getInherited(InterfaceType type, Name name) {
var rawElement = getInherited2(type.element, name);
diff --git a/pkg/analyzer/lib/src/dart/element/least_upper_bound.dart b/pkg/analyzer/lib/src/dart/element/least_upper_bound.dart
index 21fe0b0..173c8c4 100644
--- a/pkg/analyzer/lib/src/dart/element/least_upper_bound.dart
+++ b/pkg/analyzer/lib/src/dart/element/least_upper_bound.dart
@@ -6,6 +6,7 @@
import 'package:analyzer/dart/element/nullability_suffix.dart';
import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer/src/dart/element/element.dart';
+import 'package:analyzer/src/dart/element/extensions.dart';
import 'package:analyzer/src/dart/element/type.dart';
import 'package:analyzer/src/dart/element/type_algebra.dart';
import 'package:analyzer/src/dart/element/type_schema.dart';
@@ -722,10 +723,8 @@
fIndex++;
gIndex++;
parameters.add(
- ParameterElementImpl.synthetic(
- fParameter.name,
- _parameterType(fParameter, gParameter),
- ParameterKind.REQUIRED,
+ fParameter.copyWith(
+ type: _parameterType(fParameter, gParameter),
),
);
} else {
@@ -736,10 +735,8 @@
fIndex++;
gIndex++;
parameters.add(
- ParameterElementImpl.synthetic(
- fParameter.name,
- _parameterType(fParameter, gParameter),
- ParameterKind.POSITIONAL,
+ fParameter.copyWith(
+ type: _parameterType(fParameter, gParameter),
),
);
} else {
@@ -752,10 +749,9 @@
fIndex++;
gIndex++;
parameters.add(
- ParameterElementImpl.synthetic(
- fParameter.name,
- _parameterType(fParameter, gParameter),
- fParameter.isRequiredNamed || gParameter.isRequiredNamed
+ fParameter.copyWith(
+ type: _parameterType(fParameter, gParameter),
+ kind: fParameter.isRequiredNamed || gParameter.isRequiredNamed
? ParameterKind.NAMED_REQUIRED
: ParameterKind.NAMED,
),
diff --git a/pkg/analyzer/lib/src/dart/element/normalize.dart b/pkg/analyzer/lib/src/dart/element/normalize.dart
index dc95179..97086d0 100644
--- a/pkg/analyzer/lib/src/dart/element/normalize.dart
+++ b/pkg/analyzer/lib/src/dart/element/normalize.dart
@@ -6,6 +6,7 @@
import 'package:analyzer/dart/element/nullability_suffix.dart';
import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer/src/dart/element/element.dart';
+import 'package:analyzer/src/dart/element/extensions.dart';
import 'package:analyzer/src/dart/element/type.dart';
import 'package:analyzer/src/dart/element/type_algebra.dart';
import 'package:analyzer/src/dart/element/type_provider.dart';
@@ -45,12 +46,9 @@
return FunctionTypeImpl(
typeFormals: functionType.typeFormals,
parameters: functionType.parameters.map((e) {
- return ParameterElementImpl.synthetic(
- e.name,
- _normalize(e.type),
- // ignore: deprecated_member_use_from_same_package
- e.parameterKind,
- )..isExplicitlyCovariant = e.isCovariant;
+ return e.copyWith(
+ type: _normalize(e.type),
+ );
}).toList(),
returnType: _normalize(functionType.returnType),
nullabilitySuffix: NullabilitySuffix.none,
diff --git a/pkg/analyzer/lib/src/dart/element/replacement_visitor.dart b/pkg/analyzer/lib/src/dart/element/replacement_visitor.dart
index 83c3c78..27566d1 100644
--- a/pkg/analyzer/lib/src/dart/element/replacement_visitor.dart
+++ b/pkg/analyzer/lib/src/dart/element/replacement_visitor.dart
@@ -6,6 +6,7 @@
import 'package:analyzer/dart/element/nullability_suffix.dart';
import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer/src/dart/element/element.dart';
+import 'package:analyzer/src/dart/element/extensions.dart';
import 'package:analyzer/src/dart/element/type.dart';
import 'package:analyzer/src/dart/element/type_algebra.dart';
import 'package:analyzer/src/dart/element/type_schema.dart';
@@ -183,10 +184,9 @@
if (newType != null || newKind != null) {
newParameters ??= node.parameters.toList(growable: false);
- newParameters[i] = ParameterElementImpl.synthetic(
- parameter.name,
- newType ?? type,
- newKind ?? kind,
+ newParameters[i] = parameter.copyWith(
+ type: newType,
+ kind: newKind,
);
}
}
diff --git a/pkg/analyzer/lib/src/dart/element/subtype.dart b/pkg/analyzer/lib/src/dart/element/subtype.dart
index 77eef3a..f38f1cd 100644
--- a/pkg/analyzer/lib/src/dart/element/subtype.dart
+++ b/pkg/analyzer/lib/src/dart/element/subtype.dart
@@ -6,6 +6,7 @@
import 'package:analyzer/dart/element/nullability_suffix.dart';
import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer/src/dart/element/element.dart';
+import 'package:analyzer/src/dart/element/extensions.dart';
import 'package:analyzer/src/dart/element/type.dart';
import 'package:analyzer/src/dart/element/type_algebra.dart';
import 'package:analyzer/src/dart/element/type_provider.dart';
@@ -37,7 +38,7 @@
return true;
}
- // `?` is treated as a top and a bottom type during inference.
+ // `_` is treated as a top and a bottom type during inference.
if (identical(_T0, UnknownInferredType.instance) ||
identical(_T1, UnknownInferredType.instance)) {
return true;
@@ -445,12 +446,12 @@
// Note: we should never reach `_isInterfaceSubtypeOf` with `i2 == Object`,
// because top types are eliminated before `isSubtypeOf` calls this.
// TODO(scheglov) Replace with assert().
- if (identical(subType, superType) || superType.isObject) {
+ if (identical(subType, superType) || superType.isDartCoreObject) {
return true;
}
// Object cannot subtype anything but itself (handled above).
- if (subType.isObject) {
+ if (subType.isDartCoreObject) {
return false;
}
@@ -485,10 +486,8 @@
typeFormals: type.typeFormals,
parameters: type.parameters.map((e) {
if (e.isNamed) {
- return ParameterElementImpl.synthetic(
- e.name,
- e.type,
- ParameterKind.NAMED_REQUIRED,
+ return e.copyWith(
+ kind: ParameterKind.NAMED_REQUIRED,
);
} else {
return e;
diff --git a/pkg/analyzer/lib/src/dart/element/top_merge.dart b/pkg/analyzer/lib/src/dart/element/top_merge.dart
index 974ad2e..e89ffb1 100644
--- a/pkg/analyzer/lib/src/dart/element/top_merge.dart
+++ b/pkg/analyzer/lib/src/dart/element/top_merge.dart
@@ -6,6 +6,7 @@
import 'package:analyzer/dart/element/nullability_suffix.dart';
import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer/src/dart/element/element.dart';
+import 'package:analyzer/src/dart/element/extensions.dart';
import 'package:analyzer/src/dart/element/type.dart';
import 'package:analyzer/src/dart/element/type_algebra.dart';
import 'package:analyzer/src/generated/type_system.dart';
@@ -255,11 +256,10 @@
R_type = mergeTypes(T_parameter.type, S_parameter.type);
}
- R_parameters[i] = ParameterElementImpl.synthetic(
- T_parameter.name,
- R_type,
- R_kind,
- )..isExplicitlyCovariant = R_isCovariant;
+ R_parameters[i] = T_parameter.copyWith(
+ type: R_type,
+ kind: R_kind,
+ );
}
return FunctionTypeImpl(
diff --git a/pkg/analyzer/lib/src/dart/element/type.dart b/pkg/analyzer/lib/src/dart/element/type.dart
index 9c209a2..04d8359 100644
--- a/pkg/analyzer/lib/src/dart/element/type.dart
+++ b/pkg/analyzer/lib/src/dart/element/type.dart
@@ -13,6 +13,7 @@
import 'package:analyzer/src/dart/analysis/session.dart';
import 'package:analyzer/src/dart/element/display_string_builder.dart';
import 'package:analyzer/src/dart/element/element.dart';
+import 'package:analyzer/src/dart/element/extensions.dart';
import 'package:analyzer/src/dart/element/inheritance_manager3.dart';
import 'package:analyzer/src/dart/element/member.dart';
import 'package:analyzer/src/dart/element/type_algebra.dart';
@@ -293,15 +294,9 @@
var substitution = Substitution.fromPairs(typeFormals, argumentTypes);
ParameterElement transformParameter(ParameterElement p) {
- var type = p.type;
- var newType = substitution.substituteType(type);
- if (identical(newType, type)) return p;
- return ParameterElementImpl.synthetic(
- p.name,
- newType,
- // ignore: deprecated_member_use_from_same_package
- p.parameterKind)
- ..isExplicitlyCovariant = p.isCovariant;
+ return p.copyWith(
+ type: substitution.substituteType(p.type),
+ );
}
return FunctionTypeImpl(
@@ -319,14 +314,11 @@
.replaceTopAndBottom(typeProvider, isCovariant: isCovariant);
ParameterElement transformParameter(ParameterElement p) {
TypeImpl type = p.type;
- var newType =
- type.replaceTopAndBottom(typeProvider, isCovariant: !isCovariant);
- if (identical(newType, type)) return p;
- return ParameterElementImpl.synthetic(
- p.name,
- newType,
- // ignore: deprecated_member_use_from_same_package
- p.parameterKind);
+ var newType = type.replaceTopAndBottom(
+ typeProvider,
+ isCovariant: !isCovariant,
+ );
+ return p.copyWith(type: newType);
}
var parameters = _transformOrShare(this.parameters, transformParameter);
@@ -416,7 +408,7 @@
} else if (identical(t, other) ||
other.isDynamic ||
other.isDartCoreFunction ||
- other.isObject) {
+ other.isDartCoreObject) {
return true;
} else if (other is! FunctionType) {
return false;
@@ -752,10 +744,6 @@
@override
int get hashCode {
- ClassElement element = this.element;
- if (element == null) {
- return 0;
- }
return element.hashCode;
}
@@ -766,130 +754,80 @@
@override
bool get isDartAsyncFuture {
- ClassElement element = this.element;
- if (element == null) {
- return false;
- }
return element.name == "Future" && element.library.isDartAsync;
}
@override
bool get isDartAsyncFutureOr {
- ClassElement element = this.element;
- if (element == null) {
- return false;
- }
return element.name == "FutureOr" && element.library.isDartAsync;
}
@override
bool get isDartCoreBool {
- ClassElement element = this.element;
- if (element == null) {
- return false;
- }
return element.name == "bool" && element.library.isDartCore;
}
@override
bool get isDartCoreDouble {
- ClassElement element = this.element;
- if (element == null) {
- return false;
- }
return element.name == "double" && element.library.isDartCore;
}
@override
bool get isDartCoreFunction {
- ClassElement element = this.element;
- if (element == null) {
- return false;
- }
return element.name == "Function" && element.library.isDartCore;
}
@override
bool get isDartCoreInt {
- ClassElement element = this.element;
- if (element == null) {
- return false;
- }
return element.name == "int" && element.library.isDartCore;
}
@override
+ bool get isDartCoreIterable {
+ return element.name == "Iterable" && element.library.isDartCore;
+ }
+
+ @override
bool get isDartCoreList {
- ClassElement element = this.element;
- if (element == null) {
- return false;
- }
return element.name == "List" && element.library.isDartCore;
}
@override
bool get isDartCoreMap {
- ClassElement element = this.element;
- if (element == null) {
- return false;
- }
return element.name == "Map" && element.library.isDartCore;
}
@override
bool get isDartCoreNull {
- ClassElement element = this.element;
- if (element == null) {
- return false;
- }
return element.name == "Null" && element.library.isDartCore;
}
@override
bool get isDartCoreNum {
- ClassElement element = this.element;
- if (element == null) {
- return false;
- }
return element.name == "num" && element.library.isDartCore;
}
@override
bool get isDartCoreObject {
- ClassElement element = this.element;
- if (element == null) {
- return false;
- }
return element.name == "Object" && element.library.isDartCore;
}
@override
bool get isDartCoreSet {
- ClassElement element = this.element;
- if (element == null) {
- return false;
- }
return element.name == "Set" && element.library.isDartCore;
}
@override
bool get isDartCoreString {
- ClassElement element = this.element;
- if (element == null) {
- return false;
- }
return element.name == "String" && element.library.isDartCore;
}
@override
bool get isDartCoreSymbol {
- ClassElement element = this.element;
- if (element == null) {
- return false;
- }
return element.name == "Symbol" && element.library.isDartCore;
}
+ @Deprecated('Use isDartCoreObject')
@override
bool get isObject => element.supertype == null && !element.isMixin;
@@ -1871,6 +1809,9 @@
bool get isDartCoreInt => false;
@override
+ bool get isDartCoreIterable => false;
+
+ @override
bool get isDartCoreList => false;
@override
@@ -1897,6 +1838,7 @@
@override
bool get isDynamic => false;
+ @Deprecated('Use isDartCoreObject')
@override
bool get isObject => false;
diff --git a/pkg/analyzer/lib/src/dart/element/type_algebra.dart b/pkg/analyzer/lib/src/dart/element/type_algebra.dart
index 4197381..648d60b 100644
--- a/pkg/analyzer/lib/src/dart/element/type_algebra.dart
+++ b/pkg/analyzer/lib/src/dart/element/type_algebra.dart
@@ -6,6 +6,7 @@
import 'package:analyzer/dart/element/nullability_suffix.dart';
import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer/src/dart/element/element.dart';
+import 'package:analyzer/src/dart/element/extensions.dart';
import 'package:analyzer/src/dart/element/type.dart';
import 'package:analyzer/src/dart/element/type_schema.dart';
import 'package:analyzer/src/dart/element/type_visitor.dart';
@@ -71,15 +72,8 @@
var substitution = Substitution.fromPairs(type.typeFormals, typeArguments);
ParameterElement transformParameter(ParameterElement p) {
- var type = p.type;
- var newType = substitution.substituteType(type);
- if (identical(newType, type)) return p;
- return ParameterElementImpl.synthetic(
- p.name,
- newType,
- // ignore: deprecated_member_use_from_same_package
- p.parameterKind,
- )..isExplicitlyCovariant = p.isCovariant;
+ var type = substitution.substituteType(p.type);
+ return p.copyWith(type: type);
}
return FunctionTypeImpl(
@@ -119,12 +113,8 @@
return FunctionTypeImpl(
typeFormals: freshTypeParameters,
parameters: type.parameters.map((parameter) {
- return ParameterElementImpl.synthetic(
- parameter.name,
- substitute(parameter.type),
- // ignore: deprecated_member_use_from_same_package
- parameter.parameterKind,
- )..isExplicitlyCovariant = parameter.isCovariant;
+ var type = substitute(parameter.type);
+ return parameter.copyWith(type: type);
}).toList(),
returnType: substitute(type.returnType),
nullabilitySuffix: type.nullabilitySuffix,
@@ -426,7 +416,7 @@
var parameters = type.parameters.map((parameter) {
var type = inner.visit(parameter.type);
- return _parameterElement(parameter, type);
+ return parameter.copyWith(type: type);
}).toList();
inner.invertVariance();
@@ -473,7 +463,7 @@
var parameters = type.parameters.map((parameter) {
var type = inner.visit(parameter.type);
- return _parameterElement(parameter, type);
+ return parameter.copyWith(type: type);
}).toList();
inner.invertVariance();
@@ -574,20 +564,6 @@
}
return NullabilitySuffix.none;
}
-
- static ParameterElementImpl _parameterElement(
- ParameterElement parameter,
- DartType type,
- ) {
- var result = ParameterElementImpl.synthetic(
- parameter.name,
- type,
- // ignore: deprecated_member_use_from_same_package
- parameter.parameterKind,
- );
- result.isExplicitlyCovariant = parameter.isCovariant;
- return result;
- }
}
class _UpperLowerBoundsSubstitution extends Substitution {
diff --git a/pkg/analyzer/lib/src/dart/element/type_provider.dart b/pkg/analyzer/lib/src/dart/element/type_provider.dart
index b533955..495f5ca 100644
--- a/pkg/analyzer/lib/src/dart/element/type_provider.dart
+++ b/pkg/analyzer/lib/src/dart/element/type_provider.dart
@@ -346,7 +346,9 @@
}
@override
- DartType get neverType => NeverTypeImpl.instance;
+ DartType get neverType => isNonNullableByDefault
+ ? NeverTypeImpl.instance
+ : NeverTypeImpl.instanceLegacy;
@override
Set<ClassElement> get nonSubtypableClasses => _nonSubtypableClasses ??= {
diff --git a/pkg/analyzer/lib/src/dart/element/type_schema.dart b/pkg/analyzer/lib/src/dart/element/type_schema.dart
index 05469d8..b94870c 100644
--- a/pkg/analyzer/lib/src/dart/element/type_schema.dart
+++ b/pkg/analyzer/lib/src/dart/element/type_schema.dart
@@ -3,24 +3,22 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analyzer/dart/ast/token.dart' show Keyword;
-import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/nullability_suffix.dart';
import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer/dart/element/type_provider.dart';
import 'package:analyzer/src/dart/element/display_string_builder.dart';
-import 'package:analyzer/src/dart/element/element.dart';
import 'package:analyzer/src/dart/element/type.dart';
/// A type that is being inferred but is not currently known.
///
/// This type will only appear in a downward inference context for type
-/// parameters that we do not know yet. Notationally it is written `?`, for
-/// example `List<?>`. This is distinct from `List<dynamic>`. These types will
+/// parameters that we do not know yet. Notationally it is written `_`, for
+/// example `List<_>`. This is distinct from `List<dynamic>`. These types will
/// never appear in the final resolved AST.
class UnknownInferredType extends TypeImpl {
static final UnknownInferredType instance = UnknownInferredType._();
- UnknownInferredType._() : super(UnknownInferredTypeElement.instance);
+ UnknownInferredType._() : super(null);
@override
int get hashCode => 1;
@@ -51,7 +49,7 @@
// types, or types produced by mixin inference or instantiate-to-bounds, and
// the unknown type can't occur in any of those cases.
assert(
- false, 'Attempted to check super-boundedness of a type including "?"');
+ false, 'Attempted to check super-boundedness of a type including "_"');
// But just in case it does, behave similar to `dynamic`.
if (isCovariant) {
return typeProvider.nullType;
@@ -75,10 +73,10 @@
@override
TypeImpl withNullability(NullabilitySuffix nullabilitySuffix) => this;
- /// Given a [type] T, return true if it does not have an unknown type `?`.
+ /// Given a [type] T, return true if it does not have an unknown type `_`.
static bool isKnown(DartType type) => !isUnknown(type);
- /// Given a [type] T, return true if it has an unknown type `?`.
+ /// Given a [type] T, return true if it has an unknown type `_`.
static bool isUnknown(DartType type) {
if (identical(type, UnknownInferredType.instance)) {
return true;
@@ -93,23 +91,3 @@
return false;
}
}
-
-/// The synthetic element for [UnknownInferredType].
-class UnknownInferredTypeElement extends ElementImpl
- implements TypeDefiningElement {
- static final UnknownInferredTypeElement instance =
- UnknownInferredTypeElement._();
-
- UnknownInferredTypeElement._() : super(Keyword.DYNAMIC.lexeme, -1) {
- setModifier(Modifier.SYNTHETIC, true);
- }
-
- @override
- ElementKind get kind => ElementKind.DYNAMIC;
-
- @override
- UnknownInferredType get type => UnknownInferredType.instance;
-
- @override
- T accept<T>(ElementVisitor visitor) => null;
-}
diff --git a/pkg/analyzer/lib/src/dart/element/type_schema_elimination.dart b/pkg/analyzer/lib/src/dart/element/type_schema_elimination.dart
index 3fff1c1..9fd1240 100644
--- a/pkg/analyzer/lib/src/dart/element/type_schema_elimination.dart
+++ b/pkg/analyzer/lib/src/dart/element/type_schema_elimination.dart
@@ -9,8 +9,8 @@
/// Visitor that computes least and greatest closures of a type schema.
///
-/// Each visitor method returns `null` if there are no `?`s contained in the
-/// type, otherwise it returns the result of substituting `?` with [_bottomType]
+/// Each visitor method returns `null` if there are no `_`s contained in the
+/// type, otherwise it returns the result of substituting `_` with [_bottomType]
/// or [_topType], as appropriate.
class TypeSchemaEliminationVisitor extends ReplacementVisitor {
final DartType _topType;
@@ -35,7 +35,7 @@
}
/// Runs an instance of the visitor on the given [schema] and returns the
- /// resulting type. If the schema contains no instances of `?`, the original
+ /// resulting type. If the schema contains no instances of `_`, the original
/// schema object is returned to avoid unnecessary allocation.
static DartType run({
@required DartType topType,
diff --git a/pkg/analyzer/lib/src/dart/resolver/binary_expression_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/binary_expression_resolver.dart
index c0c8df6..9bb990e 100644
--- a/pkg/analyzer/lib/src/dart/resolver/binary_expression_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/binary_expression_resolver.dart
@@ -264,6 +264,8 @@
type?.resolveToBound(_typeProvider.objectType);
void _resolveUnsupportedOperator(BinaryExpressionImpl node) {
+ node.leftOperand.accept(_resolver);
+ node.rightOperand.accept(_resolver);
_inferenceHelper.recordStaticType(node, DynamicTypeImpl.instance);
}
diff --git a/pkg/analyzer/lib/src/dart/resolver/body_inference_context.dart b/pkg/analyzer/lib/src/dart/resolver/body_inference_context.dart
new file mode 100644
index 0000000..2709a4d
--- /dev/null
+++ b/pkg/analyzer/lib/src/dart/resolver/body_inference_context.dart
@@ -0,0 +1,197 @@
+// Copyright (c) 2020, 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 'package:analyzer/dart/ast/ast.dart';
+import 'package:analyzer/dart/element/element.dart';
+import 'package:analyzer/dart/element/type.dart';
+import 'package:analyzer/dart/element/type_provider.dart';
+import 'package:analyzer/src/dart/element/type.dart';
+import 'package:analyzer/src/generated/resolver.dart';
+import 'package:analyzer/src/generated/type_system.dart';
+import 'package:meta/meta.dart';
+
+class BodyInferenceContext {
+ static const _key = 'BodyInferenceContext';
+
+ final TypeSystemImpl _typeSystem;
+ final bool _isAsynchronous;
+ final bool _isGenerator;
+
+ /// The context type, computed from the imposed return type schema.
+ /// Might be `null` if an empty typing context.
+ final DartType contextType;
+
+ /// Types of all `return` or `yield` statements in the body.
+ final List<DartType> _returnTypes = [];
+
+ factory BodyInferenceContext({
+ @required TypeSystemImpl typeSystem,
+ @required FunctionBody node,
+ @required DartType imposedType,
+ }) {
+ var contextType = _contextTypeForImposed(typeSystem, node, imposedType);
+
+ var bodyContext = BodyInferenceContext._(
+ typeSystem: typeSystem,
+ isAsynchronous: node.isAsynchronous,
+ isGenerator: node.isGenerator,
+ contextType: contextType,
+ );
+ node.setProperty(_key, bodyContext);
+
+ return bodyContext;
+ }
+
+ BodyInferenceContext._({
+ @required TypeSystemImpl typeSystem,
+ @required bool isAsynchronous,
+ @required bool isGenerator,
+ @required this.contextType,
+ }) : _typeSystem = typeSystem,
+ _isAsynchronous = isAsynchronous,
+ _isGenerator = isGenerator;
+
+ TypeProvider get _typeProvider => _typeSystem.typeProvider;
+
+ void addReturnExpression(Expression expression) {
+ if (expression == null) {
+ _returnTypes.add(_typeProvider.nullType);
+ } else {
+ var type = expression.staticType;
+ if (_isAsynchronous) {
+ type = _typeSystem.flatten(type);
+ }
+ _returnTypes.add(type);
+ }
+ }
+
+ void addYield(YieldStatement node) {
+ var expressionType = node.expression.staticType;
+
+ if (node.star == null) {
+ _returnTypes.add(expressionType);
+ return;
+ }
+
+ if (_isGenerator) {
+ var requiredClass = _isAsynchronous
+ ? _typeProvider.streamElement
+ : _typeProvider.iterableElement;
+ var type = _argumentOf(expressionType, requiredClass);
+ if (type != null) {
+ _returnTypes.add(type);
+ }
+ }
+ }
+
+ DartType computeInferredReturnType({
+ @required bool endOfBlockIsReachable,
+ }) {
+ var actualReturnedType = _computeActualReturnedType(
+ endOfBlockIsReachable: endOfBlockIsReachable,
+ );
+
+ DartType clampedReturnedType;
+ if (contextType == null ||
+ _typeSystem.isSubtypeOf2(actualReturnedType, contextType)) {
+ clampedReturnedType = actualReturnedType;
+ } else {
+ clampedReturnedType = contextType;
+ }
+
+ if (_isGenerator) {
+ if (_isAsynchronous) {
+ return _typeProvider.streamType2(clampedReturnedType);
+ } else {
+ return _typeProvider.iterableType2(clampedReturnedType);
+ }
+ } else {
+ if (_isAsynchronous) {
+ return _typeProvider.futureType2(
+ _typeSystem.flatten(clampedReturnedType),
+ );
+ } else {
+ return clampedReturnedType;
+ }
+ }
+ }
+
+ DartType _computeActualReturnedType({
+ @required bool endOfBlockIsReachable,
+ }) {
+ if (_isGenerator) {
+ if (_returnTypes.isEmpty) {
+ return DynamicTypeImpl.instance;
+ }
+ return _returnTypes.reduce(_typeSystem.getLeastUpperBound);
+ }
+
+ var initialType = endOfBlockIsReachable
+ ? _typeProvider.nullType
+ : _typeProvider.neverType;
+ return _returnTypes.fold(initialType, _typeSystem.getLeastUpperBound);
+ }
+
+ static BodyInferenceContext of(FunctionBody node) {
+ return node.getProperty(_key);
+ }
+
+ static DartType _argumentOf(DartType type, ClassElement element) {
+ if (type is InterfaceTypeImpl) {
+ var elementType = type.asInstanceOf(element);
+ if (elementType != null) {
+ return elementType.typeArguments[0];
+ }
+ }
+ return null;
+ }
+
+ static DartType _contextTypeForImposed(
+ TypeSystemImpl typeSystem,
+ FunctionBody node,
+ DartType imposedType,
+ ) {
+ if (imposedType == null) {
+ return null;
+ }
+
+ // If the function expression is neither `async` nor a generator, then the
+ // context type is the imposed return type.
+ if (!node.isAsynchronous && !node.isGenerator) {
+ return imposedType;
+ }
+
+ // If the function expression is declared `async*` and the imposed return
+ // type is of the form `Stream<S>` for some `S`, then the context type
+ // is `S`.
+ if (node.isGenerator && node.isAsynchronous) {
+ var elementType = _argumentOf(
+ imposedType,
+ typeSystem.typeProvider.streamElement,
+ );
+ if (elementType != null) {
+ return elementType;
+ }
+ }
+
+ // If the function expression is declared `sync*` and the imposed return
+ // type is of the form `Iterable<S>` for some `S`, then the context type
+ // is `S`.
+ if (node.isGenerator && node.isSynchronous) {
+ var elementType = _argumentOf(
+ imposedType,
+ typeSystem.typeProvider.iterableElement,
+ );
+ if (elementType != null) {
+ return elementType;
+ }
+ }
+
+ // Otherwise the context type is `FutureOr<flatten(T)>` where `T` is the
+ // imposed return type.
+ return typeSystem.typeProvider.futureOrType2(
+ typeSystem.flatten(imposedType),
+ );
+ }
+}
diff --git a/pkg/analyzer/lib/src/dart/resolver/function_expression_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/function_expression_resolver.dart
index a2c9566..8cea01f 100644
--- a/pkg/analyzer/lib/src/dart/resolver/function_expression_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/function_expression_resolver.dart
@@ -7,6 +7,7 @@
import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer/src/dart/element/element.dart';
import 'package:analyzer/src/dart/element/type.dart';
+import 'package:analyzer/src/dart/resolver/body_inference_context.dart';
import 'package:analyzer/src/dart/resolver/flow_analysis_visitor.dart';
import 'package:analyzer/src/dart/resolver/invocation_inference_helper.dart';
import 'package:analyzer/src/generated/migration.dart';
@@ -34,8 +35,6 @@
bool get _isNonNullableByDefault => _typeSystem.isNonNullableByDefault;
- TypeProvider get _typeProvider => _resolver.typeProvider;
-
TypeSystemImpl get _typeSystem => _resolver.typeSystem;
void resolve(FunctionExpression node) {
@@ -50,7 +49,6 @@
_promoteManager.enterFunctionBody(body);
}
- DartType returnType;
var contextType = InferenceContext.getContext(node);
if (contextType is FunctionType) {
contextType = _matchFunctionTypeParameters(
@@ -59,8 +57,7 @@
);
if (contextType is FunctionType) {
_inferFormalParameterList(node.parameters, contextType);
- returnType = _resolver.computeReturnOrYieldType(contextType.returnType);
- InferenceContext.setType(body, returnType);
+ InferenceContext.setType(body, contextType.returnType);
}
}
@@ -69,8 +66,9 @@
if (_flowAnalysis != null) {
if (_flowAnalysis.flow != null && !isFunctionDeclaration) {
+ var bodyContext = BodyInferenceContext.of(node.body);
_resolver.checkForBodyMayCompleteNormally(
- returnType: returnType,
+ returnType: bodyContext.contextType,
body: body,
errorNode: body,
);
@@ -82,29 +80,6 @@
}
}
- /// Given a function body and its return type, compute the return type of
- /// the entire function, taking into account whether the function body
- /// is `sync*`, `async` or `async*`.
- ///
- /// See also [FunctionBody.isAsynchronous], [FunctionBody.isGenerator].
- DartType _computeReturnTypeOfFunction(FunctionBody body, DartType type) {
- if (body.isGenerator) {
- InterfaceType generatedType = body.isAsynchronous
- ? _typeProvider.streamType2(type)
- : _typeProvider.iterableType2(type);
- return _nonNullable(generatedType);
- } else if (body.isAsynchronous) {
- if (type.isDartAsyncFutureOr) {
- type = (type as InterfaceType).typeArguments[0];
- }
- DartType futureType =
- _typeProvider.futureType2(_typeSystem.flatten(type));
- return _nonNullable(futureType);
- } else {
- return type;
- }
- }
-
/// Given a formal parameter list and a function type use the function type
/// to infer types for any of the parameters which have implicit (missing)
/// types. Returns true if inference has occurred.
@@ -163,11 +138,7 @@
/// (in strong mode) a local function declaration.
DartType _inferLocalFunctionReturnType(FunctionExpression node) {
FunctionBody body = node.body;
-
- DartType computedType =
- InferenceContext.getContext(body) ?? DynamicTypeImpl.instance;
-
- return _computeReturnTypeOfFunction(body, computedType);
+ return InferenceContext.getContext(body) ?? DynamicTypeImpl.instance;
}
/// Given a downward inference type [fnType], and the declared
@@ -213,17 +184,6 @@
}).toList());
}
- /// Return the non-nullable variant of the [type] if NNBD is enabled, otherwise
- /// return the type itself.
- ///
- /// TODO(scheglov) this is duplicate
- DartType _nonNullable(DartType type) {
- if (_isNonNullableByDefault) {
- return _typeSystem.promoteToNonNull(type);
- }
- return type;
- }
-
void _resolve2(FunctionExpression node) {
var functionElement = node.declaredElement as ExecutableElementImpl;
diff --git a/pkg/analyzer/lib/src/dart/resolver/typed_literal_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/typed_literal_resolver.dart
index b955c20..21f74ea 100644
--- a/pkg/analyzer/lib/src/dart/resolver/typed_literal_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/typed_literal_resolver.dart
@@ -469,10 +469,10 @@
}
// Note: according to the spec, the following computations should be based
// on the greatest closure of the context type (unless the context type is
- // `?`). In practice, we can just use the context type directly, because
+ // `_`). In practice, we can just use the context type directly, because
// the only way the greatest closure of the context type could possibly have
// a different subtype relationship to `Iterable<Object>` and
- // `Map<Object, Object>` is if the context type is `?`.
+ // `Map<Object, Object>` is if the context type is `_`.
bool contextProvidesAmbiguityResolutionClues =
contextType != null && contextType is! UnknownInferredType;
bool contextIsIterable = contextProvidesAmbiguityResolutionClues &&
diff --git a/pkg/analyzer/lib/src/dart/resolver/yield_statement_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/yield_statement_resolver.dart
index 9928a16..47b55df 100644
--- a/pkg/analyzer/lib/src/dart/resolver/yield_statement_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/yield_statement_resolver.dart
@@ -117,7 +117,7 @@
}
void _computeElementType(YieldStatement node) {
- var elementType = _resolver.inferenceContext.returnContext;
+ var elementType = _resolver.inferenceContext.bodyContext?.contextType;
if (elementType != null) {
var contextType = elementType;
if (node.star != null) {
@@ -138,23 +138,7 @@
_resolver.nullableDereferenceVerifier.expression(node.expression);
}
- DartType type = node.expression?.staticType;
- // If this just a yield, then we just pass on the element type
- if (node.star != null) {
- // If this is a yield*, then we unwrap the element return type
- // If it's synchronous, we expect Iterable<T>, otherwise Stream<T>
- if (type is InterfaceType) {
- ClassElement wrapperElement = _enclosingFunction.isSynchronous
- ? _typeProvider.iterableElement
- : _typeProvider.streamElement;
- var asInstanceType =
- (type as InterfaceTypeImpl).asInstanceOf(wrapperElement);
- if (asInstanceType != null) {
- type = asInstanceType.typeArguments[0];
- }
- }
- }
- _resolver.inferenceContext.addReturnOrYieldType(type);
+ _resolver.inferenceContext.bodyContext?.addYield(node);
_checkForYieldOfInvalidType(node, node.star != null);
_checkForUseOfVoidResult(node.expression);
diff --git a/pkg/analyzer/lib/src/error/best_practices_verifier.dart b/pkg/analyzer/lib/src/error/best_practices_verifier.dart
index 3e1289c..e89db2c 100644
--- a/pkg/analyzer/lib/src/error/best_practices_verifier.dart
+++ b/pkg/analyzer/lib/src/error/best_practices_verifier.dart
@@ -18,6 +18,7 @@
import 'package:analyzer/src/dart/element/element.dart';
import 'package:analyzer/src/dart/element/inheritance_manager3.dart';
import 'package:analyzer/src/dart/element/type.dart';
+import 'package:analyzer/src/dart/resolver/body_inference_context.dart';
import 'package:analyzer/src/dart/resolver/exit_detector.dart';
import 'package:analyzer/src/error/codes.dart';
import 'package:analyzer/src/generated/constant.dart';
@@ -658,7 +659,7 @@
return true;
}
// `is Object` or `is! Object`
- if (rhsType.isObject) {
+ if (rhsType.isDartCoreObject) {
var nullability = rhsType.nullabilitySuffix;
if (nullability == NullabilitySuffix.star ||
nullability == NullabilitySuffix.question) {
@@ -1107,57 +1108,39 @@
return;
}
- if (body is BlockFunctionBody) {
- // Prefer the type from the element model, in case we've inferred one.
- DartType returnType = element?.returnType ?? returnNode?.type;
-
- // Skip the check if we're missing a return type (e.g. erroneous code).
- // Generators are never required to have a return statement.
- if (returnType == null || body.isGenerator) {
- return;
- }
-
- var flattenedType =
- body.isAsynchronous ? _typeSystem.flatten(returnType) : returnType;
-
- // Function expressions without a return will have their return type set
- // to `Null` regardless of their context type. So we need to figure out
- // if a return type was expected from the original downwards context.
- //
- // This helps detect hint cases like `int Function() f = () {}`.
- // See https://github.com/dart-lang/sdk/issues/28233 for context.
- if (flattenedType.isDartCoreNull && functionNode is FunctionExpression) {
- var contextType = InferenceContext.getContext(functionNode);
- if (contextType is FunctionType) {
- returnType = contextType.returnType;
- flattenedType = body.isAsynchronous
- ? _typeSystem.flatten(returnType)
- : returnType;
- }
- }
-
- // dynamic, Null, void, and FutureOr<T> where T is (dynamic, Null, void)
- // are allowed to omit a return.
- if (flattenedType.isDartAsyncFutureOr) {
- flattenedType = (flattenedType as InterfaceType).typeArguments[0];
- }
- if (flattenedType.isBottom ||
- flattenedType.isDynamic ||
- flattenedType.isDartCoreNull ||
- flattenedType.isVoid) {
- return;
- }
- // Otherwise issue a warning if the block doesn't have a return.
- if (!ExitDetector.exits(body)) {
- AstNode errorNode = functionNode is MethodDeclaration
- ? functionNode.name
- : functionNode is FunctionDeclaration
- ? functionNode.name
- : functionNode;
- _errorReporter.reportErrorForNode(
- HintCode.MISSING_RETURN, errorNode, [returnType]);
- }
+ // Generators always return.
+ if (body.isGenerator) {
+ return;
}
+
+ if (body is! BlockFunctionBody) {
+ return;
+ }
+
+ var bodyContext = BodyInferenceContext.of(body);
+ // TODO(scheglov) Update InferenceContext to record any type, dynamic.
+ var returnType = bodyContext.contextType ?? DynamicTypeImpl.instance;
+
+ if (_typeSystem.isNullable(returnType)) {
+ return;
+ }
+
+ if (ExitDetector.exits(body)) {
+ return;
+ }
+
+ var errorNode = functionNode;
+ if (functionNode is FunctionDeclaration) {
+ errorNode = functionNode.name;
+ } else if (functionNode is MethodDeclaration) {
+ errorNode = functionNode.name;
+ }
+
+ _errorReporter.reportErrorForNode(
+ HintCode.MISSING_RETURN,
+ errorNode,
+ [returnType],
+ );
}
void _checkForNullableTypeInCatchClause(CatchClause node) {
diff --git a/pkg/analyzer/lib/src/error/correct_override.dart b/pkg/analyzer/lib/src/error/correct_override.dart
index 7d67e40..384c1c7 100644
--- a/pkg/analyzer/lib/src/error/correct_override.dart
+++ b/pkg/analyzer/lib/src/error/correct_override.dart
@@ -9,6 +9,7 @@
import 'package:analyzer/error/listener.dart';
import 'package:analyzer/src/dart/analysis/session.dart';
import 'package:analyzer/src/dart/element/element.dart';
+import 'package:analyzer/src/dart/element/extensions.dart';
import 'package:analyzer/src/dart/element/type.dart';
import 'package:analyzer/src/dart/element/type_algebra.dart';
import 'package:analyzer/src/error/codes.dart';
@@ -75,13 +76,10 @@
var parameter = parameters[i];
if (parameter.isCovariant) {
newParameters ??= parameters.toList(growable: false);
- newParameters[i] = ParameterElementImpl.synthetic(
- parameter.name,
- _typeSystem.isNonNullableByDefault
+ newParameters[i] = parameter.copyWith(
+ type: _typeSystem.isNonNullableByDefault
? _typeSystem.objectQuestion
: _typeSystem.objectStar,
- // ignore: deprecated_member_use_from_same_package
- parameter.parameterKind,
);
}
}
diff --git a/pkg/analyzer/lib/src/error/return_type_verifier.dart b/pkg/analyzer/lib/src/error/return_type_verifier.dart
index 69f798f..2f928d0 100644
--- a/pkg/analyzer/lib/src/error/return_type_verifier.dart
+++ b/pkg/analyzer/lib/src/error/return_type_verifier.dart
@@ -29,33 +29,95 @@
_typeSystem = typeSystem,
_errorReporter = errorReporter;
- /// Check that a type mis-match between the type of the [expression] and
- /// the [expectedReturnType] by the enclosing method or function.
- ///
- /// This method is called both by [_checkForAllReturnStatementErrorCodes]
- /// and [visitExpressionFunctionBody].
- void verifyReturnExpression(Expression expression, DartType expectedType,
- {bool isArrowFunction = false}) {
- if (enclosingExecutable == null) {
+ DartType get _flattenedReturnType {
+ var returnType = enclosingExecutable.returnType;
+ if (enclosingExecutable.isSynchronous) {
+ return returnType;
+ } else {
+ return _typeSystem.flatten(returnType);
+ }
+ }
+
+ void verifyExpressionFunctionBody(ExpressionFunctionBody node) {
+ // This enables concise declarations of void functions.
+ if (_flattenedReturnType.isVoid) {
return;
}
+
+ return _checkReturnExpression(node.expression);
+ }
+
+ void verifyReturnStatement(ReturnStatement statement) {
+ var expression = statement.expression;
+
+ if (enclosingExecutable.isGenerativeConstructor) {
+ if (expression != null) {
+ _errorReporter.reportErrorForNode(
+ CompileTimeErrorCode.RETURN_IN_GENERATIVE_CONSTRUCTOR,
+ expression,
+ );
+ }
+ return;
+ }
+
if (enclosingExecutable.isGenerator) {
- // "return expression;" is disallowed in generators, but this is checked
- // elsewhere. Bare "return" is always allowed in generators regardless
- // of the return type. So no need to do any further checking.
+ if (expression != null) {
+ _errorReporter.reportErrorForNode(
+ CompileTimeErrorCode.RETURN_IN_GENERATOR,
+ statement,
+ [enclosingExecutable.isAsynchronous ? 'async*' : 'sync*'],
+ );
+ }
return;
}
+
if (expression == null) {
- return; // Empty returns are handled elsewhere
+ _checkReturnWithoutValue(statement);
+ return;
}
- DartType expressionType = getStaticType(expression);
+ _checkReturnExpression(expression);
+ }
- var toType = expectedType;
- var fromType = expressionType;
+ void verifyReturnType(TypeAnnotation returnType) {
+ // If no declared type, then the type is `dynamic`, which is valid.
+ if (returnType == null) {
+ return;
+ }
+
+ void checkElement(
+ ClassElement expectedElement,
+ StaticTypeWarningCode errorCode,
+ ) {
+ if (!_isLegalReturnType(expectedElement)) {
+ _errorReporter.reportErrorForNode(errorCode, returnType);
+ }
+ }
+
if (enclosingExecutable.isAsynchronous) {
- toType = _typeSystem.flatten(toType);
- fromType = _typeSystem.flatten(fromType);
+ if (enclosingExecutable.isGenerator) {
+ checkElement(
+ _typeProvider.streamElement,
+ StaticTypeWarningCode.ILLEGAL_ASYNC_GENERATOR_RETURN_TYPE,
+ );
+ } else {
+ checkElement(
+ _typeProvider.futureElement,
+ StaticTypeWarningCode.ILLEGAL_ASYNC_RETURN_TYPE,
+ );
+ }
+ } else if (enclosingExecutable.isGenerator) {
+ checkElement(
+ _typeProvider.iterableElement,
+ StaticTypeWarningCode.ILLEGAL_SYNC_GENERATOR_RETURN_TYPE,
+ );
+ }
+ }
+
+ /// Check that a type mismatch between the type of the [expression] and
+ /// the expected return type of the enclosing executable.
+ void _checkReturnExpression(Expression expression) {
+ if (enclosingExecutable.isAsynchronous) {
if (!_isLegalReturnType(_typeProvider.futureElement)) {
// ILLEGAL_ASYNC_RETURN_TYPE has already been reported, meaning the
// _declared_ return type is illegal; don't confuse by also reporting
@@ -65,160 +127,110 @@
}
}
+ // `T` is the declared return type.
+ // `S` is the static type of the expression.
+ var T = enclosingExecutable.returnType;
+ var S = getStaticType(expression);
+
void reportTypeError() {
String displayName = enclosingExecutable.element.displayName;
-
if (displayName.isEmpty) {
_errorReporter.reportErrorForNode(
- StaticTypeWarningCode.RETURN_OF_INVALID_TYPE_FROM_CLOSURE,
- expression,
- [fromType, toType]);
+ StaticTypeWarningCode.RETURN_OF_INVALID_TYPE_FROM_CLOSURE,
+ expression,
+ [S, T],
+ );
} else if (enclosingExecutable.isMethod) {
_errorReporter.reportErrorForNode(
- StaticTypeWarningCode.RETURN_OF_INVALID_TYPE_FROM_METHOD,
- expression,
- [fromType, toType, displayName]);
+ StaticTypeWarningCode.RETURN_OF_INVALID_TYPE_FROM_METHOD,
+ expression,
+ [S, T, displayName],
+ );
} else {
_errorReporter.reportErrorForNode(
- StaticTypeWarningCode.RETURN_OF_INVALID_TYPE_FROM_FUNCTION,
- expression,
- [fromType, toType, displayName]);
+ StaticTypeWarningCode.RETURN_OF_INVALID_TYPE_FROM_FUNCTION,
+ expression,
+ [S, T, displayName],
+ );
}
}
- // Anything can be returned to `void` in an arrow bodied function
- // or to `Future<void>` in an async arrow bodied function.
- if (isArrowFunction && toType.isVoid) {
- return;
- }
-
- if (toType.isVoid) {
- if (fromType.isVoid ||
- fromType.isDynamic ||
- fromType.isDartCoreNull ||
- fromType.isBottom) {
- return;
+ if (enclosingExecutable.isSynchronous) {
+ // It is a compile-time error if `T` is `void`,
+ // and `S` is neither `void`, `dynamic`, nor `Null`.
+ if (T.isVoid) {
+ if (!_isVoidDynamicOrNull(S)) {
+ reportTypeError();
+ return;
+ }
}
- } else if (fromType.isVoid) {
- if (toType.isDynamic || toType.isDartCoreNull || toType.isBottom) {
- return;
+ // It is a compile-time error if `S` is `void`,
+ // and `T` is neither `void`, `dynamic`, nor `Null`.
+ if (S.isVoid) {
+ if (!_isVoidDynamicOrNull(T)) {
+ reportTypeError();
+ return;
+ }
}
- }
- if (!expectedType.isVoid && !fromType.isVoid) {
- var checkWithType = !enclosingExecutable.isAsynchronous
- ? fromType
- : _typeProvider.futureType2(fromType);
- if (_typeSystem.isAssignableTo2(checkWithType, expectedType)) {
- return;
+ // It is a compile-time error if `S` is not `void`,
+ // and `S` is not assignable to `T`.
+ if (!S.isVoid) {
+ if (!_typeSystem.isAssignableTo2(S, T)) {
+ reportTypeError();
+ return;
+ }
}
- }
-
- reportTypeError();
- }
-
- void verifyReturnStatement(ReturnStatement statement) {
- FunctionType functionType = enclosingExecutable.element.type;
- DartType expectedReturnType = functionType == null
- ? DynamicTypeImpl.instance
- : functionType.returnType;
- Expression returnExpression = statement.expression;
-
- // RETURN_IN_GENERATIVE_CONSTRUCTOR
- bool isGenerativeConstructor(ExecutableElement element) =>
- element is ConstructorElement && !element.isFactory;
- if (isGenerativeConstructor(enclosingExecutable.element)) {
- if (returnExpression == null) {
- return;
- }
- _errorReporter.reportErrorForNode(
- CompileTimeErrorCode.RETURN_IN_GENERATIVE_CONSTRUCTOR,
- returnExpression);
- return;
- }
- // RETURN_WITHOUT_VALUE
- if (returnExpression == null) {
- _checkForAllEmptyReturnStatementErrorCodes(statement, expectedReturnType);
- return;
- } else if (enclosingExecutable.isGenerator) {
- // RETURN_IN_GENERATOR
- _errorReporter.reportErrorForNode(
- CompileTimeErrorCode.RETURN_IN_GENERATOR,
- statement,
- [enclosingExecutable.isAsynchronous ? "async*" : "sync*"]);
- return;
- }
-
- verifyReturnExpression(returnExpression, expectedReturnType);
- }
-
- void verifyReturnType(TypeAnnotation returnType) {
- // If no declared type, then the type is `dynamic`, which is valid.
- if (returnType == null) {
+ // OK
return;
}
if (enclosingExecutable.isAsynchronous) {
- if (enclosingExecutable.isGenerator) {
- _checkForIllegalReturnTypeCode(
- returnType,
- _typeProvider.streamElement,
- StaticTypeWarningCode.ILLEGAL_ASYNC_GENERATOR_RETURN_TYPE,
- );
- } else {
- _checkForIllegalReturnTypeCode(
- returnType,
- _typeProvider.futureElement,
- StaticTypeWarningCode.ILLEGAL_ASYNC_RETURN_TYPE,
- );
+ var flatten_T = _typeSystem.flatten(T);
+ var flatten_S = _typeSystem.flatten(S);
+ // It is a compile-time error if `T` is `void`,
+ // and `flatten(S)` is neither `void`, `dynamic`, nor `Null`.
+ if (T.isVoid) {
+ if (!_isVoidDynamicOrNull(flatten_S)) {
+ reportTypeError();
+ return;
+ }
}
- } else if (enclosingExecutable.isGenerator) {
- _checkForIllegalReturnTypeCode(
- returnType,
- _typeProvider.iterableElement,
- StaticTypeWarningCode.ILLEGAL_SYNC_GENERATOR_RETURN_TYPE,
- );
+ // It is a compile-time error if `flatten(S)` is `void`,
+ // and `flatten(T)` is neither `void`, `dynamic`, nor `Null`.
+ if (flatten_S.isVoid) {
+ if (!_isVoidDynamicOrNull(flatten_T)) {
+ reportTypeError();
+ return;
+ }
+ }
+ // It is a compile-time error if `flatten(S)` is not `void`,
+ // and `Future<flatten(S)>` is not assignable to `T`.
+ if (!flatten_S.isVoid) {
+ var future_flatten_S = _typeProvider.futureType2(flatten_S);
+ if (!_typeSystem.isAssignableTo2(future_flatten_S, T)) {
+ reportTypeError();
+ return;
+ }
+ // OK
+ return;
+ }
}
}
- /// Check that return statements without expressions are not in a generative
- /// constructor and the return type is not assignable to `null`; that is, we
- /// don't have `return;` if the enclosing method has a non-void containing
- /// return type.
- void _checkForAllEmptyReturnStatementErrorCodes(
- ReturnStatement statement, DartType expectedReturnType) {
- if (enclosingExecutable.isGenerator) {
+ void _checkReturnWithoutValue(ReturnStatement statement) {
+ var returnType = _flattenedReturnType;
+ if (_isVoidDynamicOrNull(returnType)) {
return;
}
- var returnType = enclosingExecutable.isAsynchronous
- ? _typeSystem.flatten(expectedReturnType)
- : expectedReturnType;
- if (returnType.isDynamic ||
- returnType.isDartCoreNull ||
- returnType.isVoid) {
- return;
- }
- // If we reach here, this is an invalid return
+
_errorReporter.reportErrorForToken(
- StaticWarningCode.RETURN_WITHOUT_VALUE, statement.returnKeyword);
- return;
+ StaticWarningCode.RETURN_WITHOUT_VALUE,
+ statement.returnKeyword,
+ );
}
- /// If the current function is async, async*, or sync*, verify that its
- /// declared return type is assignable to Future, Stream, or Iterable,
- /// respectively. This is called by [_checkForIllegalReturnType] to check if
- /// a value with the type of the declared [returnTypeName] is assignable to
- /// [expectedElement] and if not report [errorCode].
- void _checkForIllegalReturnTypeCode(TypeAnnotation returnTypeName,
- ClassElement expectedElement, StaticTypeWarningCode errorCode) {
- if (!_isLegalReturnType(expectedElement)) {
- _errorReporter.reportErrorForNode(errorCode, returnTypeName);
- }
- }
-
- /// Returns whether a value with the type of the the enclosing function's
- /// declared return type is assignable to [expectedElement].
bool _isLegalReturnType(ClassElement expectedElement) {
- DartType returnType = enclosingExecutable.element.returnType;
+ DartType returnType = enclosingExecutable.returnType;
//
// When checking an async/sync*/async* method, we know the exact type
// that will be returned (e.g. Future, Iterable, or Stream).
@@ -256,4 +268,8 @@
}
return type;
}
+
+ static bool _isVoidDynamicOrNull(DartType type) {
+ return type.isVoid || type.isDynamic || type.isDartCoreNull;
+ }
}
diff --git a/pkg/analyzer/lib/src/error/type_arguments_verifier.dart b/pkg/analyzer/lib/src/error/type_arguments_verifier.dart
index ac089e4..363543a 100644
--- a/pkg/analyzer/lib/src/error/type_arguments_verifier.dart
+++ b/pkg/analyzer/lib/src/error/type_arguments_verifier.dart
@@ -360,7 +360,7 @@
/// This function will return false if any of the following are true:
///
/// - [inferenceContextNode] has an inference context type that does not
- /// contain `?`
+ /// contain `_`
/// - [type] does not have any `dynamic` type arguments.
/// - the element is marked with `@optionalTypeArgs` from "package:meta".
bool _isMissingTypeArguments(AstNode node, DartType type, Element element,
diff --git a/pkg/analyzer/lib/src/fasta/ast_builder.dart b/pkg/analyzer/lib/src/fasta/ast_builder.dart
index efc8d42..db8fafb 100644
--- a/pkg/analyzer/lib/src/fasta/ast_builder.dart
+++ b/pkg/analyzer/lib/src/fasta/ast_builder.dart
@@ -11,6 +11,7 @@
messageConstructorWithTypeParameters,
messageDirectiveAfterDeclaration,
messageExpectedStatement,
+ messageExternalField,
messageFieldInitializerOutsideConstructor,
messageIllegalAssignmentToNonAssignable,
messageInterpolationInUri,
@@ -823,11 +824,23 @@
}
@override
- void endClassFields(Token staticToken, Token covariantToken, Token lateToken,
- Token varFinalOrConst, int count, Token beginToken, Token semicolon) {
+ void endClassFields(
+ Token externalToken,
+ Token staticToken,
+ Token covariantToken,
+ Token lateToken,
+ Token varFinalOrConst,
+ int count,
+ Token beginToken,
+ Token semicolon) {
assert(optional(';', semicolon));
debugEvent("Fields");
+ if (externalToken != null) {
+ handleRecoverableError(
+ messageExternalField, externalToken, externalToken);
+ }
+
List<VariableDeclaration> variables = popTypedList(count);
TypeAnnotation type = pop();
var variableList = ast.variableDeclarationList2(
@@ -1180,6 +1193,7 @@
@override
void endExtensionFields(
+ Token externalToken,
Token staticToken,
Token covariantToken,
Token lateToken,
@@ -1193,8 +1207,8 @@
// an error at this point, but we include them in order to get navigation,
// search, etc.
}
- endClassFields(staticToken, covariantToken, lateToken, varFinalOrConst,
- count, beginToken, endToken);
+ endClassFields(externalToken, staticToken, covariantToken, lateToken,
+ varFinalOrConst, count, beginToken, endToken);
}
@override
@@ -1811,10 +1825,17 @@
}
@override
- void endMixinFields(Token staticToken, Token covariantToken, Token lateToken,
- Token varFinalOrConst, int count, Token beginToken, Token endToken) {
- endClassFields(staticToken, covariantToken, lateToken, varFinalOrConst,
- count, beginToken, endToken);
+ void endMixinFields(
+ Token externalToken,
+ Token staticToken,
+ Token covariantToken,
+ Token lateToken,
+ Token varFinalOrConst,
+ int count,
+ Token beginToken,
+ Token endToken) {
+ endClassFields(externalToken, staticToken, covariantToken, lateToken,
+ varFinalOrConst, count, beginToken, endToken);
}
@override
@@ -2082,6 +2103,7 @@
@override
void endTopLevelFields(
+ Token externalToken,
Token staticToken,
Token covariantToken,
Token lateToken,
@@ -2092,6 +2114,11 @@
assert(optional(';', semicolon));
debugEvent("TopLevelFields");
+ if (externalToken != null) {
+ handleRecoverableError(
+ messageExternalField, externalToken, externalToken);
+ }
+
List<VariableDeclaration> variables = popTypedList(count);
TypeAnnotation type = pop();
var variableList = ast.variableDeclarationList2(
diff --git a/pkg/analyzer/lib/src/generated/error_verifier.dart b/pkg/analyzer/lib/src/generated/error_verifier.dart
index a2eea08..9a3104f 100644
--- a/pkg/analyzer/lib/src/generated/error_verifier.dart
+++ b/pkg/analyzer/lib/src/generated/error_verifier.dart
@@ -45,6 +45,7 @@
final bool isAsynchronous;
final bool isConstConstructor;
final bool isFactoryConstructor;
+ final bool isGenerativeConstructor;
final bool isGenerator;
final bool isStaticMethod;
@@ -59,6 +60,8 @@
isConstConstructor = element is ConstructorElement && element.isConst,
isFactoryConstructor =
element is ConstructorElement && element.isFactory,
+ isGenerativeConstructor =
+ element is ConstructorElement && !element.isFactory,
isGenerator = element != null && element.isGenerator,
isStaticMethod = _isStaticMethod(element);
@@ -66,6 +69,10 @@
bool get isMethod => element is MethodElement;
+ bool get isSynchronous => !isAsynchronous;
+
+ DartType get returnType => element.returnType;
+
static bool _isStaticMethod(ExecutableElement element) {
var enclosing = element?.enclosingElement;
if (enclosing is ClassElement) {
@@ -237,8 +244,7 @@
* Initialize a newly created error verifier.
*/
ErrorVerifier(ErrorReporter errorReporter, this._currentLibrary,
- this._typeProvider, this._inheritanceManager,
- [@deprecated bool enableSuperMixins])
+ this._typeProvider, this._inheritanceManager)
: _errorReporter = errorReporter,
_uninstantiatedBoundChecker =
_UninstantiatedBoundChecker(errorReporter),
@@ -266,13 +272,6 @@
);
}
- /**
- * If `true`, mixins are allowed to inherit from types other than Object, and
- * are allowed to reference `super`.
- */
- @deprecated
- bool get enableSuperMixins => false;
-
ClassElement get enclosingClass => _enclosingClass;
/**
@@ -572,21 +571,7 @@
@override
void visitExpressionFunctionBody(ExpressionFunctionBody node) {
- ExecutableElement function = _enclosingExecutable.element;
- FunctionType functionType = function?.type;
- DartType expectedReturnType = functionType == null
- ? DynamicTypeImpl.instance
- : functionType.returnType;
- bool isSetterWithImplicitReturn = function.hasImplicitReturnType &&
- function is PropertyAccessorElement &&
- function.isSetter;
- if (!isSetterWithImplicitReturn) {
- _returnTypeVerifier.verifyReturnExpression(
- node.expression,
- expectedReturnType,
- isArrowFunction: true,
- );
- }
+ _returnTypeVerifier.verifyExpressionFunctionBody(node);
super.visitExpressionFunctionBody(node);
}
@@ -1928,7 +1913,7 @@
if (supertype == null) {
return;
}
- if (supertype.isObject) {
+ if (supertype.isDartCoreObject) {
return;
}
ConstructorElement unnamedConstructor =
@@ -3249,7 +3234,7 @@
TypeName mixinName, ClassElement mixinElement) {
InterfaceType mixinSupertype = mixinElement.supertype;
if (mixinSupertype != null) {
- if (!mixinSupertype.isObject ||
+ if (!mixinSupertype.isDartCoreObject ||
!mixinElement.isMixinApplication && mixinElement.mixins.isNotEmpty) {
_errorReporter.reportErrorForNode(
CompileTimeErrorCode.MIXIN_INHERITS_FROM_NOT_OBJECT,
@@ -5032,7 +5017,7 @@
/// a method annotated with `@mustCallSuper` is implicitly annotated with
/// `@mustCallSuper`.
///
- /// [1] https://pub.dartlang.org/documentation/meta/latest/meta/mustCallSuper-constant.html
+ /// [1] https://pub.dev/documentation/meta/latest/meta/mustCallSuper-constant.html
MethodElement _findOverriddenMemberThatMustCallSuper(MethodDeclaration node) {
Element member = node.declaredElement;
if (member.enclosingElement is! ClassElement) {
diff --git a/pkg/analyzer/lib/src/generated/resolver.dart b/pkg/analyzer/lib/src/generated/resolver.dart
index 0db842a..bdcf56f 100644
--- a/pkg/analyzer/lib/src/generated/resolver.dart
+++ b/pkg/analyzer/lib/src/generated/resolver.dart
@@ -20,10 +20,10 @@
import 'package:analyzer/src/dart/element/member.dart'
show ConstructorMember, Member;
import 'package:analyzer/src/dart/element/nullability_eliminator.dart';
-import 'package:analyzer/src/dart/element/type.dart';
import 'package:analyzer/src/dart/element/type_provider.dart';
import 'package:analyzer/src/dart/resolver/assignment_expression_resolver.dart';
import 'package:analyzer/src/dart/resolver/binary_expression_resolver.dart';
+import 'package:analyzer/src/dart/resolver/body_inference_context.dart';
import 'package:analyzer/src/dart/resolver/extension_member_resolver.dart';
import 'package:analyzer/src/dart/resolver/flow_analysis_visitor.dart';
import 'package:analyzer/src/dart/resolver/for_resolver.dart';
@@ -69,93 +69,45 @@
final ResolverVisitor _resolver;
- /// Type provider, needed for type matching.
- final TypeProvider _typeProvider;
-
/// The type system in use.
final TypeSystemImpl _typeSystem;
- /// When no context type is available, this will track the least upper bound
- /// of all return statements in a lambda.
- ///
- /// This will always be kept in sync with [_returnStack].
- final List<DartType> _inferredReturn = <DartType>[];
-
- /// A stack of return types for all of the enclosing
- /// functions and methods.
- final List<DartType> _returnStack = <DartType>[];
+ /// The stack of contexts for nested function bodies.
+ final List<BodyInferenceContext> _bodyContexts = [];
InferenceContext._(ResolverVisitor resolver)
: _resolver = resolver,
- _typeProvider = resolver.typeProvider,
_typeSystem = resolver.typeSystem;
- /// Get the return type of the current enclosing function, if any.
- ///
- /// The type returned for a function is the type that is expected
- /// to be used in a return or yield context. For ordinary functions
- /// this is the same as the return type of the function. For async
- /// functions returning Future<T> and for generator functions
- /// returning Stream<T> or Iterable<T>, this is T.
- DartType get returnContext =>
- _returnStack.isNotEmpty ? _returnStack.last : null;
-
- /// Records the type of the expression of a return statement.
- ///
- /// This will be used for inferring a block bodied lambda, if no context
- /// type was available.
- void addReturnOrYieldType(DartType type) {
- if (_returnStack.isEmpty) {
- return;
- }
-
- DartType inferred = _inferredReturn.last;
- if (inferred == null) {
- inferred = type;
+ BodyInferenceContext get bodyContext {
+ if (_bodyContexts.isNotEmpty) {
+ return _bodyContexts.last;
} else {
- inferred = _typeSystem.getLeastUpperBound(type, inferred);
- inferred = _resolver.toLegacyTypeIfOptOut(inferred);
- }
- _inferredReturn[_inferredReturn.length - 1] = inferred;
- }
-
- /// Pop a return type off of the return stack.
- ///
- /// Also record any inferred return type using [setType], unless this node
- /// already has a context type. This recorded type will be the least upper
- /// bound of all types added with [addReturnOrYieldType].
- void popReturnContext(FunctionBody node) {
- if (_returnStack.isNotEmpty && _inferredReturn.isNotEmpty) {
- // If NNBD, and the function body end is reachable, infer nullable.
- // If legacy, we consider the end as always reachable, and return Null.
- if (!node.isGenerator) {
- if (_resolver._isNonNullableByDefault) {
- var flow = _resolver._flowAnalysis?.flow;
- if (flow != null && flow.isReachable) {
- addReturnOrYieldType(_typeProvider.nullType);
- }
- } else {
- addReturnOrYieldType(_typeProvider.nullType);
- }
- }
-
- DartType context = _returnStack.removeLast();
- DartType inferred = _inferredReturn.removeLast();
- context ??= DynamicTypeImpl.instance;
- inferred ??= DynamicTypeImpl.instance;
-
- if (_typeSystem.isSubtypeOf2(inferred, context)) {
- setType(node, inferred);
- }
- } else {
- assert(false);
+ return null;
}
}
- /// Push a block function body's return type onto the return stack.
- void pushReturnContext(FunctionBody node) {
- _returnStack.add(getContext(node));
- _inferredReturn.add(null);
+ void popFunctionBodyContext(FunctionBody node) {
+ var context = _bodyContexts.removeLast();
+
+ var flow = _resolver._flowAnalysis?.flow;
+
+ var resultType = context.computeInferredReturnType(
+ endOfBlockIsReachable: flow == null || flow.isReachable,
+ );
+
+ setType(node, resultType);
+ }
+
+ void pushFunctionBodyContext(FunctionBody node) {
+ var imposedType = getContext(node);
+ _bodyContexts.add(
+ BodyInferenceContext(
+ typeSystem: _typeSystem,
+ node: node,
+ imposedType: imposedType,
+ ),
+ );
}
/// Clear the type information associated with [node].
@@ -167,7 +119,7 @@
/// the type if found.
///
/// The returned type may be partially or completely unknown, denoted with an
- /// unknown type `?`, for example `List<?>` or `(?, int) -> void`.
+ /// unknown type `_`, for example `List<_>` or `(_, int) -> void`.
/// You can use [TypeSystemImpl.upperBoundForType] or
/// [TypeSystemImpl.lowerBoundForType] if you would prefer a known type
/// that represents the bound of the context type.
@@ -474,43 +426,6 @@
nullSafetyDeadCodeVerifier.visitNode(node);
}
- /// Given the declared return type of a function, compute the type of the
- /// values which should be returned or yielded as appropriate. If a type
- /// cannot be computed from the declared return type, return null.
- DartType computeReturnOrYieldType(DartType declaredType) {
- bool isGenerator = _enclosingFunction.isGenerator;
- bool isAsynchronous = _enclosingFunction.isAsynchronous;
-
- // Ordinary functions just return their declared types.
- if (!isGenerator && !isAsynchronous) {
- return declaredType;
- }
- if (declaredType is InterfaceType) {
- if (isGenerator) {
- // If it's sync* we expect Iterable<T>
- // If it's async* we expect Stream<T>
- // Match the types to instantiate the type arguments if possible
- List<DartType> targs = declaredType.typeArguments;
- if (targs.length == 1) {
- var arg = targs[0];
- if (isAsynchronous) {
- if (typeProvider.streamType2(arg) == declaredType) {
- return arg;
- }
- } else {
- if (typeProvider.iterableType2(arg) == declaredType) {
- return arg;
- }
- }
- }
- }
- // async functions expect `Future<T> | T`
- var futureTypeParam = typeSystem.flatten(declaredType);
- return _createFutureOr(futureTypeParam);
- }
- return declaredType;
- }
-
/// Return the static element associated with the given expression whose type
/// can be overridden, or `null` if there is no element whose type can be
/// overridden.
@@ -738,10 +653,10 @@
@override
void visitBlockFunctionBody(BlockFunctionBody node) {
try {
- inferenceContext.pushReturnContext(node);
+ inferenceContext.pushFunctionBodyContext(node);
super.visitBlockFunctionBody(node);
} finally {
- inferenceContext.popReturnContext(node);
+ inferenceContext.popFunctionBodyContext(node);
}
}
@@ -1041,21 +956,19 @@
return;
}
try {
- InferenceContext.setTypeFromNode(node.expression, node);
- inferenceContext.pushReturnContext(node);
+ inferenceContext.pushFunctionBodyContext(node);
+ InferenceContext.setType(
+ node.expression,
+ inferenceContext.bodyContext.contextType,
+ );
+
super.visitExpressionFunctionBody(node);
_flowAnalysis?.flow?.handleExit();
- DartType type = node.expression.staticType;
- if (_enclosingFunction.isAsynchronous) {
- type = typeSystem.flatten(type);
- }
- if (type != null) {
- inferenceContext.addReturnOrYieldType(type);
- }
+ inferenceContext.bodyContext.addReturnExpression(node.expression);
} finally {
- inferenceContext.popReturnContext(node);
+ inferenceContext.popFunctionBodyContext(node);
}
}
@@ -1137,9 +1050,12 @@
super.visitFunctionDeclaration(node);
if (_flowAnalysis != null) {
- var returnType = computeReturnOrYieldType(functionType.returnType);
+ // TODO(scheglov) encapsulate
+ var bodyContext = BodyInferenceContext.of(
+ node.functionExpression.body,
+ );
checkForBodyMayCompleteNormally(
- returnType: returnType,
+ returnType: bodyContext?.contextType,
body: node.functionExpression.body,
errorNode: node.name,
);
@@ -1367,16 +1283,16 @@
_promoteManager.enterFunctionBody(node.body);
}
- DartType returnType = computeReturnOrYieldType(
- _enclosingFunction?.returnType,
- );
+ DartType returnType = _enclosingFunction?.returnType;
InferenceContext.setType(node.body, returnType);
super.visitMethodDeclaration(node);
if (_flowAnalysis != null) {
+ // TODO(scheglov) encapsulate
+ var bodyContext = BodyInferenceContext.of(node.body);
checkForBodyMayCompleteNormally(
- returnType: returnType,
+ returnType: bodyContext?.contextType,
body: node.body,
errorNode: node.name,
);
@@ -1525,17 +1441,14 @@
@override
void visitReturnStatement(ReturnStatement node) {
- InferenceContext.setType(node.expression, inferenceContext.returnContext);
+ InferenceContext.setType(
+ node.expression,
+ inferenceContext.bodyContext?.contextType,
+ );
+
super.visitReturnStatement(node);
- DartType type = node.expression?.staticType;
- // Generators cannot return values, so don't try to do any inference if
- // we're processing erroneous code.
- if (type != null && _enclosingFunction?.isGenerator == false) {
- if (_enclosingFunction.isAsynchronous) {
- type = typeSystem.flatten(type);
- }
- inferenceContext.addReturnOrYieldType(type);
- }
+
+ inferenceContext.bodyContext?.addReturnExpression(node.expression);
_flowAnalysis?.flow?.handleExit();
}
diff --git a/pkg/analyzer/lib/src/generated/type_system.dart b/pkg/analyzer/lib/src/generated/type_system.dart
index c58545b..4254750 100644
--- a/pkg/analyzer/lib/src/generated/type_system.dart
+++ b/pkg/analyzer/lib/src/generated/type_system.dart
@@ -564,7 +564,7 @@
* at compile time, as `T` is unknown).
*
* Conceptually this is similar to the "least closure", except instead of
- * eliminating `?` ([UnknownInferredType]) it eliminates all type variables
+ * eliminating `_` ([UnknownInferredType]) it eliminates all type variables
* ([TypeParameterType]).
*
* The equivalent CFE code can be found in the `TypeVariableEliminator` class.
@@ -634,6 +634,36 @@
return T;
}
+ /// Compute "future value type" of [T].
+ ///
+ /// https://github.com/dart-lang/language/
+ /// See `nnbd/feature-specification.md`
+ /// See `#the-future-value-type-of-an-asynchronous-non-generator-function`
+ DartType futureValueType(DartType T) {
+ // futureValueType(`S?`) = futureValueType(`S`), for all `S`.
+ // futureValueType(`S*`) = futureValueType(`S`), for all `S`.
+ if (T.nullabilitySuffix != NullabilitySuffix.none) {
+ var S = (T as TypeImpl).withNullability(NullabilitySuffix.none);
+ return futureValueType(S);
+ }
+
+ // futureValueType(Future<`S`>) = `S`, for all `S`.
+ // futureValueType(FutureOr<`S`>) = `S`, for all `S`.
+ if (T is InterfaceType) {
+ if (T.isDartAsyncFuture || T.isDartAsyncFutureOr) {
+ return T.typeArguments[0];
+ }
+ }
+
+ // futureValueType(`void`) = `void`.
+ if (identical(T, VoidTypeImpl.instance)) {
+ return T;
+ }
+
+ // Otherwise, for all `S`, futureValueType(`S`) = `Object?`.
+ return objectQuestion;
+ }
+
/// Given a type t, if t is an interface type with a call method
/// defined, return the function type for the call method, otherwise
/// return null.
@@ -660,13 +690,13 @@
return _leastUpperBoundHelper.getLeastUpperBound(T1, T2);
}
- /// Returns the greatest closure of the given type [schema] with respect to `?`.
+ /// Returns the greatest closure of the given type [schema] with respect to `_`.
///
- /// The greatest closure of a type schema `P` with respect to `?` is defined as
- /// `P` with every covariant occurrence of `?` replaced with `Null`, and every
- /// contravariant occurrence of `?` replaced with `Object`.
+ /// The greatest closure of a type schema `P` with respect to `_` is defined as
+ /// `P` with every covariant occurrence of `_` replaced with `Null`, and every
+ /// contravariant occurrence of `_` replaced with `Object`.
///
- /// If the schema contains no instances of `?`, the original schema object is
+ /// If the schema contains no instances of `_`, the original schema object is
/// returned to avoid unnecessary allocation.
///
/// Note that the closure of a type schema is a proper type.
@@ -1353,13 +1383,13 @@
return false;
}
- /// Returns the least closure of the given type [schema] with respect to `?`.
+ /// Returns the least closure of the given type [schema] with respect to `_`.
///
- /// The least closure of a type schema `P` with respect to `?` is defined as
- /// `P` with every covariant occurrence of `?` replaced with `Object`, an
- /// every contravariant occurrence of `?` replaced with `Null`.
+ /// The least closure of a type schema `P` with respect to `_` is defined as
+ /// `P` with every covariant occurrence of `_` replaced with `Object`, an
+ /// every contravariant occurrence of `_` replaced with `Null`.
///
- /// If the schema contains no instances of `?`, the original schema object is
+ /// If the schema contains no instances of `_`, the original schema object is
/// returned to avoid unnecessary allocation.
///
/// Note that the closure of a type schema is a proper type.
diff --git a/pkg/analyzer/lib/src/lint/project.dart b/pkg/analyzer/lib/src/lint/project.dart
index 4b4f1ae..fef8932 100644
--- a/pkg/analyzer/lib/src/lint/project.dart
+++ b/pkg/analyzer/lib/src/lint/project.dart
@@ -30,7 +30,7 @@
/// A semantic representation of a Dart project.
///
/// Projects provide a semantic model of a Dart project based on the
-/// [pub package layout conventions](https://www.dartlang.org/tools/pub/package-layout.html).
+/// [pub package layout conventions](https://dart.dev/tools/pub/package-layout).
/// This model allows clients to traverse project contents in a convenient and
/// standardized way, access global information (such as whether elements are
/// in the "public API") and resources that have special meanings in the
diff --git a/pkg/analyzer/test/generated/parser_fasta_listener.dart b/pkg/analyzer/test/generated/parser_fasta_listener.dart
index 4a5580f..a1caa91 100644
--- a/pkg/analyzer/test/generated/parser_fasta_listener.dart
+++ b/pkg/analyzer/test/generated/parser_fasta_listener.dart
@@ -622,11 +622,18 @@
}
@override
- void endClassFields(Token staticToken, Token covariantToken, Token lateToken,
- Token varFinalOrConst, int count, Token beginToken, Token endToken) {
+ void endClassFields(
+ Token externalToken,
+ Token staticToken,
+ Token covariantToken,
+ Token lateToken,
+ Token varFinalOrConst,
+ int count,
+ Token beginToken,
+ Token endToken) {
// beginMember --> endClassFields, endMember
expectIn('Member');
- super.endClassFields(staticToken, covariantToken, lateToken,
+ super.endClassFields(externalToken, staticToken, covariantToken, lateToken,
varFinalOrConst, count, beginToken, endToken);
}
@@ -744,6 +751,7 @@
@override
void endExtensionFields(
+ Token externalToken,
Token staticToken,
Token covariantToken,
Token lateToken,
@@ -753,8 +761,8 @@
Token endToken) {
// beginMember --> endExtensionFields, endMember
expectIn('Member');
- super.endExtensionFields(staticToken, covariantToken, lateToken,
- varFinalOrConst, count, beginToken, endToken);
+ super.endExtensionFields(externalToken, staticToken, covariantToken,
+ lateToken, varFinalOrConst, count, beginToken, endToken);
}
@override
@@ -998,11 +1006,18 @@
}
@override
- void endMixinFields(Token staticToken, Token covariantToken, Token lateToken,
- Token varFinalOrConst, int count, Token beginToken, Token endToken) {
+ void endMixinFields(
+ Token externalToken,
+ Token staticToken,
+ Token covariantToken,
+ Token lateToken,
+ Token varFinalOrConst,
+ int count,
+ Token beginToken,
+ Token endToken) {
// beginMember --> endMixinFields, endMember
expectIn('Member');
- super.endMixinFields(staticToken, covariantToken, lateToken,
+ super.endMixinFields(externalToken, staticToken, covariantToken, lateToken,
varFinalOrConst, count, beginToken, endToken);
}
@@ -1122,6 +1137,7 @@
@override
void endTopLevelFields(
+ Token externalToken,
Token staticToken,
Token covariantToken,
Token lateToken,
@@ -1130,8 +1146,8 @@
Token beginToken,
Token endToken) {
end('TopLevelMember');
- super.endTopLevelFields(staticToken, covariantToken, lateToken,
- varFinalOrConst, count, beginToken, endToken);
+ super.endTopLevelFields(externalToken, staticToken, covariantToken,
+ lateToken, varFinalOrConst, count, beginToken, endToken);
}
@override
diff --git a/pkg/analyzer/test/generated/parser_fasta_test.dart b/pkg/analyzer/test/generated/parser_fasta_test.dart
index 575463a..10a86d2 100644
--- a/pkg/analyzer/test/generated/parser_fasta_test.dart
+++ b/pkg/analyzer/test/generated/parser_fasta_test.dart
@@ -3,8 +3,6 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:_fe_analyzer_shared/src/parser/async_modifier.dart';
-import 'package:_fe_analyzer_shared/src/parser/forwarding_listener.dart'
- as fasta;
import 'package:_fe_analyzer_shared/src/parser/parser.dart' as fasta;
import 'package:_fe_analyzer_shared/src/scanner/error_token.dart'
show ErrorToken;
diff --git a/pkg/analyzer/test/src/context/package_config_json_test.dart b/pkg/analyzer/test/src/context/package_config_json_test.dart
index 8b26724..f1e2b45 100644
--- a/pkg/analyzer/test/src/context/package_config_json_test.dart
+++ b/pkg/analyzer/test/src/context/package_config_json_test.dart
@@ -234,6 +234,30 @@
''', 'packageUri');
}
+ test_packages_packageUri_empty() {
+ var config = _parse('''
+{
+ "configVersion": 2,
+ "packages": [
+ {
+ "name": "test",
+ "rootUri": "../",
+ "packageUri": ""
+ }
+ ]
+}
+''');
+ assertPackage(
+ config.packages[0],
+ _ExpectedPackage(
+ name: 'test',
+ rootUriPath: '/test/',
+ packageUriPath: '/test/',
+ languageVersion: null,
+ ),
+ );
+ }
+
test_packages_packageUri_notInRootUri() {
_throwsFormatException('''
{
@@ -250,6 +274,30 @@
''', 'packageUri');
}
+ test_packages_rootUri_doesNotEndWithSlash() {
+ var config = _parse('''
+{
+ "configVersion": 2,
+ "packages": [
+ {
+ "name": "test",
+ "rootUri": "..",
+ "packageUri": "lib"
+ }
+ ]
+}
+''');
+ assertPackage(
+ config.packages[0],
+ _ExpectedPackage(
+ name: 'test',
+ rootUriPath: '/test/',
+ packageUriPath: '/test/lib/',
+ languageVersion: null,
+ ),
+ );
+ }
+
PackageConfigJson _parse(String content) {
var path = '/test/.dart_tool/package_config.json';
newFile(path, content: content);
diff --git a/pkg/analyzer/test/src/dart/analysis/dependency/reference_collector_test.dart b/pkg/analyzer/test/src/dart/analysis/dependency/reference_collector_test.dart
index a2538a4..196abda 100644
--- a/pkg/analyzer/test/src/dart/analysis/dependency/reference_collector_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/dependency/reference_collector_test.dart
@@ -14,7 +14,6 @@
defineReflectiveSuite(() {
defineReflectiveTests(ApiReferenceCollectorTest);
defineReflectiveTests(ExpressionReferenceCollectorTest);
- defineReflectiveTests(ExpressionReferenceCollectorTest_SetLiterals);
defineReflectiveTests(ImplReferenceCollectorTest);
defineReflectiveTests(ShadowReferenceCollectorTest);
defineReflectiveTests(StatementReferenceCollectorTest);
@@ -1294,6 +1293,16 @@
_assertImpl(library, 'test', NodeKind.FUNCTION, unprefixed: ['A']);
}
+ test_setLiteral() async {
+ var library = await buildTestLibrary(a, r'''
+test() {
+ <A>{x, y, z};
+}
+''');
+ _assertImpl(library, 'test', NodeKind.FUNCTION,
+ unprefixed: ['A', 'x', 'y', 'z']);
+ }
+
test_simpleIdentifier() async {
var library = await buildTestLibrary(a, r'''
test() {
@@ -1382,19 +1391,6 @@
}
@reflectiveTest
-class ExpressionReferenceCollectorTest_SetLiterals extends _Base {
- test_setLiteral() async {
- var library = await buildTestLibrary(a, r'''
-test() {
- <A>{x, y, z};
-}
-''');
- _assertImpl(library, 'test', NodeKind.FUNCTION,
- unprefixed: ['A', 'x', 'y', 'z']);
- }
-}
-
-@reflectiveTest
class ImplReferenceCollectorTest extends _Base {
test_class_constructor() async {
var library = await buildTestLibrary(a, r'''
diff --git a/pkg/analyzer/test/src/dart/element/function_type_test.dart b/pkg/analyzer/test/src/dart/element/function_type_test.dart
index c17d008..9ed2264 100644
--- a/pkg/analyzer/test/src/dart/element/function_type_test.dart
+++ b/pkg/analyzer/test/src/dart/element/function_type_test.dart
@@ -339,26 +339,6 @@
expect(f.instantiate([]), same(f));
}
- test_synthetic_instantiate_share_parameters() {
- // T Function<T>(int x)
- var t = typeParameter('T');
- var x = requiredParameter(name: 'x', type: intType);
- FunctionType f = FunctionTypeImpl(
- typeFormals: [t],
- parameters: [x],
- returnType: typeParameterTypeNone(t),
- nullabilitySuffix: NullabilitySuffix.star,
- );
- FunctionType instantiated = f.instantiate([objectType]);
- basicChecks(instantiated,
- element: isNull,
- displayName: 'Object Function(int)',
- returnType: same(objectType),
- normalParameterNames: ['x'],
- normalParameterTypes: [same(intType)],
- parameters: same(f.parameters));
- }
-
test_synthetic_namedParameter() {
var p = namedParameter(name: 'x', type: objectType);
FunctionType f = FunctionTypeImpl(
diff --git a/pkg/analyzer/test/src/dart/element/future_value_type_test.dart b/pkg/analyzer/test/src/dart/element/future_value_type_test.dart
new file mode 100644
index 0000000..fcd0936
--- /dev/null
+++ b/pkg/analyzer/test/src/dart/element/future_value_type_test.dart
@@ -0,0 +1,121 @@
+// Copyright (c) 2020, 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 'package:analyzer/dart/element/type.dart';
+import 'package:test/test.dart';
+import 'package:test_reflective_loader/test_reflective_loader.dart';
+
+import '../../../generated/type_system_test.dart';
+
+main() {
+ defineReflectiveSuite(() {
+ defineReflectiveTests(FutureValueTypeTest);
+ });
+}
+
+@reflectiveTest
+class FutureValueTypeTest extends AbstractTypeSystemNullSafetyTest {
+ /// futureValueType(Future<`S`>) = `S`, for all `S`.
+ test_future() {
+ void check(DartType S, String expected) {
+ _check(futureNone(S), expected);
+ }
+
+ check(intNone, 'int');
+ check(intQuestion, 'int?');
+ check(intStar, 'int*');
+
+ check(dynamicNone, 'dynamic');
+ check(voidNone, 'void');
+
+ check(neverNone, 'Never');
+ check(neverQuestion, 'Never?');
+ check(neverStar, 'Never*');
+
+ check(objectNone, 'Object');
+ check(objectQuestion, 'Object?');
+ check(objectStar, 'Object*');
+ }
+
+ /// futureValueType(FutureOr<`S`>) = `S`, for all `S`.
+ test_futureOr() {
+ void check(DartType S, String expected) {
+ _check(futureOrNone(S), expected);
+ }
+
+ check(intNone, 'int');
+ check(intQuestion, 'int?');
+ check(intStar, 'int*');
+
+ check(dynamicNone, 'dynamic');
+ check(voidNone, 'void');
+
+ check(neverNone, 'Never');
+ check(neverQuestion, 'Never?');
+ check(neverStar, 'Never*');
+
+ check(objectNone, 'Object');
+ check(objectQuestion, 'Object?');
+ check(objectStar, 'Object*');
+ }
+
+ /// Otherwise, for all `S`, futureValueType(`S`) = `Object?`.
+ test_other() {
+ _check(objectNone, 'Object?');
+ _check(intNone, 'Object?');
+ }
+
+ /// futureValueType(`S?`) = futureValueType(`S`), for all `S`.
+ test_suffix_question() {
+ _check(intQuestion, 'Object?');
+
+ _check(futureQuestion(intNone), 'int');
+ _check(futureQuestion(intQuestion), 'int?');
+ _check(futureQuestion(intStar), 'int*');
+
+ _check(futureOrQuestion(intNone), 'int');
+ _check(futureOrQuestion(intQuestion), 'int?');
+ _check(futureOrQuestion(intStar), 'int*');
+
+ _check(futureQuestion(objectNone), 'Object');
+ _check(futureQuestion(objectQuestion), 'Object?');
+ _check(futureQuestion(objectStar), 'Object*');
+
+ _check(futureQuestion(dynamicNone), 'dynamic');
+ _check(futureQuestion(voidNone), 'void');
+ }
+
+ /// futureValueType(`S*`) = futureValueType(`S`), for all `S`.
+ test_suffix_star() {
+ _check(intStar, 'Object?');
+
+ _check(futureStar(intNone), 'int');
+ _check(futureStar(intQuestion), 'int?');
+ _check(futureStar(intStar), 'int*');
+
+ _check(futureOrStar(intNone), 'int');
+ _check(futureOrStar(intQuestion), 'int?');
+ _check(futureOrStar(intStar), 'int*');
+
+ _check(futureStar(objectNone), 'Object');
+ _check(futureStar(objectQuestion), 'Object?');
+ _check(futureStar(objectStar), 'Object*');
+
+ _check(futureStar(dynamicNone), 'dynamic');
+ _check(futureStar(voidNone), 'void');
+ }
+
+ /// futureValueType(`void`) = `void`.
+ test_void() {
+ _check(voidNone, 'void');
+ }
+
+ void _check(DartType T, String expected) {
+ var result = typeSystem.futureValueType(T);
+ expect(
+ result.getDisplayString(withNullability: true),
+ expected,
+ );
+ }
+}
diff --git a/pkg/analyzer/test/src/dart/element/test_all.dart b/pkg/analyzer/test/src/dart/element/test_all.dart
index ef6a0df..241aff8 100644
--- a/pkg/analyzer/test/src/dart/element/test_all.dart
+++ b/pkg/analyzer/test/src/dart/element/test_all.dart
@@ -9,6 +9,7 @@
import 'factor_type_test.dart' as factor_type;
import 'flatten_type_test.dart' as flatten_type;
import 'function_type_test.dart' as function_type;
+import 'future_value_type_test.dart' as future_value_type;
import 'generic_inferrer_test.dart' as generic_inferrer;
import 'inheritance_manager3_test.dart' as inheritance_manager3;
import 'least_upper_bound_helper_test.dart' as least_upper_bound_helper;
@@ -31,6 +32,7 @@
factor_type.main();
flatten_type.main();
function_type.main();
+ future_value_type.main();
generic_inferrer.main();
inheritance_manager3.main();
least_upper_bound_helper.main();
diff --git a/pkg/analyzer/test/src/dart/resolution/binary_expression_test.dart b/pkg/analyzer/test/src/dart/resolution/binary_expression_test.dart
index 27f64b1..2c276d8 100644
--- a/pkg/analyzer/test/src/dart/resolution/binary_expression_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/binary_expression_test.dart
@@ -67,6 +67,9 @@
element: null,
type: 'dynamic',
);
+
+ assertType(findNode.simple('a ==='), 'int');
+ assertType(findNode.simple('b;'), 'int');
}
test_ifNull() async {
diff --git a/pkg/analyzer/test/src/dart/resolution/mixin_test.dart b/pkg/analyzer/test/src/dart/resolution/mixin_test.dart
index 77d2705..2e7b45c 100644
--- a/pkg/analyzer/test/src/dart/resolution/mixin_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/mixin_test.dart
@@ -144,7 +144,7 @@
expect(element.isEnum, isFalse);
expect(element.isMixin, isTrue);
expect(element.isMixinApplication, isFalse);
- expect(interfaceTypeStar(element).isObject, isFalse);
+ expect(interfaceTypeStar(element).isDartCoreObject, isFalse);
expect(element.isDartCoreObject, isFalse);
assertElementTypes(element.superclassConstraints, [objectType]);
diff --git a/pkg/analyzer/test/src/dart/resolution/type_inference/function_expression_test.dart b/pkg/analyzer/test/src/dart/resolution/type_inference/function_expression_test.dart
index 32db6c1..fca62c4 100644
--- a/pkg/analyzer/test/src/dart/resolution/type_inference/function_expression_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/type_inference/function_expression_test.dart
@@ -3,7 +3,6 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analyzer/dart/analysis/features.dart';
-import 'package:analyzer/src/error/codes.dart';
import 'package:analyzer/src/generated/engine.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -18,6 +17,138 @@
@reflectiveTest
class FunctionExpressionTest extends DriverResolutionTest {
+ test_contextFunctionType_returnType_async_expressionBody() async {
+ await assertNoErrorsInCode('''
+Future<num> Function() v = () async => 0;
+''');
+ _assertReturnType('() async =>', 'Future<int>');
+ }
+
+ test_contextFunctionType_returnType_async_expressionBody2() async {
+ await assertNoErrorsInCode('''
+T foo<T>() => throw 0;
+
+Future<int> Function() v = () async => foo();
+''');
+ assertTypeArgumentTypes(
+ findNode.methodInvocation('foo();'),
+ ['FutureOr<int>'],
+ );
+ _assertReturnType('() async => foo', 'Future<int>');
+ }
+
+ test_contextFunctionType_returnType_async_expressionBody3() async {
+ await assertNoErrorsInCode('''
+Future<int> Function() v = () async => Future.value(0);
+''');
+ _assertReturnType('() async =>', 'Future<int>');
+ }
+
+ test_contextFunctionType_returnType_async_expressionBody_object() async {
+ await assertNoErrorsInCode('''
+T foo<T>() => throw 0;
+
+Object Function() v = () async => foo();
+''');
+ assertTypeArgumentTypes(
+ findNode.methodInvocation('foo();'),
+ ['FutureOr<Object>'],
+ );
+ _assertReturnType('() async => foo', 'Future<Object>');
+ }
+
+ test_contextFunctionType_returnType_asyncStar_blockBody() async {
+ await assertNoErrorsInCode('''
+Stream<num> Function() v = () async* {
+ yield 0;
+};
+''');
+ _assertReturnType('() async*', 'Stream<int>');
+ }
+
+ test_contextFunctionType_returnType_asyncStar_blockBody2() async {
+ await assertNoErrorsInCode('''
+T foo<T>() => throw 0;
+
+Stream<int> Function() v = () async* {
+ yield foo();
+};
+''');
+ assertTypeArgumentTypes(
+ findNode.methodInvocation('foo();'),
+ ['int'],
+ );
+ _assertReturnType('() async*', 'Stream<int>');
+ }
+
+ test_contextFunctionType_returnType_sync_blockBody() async {
+ await assertNoErrorsInCode('''
+num Function() v = () {
+ return 0;
+};
+''');
+ _assertReturnType('() {', 'int');
+ }
+
+ test_contextFunctionType_returnType_sync_blockBody2() async {
+ await assertNoErrorsInCode('''
+T foo<T>() => throw 0;
+
+int Function() v = () {
+ return foo();
+};
+''');
+ assertTypeArgumentTypes(
+ findNode.methodInvocation('foo();'),
+ ['int'],
+ );
+ _assertReturnType('() {', 'int');
+ }
+
+ test_contextFunctionType_returnType_sync_expressionBody() async {
+ await assertNoErrorsInCode('''
+num Function() v = () => 0;
+''');
+ _assertReturnType('() =>', 'int');
+ }
+
+ test_contextFunctionType_returnType_sync_expressionBody2() async {
+ await assertNoErrorsInCode('''
+T foo<T>() => throw 0;
+
+int Function() v = () => foo();
+''');
+ assertTypeArgumentTypes(
+ findNode.methodInvocation('foo();'),
+ ['int'],
+ );
+ _assertReturnType('() => foo', 'int');
+ }
+
+ test_contextFunctionType_returnType_syncStar_blockBody() async {
+ await assertNoErrorsInCode('''
+Iterable<num> Function() v = () sync* {
+ yield 0;
+};
+''');
+ _assertReturnType('() sync*', 'Iterable<int>');
+ }
+
+ test_contextFunctionType_returnType_syncStar_blockBody2() async {
+ await assertNoErrorsInCode('''
+T foo<T>() => throw 0;
+
+Iterable<int> Function() v = () sync* {
+ yield foo();
+};
+''');
+ assertTypeArgumentTypes(
+ findNode.methodInvocation('foo();'),
+ ['int'],
+ );
+ _assertReturnType('() sync*', 'Iterable<int>');
+ }
+
test_downward_argumentType_Never() async {
await assertNoErrorsInCode(r'''
void foo(void Function(Never) a) {}
@@ -54,7 +185,7 @@
);
}
- test_returnType_async_blockBody() async {
+ test_noContext_returnType_async_blockBody() async {
await resolveTestCode('''
var v = () async {
return 0;
@@ -63,35 +194,14 @@
_assertReturnType('() async {', 'Future<int>');
}
- test_returnType_async_blockBody_noReturn() async {
- await resolveTestCode('''
-var v = () async {};
-''');
- _assertReturnType('() async {', 'Future<Null>');
- }
-
- test_returnType_async_expressionBody() async {
+ test_noContext_returnType_async_expressionBody() async {
await resolveTestCode('''
var v = () async => 0;
''');
_assertReturnType('() async =>', 'Future<int>');
}
- test_returnType_async_expressionBody_flatten() async {
- await resolveTestCode('''
-var v = () async => Future.value(0);
-''');
- _assertReturnType('() async =>', 'Future<int>');
- }
-
- test_returnType_async_expressionBody_flatten2() async {
- await resolveTestCode('''
-var v = () async => Future.value(Future.value(0));
-''');
- _assertReturnType('() async =>', 'Future<int>');
- }
-
- test_returnType_asyncStar_blockBody_hasYield() async {
+ test_noContext_returnType_asyncStar_blockBody() async {
await resolveTestCode('''
var v = () async* {
yield 0;
@@ -100,14 +210,7 @@
_assertReturnType('() async* {', 'Stream<int>');
}
- test_returnType_asyncStar_blockBody_noYield() async {
- await resolveTestCode('''
-var v = () async* {};
-''');
- _assertReturnType('() async* {', 'Stream<dynamic>');
- }
-
- test_returnType_sync_blockBody() async {
+ test_noContext_returnType_sync_blockBody() async {
await resolveTestCode('''
var v = () {
return 0;
@@ -116,7 +219,7 @@
_assertReturnType('() {', 'int');
}
- test_returnType_sync_blockBody_notNullable() async {
+ test_noContext_returnType_sync_blockBody_notNullable() async {
await resolveTestCode('''
var v = (bool b) {
if (b) return 0;
@@ -126,14 +229,8 @@
_assertReturnType('(bool b) {', 'num');
}
- test_returnType_sync_blockBody_notNullable_switch_onEnum() async {
- var expectedErrors = expectedErrorsByNullability(
- nullable: [],
- legacy: [
- error(HintCode.MISSING_RETURN, 28, 102),
- ],
- );
- await assertErrorsInCode('''
+ test_noContext_returnType_sync_blockBody_notNullable_switch_onEnum() async {
+ await assertNoErrorsInCode('''
enum E { a, b }
main() {
@@ -146,22 +243,16 @@
}
};
}
-''', expectedErrors);
+''');
_assertReturnType('(E e) {', 'int');
}
- test_returnType_sync_blockBody_notNullable_switch_onEnum_imported() async {
+ test_noContext_returnType_sync_blockBody_notNullable_switch_onEnum_imported() async {
newFile('/test/lib/a.dart', content: r'''
enum E { a, b }
''');
- var expectedErrors = expectedErrorsByNullability(
- nullable: [],
- legacy: [
- error(HintCode.MISSING_RETURN, 34, 108),
- ],
- );
- await assertErrorsInCode('''
+ await assertNoErrorsInCode('''
import 'a.dart' as p;
main() {
@@ -174,11 +265,11 @@
}
};
}
-''', expectedErrors);
+''');
_assertReturnType('(p.E e) {', 'int');
}
- test_returnType_sync_blockBody_null_hasReturn() async {
+ test_noContext_returnType_sync_blockBody_null_hasReturn() async {
await resolveTestCode('''
var v = (bool b) {
if (b) return;
@@ -187,14 +278,14 @@
_assertReturnType('(bool b) {', 'Null');
}
- test_returnType_sync_blockBody_null_noReturn() async {
+ test_noContext_returnType_sync_blockBody_null_noReturn() async {
await resolveTestCode('''
var v = () {};
''');
_assertReturnType('() {}', 'Null');
}
- test_returnType_sync_blockBody_nullable() async {
+ test_noContext_returnType_sync_blockBody_nullable() async {
await resolveTestCode('''
var v = (bool b) {
if (b) return 0;
@@ -206,14 +297,8 @@
);
}
- test_returnType_sync_blockBody_nullable_switch() async {
- var expectedErrors = expectedErrorsByNullability(
- nullable: [],
- legacy: [
- error(HintCode.MISSING_RETURN, 11, 68),
- ],
- );
- await assertErrorsInCode('''
+ test_noContext_returnType_sync_blockBody_nullable_switch() async {
+ await assertNoErrorsInCode('''
main() {
(int a) {
switch (a) {
@@ -222,14 +307,14 @@
}
};
}
-''', expectedErrors);
+''');
_assertReturnType(
'(int a) {',
typeStringByNullability(nullable: 'int?', legacy: 'int'),
);
}
- test_returnType_sync_expressionBody_Never() async {
+ test_noContext_returnType_sync_expressionBody_Never() async {
await resolveTestCode('''
var v = () => throw 42;
''');
@@ -239,21 +324,24 @@
);
}
- test_returnType_sync_expressionBody_notNullable() async {
+ test_noContext_returnType_sync_expressionBody_notNullable() async {
await resolveTestCode('''
var v = () => 42;
''');
_assertReturnType('() =>', 'int');
}
- test_returnType_sync_expressionBody_Null() async {
+ test_noContext_returnType_sync_expressionBody_Null() async {
await resolveTestCode('''
-var v = () => null;
+main() {
+ var v = () => null;
+ v;
+}
''');
_assertReturnType('() =>', 'Null');
}
- test_returnType_syncStar_blockBody_hasYield() async {
+ test_noContext_returnType_syncStar_blockBody() async {
await resolveTestCode('''
var v = () sync* {
yield 0;
@@ -262,13 +350,6 @@
_assertReturnType('() sync* {', 'Iterable<int>');
}
- test_returnType_syncStar_blockBody_noYield() async {
- await resolveTestCode('''
-var v = () sync* {};
-''');
- _assertReturnType('() sync* {', 'Iterable<dynamic>');
- }
-
void _assertReturnType(String search, String expected) {
var element = findNode.functionExpression(search).declaredElement;
assertType(element.returnType, expected);
@@ -285,7 +366,46 @@
@override
bool get typeToStringWithNullability => true;
- test_optOut_returnType_expressionBody_Null() async {
+ test_contextFunctionType_returnType_async_blockBody_objectQ() async {
+ await assertNoErrorsInCode('''
+T foo<T>() => throw 0;
+
+Object? Function() v = () async {
+ return foo();
+};
+''');
+ assertTypeArgumentTypes(
+ findNode.methodInvocation('foo();'),
+ ['FutureOr<Object?>'],
+ );
+ _assertReturnType('() async', 'Future<Object?>');
+ }
+
+ test_contextFunctionType_returnType_async_blockBody_objectQ2() async {
+ await assertNoErrorsInCode('''
+T foo<T>() => throw 0;
+
+Object? Function() v = () async {
+ return;
+};
+''');
+ _assertReturnType('() async', 'Future<Null>');
+ }
+
+ test_contextFunctionType_returnType_async_expressionBody_objectQ() async {
+ await assertNoErrorsInCode('''
+T foo<T>() => throw 0;
+
+Object? Function() v = () async => foo();
+''');
+ assertTypeArgumentTypes(
+ findNode.methodInvocation('foo();'),
+ ['FutureOr<Object?>'],
+ );
+ _assertReturnType('() async => foo', 'Future<Object?>');
+ }
+
+ test_optOut_downward_returnType_expressionBody_Null() async {
newFile('/test/lib/a.dart', content: r'''
void foo(Map<String, String> Function() f) {}
''');
diff --git a/pkg/analyzer/test/src/diagnostics/missing_return_test.dart b/pkg/analyzer/test/src/diagnostics/missing_return_test.dart
index 8137050..3441f21 100644
--- a/pkg/analyzer/test/src/diagnostics/missing_return_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/missing_return_test.dart
@@ -31,43 +31,7 @@
}''');
}
- test_async() async {
- await assertErrorsInCode(r'''
-import 'dart:async';
-Future<int> f() async {}
-''', [
- error(HintCode.MISSING_RETURN, 33, 1),
- ]);
- }
-
- test_async_futureOrVoid() async {
- await assertNoErrorsInCode(r'''
-import 'dart:async';
-FutureOr<void> f(Future f) async {}
-''');
- }
-
- test_async_futureVoid() async {
- await assertNoErrorsInCode(r'''
-import 'dart:async';
-Future<void> f() async {}
-''');
- }
-
- test_emptyFunctionBody() async {
- await assertNoErrorsInCode(r'''
-abstract class A {
- int m();
-}''');
- }
-
- test_expressionFunctionBody() async {
- await assertNoErrorsInCode(r'''
-int f() => 0;
-''');
- }
-
- test_factory() async {
+ test_constructor_factory() async {
await assertErrorsInCode(r'''
class A {
factory A() {}
@@ -77,7 +41,34 @@
]);
}
- test_function() async {
+ test_function_async_block_futureInt() async {
+ await assertErrorsInCode(r'''
+Future<int> f() async {}
+''', [
+ error(HintCode.MISSING_RETURN, 12, 1),
+ ]);
+ }
+
+ test_function_async_block_futureOrVoid() async {
+ await assertNoErrorsInCode(r'''
+import 'dart:async';
+FutureOr<void> f(Future f) async {}
+''');
+ }
+
+ test_function_async_block_futureVoid() async {
+ await assertNoErrorsInCode(r'''
+Future<void> f() async {}
+''');
+ }
+
+ test_function_sync_block_expression() async {
+ await assertNoErrorsInCode(r'''
+int f() => 0;
+''');
+ }
+
+ test_function_sync_block_int() async {
await assertErrorsInCode(r'''
int f() {}
''', [
@@ -85,92 +76,120 @@
]);
}
- test_functionExpression_declared() async {
+ test_function_sync_block_noReturnType() async {
+ await assertNoErrorsInCode(r'''
+f() {}
+''');
+ }
+
+ test_function_sync_block_void() async {
+ await assertNoErrorsInCode(r'''
+void f() {}
+''');
+ }
+
+ test_functionExpression_async_block_dynamic() async {
+ await assertNoErrorsInCode(r'''
+Future Function() f = () async {};
+''');
+ }
+
+ test_functionExpression_async_block_futureInt() async {
await assertErrorsInCode(r'''
-main() {
- f() {} // no hint
-}
+Future<int> Function() f = () async {};
''', [
- error(HintCode.UNUSED_ELEMENT, 11, 1),
+ error(HintCode.MISSING_RETURN, 27, 11),
]);
}
- test_functionExpression_expression() async {
- await assertErrorsInCode(r'''
-main() {
- int Function() f = () => null; // no hint
-}
-''', [
- error(HintCode.UNUSED_LOCAL_VARIABLE, 26, 1),
- ]);
+ test_functionExpression_async_block_void() async {
+ await assertNoErrorsInCode(r'''
+void Function(bool) v = (bool a) async {
+ if (a) {
+ return 0;
+ }
+};
+''');
}
- test_functionExpression_futureOrDynamic() async {
+ test_functionExpression_sync_block_futureOrDynamic() async {
+ await assertNoErrorsInCode(r'''
+import 'dart:async';
+
+FutureOr<dynamic> Function() f = () {};
+''');
+ }
+
+ test_functionExpression_sync_block_futureOrInt() async {
await assertErrorsInCode(r'''
import 'dart:async';
-main() {
- FutureOr<dynamic> Function() f = () { print(42); };
-}
+
+FutureOr<int> Function() f = () {};
''', [
- error(HintCode.UNUSED_LOCAL_VARIABLE, 61, 1),
+ error(HintCode.MISSING_RETURN, 51, 5),
]);
}
- test_functionExpression_futureOrInt() async {
+ test_functionExpression_sync_block_int() async {
+ await assertErrorsInCode(r'''
+int Function() f = () {};
+''', [
+ error(HintCode.MISSING_RETURN, 19, 5),
+ ]);
+ }
+
+ test_functionExpression_sync_dynamic() async {
+ await assertNoErrorsInCode(r'''
+Function() f = () {};
+''');
+ }
+
+ test_functionExpression_sync_expression() async {
+ await assertNoErrorsInCode(r'''
+int Function() f = () => null;
+''');
+ }
+
+ test_localFunction_sync_dynamic() async {
+ await assertNoErrorsInCode(r'''
+main() {
+ f() {}
+ f;
+}
+''');
+ }
+
+ test_method_emptyFunctionBody() async {
+ await assertNoErrorsInCode(r'''
+abstract class A {
+ int m();
+}
+''');
+ }
+
+ test_method_sync_block_futureOrDynamic() async {
+ await assertNoErrorsInCode(r'''
+import 'dart:async';
+
+class A {
+ FutureOr<dynamic> m() {}
+}
+''');
+ }
+
+ test_method_sync_block_futureOrInt() async {
await assertErrorsInCode(r'''
import 'dart:async';
-main() {
- FutureOr<int> Function() f = () { print(42); };
+
+class A {
+ FutureOr<int> m() {}
}
''', [
- error(HintCode.UNUSED_LOCAL_VARIABLE, 57, 1),
- error(HintCode.MISSING_RETURN, 61, 17),
+ error(HintCode.MISSING_RETURN, 48, 1),
]);
}
- test_functionExpression_inferred() async {
- await assertErrorsInCode(r'''
-main() {
- int Function() f = () { print(42); };
-}
-''', [
- error(HintCode.UNUSED_LOCAL_VARIABLE, 26, 1),
- error(HintCode.MISSING_RETURN, 30, 17),
- ]);
- }
-
- test_functionExpression_inferred_dynamic() async {
- await assertErrorsInCode(r'''
-main() {
- Function() f = () { print(42); }; // no hint
-}
-''', [
- error(HintCode.UNUSED_LOCAL_VARIABLE, 22, 1),
- ]);
- }
-
- test_functionExpressionAsync_inferred() async {
- await assertErrorsInCode(r'''
-main() {
- Future<int> Function() f = () async { print(42); };
-}
-''', [
- error(HintCode.UNUSED_LOCAL_VARIABLE, 34, 1),
- error(HintCode.MISSING_RETURN, 38, 23),
- ]);
- }
-
- test_functionExpressionAsync_inferred_dynamic() async {
- await assertErrorsInCode(r'''
-main() {
- Future Function() f = () async { print(42); }; // no hint
-}
-''', [
- error(HintCode.UNUSED_LOCAL_VARIABLE, 29, 1),
- ]);
- }
-
- test_method() async {
+ test_method_sync_block_int() async {
await assertErrorsInCode(r'''
class A {
int m() {}
@@ -180,62 +199,17 @@
]);
}
- test_method_annotation() async {
+ test_method_sync_block_int_inferred() async {
await assertErrorsInCode(r'''
abstract class A {
int m();
}
-@override
+
class B extends A {
m() {}
}
''', [
- error(HintCode.MISSING_RETURN, 64, 1),
+ error(HintCode.MISSING_RETURN, 55, 1),
]);
}
-
- test_method_futureOrDynamic() async {
- await assertNoErrorsInCode(r'''
-import 'dart:async';
-class A {
- FutureOr<dynamic> m() {}
-}
-''');
- }
-
- test_method_futureOrInt() async {
- await assertErrorsInCode(r'''
-import 'dart:async';
-class A {
- FutureOr<int> m() {}
-}
-''', [
- error(HintCode.MISSING_RETURN, 47, 1),
- ]);
- }
-
- test_method_inferred() async {
- await assertErrorsInCode(r'''
-abstract class A {
- int m();
-}
-class B extends A {
- m() {}
-}
-''', [
- error(HintCode.MISSING_RETURN, 54, 1),
- ]);
- }
-
- test_noReturnType() async {
- await assertNoErrorsInCode(r'''
-f() {}
-''');
- }
-
- test_voidReturnType() async {
- await assertNoErrorsInCode(r'''
-void f() {}
-''');
- }
}
diff --git a/pkg/analyzer/test/src/diagnostics/return_in_generator_test.dart b/pkg/analyzer/test/src/diagnostics/return_in_generator_test.dart
index d966a00..5cfd8b3 100644
--- a/pkg/analyzer/test/src/diagnostics/return_in_generator_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/return_in_generator_test.dart
@@ -23,7 +23,7 @@
''');
}
- test_asyncStar() async {
+ test_asyncStar_blockBody() async {
await assertErrorsInCode(r'''
f() async* {
return 0;
@@ -34,7 +34,7 @@
]);
}
- test_asyncStar_no_return_value() async {
+ test_asyncStar_blockBody_noValue() async {
await assertNoErrorsInCode('''
import 'dart:async';
Stream<int> f() async* {
@@ -43,6 +43,14 @@
''');
}
+ test_asyncStar_expressionBody() async {
+ await assertErrorsInCode(r'''
+f() async* => 0;
+''', [
+ error(CompileTimeErrorCode.RETURN_IN_GENERATOR, 11, 2),
+ ]);
+ }
+
test_sync() async {
await assertNoErrorsInCode(r'''
f() {
@@ -51,7 +59,7 @@
''');
}
- test_syncStar() async {
+ test_syncStar_blockBody() async {
await assertErrorsInCode(r'''
f() sync* {
return 0;
@@ -62,11 +70,19 @@
]);
}
- test_syncStar_no_return_value() async {
+ test_syncStar_blockBody_noValue() async {
await assertNoErrorsInCode('''
Iterable<int> f() sync* {
return;
}
''');
}
+
+ test_syncStar_expressionBody() async {
+ await assertErrorsInCode(r'''
+f() sync* => 0;
+''', [
+ error(CompileTimeErrorCode.RETURN_IN_GENERATOR, 10, 2),
+ ]);
+ }
}
diff --git a/pkg/analyzer/test/src/diagnostics/return_of_invalid_type_test.dart b/pkg/analyzer/test/src/diagnostics/return_of_invalid_type_test.dart
index 7f9667b..9d0f9b7 100644
--- a/pkg/analyzer/test/src/diagnostics/return_of_invalid_type_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/return_of_invalid_type_test.dart
@@ -15,30 +15,36 @@
@reflectiveTest
class ReturnOfInvalidTypeTest extends DriverResolutionTest {
- test_async_future_future_int_mismatches_future_int() async {
+ test_function_async_block__to_Future_void() async {
+ await assertNoErrorsInCode(r'''
+Future<void> f1() async {}
+Future<void> f2() async { return; }
+Future<void> f3() async { return null; }
+Future<void> f4() async { return g1(); }
+Future<void> f5() async { return g2(); }
+g1() {}
+void g2() {}
+''');
+ }
+
+ test_function_async_block_Future_Future_int__to_Future_int() async {
await assertErrorsInCode('''
-import 'dart:async';
-Future<int> f() async {
- return g();
+Future<int> f(Future<Future<int>> a) async {
+ return a;
}
-Future<Future<int>> g() => null;
''', [
- error(StaticTypeWarningCode.RETURN_OF_INVALID_TYPE_FROM_FUNCTION, 54, 3),
+ error(StaticTypeWarningCode.RETURN_OF_INVALID_TYPE_FROM_FUNCTION, 54, 1),
]);
}
- test_async_future_int_mismatches_future_string() async {
- await assertErrorsInCode('''
-import 'dart:async';
-Future<String> f() async {
- return 5;
-}
-''', [
- error(StaticTypeWarningCode.RETURN_OF_INVALID_TYPE_FROM_FUNCTION, 57, 1),
- ]);
+ test_function_async_block_Future_void() async {
+ await assertNoErrorsInCode('''
+void f1(Future<void> a) async { return a; }
+dynamic f2(Future<void> a) async { return a; }
+''');
}
- test_async_future_int_mismatches_int() async {
+ test_function_async_block_illegalReturnType() async {
await assertErrorsInCode('''
int f() async {
return 5;
@@ -48,173 +54,137 @@
]);
}
- test_expressionFunctionBody_function() async {
- await assertErrorsInCode('''
-int f() => '0';
-''', [
- error(StaticTypeWarningCode.RETURN_OF_INVALID_TYPE_FROM_FUNCTION, 11, 3),
- ]);
+ test_function_async_block_int__to_Future_int() async {
+ await assertNoErrorsInCode(r'''
+Future<int> f() async {
+ return 0;
+}
+''');
}
- test_expressionFunctionBody_getter() async {
- await assertErrorsInCode('''
-int get g => '0';
-''', [
- error(StaticTypeWarningCode.RETURN_OF_INVALID_TYPE_FROM_FUNCTION, 13, 3),
- ]);
+ test_function_async_block_int__to_Future_num() async {
+ await assertNoErrorsInCode(r'''
+Future<num> f() async {
+ return 0;
+}
+''');
}
- test_expressionFunctionBody_localFunction() async {
- await assertErrorsInCode(r'''
-class A {
- String m() {
- int f() => '0';
- return '0';
- }
+ test_function_async_block_int__to_Future_String() async {
+ await assertErrorsInCode('''
+Future<String> f() async {
+ return 5;
}
''', [
- error(HintCode.UNUSED_ELEMENT, 33, 1),
- error(StaticTypeWarningCode.RETURN_OF_INVALID_TYPE_FROM_FUNCTION, 40, 3),
+ error(StaticTypeWarningCode.RETURN_OF_INVALID_TYPE_FROM_FUNCTION, 36, 1),
]);
}
- test_expressionFunctionBody_method() async {
- await assertErrorsInCode(r'''
-class A {
- int f() => '0';
+ test_function_async_block_int__to_Future_void() async {
+ await assertNoErrorsInCode(r'''
+Future<void> f() async {
+ return 0;
+}
+''');
+ }
+
+ test_function_async_block_int__to_void() async {
+ await assertErrorsInCode('''
+void f() async {
+ return 5;
}
''', [
- error(StaticTypeWarningCode.RETURN_OF_INVALID_TYPE_FROM_METHOD, 23, 3),
+ error(StaticTypeWarningCode.RETURN_OF_INVALID_TYPE_FROM_FUNCTION, 26, 1),
]);
}
- test_function() async {
+ test_function_async_block_void__to_dynamic() async {
+ await assertNoErrorsInCode('''
+dynamic f(void a) async {
+ return a;
+}
+''');
+ }
+
+ test_function_async_block_void__to_Future_int() async {
await assertErrorsInCode('''
-int f() { return '0'; }
+Future<int> f(void a) async {
+ return a;
+}
''', [
- error(StaticTypeWarningCode.RETURN_OF_INVALID_TYPE_FROM_FUNCTION, 17, 3),
+ error(StaticTypeWarningCode.RETURN_OF_INVALID_TYPE_FROM_FUNCTION, 39, 1),
]);
}
- test_getter() async {
+ test_function_async_block_void__to_void() async {
+ await assertNoErrorsInCode('''
+void f(void a) async {
+ return a;
+}
+''');
+ }
+
+ test_function_sync_block__to_dynamic() async {
+ await assertNoErrorsInCode(r'''
+f() {
+ try {
+ return 0;
+ } on ArgumentError {
+ return 'abc';
+ }
+}
+''');
+ }
+
+ test_function_sync_block__to_void() async {
+ await assertNoErrorsInCode(r'''
+void f1() {}
+void f2() { return; }
+void f3() { return null; }
+void f4() { return g1(); }
+void f5() { return g2(); }
+g1() {}
+void g2() {}
+''');
+ }
+
+ test_function_sync_block_int__to_num() async {
+ await assertNoErrorsInCode(r'''
+num f(int a) {
+ return a;
+}
+''');
+ }
+
+ test_function_sync_block_int__to_void() async {
await assertErrorsInCode('''
-int get g { return '0'; }
+void f() {
+ return 42;
+}
+''', [
+ error(StaticTypeWarningCode.RETURN_OF_INVALID_TYPE_FROM_FUNCTION, 20, 2),
+ ]);
+ }
+
+ test_function_sync_block_num__to_int() async {
+ await assertNoErrorsInCode(r'''
+int f(num a) {
+ return a;
+}
+''');
+ }
+
+ test_function_sync_block_String__to_int() async {
+ await assertErrorsInCode('''
+int f() {
+ return '0';
+}
''', [
error(StaticTypeWarningCode.RETURN_OF_INVALID_TYPE_FROM_FUNCTION, 19, 3),
]);
}
- test_localFunction() async {
- await assertErrorsInCode(r'''
-class A {
- String m() {
- int f() { return '0'; }
- return '0';
- }
-}
-''', [
- error(HintCode.UNUSED_ELEMENT, 33, 1),
- error(StaticTypeWarningCode.RETURN_OF_INVALID_TYPE_FROM_FUNCTION, 46, 3),
- ]);
- }
-
- test_method() async {
- await assertErrorsInCode(r'''
-class A {
- int f() { return '0'; }
-}
-''', [
- error(StaticTypeWarningCode.RETURN_OF_INVALID_TYPE_FROM_METHOD, 29, 3),
- ]);
- }
-
- test_not_issued_for_expressionFunctionBody_void() async {
- await assertNoErrorsInCode('''
-void f() => 42;
-''');
- }
-
- test_not_issued_for_valid_generic_return() async {
- await assertNoErrorsInCode(r'''
-abstract class F<T, U> {
- U get value;
-}
-
-abstract class G<T> {
- T test(F<int, T> arg) => arg.value;
-}
-
-abstract class H<S> {
- S test(F<int, S> arg) => arg.value;
-}
-
-void main() { }
-''');
- }
-
- test_valid_async() async {
- await assertNoErrorsInCode(r'''
-import 'dart:async';
-class A {
- Future<int> m() async {
- return 0;
- }
-}
-''');
- }
-
- @FailingTest(issue: 'https://github.com/dart-lang/sdk/issues/38162')
- test_valid_async_callable_class() async {
- await assertNoErrorsInCode(r'''
-typedef Fn = void Function(String s);
-
-class CanFn {
- void call(String s) => print(s);
-}
-
-Future<Fn> f() async {
- return CanFn();
-}
-''');
- }
-
- test_valid_dynamic() async {
- await assertErrorsInCode(r'''
-class TypeError {}
-class A {
- static void testLogicalOp() {
- testOr(a, b, onTypeError) {
- try {
- return a || b;
- } on TypeError catch (t) {
- return onTypeError;
- }
- }
- }
-}
-''', [
- error(HintCode.UNUSED_ELEMENT, 65, 6),
- error(HintCode.UNUSED_CATCH_CLAUSE, 156, 1),
- ]);
- }
-
- test_valid_subtype() async {
- await assertNoErrorsInCode(r'''
-class A {}
-class B extends A {}
-A f(B b) { return b; }
-''');
- }
-
- test_valid_supertype() async {
- await assertNoErrorsInCode(r'''
-class A {}
-class B extends A {}
-B f(A a) { return a; }
-''');
- }
-
- test_valid_typeParameter_18468() async {
+ test_function_sync_block_typeParameter__to_Type() async {
// https://code.google.com/p/dart/issues/detail?id=18468
//
// This test verifies that the type of T is more specific than Type, where T
@@ -232,22 +202,129 @@
''');
}
- test_valid_void() async {
- await assertNoErrorsInCode(r'''
-void f1() {}
-void f2() { return; }
-void f3() { return null; }
-void f4() { return g1(); }
-void f5() { return g2(); }
-void f6() => throw 42;
-g1() {}
-void g2() {}
+ test_function_sync_block_void() async {
+ await assertNoErrorsInCode('''
+void a;
+void f1() { return a; }
+dynamic f2() { return a; }
+Null f3() { return a; }
''');
}
- test_void() async {
- await assertErrorsInCode("void f() { return 42; }", [
- error(StaticTypeWarningCode.RETURN_OF_INVALID_TYPE_FROM_FUNCTION, 18, 2),
+ test_function_sync_block_void__to_int() async {
+ await assertErrorsInCode('''
+int f(void a) {
+ return a;
+}
+''', [
+ error(StaticTypeWarningCode.RETURN_OF_INVALID_TYPE_FROM_FUNCTION, 25, 1),
+ ]);
+ }
+
+ test_function_sync_expression_int__to_void() async {
+ await assertNoErrorsInCode('''
+void f() => 42;
+''');
+ }
+
+ test_function_sync_expression_String__to_int() async {
+ await assertErrorsInCode('''
+int f() => '0';
+''', [
+ error(StaticTypeWarningCode.RETURN_OF_INVALID_TYPE_FROM_FUNCTION, 11, 3),
+ ]);
+ }
+
+ test_getter_sync_block_String__to_int() async {
+ await assertErrorsInCode('''
+int get g {
+ return '0';
+}
+''', [
+ error(StaticTypeWarningCode.RETURN_OF_INVALID_TYPE_FROM_FUNCTION, 21, 3),
+ ]);
+ }
+
+ test_getter_sync_expression_String__to_int() async {
+ await assertErrorsInCode('''
+int get g => '0';
+''', [
+ error(StaticTypeWarningCode.RETURN_OF_INVALID_TYPE_FROM_FUNCTION, 13, 3),
+ ]);
+ }
+
+ test_localFunction_sync_block_String__to_int() async {
+ await assertErrorsInCode(r'''
+void f() {
+ int g() {
+ return '0';
+ }
+ g();
+}
+''', [
+ error(StaticTypeWarningCode.RETURN_OF_INVALID_TYPE_FROM_FUNCTION, 34, 3),
+ ]);
+ }
+
+ test_localFunction_sync_expression_String__to_int() async {
+ await assertErrorsInCode(r'''
+class A {
+ void m() {
+ int f() => '0';
+ f();
+ }
+}
+''', [
+ error(StaticTypeWarningCode.RETURN_OF_INVALID_TYPE_FROM_FUNCTION, 38, 3),
+ ]);
+ }
+
+ @FailingTest(issue: 'https://github.com/dart-lang/sdk/issues/38162')
+ test_method_async_block_callable_class() async {
+ await assertNoErrorsInCode(r'''
+typedef Fn = void Function(String s);
+
+class CanFn {
+ void call(String s) => print(s);
+}
+
+Future<Fn> f() async {
+ return CanFn();
+}
+''');
+ }
+
+ test_method_sync_block_String__to_int() async {
+ await assertErrorsInCode(r'''
+class A {
+ int m() {
+ return '0';
+ }
+}
+''', [
+ error(StaticTypeWarningCode.RETURN_OF_INVALID_TYPE_FROM_METHOD, 33, 3),
+ ]);
+ }
+
+ test_method_sync_expression_generic() async {
+ await assertNoErrorsInCode(r'''
+abstract class F<T> {
+ T get value;
+}
+
+abstract class G<U> {
+ U test(F<U> arg) => arg.value;
+}
+''');
+ }
+
+ test_method_sync_expression_String__to_int() async {
+ await assertErrorsInCode(r'''
+class A {
+ int f() => '0';
+}
+''', [
+ error(StaticTypeWarningCode.RETURN_OF_INVALID_TYPE_FROM_METHOD, 23, 3),
]);
}
}
diff --git a/pkg/analyzer/test/src/diagnostics/return_without_value_test.dart b/pkg/analyzer/test/src/diagnostics/return_without_value_test.dart
index 471aef7..b10c167 100644
--- a/pkg/analyzer/test/src/diagnostics/return_without_value_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/return_without_value_test.dart
@@ -15,66 +15,98 @@
@reflectiveTest
class ReturnWithoutValueTest extends DriverResolutionTest {
- test_async() async {
+ test_async_futureInt() async {
await assertErrorsInCode('''
-import 'dart:async';
Future<int> f() async {
return;
}
''', [
- error(StaticWarningCode.RETURN_WITHOUT_VALUE, 47, 6),
+ error(StaticWarningCode.RETURN_WITHOUT_VALUE, 26, 6),
]);
}
- test_async_future_object_with_return() async {
+ test_async_futureObject() async {
await assertErrorsInCode('''
-import 'dart:async';
Future<Object> f() async {
return;
}
''', [
- error(StaticWarningCode.RETURN_WITHOUT_VALUE, 50, 6),
+ error(StaticWarningCode.RETURN_WITHOUT_VALUE, 29, 6),
]);
}
test_factoryConstructor() async {
await assertErrorsInCode('''
-class A { factory A() { return; } }
+class A {
+ factory A() {
+ return;
+ }
+}
''', [
- error(StaticWarningCode.RETURN_WITHOUT_VALUE, 24, 6),
+ error(StaticWarningCode.RETURN_WITHOUT_VALUE, 30, 6),
]);
}
test_function() async {
await assertErrorsInCode('''
-int f() { return; }
+int f() {
+ return;
+}
''', [
- error(StaticWarningCode.RETURN_WITHOUT_VALUE, 10, 6),
+ error(StaticWarningCode.RETURN_WITHOUT_VALUE, 12, 6),
]);
}
- test_localFunction() async {
- await assertErrorsInCode('''
-class C {
- m(int x) {
- return (int y) {
- if (y < 0) {
- return;
- }
- return 0;
- };
+ test_function_dynamic() async {
+ await assertNoErrorsInCode('''
+f() {
+ return;
+}
+''');
}
+
+ test_function_Null() async {
+ // Test that block bodied functions with return type Null and an empty
+ // return cause a static warning.
+ await assertNoErrorsInCode('''
+Null f() {
+ return;
+}
+''');
+ }
+
+ test_function_void() async {
+ await assertNoErrorsInCode('''
+void f() {
+ return;
+}
+''');
+ }
+
+ test_functionExpression() async {
+ await assertErrorsInCode('''
+f() {
+ return (int y) {
+ if (y < 0) {
+ return;
+ }
+ return 0;
+ };
}
''', [
- error(StaticWarningCode.RETURN_WITHOUT_VALUE, 71, 6),
+ error(StaticWarningCode.RETURN_WITHOUT_VALUE, 48, 6),
]);
}
test_method() async {
await assertErrorsInCode('''
-class A { int m() { return; } }
+class A {
+ int m() {
+ return;
+ }
+}
''', [
- error(StaticWarningCode.RETURN_WITHOUT_VALUE, 20, 6),
+ error(StaticWarningCode.RETURN_WITHOUT_VALUE, 26, 6),
]);
}
@@ -92,26 +124,4 @@
error(StaticWarningCode.RETURN_WITHOUT_VALUE, 50, 6),
]);
}
-
- test_noReturnType() async {
- await assertNoErrorsInCode('''
-f() { return; }
-''');
- }
-
- test_Null() async {
- // Test that block bodied functions with return type Null and an empty
- // return cause a static warning.
- await assertNoErrorsInCode('''
-Null f() {
- return;
-}
-''');
- }
-
- test_void() async {
- await assertNoErrorsInCode('''
-void f() { return; }
-''');
- }
}
diff --git a/pkg/analyzer/test/src/summary/element_text.dart b/pkg/analyzer/test/src/summary/element_text.dart
index 227d445..a2fd724 100644
--- a/pkg/analyzer/test/src/summary/element_text.dart
+++ b/pkg/analyzer/test/src/summary/element_text.dart
@@ -1045,7 +1045,7 @@
}
writeName(e);
writeCodeRange(e);
- if (e.bound != null && !e.bound.isObject) {
+ if (e.bound != null && !e.bound.isDartCoreObject) {
buffer.write(' extends ');
writeType(e.bound);
}
diff --git a/pkg/analyzer/test/src/task/strong/inferred_type_test.dart b/pkg/analyzer/test/src/task/strong/inferred_type_test.dart
index 533cc72..2da885b 100644
--- a/pkg/analyzer/test/src/task/strong/inferred_type_test.dart
+++ b/pkg/analyzer/test/src/task/strong/inferred_type_test.dart
@@ -17,36 +17,19 @@
void main() {
defineReflectiveSuite(() {
defineReflectiveTests(InferredTypeTest);
- defineReflectiveTests(InferredTypeTest_SetLiterals);
});
}
-mixin InferredTypeMixin {
- /// Extra top-level errors if needed due to being analyze multiple times.
- bool get hasExtraTaskModelPass => true;
-
- /**
- * If `true` then types of local elements may be checked.
- */
- bool get mayCheckTypesOfLocals;
-
- /**
- * Add a new file with the given [name] and [content].
- */
- void addFile(String content, {String name = '/main.dart'});
-
- /**
- * Add the file, process it (resolve, validate, etc) and return the resolved
- * unit.
- */
- Future<CompilationUnit> checkFile(String content,
- {bool implicitCasts = true, bool implicitDynamic = true});
-
+@reflectiveTest
+class InferredTypeTest extends AbstractStrongTest {
/**
* Add the file, process it (resolve, validate, etc) and return the resolved
* unit element.
*/
- Future<CompilationUnitElement> checkFileElement(String content);
+ Future<CompilationUnitElement> checkFileElement(String content) async {
+ CompilationUnit unit = await checkFile(content);
+ return unit.declaredElement;
+ }
test_asyncClosureReturnType_flatten() async {
var mainUnit = await checkFileElement('''
@@ -94,9 +77,6 @@
}
test_blockBodiedLambdas_async_allReturnsAreFutures() async {
- if (!mayCheckTypesOfLocals) {
- return;
- }
var unit = await checkFile(r'''
import 'dart:async';
import 'dart:math' show Random;
@@ -117,9 +97,6 @@
}
test_blockBodiedLambdas_async_allReturnsAreValues() async {
- if (!mayCheckTypesOfLocals) {
- return;
- }
var unit = await checkFile(r'''
import 'dart:async';
import 'dart:math' show Random;
@@ -140,9 +117,6 @@
}
test_blockBodiedLambdas_async_mixOfValuesAndFutures() async {
- if (!mayCheckTypesOfLocals) {
- return;
- }
var unit = await checkFile(r'''
import 'dart:async';
import 'dart:math' show Random;
@@ -163,9 +137,6 @@
}
test_blockBodiedLambdas_asyncStar() async {
- if (!mayCheckTypesOfLocals) {
- return;
- }
var unit = await checkFile(r'''
import 'dart:async';
main() {
@@ -193,9 +164,6 @@
}
test_blockBodiedLambdas_downwardsIncompatibleWithUpwardsInference() async {
- if (!mayCheckTypesOfLocals) {
- return;
- }
var unit = await checkFile(r'''
main() {
String f() => null;
@@ -217,9 +185,6 @@
}
test_blockBodiedLambdas_inferBottom_async() async {
- if (!mayCheckTypesOfLocals) {
- return;
- }
var unit = await checkFile(r'''
import 'dart:async';
main() async {
@@ -234,9 +199,6 @@
}
test_blockBodiedLambdas_inferBottom_asyncStar() async {
- if (!mayCheckTypesOfLocals) {
- return;
- }
var unit = await checkFile(r'''
import 'dart:async';
main() async {
@@ -251,9 +213,6 @@
}
test_blockBodiedLambdas_inferBottom_sync() async {
- if (!mayCheckTypesOfLocals) {
- return;
- }
var unit = await checkFile(r'''
var h = null;
void foo(int g(Object _)) {}
@@ -274,9 +233,6 @@
}
test_blockBodiedLambdas_inferBottom_syncStar() async {
- if (!mayCheckTypesOfLocals) {
- return;
- }
var unit = await checkFile(r'''
main() {
var f = () sync* { yield null; };
@@ -308,9 +264,6 @@
}
test_blockBodiedLambdas_nestedLambdas() async {
- if (!mayCheckTypesOfLocals) {
- return;
- }
// Original feature request: https://github.com/dart-lang/sdk/issues/25487
var unit = await checkFile(r'''
main() {
@@ -324,9 +277,6 @@
}
test_blockBodiedLambdas_noReturn() async {
- if (!mayCheckTypesOfLocals) {
- return;
- }
var unit = await checkFile(r'''
test1() {
List<int> o;
@@ -339,9 +289,6 @@
}
test_blockBodiedLambdas_syncStar() async {
- if (!mayCheckTypesOfLocals) {
- return;
- }
var unit = await checkFile(r'''
main() {
var f = () sync* {
@@ -3685,9 +3632,6 @@
}
test_listLiteralsCanInferNullBottom() async {
- if (!mayCheckTypesOfLocals) {
- return;
- }
var unit = await checkFile(r'''
test1() {
var x = [null];
@@ -3747,9 +3691,6 @@
}
test_mapLiteralsCanInferNull() async {
- if (!mayCheckTypesOfLocals) {
- return;
- }
var unit = await checkFile(r'''
test1() {
var x = { null: null };
@@ -4094,9 +4035,9 @@
_assertTypeStr(v.type, 'List<dynamic>');
}
+ @FailingTest(issue: 'https://github.com/dart-lang/sdk/issues/25824')
test_unsafeBlockClosureInference_functionCall_explicitDynamicParam_viaExpr1() async {
- // Note: (f<dynamic>) is not properly resulting in an instantiated
- // function type due to dartbug.com/25824.
+ // Note: (f<dynamic>) is not a valid syntax.
var mainUnit = await checkFileElement('''
List<T> f<T>(T g()) => <T>[g()];
var v = (f<dynamic>)(() { return 1; });
@@ -4126,9 +4067,9 @@
_assertTypeStr(v.type, 'List<int>');
}
+ @FailingTest(issue: 'https://github.com/dart-lang/sdk/issues/25824')
test_unsafeBlockClosureInference_functionCall_explicitTypeParam_viaExpr1() async {
- // TODO(paulberry): for some reason (f<int>) is not properly resulting
- // in an instantiated function type.
+ // Note: (f<int>) is not a valid syntax.
var mainUnit = await checkFileElement('''
List<T> f<T>(T g()) => <T>[g()];
var v = (f<int>)(() { return 1; });
@@ -4356,62 +4297,3 @@
expect(typeStr, expected);
}
}
-
-@reflectiveTest
-class InferredTypeTest extends AbstractStrongTest with InferredTypeMixin {
- @override
- bool get hasExtraTaskModelPass => false;
-
- @override
- bool get mayCheckTypesOfLocals => true;
-
- @override
- Future<CompilationUnitElement> checkFileElement(String content) async {
- CompilationUnit unit = await checkFile(content);
- return unit.declaredElement;
- }
-
- @failingTest
- @override
- test_unsafeBlockClosureInference_functionCall_explicitDynamicParam_viaExpr1() {
- return super
- .test_unsafeBlockClosureInference_functionCall_explicitDynamicParam_viaExpr1();
- }
-
- @failingTest
- @override
- test_unsafeBlockClosureInference_functionCall_explicitTypeParam_viaExpr1() {
- return super
- .test_unsafeBlockClosureInference_functionCall_explicitTypeParam_viaExpr1();
- }
-}
-
-@reflectiveTest
-class InferredTypeTest_SetLiterals extends AbstractStrongTest
- with InferredTypeMixin {
- @override
- bool get hasExtraTaskModelPass => false;
-
- @override
- bool get mayCheckTypesOfLocals => true;
-
- @override
- Future<CompilationUnitElement> checkFileElement(String content) async {
- CompilationUnit unit = await checkFile(content);
- return unit.declaredElement;
- }
-
- @failingTest
- @override
- test_unsafeBlockClosureInference_functionCall_explicitDynamicParam_viaExpr1() {
- return super
- .test_unsafeBlockClosureInference_functionCall_explicitDynamicParam_viaExpr1();
- }
-
- @failingTest
- @override
- test_unsafeBlockClosureInference_functionCall_explicitTypeParam_viaExpr1() {
- return super
- .test_unsafeBlockClosureInference_functionCall_explicitTypeParam_viaExpr1();
- }
-}
diff --git a/pkg/analyzer/tool/summary/mini_ast.dart b/pkg/analyzer/tool/summary/mini_ast.dart
index 7e92f7d..f68108a 100644
--- a/pkg/analyzer/tool/summary/mini_ast.dart
+++ b/pkg/analyzer/tool/summary/mini_ast.dart
@@ -477,6 +477,7 @@
@override
void endTopLevelFields(
+ Token externalToken,
Token staticToken,
Token covariantToken,
Token lateToken,
diff --git a/pkg/analyzer_cli/README.md b/pkg/analyzer_cli/README.md
index 19054e3..03de8b9 100644
--- a/pkg/analyzer_cli/README.md
+++ b/pkg/analyzer_cli/README.md
@@ -2,14 +2,14 @@
Use _dartanalyzer_ to statically analyze your code at the command line,
checking for errors and warnings that are specified in the
-[Dart Language Specification](https://www.dartlang.org/docs/spec/).
+[Dart Language Specification](https://dart.dev/guides/language/spec).
DartPad, code editors, and IDEs such as Android Studio and VS Code
use the same analysis engine that dartanalyzer uses.
## Basic usage
Run the analyzer from the top directory of the package.
-Here's an example of testing a Dart file.
+Here's an example of analyzing a Dart file.
```
dartanalyzer bin/test.dart
@@ -19,52 +19,65 @@
The following are the most commonly used options for dartanalyzer:
-* `--packages=`<br>
- Specify the path to the package resolution configuration file.
- For more information see
- [Package Resolution Configuration File](https://github.com/lrhn/dep-pkgspec/blob/master/DEP-pkgspec.md).
-This option cannot be used with `--package-root`.
+* `--packages=`
-* `--package-warnings`<br>
+ Specify the path to the package resolution configuration file.
+ For more information see
+ [Package Resolution Configuration File](https://github.com/lrhn/dep-pkgspec/blob/master/DEP-pkgspec.md).
+ This option cannot be used with `--package-root`.
+
+* `--package-warnings`
+
Show warnings not only for code in the specified .dart file and
others in its library, but also for libraries imported with `package:`.
-* `--options=`<br>
+* `--options=`
+
Specify the path to an analysis options file.
-* `--lints`<br>
+* `--[no-]lints`
+
Show the results from the linter.
-* `--no-hints`<br>
+* `--[no-]hints`
+
Don't show hints for improving the code.
-* `--ignore-unrecognized-flags`<br>
- Rather than printing the help message,
- ignore any unrecognized command-line flags.
+* `--version`
-* `--version`<br>
Show the analyzer version.
-* `-h` _or_ `--help`<br>
- Show all the command-line options.
+* `-h` _or_ `--help`
+
+ Show all of the command-line options.
+
+See the[Customizing static analysis
+guide](https://dart.dev/guides/language/analysis-options) for further ways to
+customize how dartanalyzer performs static analysis, and how it reports its
+findings.
The following are advanced options to use with dartanalyzer:
-* `-b` _or_ `--batch`<br>
- Run in batch mode.
+* `--dart-sdk=`
-* `--dart-sdk=`<br>
Specify the directory that contains the Dart SDK.
-* `--fatal-warnings`<br>
+* `--fatal-warnings`
+
Except for type warnings, treat warnings as fatal.
-* `--format=machine`<br>
+* `--format=machine`
+
Produce output in a format suitable for parsing.
-* `--url-mapping=libraryUri,/path/to/library.dart`<br>
- Tells the analyzer to use the specified library as the source for that
- particular import.
+* `--ignore-unrecognized-flags`
+
+ Rather than printing the help message, ignore any unrecognized command-line
+ flags.
+
+* `--url-mapping=libraryUri,/path/to/library.dart`
+
+ Use the specified library as the source for that particular import.
The following options are deprecated:
diff --git a/pkg/analyzer_cli/lib/src/options.dart b/pkg/analyzer_cli/lib/src/options.dart
index 27bf56d..2d60cd0 100644
--- a/pkg/analyzer_cli/lib/src/options.dart
+++ b/pkg/analyzer_cli/lib/src/options.dart
@@ -581,6 +581,6 @@
errorSink.writeln('');
errorSink.writeln('''
Run "dartanalyzer -h -v" for verbose help output, including less commonly used options.
-For more information, see https://www.dartlang.org/tools/analyzer.\n''');
+For more information, see https://dart.dev/tools/dartanalyzer.\n''');
}
}
diff --git a/pkg/analyzer_cli/test/driver_test.dart b/pkg/analyzer_cli/test/driver_test.dart
index 43e9d62..6d547b3 100644
--- a/pkg/analyzer_cli/test/driver_test.dart
+++ b/pkg/analyzer_cli/test/driver_test.dart
@@ -310,8 +310,8 @@
''', [b]);
// We perform full analysis, and check that `new B()` is assignable
- // to `B x`. While doing this, we ask for `B` supertype.
- // So, dependency on "a".
+ // to `B x`. This is trivially true, we don't need the supertype of `B`.
+ // So, no dependency on "a".
await _assertDependencies(
'c',
[a, b],
@@ -319,7 +319,7 @@
import 'package:b/b.dart';
var x = B();
''',
- [a, b],
+ [b],
summaryOnly: false,
);
});
diff --git a/pkg/analyzer_plugin/lib/src/utilities/completion/optype.dart b/pkg/analyzer_plugin/lib/src/utilities/completion/optype.dart
index d138827..c2683e3 100644
--- a/pkg/analyzer_plugin/lib/src/utilities/completion/optype.dart
+++ b/pkg/analyzer_plugin/lib/src/utilities/completion/optype.dart
@@ -186,7 +186,7 @@
if (_requiredType == null) {
return;
}
- if (_requiredType.isDynamic || _requiredType.isObject) {
+ if (_requiredType.isDynamic || _requiredType.isDartCoreObject) {
_requiredType = null;
return;
}
@@ -645,6 +645,9 @@
@override
void visitFieldDeclaration(FieldDeclaration node) {
+ if (entity == node.fields) {
+ optype.completionLocation = 'FieldDeclaration_fields';
+ }
if (offset <= node.semicolon.offset) {
optype.includeVarNameSuggestions = true;
}
@@ -706,6 +709,7 @@
// In theory it is possible to specify any expression in initializer,
// but for any practical use we need only types.
if (entity == node.forLoopParts) {
+ optype.completionLocation = 'ForElement_forLoopParts';
optype.includeTypeNameSuggestions = true;
} else if (entity == node.body) {
optype.completionLocation = 'ForElement_body';
@@ -787,9 +791,10 @@
// In theory it is possible to specify any expression in initializer,
// but for any practical use we need only types.
if (entity == node.forLoopParts) {
+ optype.completionLocation = 'ForStatement_forLoopParts';
optype.includeTypeNameSuggestions = true;
} else if (entity == node.body) {
- optype.completionLocation = 'ForElement_body';
+ optype.completionLocation = 'ForStatement_body';
}
}
@@ -797,6 +802,7 @@
void visitFunctionDeclaration(FunctionDeclaration node) {
if (identical(entity, node.returnType) ||
identical(entity, node.name) && node.returnType == null) {
+ optype.completionLocation = 'FunctionDeclaration_returnType';
optype.includeTypeNameSuggestions = true;
}
}
@@ -858,12 +864,12 @@
optype.includeReturnValueSuggestions = true;
optype.includeTypeNameSuggestions = true;
} else if (identical(entity, node.thenStatement)) {
- optype.completionLocation = 'IfStatement_thenElement';
+ optype.completionLocation = 'IfStatement_thenStatement';
optype.includeReturnValueSuggestions = true;
optype.includeTypeNameSuggestions = true;
optype.includeVoidReturnSuggestions = true;
} else if (identical(entity, node.elseStatement)) {
- optype.completionLocation = 'IfStatement_elseElement';
+ optype.completionLocation = 'IfStatement_elseStatement';
optype.includeReturnValueSuggestions = true;
optype.includeTypeNameSuggestions = true;
optype.includeVoidReturnSuggestions = true;
@@ -886,6 +892,7 @@
@override
void visitInstanceCreationExpression(InstanceCreationExpression node) {
if (identical(entity, node.constructorName)) {
+ optype.completionLocation = 'InstanceCreationExpression_constructorName';
optype.includeConstructorSuggestions = true;
}
}
@@ -947,6 +954,12 @@
@override
void visitMethodDeclaration(MethodDeclaration node) {
+ if (identical(entity, node.returnType) ||
+ identical(entity, node.name) && node.returnType == null) {
+ optype.completionLocation = 'MethodDeclaration_returnType';
+ }
+ // TODO(brianwilkerson) In visitFunctionDeclaration, this is conditional. It
+ // seems like it should be the same in both places.
optype.includeTypeNameSuggestions = true;
}
@@ -962,13 +975,14 @@
optype.isPrefixed = true;
} else if (identical(entity, node.methodName)) {
optype.includeReturnValueSuggestions = true;
- optype.includeTypeNameSuggestions = !isThis;
+// optype.includeTypeNameSuggestions = !isThis;
optype.includeVoidReturnSuggestions = true;
optype.isPrefixed = true;
} else if (identical(entity, node.argumentList)) {
// Note that when the cursor is in a type argument list (f<^>()), the
// entity is (surprisingly) the invocation's argumentList (and not it's
// typeArgumentList as you'd expect).
+ optype.completionLocation = 'MethodInvocation_argumentList';
optype.includeTypeNameSuggestions = true;
}
}
@@ -1217,7 +1231,7 @@
optype.includeReturnValueSuggestions = true;
optype.includeTypeNameSuggestions = true;
} else if (node.statements.contains(entity)) {
- optype.completionLocation = 'SwitchCase_statement';
+ optype.completionLocation = 'SwitchMember_statement';
optype.includeReturnValueSuggestions = true;
optype.includeTypeNameSuggestions = true;
optype.includeVoidReturnSuggestions = true;
@@ -1320,6 +1334,7 @@
void visitVariableDeclarationList(VariableDeclarationList node) {
if (node.keyword == null || node.keyword.lexeme != 'var') {
if (node.type == null || identical(entity, node.type)) {
+ optype.completionLocation = 'VariableDeclarationList_type';
optype.includeTypeNameSuggestions = true;
} else if (node.type != null && entity is VariableDeclaration) {
optype.includeVarNameSuggestions = true;
diff --git a/pkg/analyzer_plugin/lib/utilities/completion/relevance.dart b/pkg/analyzer_plugin/lib/utilities/completion/relevance.dart
index 1034dca..366957d 100644
--- a/pkg/analyzer_plugin/lib/utilities/completion/relevance.dart
+++ b/pkg/analyzer_plugin/lib/utilities/completion/relevance.dart
@@ -89,5 +89,5 @@
static const int requiredNamedArgument = 950;
/// The relevance used when suggesting a type parameter.
- static const int typeParameter = 900;
+ static const int typeParameter = 500;
}
diff --git a/pkg/analyzer_plugin/test/src/utilities/completion/optype_test.dart b/pkg/analyzer_plugin/test/src/utilities/completion/optype_test.dart
index c9f6489..ee2f494 100644
--- a/pkg/analyzer_plugin/test/src/utilities/completion/optype_test.dart
+++ b/pkg/analyzer_plugin/test/src/utilities/completion/optype_test.dart
@@ -552,27 +552,32 @@
Future<void> test_block_final() async {
addTestSource('main() {final ^}');
- await assertOpType(typeNames: true);
+ await assertOpType(
+ completionLocation: 'VariableDeclarationList_type', typeNames: true);
}
Future<void> test_block_final2() async {
addTestSource('main() {final S^ v;}');
- await assertOpType(typeNames: true);
+ await assertOpType(
+ completionLocation: 'VariableDeclarationList_type', typeNames: true);
}
Future<void> test_block_final3() async {
addTestSource('main() {final ^ v;}');
- await assertOpType(typeNames: true);
+ await assertOpType(
+ completionLocation: 'VariableDeclarationList_type', typeNames: true);
}
Future<void> test_block_final_final() async {
addTestSource('main() {final ^ final S x;}');
- await assertOpType(typeNames: true);
+ await assertOpType(
+ completionLocation: 'VariableDeclarationList_type', typeNames: true);
}
Future<void> test_block_final_final2() async {
addTestSource('main() {final S^ final S x;}');
- await assertOpType(typeNames: true);
+ await assertOpType(
+ completionLocation: 'VariableDeclarationList_type', typeNames: true);
}
Future<void> test_block_identifier_partial() async {
@@ -933,7 +938,9 @@
// SimpleIdentifier PrefixedIdentifier TypeName ConstructorName
// InstanceCreationExpression
addTestSource('main() {new Str^ing.fromCharCodes([]);}');
- await assertOpType(constructors: true);
+ await assertOpType(
+ completionLocation: 'InstanceCreationExpression_constructorName',
+ constructors: true);
}
Future<void> test_constructorName_nameAndPrefix_resolved() async {
@@ -1166,7 +1173,8 @@
Future<void> test_forEachStatement_loopVariable() async {
// SimpleIdentifier ForEachStatement Block
addTestSource('main(args) {for (^ in args) {}}');
- await assertOpType(typeNames: true);
+ await assertOpType(
+ completionLocation: 'ForStatement_forLoopParts', typeNames: true);
}
Future<void> test_forEachStatement_loopVariable_name() async {
@@ -1184,13 +1192,15 @@
Future<void> test_forEachStatement_loopVariable_type() async {
// SimpleIdentifier ForEachStatement Block
addTestSource('main(args) {for (^ foo in args) {}}');
- await assertOpType(typeNames: true);
+ await assertOpType(
+ completionLocation: 'ForStatement_forLoopParts', typeNames: true);
}
Future<void> test_forEachStatement_loopVariable_type2() async {
// DeclaredIdentifier ForEachStatement Block
addTestSource('main(args) {for (S^ foo in args) {}}');
- await assertOpType(typeNames: true);
+ await assertOpType(
+ completionLocation: 'ForStatement_forLoopParts', typeNames: true);
}
Future<void> test_forElement_body() async {
@@ -1213,7 +1223,8 @@
Future<void> test_forElement_forEachParts_type() async {
addTestSource('main(args) {[for (i^ foo in [0]) foo];}');
- await assertOpType(typeNames: true);
+ await assertOpType(
+ completionLocation: 'ForElement_forLoopParts', typeNames: true);
}
Future<void> test_formalParameter_partialType() async {
@@ -1269,7 +1280,8 @@
Future<void> test_forStatement_initializer() async {
// SimpleIdentifier ForStatement
addTestSource('main() {List a; for (^)}');
- await assertOpType(typeNames: true);
+ await assertOpType(
+ completionLocation: 'ForStatement_forLoopParts', typeNames: true);
}
Future<void> test_forStatement_initializer_inKeyword() async {
@@ -1281,7 +1293,8 @@
Future<void> test_forStatement_initializer_type() async {
// SimpleIdentifier ForStatement
addTestSource('main() {List a; for (i^ v = 0;)}');
- await assertOpType(typeNames: true);
+ await assertOpType(
+ completionLocation: 'ForStatement_forLoopParts', typeNames: true);
}
Future<void>
@@ -1431,7 +1444,8 @@
addTestSource('''
/// some dartdoc
^ zoo(z) { } String name;''');
- await assertOpType(typeNames: true);
+ await assertOpType(
+ completionLocation: 'FunctionDeclaration_returnType', typeNames: true);
}
Future<void>
@@ -1440,9 +1454,10 @@
addTestSource('''
/// some dartdoc
^ zoo(z) { } String name;''');
- // TODO(brianwilkerson) This should have a location of
+ // TODO(brianwilkerson) Perhaps this should have a location of
// 'CompilationUnit_declaration' (or 'CompilationUnit_directive')
- await assertOpType(typeNames: true);
+ await assertOpType(
+ completionLocation: 'FunctionDeclaration_returnType', typeNames: true);
}
Future<void> test_functionDeclaration_returnType_afterStarComment() async {
@@ -1462,16 +1477,18 @@
Future<void> test_functionDeclaration_returnType_afterStarDocComment() async {
// FunctionDeclaration CompilationUnit
addTestSource('/** */ ^ zoo(z) { } String name;');
- await assertOpType(typeNames: true);
+ await assertOpType(
+ completionLocation: 'FunctionDeclaration_returnType', typeNames: true);
}
Future<void>
test_functionDeclaration_returnType_afterStarDocComment2() async {
// FunctionDeclaration CompilationUnit
addTestSource('/** */^ zoo(z) { } String name;');
- // TODO(brianwilkerson) This should have a location of
+ // TODO(brianwilkerson) Perhaps this should have a location of
// 'CompilationUnit_declaration' (or 'CompilationUnit_directive')
- await assertOpType(typeNames: true);
+ await assertOpType(
+ completionLocation: 'FunctionDeclaration_returnType', typeNames: true);
}
Future<void> test_functionExpression_beforeBody() async {
@@ -1546,7 +1563,7 @@
// EmptyStatement IfStatement Block BlockFunctionBody
addTestSource('main(){var a; if (true) ^}');
await assertOpType(
- completionLocation: 'IfStatement_thenElement',
+ completionLocation: 'IfStatement_thenStatement',
constructors: true,
returnValue: true,
typeNames: true,
@@ -1620,7 +1637,9 @@
Future<void> test_instanceCreationExpression_afterNew() async {
// SimpleIdentifier TypeName ConstructorName InstanceCreationExpression
addTestSource('class C {foo(){var f; {var x;} new ^}}');
- await assertOpType(constructors: true);
+ await assertOpType(
+ completionLocation: 'InstanceCreationExpression_constructorName',
+ constructors: true);
}
Future<void> test_instanceCreationExpression_keyword() async {
@@ -1648,7 +1667,9 @@
Future<void> test_instanceCreationExpression_trailingStmt() async {
// SimpleIdentifier TypeName ConstructorName InstanceCreationExpression
addTestSource('class C {foo(){var f; {var x;} new ^ int x = 7;}}');
- await assertOpType(constructors: true);
+ await assertOpType(
+ completionLocation: 'InstanceCreationExpression_constructorName',
+ constructors: true);
}
Future<void> test_integerLiteral_inArgumentList() async {
@@ -1907,9 +1928,10 @@
^ zoo(z) { } String name;
}
''');
- // TODO(brianwilkerson) This should have a location of
- // 'ClassDeclaration_member'
- await assertOpType(typeNames: true);
+ // TODO(brianwilkerson) Perhaps this should have a location of
+ // 'ClassDeclaration_member'.
+ await assertOpType(
+ completionLocation: 'MethodDeclaration_returnType', typeNames: true);
}
Future<void>
@@ -1921,9 +1943,10 @@
^ zoo(z) { } String name;
''');
- // TODO(brianwilkerson) This should have a location of
- // 'ClassDeclaration_member'
- await assertOpType(typeNames: true);
+ // TODO(brianwilkerson) Perhaps this should have a location of
+ // 'ClassDeclaration_member'.
+ await assertOpType(
+ completionLocation: 'MethodDeclaration_returnType', typeNames: true);
}
Future<void>
@@ -1946,18 +1969,20 @@
test_methodDeclaration_inClass_returnType_afterStarDocComment() async {
// MethodDeclaration ClassDeclaration CompilationUnit
addTestSource('class C2 {/** */ ^ zoo(z) { } String name; }');
- // TODO(brianwilkerson) This should have a location of
- // 'ClassDeclaration_member'
- await assertOpType(typeNames: true);
+ // TODO(brianwilkerson) Perhaps this should have a location of
+ // 'ClassDeclaration_member'.
+ await assertOpType(
+ completionLocation: 'MethodDeclaration_returnType', typeNames: true);
}
Future<void>
test_methodDeclaration_inClass_returnType_afterStarDocComment2() async {
// MethodDeclaration ClassDeclaration CompilationUnit
addTestSource('class C2 {/** */^ zoo(z) { } String name; }');
- // TODO(brianwilkerson) This should have a location of
- // 'ClassDeclaration_member'
- await assertOpType(typeNames: true);
+ // TODO(brianwilkerson) Perhaps this should have a location of
+ // 'ClassDeclaration_member'.
+ await assertOpType(
+ completionLocation: 'MethodDeclaration_returnType', typeNames: true);
}
Future<void> test_methodDeclaration_inExtension2_inName() async {
@@ -2011,10 +2036,9 @@
}''');
await assertOpType(
constructors: true,
+ prefixed: true,
returnValue: true,
- typeNames: true,
- voidReturn: true,
- prefixed: true);
+ voidReturn: true);
}
Future<void> test_mixinDeclaration_body() async {
@@ -2095,10 +2119,9 @@
addTestSource('class A {a() {"hello".to^String().length}}');
await assertOpType(
constructors: true,
+ prefixed: true,
returnValue: true,
- typeNames: true,
- voidReturn: true,
- prefixed: true);
+ voidReturn: true);
}
Future<void> test_propertyAccess_noTarget() async {
@@ -2355,10 +2378,8 @@
Future<void> test_switchStatement_body_end2() async {
addTestSource('main() {switch(k) {case 1:as^}}');
- // TODO(brianwilkerson) This should have a location of
- // 'SwitchMember_statement'
await assertOpType(
- completionLocation: 'SwitchCase_statement',
+ completionLocation: 'SwitchMember_statement',
constructors: true,
returnValue: true,
typeNames: true,
@@ -2759,8 +2780,8 @@
Future<void> test_variableDeclarationList_final() async {
// VariableDeclarationList VariableDeclarationStatement Block
addTestSource('main() {final ^}');
- // TODO(brianwilkerson) This should probably have a location.
- await assertOpType(typeNames: true);
+ await assertOpType(
+ completionLocation: 'VariableDeclarationList_type', typeNames: true);
}
Future<void> test_variableDeclarationStatement_afterSemicolon() async {
diff --git a/pkg/compiler/lib/src/commandline_options.dart b/pkg/compiler/lib/src/commandline_options.dart
index 9d9f4d6..41ab31e 100644
--- a/pkg/compiler/lib/src/commandline_options.dart
+++ b/pkg/compiler/lib/src/commandline_options.dart
@@ -98,8 +98,8 @@
static const String serverMode = '--server-mode';
- static const String nullSafety = '--null-safety';
- static const String noNullSafety = '--no-null-safety';
+ static const String nullSafety = '--sound-null-safety';
+ static const String noNullSafety = '--no-sound-null-safety';
static const String newDeferredSplit = '--new-deferred-split';
static const String reportInvalidInferredDeferredTypes =
diff --git a/pkg/compiler/lib/src/deferred_load.dart b/pkg/compiler/lib/src/deferred_load.dart
index 3c49a8c..327960b 100644
--- a/pkg/compiler/lib/src/deferred_load.dart
+++ b/pkg/compiler/lib/src/deferred_load.dart
@@ -129,7 +129,7 @@
<ImportEntity, ImportDescription>{};
/// A lattice to compactly represent multiple subsets of imports.
- final ImportSetLattice importSets = new ImportSetLattice();
+ ImportSetLattice importSets = ImportSetLattice();
final Compiler compiler;
@@ -618,7 +618,7 @@
void addUnit(ImportSet importSet) {
if (importSet.unit != null) return;
var unit = new OutputUnit(false, '$counter',
- importSet._imports.map((i) => i.declaration).toSet());
+ importSet._collectImports().map((i) => i.declaration).toSet());
counter++;
importSet.unit = unit;
_allOutputUnits.add(unit);
@@ -828,6 +828,7 @@
_memberToSet = null;
_localFunctionToSet = null;
_constantToSet = null;
+ importSets = null;
cleanup();
return new OutputUnitData(
this.isProgramSplit && !disableProgramSplit,
@@ -1004,7 +1005,7 @@
Map<ImportEntity, _DeferredImport> _importIndex = {};
/// The canonical instance representing the empty import set.
- ImportSet _emptySet = new ImportSet();
+ ImportSet _emptySet = ImportSet.empty();
/// The import set representing the main output unit, which happens to be
/// implemented as an empty set in our algorithm.
@@ -1018,36 +1019,43 @@
/// Get the import set that includes the union of [a] and [b].
ImportSet union(ImportSet a, ImportSet b) {
- if (a == null || a == _emptySet) return b;
- if (b == null || b == _emptySet) return a;
+ if (a == null || a.isEmpty) return b;
+ if (b == null || b.isEmpty) return a;
- // We create the union by merging the imports in canonical order first, and
- // then getting (or creating) the canonical sets by adding an import at a
- // time.
- List<_DeferredImport> aImports = a._imports;
- List<_DeferredImport> bImports = b._imports;
- int i = 0, j = 0, lastAIndex = 0, lastBIndex = 0;
- var result = _emptySet;
- while (i < aImports.length && j < bImports.length) {
- var importA = aImports[i];
- var importB = bImports[j];
- assert(lastAIndex <= importA.index);
- assert(lastBIndex <= importB.index);
- if (importA.index < importB.index) {
- result = result._add(importA);
- i++;
+ // Create the union by merging the imports in canonical order. The sets are
+ // basically lists linked by the `_previous` field in reverse order. We do a
+ // merge-like scan 'backwards' removing the biggest element until we hit an
+ // empty set or a common prefix, and the add the 'merge-sorted' elements
+ // back onto the prefix.
+ ImportSet result;
+ // 'removed' imports in decreasing canonical order.
+ List<_DeferredImport> imports = [];
+
+ while (true) {
+ if (a.isEmpty) {
+ result = b;
+ break;
+ }
+ if (b.isEmpty || identical(a, b)) {
+ result = a;
+ break;
+ }
+ if (a._import.index > b._import.index) {
+ imports.add(a._import);
+ a = a._previous;
+ } else if (b._import.index > a._import.index) {
+ imports.add(b._import);
+ b = b._previous;
} else {
- result = result._add(importB);
- j++;
+ assert(identical(a._import, b._import));
+ imports.add(a._import);
+ a = a._previous;
+ b = b._previous;
}
}
- for (; i < aImports.length; i++) {
- result = result._add(aImports[i]);
+ while (imports.isNotEmpty) {
+ result = result._add(imports.removeLast());
}
- for (; j < bImports.length; j++) {
- result = result._add(bImports[j]);
- }
-
return result;
}
@@ -1060,42 +1068,58 @@
/// A canonical set of deferred imports.
class ImportSet {
- /// Imports that are part of this set.
+ /// Last element added to set.
///
- /// Invariant: the order in which elements are added must respect the
- /// canonical order of all imports in [ImportSetLattice].
- final List<_DeferredImport> _imports;
+ /// This set comprises [_import] appended onto [_previous]. *Note*: [_import]
+ /// is the last element in the set in the canonical order imposed by
+ /// [ImportSetLattice].
+ final _DeferredImport _import; // `null` for empty ImportSet
+ /// The set containing all previous elements.
+ final ImportSet _previous;
+ final int length;
+
+ bool get isEmpty => _import == null;
+ bool get isNotEmpty => _import != null;
+
+ /// Returns an iterable over the imports in this set in canonical order.
+ Iterable<_DeferredImport> _collectImports() {
+ List<_DeferredImport> result = [];
+ ImportSet current = this;
+ while (current.isNotEmpty) {
+ result.add(current._import);
+ current = current._previous;
+ }
+ assert(result.length == this.length);
+ return result.reversed;
+ }
/// Links to other import sets in the lattice by adding one import.
- final Map<_DeferredImport, ImportSet> _transitions =
- <_DeferredImport, ImportSet>{};
+ final Map<_DeferredImport, ImportSet> _transitions = {};
- ImportSet([this._imports = const <_DeferredImport>[]]);
+ ImportSet.empty()
+ : _import = null,
+ _previous = null,
+ length = 0;
+
+ ImportSet(this._import, this._previous, this.length);
/// The output unit corresponding to this set of imports, if any.
OutputUnit unit;
- int get length => _imports.length;
-
/// Create an import set that adds [import] to all the imports on this set.
/// This assumes that import's canonical order comes after all imports in
/// this current set. This should only be called from [ImportSetLattice],
/// since it is where we preserve this invariant.
ImportSet _add(_DeferredImport import) {
- ImportSet result = _transitions[import];
- if (result == null) {
- result = new ImportSet(new List.from(_imports)..add(import));
- result._transitions[import] = result;
- _transitions[import] = result;
- }
- return result;
+ assert(_import == null || import.index > _import.index);
+ return _transitions[import] ??= ImportSet(import, this, length + 1);
}
@override
String toString() {
StringBuffer sb = new StringBuffer();
sb.write('ImportSet(size: $length, ');
- for (var import in _imports) {
+ for (var import in _collectImports()) {
sb.write('${import.declaration.name} ');
}
sb.write(')');
diff --git a/pkg/compiler/lib/src/inferrer/typemasks/flat_type_mask.dart b/pkg/compiler/lib/src/inferrer/typemasks/flat_type_mask.dart
index e8163ba..175bac3 100644
--- a/pkg/compiler/lib/src/inferrer/typemasks/flat_type_mask.dart
+++ b/pkg/compiler/lib/src/inferrer/typemasks/flat_type_mask.dart
@@ -19,14 +19,12 @@
final ClassEntity base;
final int flags;
- FlatTypeMask(ClassEntity base, int kind, bool isNullable)
- : this.internal(base, (kind << 1) | (isNullable ? 1 : 0));
-
- FlatTypeMask.exact(ClassEntity base) : this.internal(base, (EXACT << 1) | 1);
- FlatTypeMask.subclass(ClassEntity base)
- : this.internal(base, (SUBCLASS << 1) | 1);
- FlatTypeMask.subtype(ClassEntity base)
- : this.internal(base, (SUBTYPE << 1) | 1);
+ factory FlatTypeMask.exact(ClassEntity base, JClosedWorld world) =>
+ FlatTypeMask._canonicalize(base, EXACT, true, world);
+ factory FlatTypeMask.subclass(ClassEntity base, JClosedWorld world) =>
+ FlatTypeMask._canonicalize(base, SUBCLASS, true, world);
+ factory FlatTypeMask.subtype(ClassEntity base, JClosedWorld world) =>
+ FlatTypeMask._canonicalize(base, SUBTYPE, true, world);
const FlatTypeMask.nonNullEmpty()
: base = null,
@@ -35,20 +33,32 @@
: base = null,
flags = 1;
- FlatTypeMask.nonNullExact(ClassEntity base) : this.internal(base, EXACT << 1);
- FlatTypeMask.nonNullSubclass(ClassEntity base)
- : this.internal(base, SUBCLASS << 1);
- FlatTypeMask.nonNullSubtype(ClassEntity base)
- : this.internal(base, SUBTYPE << 1);
+ factory FlatTypeMask.nonNullExact(ClassEntity base, JClosedWorld world) =>
+ FlatTypeMask._canonicalize(base, EXACT, false, world);
+ factory FlatTypeMask.nonNullSubclass(ClassEntity base, JClosedWorld world) =>
+ FlatTypeMask._canonicalize(base, SUBCLASS, false, world);
+ factory FlatTypeMask.nonNullSubtype(ClassEntity base, JClosedWorld world) =>
+ FlatTypeMask._canonicalize(base, SUBTYPE, false, world);
- FlatTypeMask.internal(this.base, this.flags);
+ factory FlatTypeMask._canonicalize(
+ ClassEntity base, int kind, bool isNullable, JClosedWorld world) {
+ if (base == world.commonElements.nullClass) {
+ return FlatTypeMask.empty();
+ }
+ return FlatTypeMask._(base, (kind << 1) | (isNullable ? 1 : 0));
+ }
+
+ FlatTypeMask._(this.base, this.flags);
/// Ensures that the generated mask is normalized, i.e., a call to
/// [TypeMask.assertIsNormalized] with the factory's result returns `true`.
factory FlatTypeMask.normalized(
ClassEntity base, int flags, JClosedWorld world) {
+ if (base == world.commonElements.nullClass) {
+ return FlatTypeMask.empty();
+ }
if ((flags >> 1) == EMPTY || ((flags >> 1) == EXACT)) {
- return new FlatTypeMask.internal(base, flags);
+ return new FlatTypeMask._(base, flags);
}
if ((flags >> 1) == SUBTYPE) {
if (!world.classHierarchy.hasAnyStrictSubtype(base) ||
@@ -62,7 +72,7 @@
}
CommonMasks commonMasks = world.abstractValueDomain;
return commonMasks.getCachedMask(
- base, flags, () => new FlatTypeMask.internal(base, flags));
+ base, flags, () => new FlatTypeMask._(base, flags));
}
/// Deserializes a [FlatTypeMask] object from [source].
@@ -74,7 +84,7 @@
source.end(tag);
CommonMasks commonMasks = closedWorld.abstractValueDomain;
return commonMasks.getCachedMask(
- base, flags, () => new FlatTypeMask.internal(base, flags));
+ base, flags, () => new FlatTypeMask._(base, flags));
}
/// Serializes this [FlatTypeMask] to [sink].
@@ -125,12 +135,12 @@
@override
TypeMask nullable() {
- return isNullable ? this : new FlatTypeMask.internal(base, flags | 1);
+ return isNullable ? this : new FlatTypeMask._(base, flags | 1);
}
@override
TypeMask nonNullable() {
- return isNullable ? new FlatTypeMask.internal(base, flags & ~1) : this;
+ return isNullable ? new FlatTypeMask._(base, flags & ~1) : this;
}
@override
diff --git a/pkg/compiler/lib/src/inferrer/typemasks/type_mask.dart b/pkg/compiler/lib/src/inferrer/typemasks/type_mask.dart
index 21a4723..7490ada 100644
--- a/pkg/compiler/lib/src/inferrer/typemasks/type_mask.dart
+++ b/pkg/compiler/lib/src/inferrer/typemasks/type_mask.dart
@@ -124,12 +124,12 @@
base ?? CURRENT_ELEMENT_SPANNABLE,
"Cannot create exact type mask for uninstantiated "
"class $base.\n${closedWorld.classHierarchy.dump(base)}"));
- return new FlatTypeMask.exact(base);
+ return new FlatTypeMask.exact(base, closedWorld);
}
factory TypeMask.exactOrEmpty(ClassEntity base, JClosedWorld closedWorld) {
if (closedWorld.classHierarchy.isInstantiated(base))
- return new FlatTypeMask.exact(base);
+ return new FlatTypeMask.exact(base, closedWorld);
return const TypeMask.empty();
}
@@ -144,7 +144,7 @@
if (topmost == null) {
return new TypeMask.empty();
} else if (closedWorld.classHierarchy.hasAnyStrictSubclass(topmost)) {
- return new FlatTypeMask.subclass(topmost);
+ return new FlatTypeMask.subclass(topmost, closedWorld);
} else {
return new TypeMask.exact(topmost, closedWorld);
}
@@ -159,7 +159,7 @@
return new TypeMask.subclass(topmost, closedWorld);
}
if (closedWorld.classHierarchy.hasAnyStrictSubtype(topmost)) {
- return new FlatTypeMask.subtype(topmost);
+ return new FlatTypeMask.subtype(topmost, closedWorld);
} else {
return new TypeMask.exact(topmost, closedWorld);
}
@@ -174,13 +174,13 @@
base ?? CURRENT_ELEMENT_SPANNABLE,
"Cannot create exact type mask for uninstantiated "
"class $base.\n${closedWorld.classHierarchy.dump(base)}"));
- return new FlatTypeMask.nonNullExact(base);
+ return new FlatTypeMask.nonNullExact(base, closedWorld);
}
factory TypeMask.nonNullExactOrEmpty(
ClassEntity base, JClosedWorld closedWorld) {
if (closedWorld.classHierarchy.isInstantiated(base)) {
- return new FlatTypeMask.nonNullExact(base);
+ return new FlatTypeMask.nonNullExact(base, closedWorld);
}
return const TypeMask.nonNullEmpty();
}
@@ -196,7 +196,7 @@
if (topmost == null) {
return new TypeMask.nonNullEmpty();
} else if (closedWorld.classHierarchy.hasAnyStrictSubclass(topmost)) {
- return new FlatTypeMask.nonNullSubclass(topmost);
+ return new FlatTypeMask.nonNullSubclass(topmost, closedWorld);
} else {
return new TypeMask.nonNullExact(topmost, closedWorld);
}
@@ -211,7 +211,7 @@
return new TypeMask.nonNullSubclass(topmost, closedWorld);
}
if (closedWorld.classHierarchy.hasAnyStrictSubtype(topmost)) {
- return new FlatTypeMask.nonNullSubtype(topmost);
+ return new FlatTypeMask.nonNullSubtype(topmost, closedWorld);
} else {
return new TypeMask.nonNullExact(topmost, closedWorld);
}
@@ -273,6 +273,9 @@
mask = nonForwardingMask(mask);
if (mask is FlatTypeMask) {
if (mask.isEmptyOrNull) return null;
+ if (mask.base == closedWorld.commonElements.nullClass) {
+ return 'The class ${mask.base} is not canonicalized.';
+ }
if (mask.isExact) {
if (!closedWorld.classHierarchy.isInstantiated(mask.base)) {
return 'Exact ${mask.base} is not instantiated.';
diff --git a/pkg/compiler/lib/src/ir/static_type.dart b/pkg/compiler/lib/src/ir/static_type.dart
index b1eda7b..5f7ce38 100644
--- a/pkg/compiler/lib/src/ir/static_type.dart
+++ b/pkg/compiler/lib/src/ir/static_type.dart
@@ -1036,7 +1036,7 @@
handleNullCheck(node, operandType);
ir.DartType resultType = operandType == typeEnvironment.nullType
? const ir.NeverType(ir.Nullability.nonNullable)
- : operandType.withNullability(ir.Nullability.nonNullable);
+ : operandType.withDeclaredNullability(ir.Nullability.nonNullable);
_expressionTypeCache[node] = resultType;
return resultType;
}
diff --git a/pkg/compiler/lib/src/js_backend/specialized_checks.dart b/pkg/compiler/lib/src/js_backend/specialized_checks.dart
index ca83fd1..25156d2 100644
--- a/pkg/compiler/lib/src/js_backend/specialized_checks.dart
+++ b/pkg/compiler/lib/src/js_backend/specialized_checks.dart
@@ -12,7 +12,8 @@
import '../world.dart' show JClosedWorld;
enum IsTestSpecialization {
- null_,
+ isNull,
+ notNull,
string,
bool,
num,
@@ -27,8 +28,7 @@
if (dartType is LegacyType) {
DartType base = dartType.baseType;
// `Never*` accepts only `null`.
- if (base is NeverType) return IsTestSpecialization.null_;
- // TODO(sra): Handle strong checking 'x is Object' --> `x != null`.
+ if (base is NeverType) return IsTestSpecialization.isNull;
// `Object*` is top and should be handled by constant folding.
if (base.isObject) return null;
return _findIsTestSpecialization(base, graph, closedWorld);
@@ -44,7 +44,7 @@
if (element == commonElements.nullClass ||
element == commonElements.jsNullClass) {
- return IsTestSpecialization.null_;
+ return IsTestSpecialization.isNull;
}
if (element == commonElements.jsStringClass ||
@@ -73,6 +73,9 @@
}
DartTypes dartTypes = closedWorld.dartTypes;
+ // Top types (here it could be Object in non-NNBD mode) should be constant
+ // folded outside the specializer. This test protects logic below.
+ if (dartTypes.isTopType(dartType)) return null;
ElementEnvironment elementEnvironment = closedWorld.elementEnvironment;
if (!dartTypes.isSubtype(
elementEnvironment.getClassInstantiationToBounds(element),
@@ -84,6 +87,11 @@
return IsTestSpecialization.arrayTop;
}
+ if (dartType.isObject) {
+ assert(!dartTypes.isTopType(dartType)); // Checked above.
+ return IsTestSpecialization.notNull;
+ }
+
ClassHierarchy classHierarchy = closedWorld.classHierarchy;
InterceptorData interceptorData = closedWorld.interceptorData;
OutputUnitData outputUnitData = closedWorld.outputUnitData;
@@ -92,6 +100,7 @@
!interceptorData.isInterceptedClass(element) &&
outputUnitData.hasOnlyNonDeferredImportPathsToClass(
graph.element, element)) {
+ assert(!dartType.isObject); // Checked above.
return IsTestSpecialization.instanceof;
}
}
diff --git a/pkg/compiler/lib/src/kernel/loader.dart b/pkg/compiler/lib/src/kernel/loader.dart
index 1f754e04..aec72f0 100644
--- a/pkg/compiler/lib/src/kernel/loader.dart
+++ b/pkg/compiler/lib/src/kernel/loader.dart
@@ -59,7 +59,11 @@
return measure(() async {
String targetName =
_options.compileForServer ? "dart2js_server" : "dart2js";
- String platform = '${targetName}_platform.dill';
+ String platform = targetName;
+ if (_options.useNullSafety && !_options.useWeakNullSafetySemantics) {
+ platform += "_nnbd_strong";
+ }
+ platform += "_platform.dill";
var isDill = resolvedUri.path.endsWith('.dill');
ir.Component component;
if (isDill) {
diff --git a/pkg/compiler/lib/src/options.dart b/pkg/compiler/lib/src/options.dart
index 2f6b7dc..ce0599c 100644
--- a/pkg/compiler/lib/src/options.dart
+++ b/pkg/compiler/lib/src/options.dart
@@ -334,7 +334,7 @@
bool experimentCallInstrumentation = false;
/// Whether to use the new RTI representation (default).
- bool useNewRti = true;
+ final bool useNewRti = true;
/// Whether null-safety (non-nullable types) are enabled in the sdk.
///
@@ -345,13 +345,13 @@
/// When null-safety is enabled, whether the compiler should emit code with
/// weak or strong semantics.
- bool _useWeakNullSafetySemantics = true;
+ bool useWeakNullSafetySemantics = true;
/// Whether to use legacy subtype semantics rather than null-safe semantics.
/// This is `true` if null-safety is disabled, i.e. all code is legacy code,
/// or if weak null-safety semantics are being used, since we do not emit
/// warnings.
- bool get useLegacySubtyping => !useNullSafety || _useWeakNullSafetySemantics;
+ bool get useLegacySubtyping => !useNullSafety || useWeakNullSafetySemantics;
/// The path to the file that contains the profiled allocations.
///
@@ -436,7 +436,6 @@
..experimentToBoolean = _hasOption(options, Flags.experimentToBoolean)
..experimentCallInstrumentation =
_hasOption(options, Flags.experimentCallInstrumentation)
- ..useNewRti = !_hasOption(options, Flags.useOldRti)
..generateSourceMap = !_hasOption(options, Flags.noSourceMaps)
..outputUri = _extractUriOption(options, '--out=')
..platformBinaries = platformBinaries
@@ -470,7 +469,7 @@
..codegenShards = _extractIntOption(options, '${Flags.codegenShards}=')
..cfeOnly = _hasOption(options, Flags.cfeOnly)
..debugGlobalInference = _hasOption(options, Flags.debugGlobalInference)
- .._useWeakNullSafetySemantics = !_hasOption(options, Flags.nullSafety);
+ ..useWeakNullSafetySemantics = !_hasOption(options, Flags.nullSafety);
}
void validate() {
@@ -501,10 +500,8 @@
}
if (benchmarkingExperiment) {
- // TODO(sra): Set flags implied by '--benchmarking-x'. At this time we
- // use it to run the old-rti to continue comparing data with new-rti, but
- // we should remove it once we start benchmarking NNBD.
- useNewRti = false;
+ // Set flags implied by '--benchmarking-x'.
+ // TODO(sra): Use this for some NNBD variant.
}
if (_noLegacyJavaScript) legacyJavaScript = false;
diff --git a/pkg/compiler/lib/src/serialization/helpers.dart b/pkg/compiler/lib/src/serialization/helpers.dart
index 5232b87..fee1be6 100644
--- a/pkg/compiler/lib/src/serialization/helpers.dart
+++ b/pkg/compiler/lib/src/serialization/helpers.dart
@@ -230,13 +230,13 @@
if (index != -1) {
_sink.writeEnum(DartTypeNodeKind.functionTypeVariable);
_sink.writeInt(index);
- _sink.writeEnum(node.typeParameterTypeNullability);
+ _sink.writeEnum(node.declaredNullability);
_sink._writeDartTypeNode(node.promotedBound, functionTypeVariables,
allowNull: true);
} else {
_sink.writeEnum(DartTypeNodeKind.typeParameterType);
_sink.writeTypeParameterNode(node.parameter);
- _sink.writeEnum(node.typeParameterTypeNullability);
+ _sink.writeEnum(node.declaredNullability);
_sink._writeDartTypeNode(node.promotedBound, functionTypeVariables,
allowNull: true);
}
diff --git a/pkg/compiler/lib/src/ssa/builder_kernel.dart b/pkg/compiler/lib/src/ssa/builder_kernel.dart
index 16b8d5f..ae77337 100644
--- a/pkg/compiler/lib/src/ssa/builder_kernel.dart
+++ b/pkg/compiler/lib/src/ssa/builder_kernel.dart
@@ -5484,11 +5484,6 @@
DartType typeValue =
localsHandler.substInContext(_elementMap.getDartType(type));
- if (dartTypes.isTopType(typeValue)) {
- stack.add(graph.addConstantBool(true, closedWorld));
- return;
- }
-
if (options.useNewRti) {
HInstruction rti =
_typeBuilder.analyzeTypeArgumentNewRti(typeValue, sourceElement);
@@ -5501,6 +5496,11 @@
return;
}
+ if (dartTypes.isTopType(typeValue)) {
+ stack.add(graph.addConstantBool(true, closedWorld));
+ return;
+ }
+
if (typeValue is FunctionType) {
HInstruction representation =
_typeBuilder.analyzeTypeArgument(typeValue, sourceElement);
@@ -6582,11 +6582,19 @@
HInstruction oldRethrowableException = kernelBuilder._rethrowableException;
kernelBuilder._rethrowableException = exception;
+ AbstractValue unwrappedType = kernelBuilder._typeInferenceMap
+ .getReturnTypeOf(kernelBuilder._commonElements.exceptionUnwrapper);
+ if (!kernelBuilder.options.useLegacySubtyping) {
+ // Global type analysis does not currently understand that strong mode
+ // `Object` is not nullable, so is imprecise in the return type of the
+ // unwrapper, which leads to unnecessary checks for 'on Object'.
+ unwrappedType =
+ kernelBuilder._abstractValueDomain.excludeNull(unwrappedType);
+ }
kernelBuilder._pushStaticInvocation(
kernelBuilder._commonElements.exceptionUnwrapper,
[exception],
- kernelBuilder._typeInferenceMap
- .getReturnTypeOf(kernelBuilder._commonElements.exceptionUnwrapper),
+ unwrappedType,
const <DartType>[],
sourceInformation: trySourceInformation);
HInvokeStatic unwrappedException = kernelBuilder.pop();
diff --git a/pkg/compiler/lib/src/ssa/codegen.dart b/pkg/compiler/lib/src/ssa/codegen.dart
index 781976a..db213ca 100644
--- a/pkg/compiler/lib/src/ssa/codegen.dart
+++ b/pkg/compiler/lib/src/ssa/codegen.dart
@@ -3492,9 +3492,10 @@
js.Expression test;
switch (node.specialization) {
- case IsTestSpecialization.null_:
- // This case should be lowered to [HIdentity] during optimization.
- test = js.Binary(relation, value, js.LiteralNull());
+ case IsTestSpecialization.isNull:
+ case IsTestSpecialization.notNull:
+ // These cases should be lowered using [HIdentity] during optimization.
+ failedAt(node, 'Missing lowering');
break;
case IsTestSpecialization.string:
diff --git a/pkg/compiler/lib/src/ssa/nodes.dart b/pkg/compiler/lib/src/ssa/nodes.dart
index e29459a..fce8ad8 100644
--- a/pkg/compiler/lib/src/ssa/nodes.dart
+++ b/pkg/compiler/lib/src/ssa/nodes.dart
@@ -4608,6 +4608,7 @@
if (useNullSafety &&
expression.isNull(abstractValueDomain).isDefinitelyTrue) {
+ if (dartType.isObject) return AbstractBool.False;
if (closedWorld.dartTypes.isTopType(dartType) ||
dartType is NullableType ||
dartType.isNull) {
diff --git a/pkg/compiler/lib/src/ssa/optimize.dart b/pkg/compiler/lib/src/ssa/optimize.dart
index cce21ad..8b38f2f 100644
--- a/pkg/compiler/lib/src/ssa/optimize.dart
+++ b/pkg/compiler/lib/src/ssa/optimize.dart
@@ -2176,12 +2176,17 @@
SpecializedChecks.findIsTestSpecialization(
dartType, _graph, _closedWorld);
- if (specialization == IsTestSpecialization.null_) {
- return HIdentity(
+ if (specialization == IsTestSpecialization.isNull ||
+ specialization == IsTestSpecialization.notNull) {
+ HInstruction nullTest = HIdentity(
node.checkedInput,
_graph.addConstantNull(_closedWorld),
null,
_abstractValueDomain.boolType);
+ if (specialization == IsTestSpecialization.isNull) return nullTest;
+ nullTest.sourceInformation = node.sourceInformation;
+ node.block.addBefore(node, nullTest);
+ return HNot(nullTest, _abstractValueDomain.boolType);
}
if (specialization != null) {
diff --git a/pkg/dartdev/lib/dartdev.dart b/pkg/dartdev/lib/dartdev.dart
index b4cb2c8..7a35b53 100644
--- a/pkg/dartdev/lib/dartdev.dart
+++ b/pkg/dartdev/lib/dartdev.dart
@@ -7,7 +7,7 @@
import 'package:args/args.dart';
import 'package:args/command_runner.dart';
import 'package:cli_util/cli_logging.dart';
-import 'package:dartfix/src/migrate/migrate.dart';
+import 'package:nnbd_migration/migration_cli.dart';
import 'src/commands/analyze.dart';
import 'src/commands/create.dart';
@@ -32,7 +32,7 @@
addCommand(AnalyzeCommand(verbose: verbose));
addCommand(CreateCommand(verbose: verbose));
addCommand(FormatCommand(verbose: verbose));
- addCommand(MigrateCommand(logProvider: () => log));
+ addCommand(MigrateCommand(verbose: verbose));
addCommand(PubCommand(verbose: verbose));
addCommand(RunCommand(verbose: verbose));
addCommand(TestCommand(verbose: verbose));
diff --git a/pkg/dartdev/lib/src/commands/run.dart b/pkg/dartdev/lib/src/commands/run.dart
index 1abc46a..0f8bada 100644
--- a/pkg/dartdev/lib/src/commands/run.dart
+++ b/pkg/dartdev/lib/src/commands/run.dart
@@ -60,7 +60,7 @@
// synchronization).
if (args.any((element) => (element.startsWith('--observe') ||
element.startsWith('--enable-vm-service')))) {
- return await _DebuggingSession(args).start();
+ return await _DebuggingSession(this, args).start();
}
// Starting in ProcessStartMode.inheritStdio mode means the child process
@@ -73,7 +73,8 @@
}
class _DebuggingSession {
- _DebuggingSession(List<String> args) : _args = args.toList() {
+ _DebuggingSession(this._runCommand, List<String> args)
+ : _args = args.toList() {
// Process flags that are meant to configure the VM service HTTP server or
// dump VM service connection information to a file. Since the VM service
// clients won't actually be connecting directly to the service, we'll make
@@ -84,28 +85,39 @@
if (isObserve) {
_observe = true;
}
- // These flags can be provided by the embedder so we need to check for
- // both `=` and `:` separators.
- final observatoryBindInfo =
- (arg.contains('=') ? arg.split('=') : arg.split(':'))[1].split('/');
- _port = int.tryParse(observatoryBindInfo.first) ?? 0;
- if (observatoryBindInfo.length > 1) {
- try {
- _bindAddress = Uri.http(observatoryBindInfo[1], '');
- } on FormatException {
- // TODO(bkonyi): log invalid parse? The VM service just ignores bad
- // input flags.
- // Ignore.
+ if (arg.contains('=') || arg.contains(':')) {
+ // These flags can be provided by the embedder so we need to check for
+ // both `=` and `:` separators.
+ final observatoryBindInfo =
+ (arg.contains('=') ? arg.split('=') : arg.split(':'))[1]
+ .split('/');
+ _port = int.tryParse(observatoryBindInfo.first) ?? 0;
+ if (observatoryBindInfo.length > 1) {
+ try {
+ _bindAddress = Uri.http(observatoryBindInfo[1], '');
+ } on FormatException {
+ // TODO(bkonyi): log invalid parse? The VM service just ignores bad
+ // input flags.
+ // Ignore.
+ }
}
}
} else if (arg.startsWith('--write-service-info=')) {
try {
- _serviceInfoUri = Uri.parse(arg.split('=')[1]);
+ final split = arg.split('=');
+ if (split[1].isNotEmpty) {
+ _serviceInfoUri = Uri.parse(split[1]);
+ } else {
+ _runCommand.usageException(
+ 'Invalid URI argument to --write-service-info: "${split[1]}"');
+ }
} on FormatException {
// TODO(bkonyi): log invalid parse? The VM service just ignores bad
// input flags.
// Ignore.
}
+ } else if (arg == '--disable-service-auth-codes') {
+ _disableServiceAuthCodes = true;
}
}
@@ -129,7 +141,7 @@
// Start using ProcessStartMode.normal and forward stdio manually as we
// need to filter the true VM service URI and replace it with the DDS URI.
_process = await Process.start(
- 'dart',
+ sdk.dart,
[
'--disable-dart-dev',
_observe
@@ -152,7 +164,7 @@
// Shutdown DDS if it was started and wait for the process' stdio streams
// to close so we don't truncate program output.
await Future.wait([
- _dds?.shutdown(),
+ if (_dds != null) _dds.shutdown(),
_stderrDone,
_stdoutDone,
]);
@@ -173,6 +185,7 @@
_dds = await DartDevelopmentService.startDartDevelopmentService(
remoteVmServiceUri,
serviceUri: _bindAddress.replace(port: _port),
+ enableAuthCodes: !_disableServiceAuthCodes,
);
if (_serviceInfoUri != null) {
// Output the service connection information.
@@ -194,8 +207,8 @@
if (_dds == null) {
return msg;
}
- if (msg.startsWith('Observatory listening on') ||
- msg.startsWith('Connect to Observatory at')) {
+ if (msg.contains('Observatory listening on') ||
+ msg.contains('Connect to Observatory at')) {
// Search for the VM service URI in the message and replace it.
msg = msg.replaceFirst(
RegExp(r'https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.'
@@ -242,9 +255,10 @@
}
Uri _bindAddress = Uri.http('127.0.0.1', '');
+ bool _disableServiceAuthCodes = false;
DartDevelopmentService _dds;
bool _observe = false;
- int _port;
+ int _port = 8181;
Process _process;
Uri _serviceInfoUri;
Future _stderrDone;
@@ -252,4 +266,5 @@
final List<String> _args;
final Completer<void> _ddsCompleter = Completer();
+ final RunCommand _runCommand;
}
diff --git a/pkg/dartdev/test/commands/migrate_test.dart b/pkg/dartdev/test/commands/migrate_test.dart
index c5f8882..85ff6fa 100644
--- a/pkg/dartdev/test/commands/migrate_test.dart
+++ b/pkg/dartdev/test/commands/migrate_test.dart
@@ -34,13 +34,8 @@
test('directory implicit', () {
p = project(mainSrc: 'int get foo => 1;\n');
- var result = p.runSync(
- 'migrate',
- [
- '--no-web-preview',
- '--server-path=${p.absolutePathToAnalysisServerFile}'
- ],
- workingDir: p.dirPath);
+ var result =
+ p.runSync('migrate', ['--no-web-preview'], workingDir: p.dirPath);
expect(result.exitCode, _nnbdIsEnabled ? 0 : 2);
expect(result.stderr, _nnbdIsEnabled ? isEmpty : isNotEmpty);
expect(result.stdout, contains('Generating migration suggestions'));
@@ -48,11 +43,7 @@
test('directory explicit', () {
p = project(mainSrc: 'int get foo => 1;\n');
- var result = p.runSync('migrate', [
- '--no-web-preview',
- '--server-path=${p.absolutePathToAnalysisServerFile}',
- p.dirPath
- ]);
+ var result = p.runSync('migrate', ['--no-web-preview', p.dirPath]);
expect(result.exitCode, _nnbdIsEnabled ? 0 : 2);
expect(result.stderr, _nnbdIsEnabled ? isEmpty : isNotEmpty);
expect(result.stdout, contains('Generating migration suggestions'));
@@ -60,18 +51,15 @@
test('bad directory', () {
p = project(mainSrc: 'int get foo => 1;\n');
- var result = p.runSync('migrate',
- ['--server-path=${p.absolutePathToAnalysisServerFile}', 'foo_bar_dir']);
- expect(result.exitCode, 64);
- expect(result.stderr,
- contains('not found; please provide a path to a package or directory'));
+ var result = p.runSync('migrate', ['foo_bar_dir']);
+ expect(result.exitCode, 1);
+ expect(result.stderr, contains('foo_bar_dir does not exist'));
expect(result.stdout, isEmpty);
});
test('pub get needs running', () {
p = project(mainSrc: 'import "package:foo/foo.dart";\n');
- var result = p.runSync('migrate',
- ['--server-path=${p.absolutePathToAnalysisServerFile}', p.dirPath]);
+ var result = p.runSync('migrate', [p.dirPath]);
expect(result.exitCode, 1);
expect(result.stderr, isEmpty);
expect(result.stdout, didYouForgetToRunPubGet);
@@ -79,8 +67,7 @@
test('non-pub-related error', () {
p = project(mainSrc: 'var missing = "semicolon"\n');
- var result = p.runSync('migrate',
- ['--server-path=${p.absolutePathToAnalysisServerFile}', p.dirPath]);
+ var result = p.runSync('migrate', [p.dirPath]);
expect(result.exitCode, 1);
expect(result.stderr, isEmpty);
expect(result.stdout, isNot(didYouForgetToRunPubGet));
diff --git a/pkg/dartdev/test/utils.dart b/pkg/dartdev/test/utils.dart
index f191eaa..9dc7b41 100644
--- a/pkg/dartdev/test/utils.dart
+++ b/pkg/dartdev/test/utils.dart
@@ -96,11 +96,6 @@
return path.join(sdkRootPath, 'pkg', 'dartdev', 'bin', 'dartdev.dart');
}
- String get absolutePathToAnalysisServerFile {
- return path.join(
- sdkRootPath, 'pkg', 'analysis_server', 'bin', 'server.dart');
- }
-
File findFile(String name) {
var file = File(path.join(dir.path, name));
return file.existsSync() ? file : null;
diff --git a/pkg/dartfix/CHANGELOG.md b/pkg/dartfix/CHANGELOG.md
index 0b0c65d..99b5795 100644
--- a/pkg/dartfix/CHANGELOG.md
+++ b/pkg/dartfix/CHANGELOG.md
@@ -1,5 +1,7 @@
# 0.1.7
* Improve experimental non-nullable migration support.
+* Extract some nnbd migration implementation components from the dartfix
+ package.
# 0.1.6
* Improve experimental non-nullable migration support.
diff --git a/pkg/dartfix/lib/src/migrate/migrate.dart b/pkg/dartfix/lib/src/migrate/migrate.dart
deleted file mode 100644
index 1fbd9e5..0000000
--- a/pkg/dartfix/lib/src/migrate/migrate.dart
+++ /dev/null
@@ -1,481 +0,0 @@
-// Copyright (c) 2020, 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 'dart:io';
-
-import 'package:analysis_server_client/handler/notification_handler.dart';
-import 'package:analysis_server_client/listener/server_listener.dart';
-import 'package:analysis_server_client/protocol.dart';
-import 'package:nnbd_migration/isolate_server.dart';
-import 'package:args/command_runner.dart';
-import 'package:cli_util/cli_logging.dart';
-import 'package:nnbd_migration/src/messages.dart';
-import 'package:path/path.dart' as path;
-
-import '../util.dart';
-import 'apply.dart';
-import 'display.dart';
-import 'options.dart';
-
-String get _dartSdkVersion {
- String version = Platform.version;
-
- // Remove the build date and OS.
- if (version.contains(' ')) {
- version = version.substring(0, version.indexOf(' '));
- }
-
- // Convert a git hash to 8 chars.
- // '2.8.0-edge.fd992e423ef69ece9f44bd3ac58fa2355b563212'
- final RegExp versionRegExp = RegExp(r'^.*\.([0123456789abcdef]+)$');
- RegExpMatch match = versionRegExp.firstMatch(version);
- if (match != null && match.group(1).length == 40) {
- String commit = match.group(1);
- version = version.replaceAll(commit, commit.substring(0, 10));
- }
-
- return version;
-}
-
-// TODO(devoncarew): Over time, we should look to share code with the
-// implementation here and that in lib/src/driver.dart.
-
-typedef LogProvider = Logger Function();
-
-/// Perform null safety related migrations on the user's code.
-class MigrateCommand extends Command {
- final LogProvider logProvider;
-
- @override
- final bool hidden;
-
- MigrateCommand({this.logProvider, this.hidden = false}) {
- MigrateOptions.defineOptions(argParser);
- }
-
- @override
- String get description =>
- 'Perform a null safety migration on a project or package.'
- '\n\nThe migrate feature is in preview and not yet complete; we welcome '
- 'feedback.\n\n'
- 'https://github.com/dart-lang/sdk/tree/master/pkg/nnbd_migration#providing-feedback';
-
- @override
- String get invocation {
- return '${super.invocation} [project or directory]';
- }
-
- @override
- String get name => 'migrate';
-
- @override
- Future<int> run() async {
- MigrateOptions options = _parseAndValidateOptions();
-
- Logger logger;
- if (logProvider != null) {
- logger = logProvider();
- }
- logger ??= Logger.standard();
-
- final Ansi ansi = logger.ansi;
-
- logger.stdout('Migrating ${options.directory}');
- logger.stdout('');
-
- Progress getProgress(String message) => options.debug
- ? SimpleProgress(logger, message)
- : logger.progress(message);
-
- Map<String, List<AnalysisError>> fileErrors = {};
-
- String instrumentationLogFile;
- String sdkPath = options.sdkPath;
- bool stdioPassthrough = false;
-
- if (options.debug) {
- stdioPassthrough = true;
- instrumentationLogFile = path.join(
- Directory.systemTemp.createTempSync('migration_debug').path,
- 'instrumentationLog');
- logger.stdout('Instrumentation log file: $instrumentationLogFile');
- }
-
- Progress progress = getProgress('${ansi.emphasized('Analyzing project')}');
-
- Server server = Server(
- listener: logger.isVerbose ? _ServerListener(logger) : null,
- stdioPassthrough: stdioPassthrough);
- try {
- await server.start(
- clientId: 'dart $name',
- clientVersion: _dartSdkVersion,
- instrumentationLogFile: instrumentationLogFile,
- sdkPath: sdkPath);
- _ServerNotifications serverNotifications = _ServerNotifications(server);
- await serverNotifications.listenToServer(server);
-
- serverNotifications.analysisErrorsEvents
- .listen((AnalysisErrorsParams event) {
- List<AnalysisError> errors = event.errors
- .where((error) => error.severity == AnalysisErrorSeverity.ERROR)
- .toList();
- if (errors.isEmpty) {
- fileErrors.remove(event.file);
- } else {
- fileErrors[event.file] = errors;
- }
- });
-
- var params =
- AnalysisSetAnalysisRootsParams([options.directoryAbsolute], []);
- await server.send(ANALYSIS_REQUEST_SET_ANALYSIS_ROOTS, params.toJson());
-
- await serverNotifications.onNextAnalysisComplete;
-
- progress.finish(showTiming: true);
- } finally {
- progress.cancel();
- }
-
- // Handle if there were any errors.
- if (fileErrors.isEmpty) {
- logger.stdout('No analysis issues found.');
- } else {
- logger.stdout('');
-
- int issueCount =
- fileErrors.values.map((list) => list.length).reduce((a, b) => a + b);
- logger.stdout(
- '$issueCount analysis ${pluralize('issue', issueCount)} found:');
- List<AnalysisError> allErrors = fileErrors.values
- .fold(<AnalysisError>[], (list, element) => list..addAll(element));
- _displayIssues(
- logger,
- options.directory,
- allErrors,
- );
- var importErrorCount = allErrors.where(_isUriError).length;
-
- logger.stdout('');
- logger.stdout(
- 'Note: analysis errors will result in erroneous migration suggestions.');
-
- if (options.ignoreErrors) {
- logger.stdout('Continuing with migration suggestions due to the use of '
- '--${MigrateOptions.ignoreErrorsOption}.');
- } else {
- // Fail with how to continue.
- logger.stdout('');
- if (importErrorCount != 0) {
- logger.stdout(
- 'Unresolved URIs found. Did you forget to run "pub get"?');
- logger.stdout('');
- }
- logger.stdout(
- 'Please fix the analysis issues (or, force generation of migration '
- 'suggestions by re-running with '
- '--${MigrateOptions.ignoreErrorsOption}).');
- return 1;
- }
- }
-
- // Calculate migration suggestions.
- logger.stdout('');
- progress =
- getProgress('${ansi.emphasized('Generating migration suggestions')}');
- Map<String, dynamic> json;
-
- try {
- final EditDartfixParams params =
- EditDartfixParams([options.directoryAbsolute]);
- params.includedFixes = ['non-nullable'];
- params.port = options.previewPort;
- json = await server.send(EDIT_REQUEST_DARTFIX, params.toJson());
- progress.finish(showTiming: true);
- } finally {
- progress.cancel();
- }
-
- EditDartfixResult migrationResults =
- EditDartfixResult.fromJson(ResponseDecoder(null), 'result', json);
-
- if (migrationResults.suggestions.isEmpty) {
- logger.stdout('No migration changes necessary.');
- return 0;
- }
-
- List<SourceEdit> allEdits = migrationResults.edits
- .fold(<SourceEdit>[], (list, edit) => list..addAll(edit.edits));
- List<String> files =
- migrationResults.edits.map((edit) => edit.file).toList();
-
- logger.stdout('Found ${allEdits.length} '
- 'suggested ${pluralize('change', allEdits.length)} in '
- '${files.length} ${pluralize('file', files.length)}.');
-
- logger.stdout('');
-
- if (options.applyChanges) {
- logger.stdout(ansi.emphasized('Applying changes:'));
-
- _applyMigrationSuggestions(logger, options.directory, migrationResults);
-
- logger.stdout('');
- logger.stdout(
- 'Applied ${allEdits.length} ${pluralize('edit', allEdits.length)}.');
-
- // Note: do not open the web preview if apply-changes is specified, as we
- // currently cannot tell the web preview to disable the "apply migration"
- // button.
- return 0;
- }
-
- if (options.webPreview) {
- String url = migrationResults.urls.first;
- assert(migrationResults.urls.length <= 1,
- 'Got unexpected extra preview URLs from server');
-
- logger.stdout(ansi.emphasized('View migration results:'));
-
- // TODO(devoncarew): Open a browser automatically.
- logger.stdout('''
-Visit:
-
- ${ansi.emphasized(url)}
-
-to see the migration results. Use the interactive web view to review, improve, or apply
-the results (alternatively, to apply the results without using the web preview, re-run
-the tool with --${MigrateOptions.applyChangesOption}).
-''');
-
- logger.stdout('When finished with the preview, hit ctrl-c '
- 'to terminate this process.');
-
- // Block until sigint (ctrl-c).
- await _blockUntilSignalInterrupt();
- } else {
- logger.stdout(ansi.emphasized('Summary of changes:'));
-
- _displayChangeSummary(logger, options.directory, migrationResults);
-
- logger.stdout('');
- logger.stdout('To apply these changes, re-run the tool with '
- '--${MigrateOptions.applyChangesOption}.');
- }
-
- // ignore: unawaited_futures
- server.stop(timeLimit: Duration(seconds: 1));
-
- return 0;
- }
-
- void _applyMigrationSuggestions(
- Logger logger,
- String directory,
- EditDartfixResult migrationResults,
- ) {
- // Apply the changes to disk.
- for (SourceFileEdit sourceFileEdit in migrationResults.edits) {
- String relPath = path.relative(sourceFileEdit.file, from: directory);
- int count = sourceFileEdit.edits.length;
- logger.stdout(' $relPath ($count ${pluralize('change', count)})');
-
- String source;
- try {
- source = File(sourceFileEdit.file).readAsStringSync();
- } catch (_) {}
-
- if (source == null) {
- logger.stdout(' Unable to retrieve source for file.');
- } else {
- source = applyEdits(sourceFileEdit, source);
-
- try {
- File(sourceFileEdit.file).writeAsStringSync(source);
- } catch (e) {
- logger.stdout(' Unable to write source for file: $e');
- }
- }
- }
- }
-
- Future _blockUntilSignalInterrupt() {
- Stream<ProcessSignal> stream = ProcessSignal.sigint.watch();
- return stream.first;
- }
-
- void _displayChangeSummary(
- Logger logger,
- String directory,
- EditDartfixResult migrationResults,
- ) {
- final Ansi ansi = logger.ansi;
-
- Map<String, List<DartFixSuggestion>> fileSuggestions = {};
- for (DartFixSuggestion suggestion in migrationResults.suggestions) {
- String file = suggestion.location.file;
- fileSuggestions.putIfAbsent(file, () => <DartFixSuggestion>[]);
- fileSuggestions[file].add(suggestion);
- }
-
- // present a diff-like view
- for (SourceFileEdit sourceFileEdit in migrationResults.edits) {
- String file = sourceFileEdit.file;
- String relPath = path.relative(file, from: directory);
- int count = sourceFileEdit.edits.length;
-
- logger.stdout('');
- logger.stdout('${ansi.emphasized(relPath)} '
- '($count ${pluralize('change', count)}):');
-
- String source;
- try {
- source = File(file).readAsStringSync();
- } catch (_) {}
-
- if (source == null) {
- logger.stdout(' (unable to retrieve source for file)');
- } else {
- SourcePrinter sourcePrinter = SourcePrinter(source);
-
- List<SourceEdit> edits = sortEdits(sourceFileEdit);
-
- // Apply edits.
- sourcePrinter.applyEdits(edits);
-
- // Render the changed lines.
- sourcePrinter.processChangedLines((lineNumber, lineText) {
- String prefix = ' line ${lineNumber.toString().padRight(3)} •';
- logger.stdout('$prefix ${lineText.trim()}');
- });
- }
- }
- }
-
- void _displayIssues(
- Logger logger,
- String directory,
- List<AnalysisError> issues,
- ) {
- issues.sort((AnalysisError one, AnalysisError two) {
- if (one.location.file != two.location.file) {
- return one.location.file.compareTo(two.location.file);
- }
- return one.location.offset - two.location.offset;
- });
-
- IssueRenderer renderer = IssueRenderer(logger, directory);
- for (AnalysisError issue in issues) {
- renderer.render(issue);
- }
- }
-
- bool _isUriError(AnalysisError error) => error.code == 'uri_does_not_exist';
-
- /// Parse and validate the user's options; throw a UsageException if there are
- /// issues, and return an [MigrateOptions] result otherwise.
- MigrateOptions _parseAndValidateOptions() {
- String dirPath;
-
- if (argResults.rest.isNotEmpty) {
- if (argResults.rest.length == 1) {
- dirPath = argResults.rest.first;
-
- if (FileSystemEntity.isFileSync(dirPath)) {
- // Calling this will throw an exception.
- usageException(
- 'Please provide a path to a package or directory to migrate.');
- } else if (!FileSystemEntity.isDirectorySync(dirPath)) {
- // Calling this will throw an exception.
- usageException("'$dirPath' not found; "
- 'please provide a path to a package or directory to migrate.');
- }
- } else {
- // Calling this will throw an exception.
- usageException(
- 'Please provide a path to a package or directory to migrate.');
- }
- } else {
- dirPath = Directory.current.path;
- }
-
- return MigrateOptions(argResults, dirPath);
- }
-}
-
-class _ServerListener with ServerListener {
- final Logger logger;
-
- _ServerListener(this.logger);
-
- @override
- void log(String prefix, String details) {
- logger.trace('[$prefix] $details');
- }
-}
-
-class _ServerNotifications with NotificationHandler {
- final Server server;
-
- StreamController<ServerStatusParams> _serverStatusController =
- StreamController<ServerStatusParams>.broadcast();
-
- StreamController<AnalysisErrorsParams> _analysisErrorsController =
- StreamController<AnalysisErrorsParams>.broadcast();
-
- _ServerNotifications(this.server);
-
- Stream<AnalysisErrorsParams> get analysisErrorsEvents =>
- _analysisErrorsController.stream;
-
- Future get onNextAnalysisComplete {
- Completer completer = Completer();
-
- StreamSubscription sub;
- sub = serverStatusEvents.listen((event) {
- if (!event.analysis.isAnalyzing) {
- sub.cancel();
- completer.complete();
- }
- });
-
- return completer.future;
- }
-
- Stream<ServerStatusParams> get serverStatusEvents =>
- _serverStatusController.stream;
-
- Future listenToServer(Server server) async {
- server.listenToOutput(notificationProcessor: handleEvent);
-
- await server.send(SERVER_REQUEST_SET_SUBSCRIPTIONS,
- ServerSetSubscriptionsParams([ServerService.STATUS]).toJson());
- }
-
- @override
- void onAnalysisErrors(AnalysisErrorsParams event) {
- _analysisErrorsController.add(event);
- }
-
- @override
- void onServerError(ServerErrorParams event) {
- stderr.writeln('encountered error: ${event.message}');
-
- for (String fatal in [migratedAlready, nnbdExperimentOff, sdkNnbdOff]) {
- if (event.message.contains(fatal)) {
- server.kill();
- exit(2);
- }
- }
- }
-
- @override
- void onServerStatus(ServerStatusParams event) {
- if (event.analysis != null) {
- _serverStatusController.add(event);
- }
- }
-}
diff --git a/pkg/dds/CHANGELOG.md b/pkg/dds/CHANGELOG.md
index 1f3d60f..d795355 100644
--- a/pkg/dds/CHANGELOG.md
+++ b/pkg/dds/CHANGELOG.md
@@ -1,3 +1,9 @@
-# 0.1.0-dev
+# 1.1.0
+
+- Added `getDartDevelopmentServiceVersion` RPC.
+- Added DDS protocol to VM service `getSupportedProtocols` response.
+- Added example/example.dart.
+
+# 1.0.0
- Initial release.
diff --git a/pkg/dds/README.md b/pkg/dds/README.md
index ab9067c..64b0c72 100644
--- a/pkg/dds/README.md
+++ b/pkg/dds/README.md
@@ -1,5 +1,3 @@
-_This package is a work in-progress and the API may not be stable. Stay tuned for updates._
-
A package used to spawn the Dart Developer Service (DDS), which is used to communicate with a Dart VM Service instance and provide extended functionality to the core VM Service Protocol.
# Functionality
diff --git a/pkg/dds/dds_protocol.md b/pkg/dds/dds_protocol.md
index b3bca7b..8ac77ee 100644
--- a/pkg/dds/dds_protocol.md
+++ b/pkg/dds/dds_protocol.md
@@ -17,12 +17,14 @@
- [Revision History](#revision-history)
- [Public RPCs](#public-rpcs)
- [getClientName](#getclientname)
+ - [getDartDevelopmentServiceVersion](#getdartdevelopmentserviceversion)
- [getLogHistorySize](#getloghistorysize)
- [requirePermissionToResume](#requirepermissiontoresume)
- [setClientName](#setclientname)
- [setLogHistorySize](#setloghistorysize)
- [Public Types](#public-types)
- [ClientName](#clientname)
+ - [DartDevelopmentServiceVersion](#dartdevelopmentserviceversion)
- [Size](#size)
## RPCs, Requests, and Responses
@@ -61,6 +63,18 @@
See [ClientName](#clientname)
+### getDartDevelopmentServiceVersion
+
+```
+Version getDartDevelopmentServiceVersion()
+```
+
+The _getDartDevelopmentServiceVersion_ RPC is used to determine what version of
+the Dart Development Service Protocol is served by a DDS instance.
+
+See [Version](#version).
+
+
### getLogHistorySize
```
@@ -164,9 +178,11 @@
version | comments
------- | --------
1.0 | Initial revision
+1.1 | Added `getDartDevelopmentServiceVersion` RPC.
[resume]: https://github.com/dart-lang/sdk/blob/master/runtime/vm/service/service.md#resume
[success]: https://github.com/dart-lang/sdk/blob/master/runtime/vm/service/service.md#success
+[version]: https://github.com/dart-lang/sdk/blob/master/runtime/vm/service/service.md#version
[service-protocol]: https://github.com/dart-lang/sdk/blob/master/runtime/vm/service/service.md
[service-protocol-rpcs-requests-and-responses]: https://github.com/dart-lang/sdk/blob/master/runtime/vm/service/service.md#rpcs-requests-and-responses
diff --git a/pkg/dds/example/example.dart b/pkg/dds/example/example.dart
new file mode 100644
index 0000000..883c678
--- /dev/null
+++ b/pkg/dds/example/example.dart
@@ -0,0 +1,24 @@
+// Copyright (c) 2020, 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 'package:dds/dds.dart';
+import 'package:vm_service/vm_service_io.dart';
+
+import '../test/common/test_helper.dart';
+
+Future<void> main() async {
+ final process = await spawnDartProcess('../test/smoke.dart');
+ final dds = await DartDevelopmentService.startDartDevelopmentService(
+ remoteVmServiceUri,
+ );
+
+ // Connect to the DDS instance and make a request using package:vm_service.
+ final service = await vmServiceConnectUri(dds.wsUri.toString());
+ final version = await service.getVersion();
+
+ print('Service Version: $version');
+
+ await dds.shutdown();
+ process.kill();
+}
diff --git a/pkg/dds/lib/dds.dart b/pkg/dds/lib/dds.dart
index 8fdb4b5..79d5768 100644
--- a/pkg/dds/lib/dds.dart
+++ b/pkg/dds/lib/dds.dart
@@ -50,9 +50,17 @@
///
/// If provided, [serviceUri] will determine the address and port of the
/// spawned Dart Development Service.
+ ///
+ /// [enableAuthCodes] controls whether or not an authentication code must
+ /// be provided by clients when communicating with this instance of
+ /// [DartDevelopmentService]. Authentication codes take the form of a base64
+ /// encoded string provided as the first element of the DDS path and is meant
+ /// to make it more difficult for unintended clients to connect to this
+ /// service. Authentication codes are enabled by default.
static Future<DartDevelopmentService> startDartDevelopmentService(
Uri remoteVmServiceUri, {
Uri serviceUri,
+ bool enableAuthCodes = true,
}) async {
if (remoteVmServiceUri == null) {
throw ArgumentError.notNull('remoteVmServiceUri');
@@ -67,8 +75,11 @@
'serviceUri must have an HTTP scheme. Actual: ${serviceUri.scheme}',
);
}
-
- final service = _DartDevelopmentService(remoteVmServiceUri, serviceUri);
+ final service = _DartDevelopmentService(
+ remoteVmServiceUri,
+ serviceUri,
+ enableAuthCodes,
+ );
await service.startService();
return service;
}
@@ -78,6 +89,10 @@
/// Stop accepting requests after gracefully handling existing requests.
Future<void> shutdown();
+ /// Set to `true` if this isntance of [DartDevelopmentService] requires an
+ /// authentication code to connect.
+ bool get authCodesEnabled;
+
/// The HTTP [Uri] of the remote VM service instance that this service will
/// forward requests to.
Uri get remoteVmServiceUri;
@@ -103,6 +118,10 @@
/// Set to `true` if this instance of [DartDevelopmentService] is accepting
/// requests.
bool get isRunning;
+
+ /// The version of the DDS protocol supported by this [DartDevelopmentService]
+ /// instance.
+ static const String protocolVersion = '1.1';
}
class DartDevelopmentServiceException implements Exception {
diff --git a/pkg/dds/lib/src/binary_compatible_peer.dart b/pkg/dds/lib/src/binary_compatible_peer.dart
index 7c5b83b..645c1ca 100644
--- a/pkg/dds/lib/src/binary_compatible_peer.dart
+++ b/pkg/dds/lib/src/binary_compatible_peer.dart
@@ -49,10 +49,8 @@
const metadataOffset = 4;
final dataOffset = bytesView.getUint32(0, Endian.little);
final metadataLength = dataOffset - metadataOffset;
- final metadata = Utf8Decoder().convert(new Uint8List.view(
- bytesView.buffer,
- bytesView.offsetInBytes + metadataOffset,
- metadataLength));
+ final metadata = Utf8Decoder().convert(Uint8List.view(bytesView.buffer,
+ bytesView.offsetInBytes + metadataOffset, metadataLength));
final decodedMetadata = json.decode(metadata);
streamManager.streamNotify(decodedMetadata['params']['streamId'], data);
}
diff --git a/pkg/dds/lib/src/client.dart b/pkg/dds/lib/src/client.dart
index 811aec2..f1b4a25 100644
--- a/pkg/dds/lib/src/client.dart
+++ b/pkg/dds/lib/src/client.dart
@@ -117,6 +117,31 @@
return _RPCResponses.success;
});
+ _clientPeer.registerMethod('getDartDevelopmentServiceVersion',
+ (parameters) async {
+ final ddsVersion = DartDevelopmentService.protocolVersion.split('.');
+ return <String, dynamic>{
+ 'type': 'Version',
+ 'major': int.parse(ddsVersion[0]),
+ 'minor': int.parse(ddsVersion[1]),
+ };
+ });
+
+ _clientPeer.registerMethod('getSupportedProtocols', (parameters) async {
+ final Map<String, dynamic> supportedProtocols =
+ await _vmServicePeer.sendRequest('getSupportedProtocols');
+ final ddsVersion = DartDevelopmentService.protocolVersion.split('.');
+ final ddsProtocol = {
+ 'protocolName': 'DDS',
+ 'major': int.parse(ddsVersion[0]),
+ 'minor': int.parse(ddsVersion[1]),
+ };
+ supportedProtocols['protocols']
+ .cast<Map<String, dynamic>>()
+ .add(ddsProtocol);
+ return supportedProtocols;
+ });
+
// When invoked within a fallback, the next fallback will start executing.
// The final fallback forwards the request to the VM service directly.
@alwaysThrows
diff --git a/pkg/dds/lib/src/dds_impl.dart b/pkg/dds/lib/src/dds_impl.dart
index 5b68151..0ab172d 100644
--- a/pkg/dds/lib/src/dds_impl.dart
+++ b/pkg/dds/lib/src/dds_impl.dart
@@ -5,11 +5,16 @@
part of dds;
class _DartDevelopmentService implements DartDevelopmentService {
- _DartDevelopmentService(this._remoteVmServiceUri, this._uri) {
+ _DartDevelopmentService(
+ this._remoteVmServiceUri,
+ this._uri,
+ this._authCodesEnabled,
+ ) {
_clientManager = _ClientManager(this);
_isolateManager = _IsolateManager(this);
_loggingRepository = _LoggingRepository();
_streamManager = _StreamManager(this);
+ _authCode = _authCodesEnabled ? _makeAuthToken() : '';
}
Future<void> startService() async {
@@ -37,9 +42,19 @@
final port = uri?.port ?? 0;
// Start the DDS server.
- _server = await io.serve(_handlers().handler, host, port);
+ _server = await io.serve(
+ const Pipeline()
+ .addMiddleware(_authCodeMiddleware)
+ .addHandler(_handlers().handler),
+ host,
+ port);
- final tmpUri = Uri(scheme: 'http', host: host, port: _server.port);
+ final tmpUri = Uri(
+ scheme: 'http',
+ host: host,
+ port: _server.port,
+ path: '$_authCode/',
+ );
// Notify the VM service that this client is DDS and that it should close
// and refuse connections from other clients. DDS is now acting in place of
@@ -65,7 +80,7 @@
}
_shuttingDown = true;
// Don't accept anymore HTTP requests.
- await _server.close();
+ await _server?.close();
// Close connections to clients.
await clientManager.shutdown();
@@ -76,6 +91,50 @@
_done.complete();
}
+ /// Generates a base64 authentication code that must be passed as the first
+ /// part of the request path. Used to prevent random connections from clients
+ /// watching the common service ports.
+ static String _makeAuthToken() {
+ final kTokenByteSize = 8;
+ final bytes = Uint8List(kTokenByteSize);
+ final random = Random.secure();
+ for (int i = 0; i < kTokenByteSize; i++) {
+ bytes[i] = random.nextInt(256);
+ }
+ return base64Url.encode(bytes);
+ }
+
+ /// Shelf middleware to verify authentication tokens before processing a
+ /// request.
+ ///
+ /// If authentication codes are enabled, a 403 response is returned if the
+ /// authentication code is not the first element of the request's path.
+ /// Otherwise, the request is forwarded to the first handler.
+ Handler _authCodeMiddleware(Handler innerHandler) => (Request request) {
+ if (_authCodesEnabled) {
+ final forbidden =
+ Response.forbidden('missing or invalid authentication code');
+ final pathSegments = request.url.pathSegments;
+ if (pathSegments.isEmpty) {
+ return forbidden;
+ }
+ final authToken = pathSegments[0];
+ if (authToken != _authCode) {
+ return forbidden;
+ }
+ // Creates a new request with the authentication code stripped from
+ // the request URI. This method doesn't behave as you might expect.
+ // Calling request.change(path: authToken) has the effect of changing
+ // the request's handler path from '/' to '/$authToken/' while also
+ // changing the request's url from '$authToken/restofpath/' to
+ // 'restofpath/'. The handler path is only used by shelf, so this
+ // operation has the effect of stripping the authentication code from
+ // the request.
+ request = request.change(path: authToken);
+ }
+ return innerHandler(request);
+ };
+
// Attempt to upgrade HTTP requests to a websocket before processing them as
// standard HTTP requests. The websocket handler will fail quickly if the
// request doesn't appear to be a websocket upgrade request.
@@ -117,6 +176,10 @@
String _getNamespace(_DartDevelopmentServiceClient client) =>
clientManager.clients.keyOf(client);
+ bool get authCodesEnabled => _authCodesEnabled;
+ final bool _authCodesEnabled;
+ String _authCode;
+
Uri get remoteVmServiceUri => _remoteVmServiceUri;
Uri get remoteVmServiceWsUri => _toWebSocket(_remoteVmServiceUri);
Uri _remoteVmServiceUri;
diff --git a/pkg/dds/pubspec.yaml b/pkg/dds/pubspec.yaml
index 3df2581..3282c47 100644
--- a/pkg/dds/pubspec.yaml
+++ b/pkg/dds/pubspec.yaml
@@ -3,7 +3,7 @@
A library used to spawn the Dart Developer Service, used to communicate with
a Dart VM Service instance.
-version: 1.0.0
+version: 1.1.0
homepage: https://github.com/dart-lang/sdk/tree/master/pkg/dds
@@ -13,6 +13,7 @@
dependencies:
async: ^2.4.1
json_rpc_2: ^2.1.0
+ meta: ^1.1.8
pedantic: ^1.7.0
shelf: ^0.7.5
shelf_proxy: ^0.1.0+7
diff --git a/pkg/dds/test/auth_codes_test.dart b/pkg/dds/test/auth_codes_test.dart
new file mode 100644
index 0000000..9e7ad8c
--- /dev/null
+++ b/pkg/dds/test/auth_codes_test.dart
@@ -0,0 +1,56 @@
+// Copyright (c) 2020, 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:convert';
+import 'dart:io';
+
+import 'package:dds/dds.dart';
+import 'package:test/test.dart';
+import 'package:vm_service/vm_service_io.dart';
+
+import 'common/test_helper.dart';
+
+void main() {
+ group('DDS', () {
+ Process process;
+ DartDevelopmentService dds;
+
+ setUp(() async {
+ process = await spawnDartProcess('smoke.dart');
+ });
+
+ tearDown(() async {
+ await dds?.shutdown();
+ process?.kill();
+ dds = null;
+ process = null;
+ });
+
+ test('Bad Auth Code', () async {
+ dds = await DartDevelopmentService.startDartDevelopmentService(
+ remoteVmServiceUri,
+ );
+ expect(dds.isRunning, true);
+
+ // Ensure basic websocket requests are forwarded correctly to the VM service.
+ final service = await vmServiceConnectUri(dds.wsUri.toString());
+ final version = await service.getVersion();
+ expect(version.major > 0, true);
+ expect(version.minor > 0, true);
+
+ // Ensure we can still make requests of the VM service via HTTP.
+ HttpClient client = HttpClient();
+ final request = await client.getUrl(remoteVmServiceUri.replace(
+ pathSegments: [
+ // Try an invalid authentication code
+ 'abc123',
+ 'getVersion',
+ ],
+ ));
+ final response = await request.close();
+ final responseStr = (await response.transform(utf8.decoder).single);
+ expect(responseStr, 'missing or invalid authentication code');
+ });
+ });
+}
diff --git a/pkg/dds/test/common/test_helper.dart b/pkg/dds/test/common/test_helper.dart
new file mode 100644
index 0000000..365ffc4
--- /dev/null
+++ b/pkg/dds/test/common/test_helper.dart
@@ -0,0 +1,38 @@
+// Copyright (c) 2020, 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:convert';
+import 'dart:io';
+
+Uri remoteVmServiceUri;
+
+Future<Process> spawnDartProcess(String script) async {
+ final executable = Platform.executable;
+ final tmpDir = await Directory.systemTemp.createTemp('dart_service');
+ final serviceInfoUri = tmpDir.uri.resolve('service_info.json');
+ final serviceInfoFile = await File.fromUri(serviceInfoUri).create();
+
+ final arguments = [
+ '--disable-dart-dev',
+ '--observe=0',
+ '--pause-isolates-on-start',
+ '--write-service-info=$serviceInfoUri',
+ ...Platform.executableArguments,
+ Platform.script.resolve(script).toString(),
+ ];
+ final process = await Process.start(executable, arguments);
+ process.stdout
+ .transform(utf8.decoder)
+ .listen((line) => print('TESTEE OUT: $line'));
+ process.stderr
+ .transform(utf8.decoder)
+ .listen((line) => print('TESTEE ERR: $line'));
+ while ((await serviceInfoFile.length()) <= 5) {
+ await Future.delayed(const Duration(milliseconds: 50));
+ }
+ final content = await serviceInfoFile.readAsString();
+ final infoJson = json.decode(content);
+ remoteVmServiceUri = Uri.parse(infoJson['uri']);
+ return process;
+}
diff --git a/pkg/dds/test/smoke_test.dart b/pkg/dds/test/smoke_test.dart
index 39468b0..3b8cd7b 100644
--- a/pkg/dds/test/smoke_test.dart
+++ b/pkg/dds/test/smoke_test.dart
@@ -9,36 +9,7 @@
import 'package:test/test.dart';
import 'package:vm_service/vm_service_io.dart';
-Uri remoteVmServiceUri;
-
-Future<Process> spawnDartProcess(String script) async {
- final executable = Platform.executable;
- final tmpDir = await Directory.systemTemp.createTemp('dart_service');
- final serviceInfoUri = tmpDir.uri.resolve('service_info.json');
- final serviceInfoFile = await File.fromUri(serviceInfoUri).create();
-
- final arguments = [
- '--observe=0',
- '--pause-isolates-on-start',
- '--write-service-info=$serviceInfoUri',
- ...Platform.executableArguments,
- Platform.script.resolve(script).toString(),
- ];
- final process = await Process.start(executable, arguments);
- process.stdout
- .transform(utf8.decoder)
- .listen((line) => print('TESTEE OUT: $line'));
- process.stderr
- .transform(utf8.decoder)
- .listen((line) => print('TESTEE ERR: $line'));
- while ((await serviceInfoFile.length()) <= 5) {
- await Future.delayed(const Duration(milliseconds: 50));
- }
- final content = await serviceInfoFile.readAsString();
- final infoJson = json.decode(content);
- remoteVmServiceUri = Uri.parse(infoJson['uri']);
- return process;
-}
+import 'common/test_helper.dart';
void main() {
group('DDS', () {
@@ -56,36 +27,48 @@
process = null;
});
- test('Smoke Test', () async {
- dds = await DartDevelopmentService.startDartDevelopmentService(
- remoteVmServiceUri,
- );
- expect(dds.isRunning, true);
+ bool useAuthCodes = false;
+ for (int i = 0; i < 2; ++i) {
+ test('Smoke Test with ${useAuthCodes ? "" : "no "} authentication codes',
+ () async {
+ dds = await DartDevelopmentService.startDartDevelopmentService(
+ remoteVmServiceUri,
+ enableAuthCodes: useAuthCodes,
+ );
+ expect(dds.isRunning, true);
- // Ensure basic websocket requests are forwarded correctly to the VM service.
- final service = await vmServiceConnectUri(dds.wsUri.toString());
- final version = await service.getVersion();
- expect(version.major > 0, true);
- expect(version.minor > 0, true);
+ // Ensure basic websocket requests are forwarded correctly to the VM service.
+ final service = await vmServiceConnectUri(dds.wsUri.toString());
+ final version = await service.getVersion();
+ expect(version.major > 0, true);
+ expect(version.minor > 0, true);
- // Ensure we can still make requests of the VM service via HTTP.
- HttpClient client = HttpClient();
- final request = await client.getUrl(remoteVmServiceUri.replace(
- pathSegments: [
- if (remoteVmServiceUri.pathSegments.isNotEmpty)
- remoteVmServiceUri.pathSegments.first,
- 'getVersion',
- ],
- ));
- final response = await request.close();
- final Map<String, dynamic> jsonResponse = (await response
- .transform(utf8.decoder)
- .transform(json.decoder)
- .single);
- expect(jsonResponse['result']['type'], 'Version');
- expect(jsonResponse['result']['major'] > 0, true);
- expect(jsonResponse['result']['minor'] > 0, true);
- });
+ expect(
+ remoteVmServiceUri.pathSegments,
+ useAuthCodes ? isNotEmpty : isEmpty,
+ );
+
+ // Ensure we can still make requests of the VM service via HTTP.
+ HttpClient client = HttpClient();
+ final request = await client.getUrl(remoteVmServiceUri.replace(
+ pathSegments: [
+ if (remoteVmServiceUri.pathSegments.isNotEmpty)
+ remoteVmServiceUri.pathSegments.first,
+ 'getVersion',
+ ],
+ ));
+ final response = await request.close();
+ final Map<String, dynamic> jsonResponse = (await response
+ .transform(utf8.decoder)
+ .transform(json.decoder)
+ .single);
+ expect(jsonResponse['result']['type'], 'Version');
+ expect(jsonResponse['result']['major'] > 0, true);
+ expect(jsonResponse['result']['minor'] > 0, true);
+ });
+
+ useAuthCodes = true;
+ }
test('startup fails when VM service has existing clients', () async {
Uri httpToWebSocketUri(Uri httpUri) {
diff --git a/pkg/dev_compiler/lib/src/kernel/command.dart b/pkg/dev_compiler/lib/src/kernel/command.dart
index fd7c675..af299b8 100644
--- a/pkg/dev_compiler/lib/src/kernel/command.dart
+++ b/pkg/dev_compiler/lib/src/kernel/command.dart
@@ -109,6 +109,13 @@
help: 'The path to the libraries.json file for the sdk.')
..addOption('used-inputs-file',
help: 'If set, the file to record inputs used.', hide: true)
+ // TODO(41852) Define a process for breaking changes before graduating from
+ // experimental.
+ ..addFlag('experimental-emit-debug-metadata',
+ help: 'Experimental option for compiler development.\n'
+ 'Output a metadata file for debug tools next to the .js output.',
+ defaultsTo: false,
+ hide: true)
..addFlag('kernel',
abbr: 'k',
help: 'Deprecated and ignored. To be removed in a future release.',
@@ -409,11 +416,12 @@
var moduleFormat = moduleFormats[i];
var file = File(output);
await file.parent.create(recursive: true);
+ var mapUrl = p.toUri('$output.map').toString();
var jsCode = jsProgramToCode(jsModule, moduleFormat,
buildSourceMap: options.sourceMap,
inlineSourceMap: options.inlineSourceMap,
jsUrl: p.toUri(output).toString(),
- mapUrl: p.toUri(output + '.map').toString(),
+ mapUrl: mapUrl,
customScheme: multiRootScheme,
multiRootOutputPath: multiRootOutputPath,
component: compiledLibraries);
@@ -421,7 +429,23 @@
outFiles.add(file.writeAsString(jsCode.code));
if (jsCode.sourceMap != null) {
outFiles.add(
- File(output + '.map').writeAsString(json.encode(jsCode.sourceMap)));
+ File('$output.map').writeAsString(json.encode(jsCode.sourceMap)));
+ }
+
+ if (argResults['experimental-emit-debug-metadata'] as bool) {
+ var moduleMetadata = [
+ for (var lib in compiledLibraries.libraries)
+ {
+ 'name': compiler.jsLibraryName(lib),
+ 'sourceMapFileUri': mapUrl,
+ 'dartFileUris': [
+ lib.fileUri.toString(),
+ ...lib.parts.map((p) => p.partUri.toString())
+ ],
+ }
+ ];
+ outFiles.add(
+ File('$output.metadata').writeAsString(json.encode(moduleMetadata)));
}
}
diff --git a/pkg/dev_compiler/lib/src/kernel/compiler.dart b/pkg/dev_compiler/lib/src/kernel/compiler.dart
index 39e6830..ba7e03f 100644
--- a/pkg/dev_compiler/lib/src/kernel/compiler.dart
+++ b/pkg/dev_compiler/lib/src/kernel/compiler.dart
@@ -2456,7 +2456,7 @@
var lazy = topLevel && !_canEmitTypeAtTopLevel(type);
var typeRep = visitFunctionType(
// Avoid tagging a closure as Function? or Function*
- type.withNullability(Nullability.nonNullable),
+ type.withDeclaredNullability(Nullability.nonNullable),
lazy: lazy);
return runtimeCall(lazy ? 'lazyFn(#, #)' : 'fn(#, #)', [fn, typeRep]);
}
@@ -2547,7 +2547,7 @@
var nullability = nullable
? Nullability.nullable
: legacy ? Nullability.legacy : Nullability.nonNullable;
- normalizedType = typeArgument.withNullability(nullability);
+ normalizedType = typeArgument.withDeclaredNullability(nullability);
} else if (typeArgument is NeverType) {
// FutureOr<Never> --> Future<Never>
normalizedType = InterfaceType(
@@ -2560,7 +2560,8 @@
} else if (futureOr.nullability == Nullability.nullable &&
typeArgument.nullability == Nullability.nullable) {
// FutureOr<T?>? --> FutureOr<T?>
- normalizedType = futureOr.withNullability(Nullability.nonNullable);
+ normalizedType =
+ futureOr.withDeclaredNullability(Nullability.nonNullable);
}
return _emitInterfaceType(normalizedType);
}
@@ -2616,10 +2617,10 @@
// Forward-defined types will only have nullability wrappers around
// their type arguments (not the generic type itself).
typeRep = _emitGenericClassType(
- type.withNullability(Nullability.nonNullable), jsArgs);
+ type.withDeclaredNullability(Nullability.nonNullable), jsArgs);
if (_cacheTypes) {
typeRep = _typeTable.nameType(
- type.withNullability(Nullability.nonNullable), typeRep);
+ type.withDeclaredNullability(Nullability.nonNullable), typeRep);
}
}
@@ -2782,7 +2783,7 @@
// reused by the nullable and legacy versions.
typeRep = _cacheTypes
? _typeTable.nameFunctionType(
- type.withNullability(Nullability.nonNullable), typeRep,
+ type.withDeclaredNullability(Nullability.nonNullable), typeRep,
lazy: lazy)
: typeRep;
@@ -3145,10 +3146,8 @@
_emitCovarianceBoundsCheck(f.typeParameters, body);
void initParameter(VariableDeclaration p, js_ast.Identifier jsParam) {
- if (isCovariantParameter(p)) {
- var castExpr = _emitCast(jsParam, p.type);
- if (!identical(castExpr, jsParam)) body.add(castExpr.toStatement());
- }
+ // When the parameter is covariant, insert the null check before the
+ // covariant cast to avoid a TypeError when testing equality with null.
if (name == '==') {
// In Dart `operator ==` methods are not called with a null argument.
// This is handled before calling them. For performance reasons, we push
@@ -3158,7 +3157,15 @@
// the Dart code already handles it (typically by an `is` check).
// Eliminate it when possible.
body.add(js.statement('if (# == null) return false;', [jsParam]));
- } else if (_annotatedNullCheck(p.annotations)) {
+ }
+ if (isCovariantParameter(p)) {
+ var castExpr = _emitCast(jsParam, p.type);
+ if (!identical(castExpr, jsParam)) body.add(castExpr.toStatement());
+ }
+
+ if (name == '==') return;
+
+ if (_annotatedNullCheck(p.annotations)) {
body.add(_nullParameterCheck(jsParam));
} else if (_mustBeNonNullable(p.type) &&
!_annotatedNotNull(p.annotations)) {
@@ -4749,8 +4756,8 @@
return _emitType(node.arguments.types.single);
}
if (name == 'legacyTypeRep') {
- return _emitType(
- node.arguments.types.single.withNullability(Nullability.legacy));
+ return _emitType(node.arguments.types.single
+ .withDeclaredNullability(Nullability.legacy));
}
} else if (node.arguments.positional.length == 1) {
var firstArg = node.arguments.positional[0];
@@ -4772,14 +4779,16 @@
if (name == '_jsInstanceOf' && secondArg is TypeLiteral) {
return js.call('# instanceof #', [
_visitExpression(firstArg),
- _emitType(secondArg.type.withNullability(Nullability.nonNullable))
+ _emitType(
+ secondArg.type.withDeclaredNullability(Nullability.nonNullable))
]);
}
if (name == '_equalType' && secondArg is TypeLiteral) {
return js.call('# === #', [
_visitExpression(firstArg),
- _emitType(secondArg.type.withNullability(Nullability.nonNullable))
+ _emitType(
+ secondArg.type.withDeclaredNullability(Nullability.nonNullable))
]);
}
}
@@ -5246,7 +5255,7 @@
}
if (!isTypeError &&
- from.withNullability(Nullability.nonNullable) == to &&
+ from.withDeclaredNullability(Nullability.nonNullable) == to &&
_mustBeNonNullable(to)) {
// If the underlying type is the same, we only need a null check.
return runtimeCall('nullCast(#, #)', [jsFrom, _emitType(to)]);
diff --git a/pkg/dev_compiler/lib/src/kernel/target.dart b/pkg/dev_compiler/lib/src/kernel/target.dart
index cea0477..8d3c11b 100644
--- a/pkg/dev_compiler/lib/src/kernel/target.dart
+++ b/pkg/dev_compiler/lib/src/kernel/target.dart
@@ -158,8 +158,8 @@
{void Function(String msg) logger,
ChangedStructureNotifier changedStructureNotifier}) {
if (flags.trackWidgetCreation) {
- _widgetTracker ??= WidgetCreatorTracker(changedStructureNotifier);
- _widgetTracker.transform(component, libraries);
+ _widgetTracker ??= WidgetCreatorTracker();
+ _widgetTracker.transform(component, libraries, changedStructureNotifier);
}
}
diff --git a/pkg/dev_compiler/tool/ddb b/pkg/dev_compiler/tool/ddb
index 8585dac..d0e70a0 100755
--- a/pkg/dev_compiler/tool/ddb
+++ b/pkg/dev_compiler/tool/ddb
@@ -210,11 +210,10 @@
String sdkJsPath;
String requirePath;
String ddcSdk;
- var archDir = nnbd ? 'ReleaseX64NNBD' : 'ReleaseX64';
if (debug) {
var sdkRoot = p.dirname(p.dirname(ddcPath));
var buildDir = p.join(sdkRoot, Platform.isMacOS ? 'xcodebuild' : 'out');
- dartSdk = p.join(buildDir, archDir, 'dart-sdk');
+ dartSdk = p.join(buildDir, 'ReleaseX64', 'dart-sdk');
}
var suffix = p.join('kernel', mod);
sdkJsPath = p.join(dartSdk, 'lib', 'dev_compiler', suffix);
diff --git a/pkg/front_end/lib/src/api_unstable/bazel_worker.dart b/pkg/front_end/lib/src/api_unstable/bazel_worker.dart
index eacc6bb..95ca894 100644
--- a/pkg/front_end/lib/src/api_unstable/bazel_worker.dart
+++ b/pkg/front_end/lib/src/api_unstable/bazel_worker.dart
@@ -71,7 +71,8 @@
Iterable<String> experiments,
bool outlineOnly,
Map<String, String> environmentDefines,
- {bool trackNeededDillLibraries: false}) async {
+ {bool trackNeededDillLibraries: false,
+ bool verbose: false}) async {
List<Component> outputLoadedAdditionalDills =
new List<Component>(additionalDills.length);
Map<ExperimentalFlag, bool> experimentalFlags = parseExperimentalFlags(
@@ -92,19 +93,22 @@
outlineOnly: outlineOnly,
omitPlatform: true,
trackNeededDillLibraries: trackNeededDillLibraries,
- environmentDefines: environmentDefines);
+ environmentDefines: environmentDefines,
+ verbose: verbose);
}
Future<InitializedCompilerState> initializeCompiler(
- InitializedCompilerState oldState,
- Uri sdkSummary,
- Uri librariesSpecificationUri,
- Uri packagesFile,
- List<Uri> additionalDills,
- Target target,
- FileSystem fileSystem,
- Iterable<String> experiments,
- Map<String, String> environmentDefines) async {
+ InitializedCompilerState oldState,
+ Uri sdkSummary,
+ Uri librariesSpecificationUri,
+ Uri packagesFile,
+ List<Uri> additionalDills,
+ Target target,
+ FileSystem fileSystem,
+ Iterable<String> experiments,
+ Map<String, String> environmentDefines, {
+ bool verbose: false,
+}) async {
// TODO(sigmund): use incremental compiler when it supports our use case.
// Note: it is common for the summary worker to invoke the compiler with the
// same input summary URIs, but with different contents, so we'd need to be
@@ -120,7 +124,8 @@
..environmentDefines = environmentDefines
..experimentalFlags = parseExperimentalFlags(
parseExperimentalArguments(experiments),
- onError: (e) => throw e);
+ onError: (e) => throw e)
+ ..verbose = verbose;
ProcessedOptions processedOpts = new ProcessedOptions(options: options);
diff --git a/pkg/front_end/lib/src/api_unstable/modular_incremental_compilation.dart b/pkg/front_end/lib/src/api_unstable/modular_incremental_compilation.dart
index 16c2863..9668bc0 100644
--- a/pkg/front_end/lib/src/api_unstable/modular_incremental_compilation.dart
+++ b/pkg/front_end/lib/src/api_unstable/modular_incremental_compilation.dart
@@ -53,7 +53,8 @@
Map<String, String> environmentDefines: const {},
bool outlineOnly,
bool omitPlatform: false,
- bool trackNeededDillLibraries: false}) async {
+ bool trackNeededDillLibraries: false,
+ bool verbose: false}) async {
bool isRetry = false;
while (true) {
try {
@@ -98,7 +99,8 @@
..fileSystem = fileSystem
..omitPlatform = omitPlatform
..environmentDefines = environmentDefines
- ..experimentalFlags = experimentalFlags;
+ ..experimentalFlags = experimentalFlags
+ ..verbose = verbose;
processedOpts = new ProcessedOptions(options: options);
cachedSdkInput = new WorkerInputComponent(
diff --git a/pkg/front_end/lib/src/api_unstable/vm.dart b/pkg/front_end/lib/src/api_unstable/vm.dart
index dadc7d6..49d660d 100644
--- a/pkg/front_end/lib/src/api_unstable/vm.dart
+++ b/pkg/front_end/lib/src/api_unstable/vm.dart
@@ -63,7 +63,7 @@
export '../fasta/hybrid_file_system.dart' show HybridFileSystem;
export '../fasta/kernel/redirecting_factory_body.dart'
- show isRedirectingFactoryField;
+ show getRedirectingFactoryBody, isRedirectingFactoryField;
export '../fasta/kernel/utils.dart'
show
diff --git a/pkg/front_end/lib/src/base/command_line_options.dart b/pkg/front_end/lib/src/base/command_line_options.dart
index 7ac70b7..03fe3a2 100644
--- a/pkg/front_end/lib/src/base/command_line_options.dart
+++ b/pkg/front_end/lib/src/base/command_line_options.dart
@@ -6,6 +6,7 @@
// TODO(johnniwinther): What is the right name for this?
static const String nnbdStrongMode = "--nnbd-strong";
static const String nnbdAgnosticMode = "--nnbd-agnostic";
+ static const String nnbdWeakMode = "--nnbd-weak";
static const String forceLateLowering = "--force-late-lowering";
static const String forceNoExplicitGetterCalls =
diff --git a/pkg/front_end/lib/src/fasta/builder/field_builder.dart b/pkg/front_end/lib/src/fasta/builder/field_builder.dart
index 5cb9fc0..be2f963 100644
--- a/pkg/front_end/lib/src/fasta/builder/field_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/field_builder.dart
@@ -116,7 +116,17 @@
Procedure setterReferenceFrom)
: super(libraryBuilder, charOffset) {
Uri fileUri = libraryBuilder?.fileUri;
- if (isLate &&
+ if (isExternal) {
+ _fieldEncoding = new ExternalFieldEncoding(
+ fileUri,
+ charOffset,
+ charEndOffset,
+ getterReferenceFrom,
+ setterReferenceFrom,
+ isFinal,
+ isCovariant,
+ library.isNonNullableByDefault);
+ } else if (isLate &&
!libraryBuilder.loader.target.backendTarget.supportsLateFields) {
if (hasInitializer) {
if (isFinal) {
@@ -128,7 +138,8 @@
reference,
lateIsSetReferenceFrom,
getterReferenceFrom,
- setterReferenceFrom);
+ setterReferenceFrom,
+ isCovariant);
} else {
_fieldEncoding = new LateFieldWithInitializerEncoding(
name,
@@ -138,7 +149,8 @@
reference,
lateIsSetReferenceFrom,
getterReferenceFrom,
- setterReferenceFrom);
+ setterReferenceFrom,
+ isCovariant);
}
} else {
if (isFinal) {
@@ -150,7 +162,8 @@
reference,
lateIsSetReferenceFrom,
getterReferenceFrom,
- setterReferenceFrom);
+ setterReferenceFrom,
+ isCovariant);
} else {
_fieldEncoding = new LateFieldWithoutInitializerEncoding(
name,
@@ -160,7 +173,8 @@
reference,
lateIsSetReferenceFrom,
getterReferenceFrom,
- setterReferenceFrom);
+ setterReferenceFrom,
+ isCovariant);
}
}
} else {
@@ -283,7 +297,7 @@
ClassBuilder classBuilder = isClassMember ? parent : null;
MetadataBuilder.buildAnnotations(
- _fieldEncoding.field, metadata, library, classBuilder, this);
+ _fieldEncoding.annotatable, metadata, library, classBuilder, this);
// For modular compilation we need to include initializers of all const
// fields and all non-static final fields in classes with const constructors
@@ -398,7 +412,7 @@
bool isExtensionMethod,
String extensionName,
String name,
- bool isLateWithLowering,
+ bool isSynthesized,
FieldNameType type) {
String baseName;
if (!isExtensionMethod) {
@@ -407,7 +421,7 @@
baseName = "${extensionName}|${name}";
}
- if (!isLateWithLowering) {
+ if (!isSynthesized) {
assert(type == FieldNameType.Field);
return baseName;
} else {
@@ -457,6 +471,9 @@
/// Returns the field that holds the field value at runtime.
Field get field;
+ /// Returns the member that holds the field annotations.
+ Annotatable get annotatable;
+
/// Returns the member used to read the field value.
Member get readTarget;
@@ -593,6 +610,9 @@
Field get field => _field;
@override
+ Annotatable get annotatable => _field;
+
+ @override
Member get readTarget => _field;
@override
@@ -668,7 +688,8 @@
Field referenceFrom,
Field lateIsSetReferenceFrom,
Procedure getterReferenceFrom,
- Procedure setterReferenceFrom)
+ Procedure setterReferenceFrom,
+ bool isCovariant)
: fileOffset = charOffset {
_field =
new Field(null, fileUri: fileUri, reference: referenceFrom?.reference)
@@ -687,7 +708,8 @@
fileUri: fileUri, reference: getterReferenceFrom?.reference)
..fileOffset = charOffset
..isNonNullableByDefault = true;
- _lateSetter = _createSetter(name, fileUri, charOffset, setterReferenceFrom);
+ _lateSetter = _createSetter(name, fileUri, charOffset, setterReferenceFrom,
+ isCovariant: isCovariant);
}
@override
@@ -740,7 +762,7 @@
if (needsPromotion) {
VariableDeclaration variable = new VariableDeclaration.forValue(
_createFieldGet(_field),
- type: _type.withNullability(Nullability.nullable))
+ type: _type.withDeclaredNullability(Nullability.nullable))
..fileOffset = fileOffset;
return new Let(
variable, new VariableGet(variable, _type)..fileOffset = fileOffset);
@@ -775,8 +797,11 @@
CoreTypes coreTypes, String name, Expression initializer);
Procedure _createSetter(
- String name, Uri fileUri, int charOffset, Procedure referenceFrom) {
- VariableDeclaration parameter = new VariableDeclaration(null);
+ String name, Uri fileUri, int charOffset, Procedure referenceFrom,
+ {bool isCovariant}) {
+ assert(isCovariant != null);
+ VariableDeclaration parameter = new VariableDeclaration(null)
+ ..isCovariant = isCovariant;
return new Procedure(
null,
ProcedureKind.Setter,
@@ -800,7 +825,7 @@
"Type has already been computed for field $name.");
_type = value;
if (value is! ImplicitFieldType) {
- _field.type = value.withNullability(Nullability.nullable);
+ _field.type = value.withDeclaredNullability(Nullability.nullable);
_lateGetter.function.returnType = value;
if (_lateSetter != null) {
_lateSetter.function.positionalParameters.single.type = value;
@@ -824,6 +849,9 @@
Field get field => _field;
@override
+ Annotatable get annotatable => _field;
+
+ @override
Member get readTarget => _lateGetter;
@override
@@ -832,7 +860,6 @@
@override
void build(
SourceLibraryBuilder libraryBuilder, SourceFieldBuilder fieldBuilder) {
- _field..isCovariant = fieldBuilder.isCovariant;
bool isInstanceMember;
String className;
bool isExtensionMember = fieldBuilder.isExtensionMember;
@@ -938,13 +965,13 @@
@override
List<ClassMember> getLocalMembers(SourceFieldBuilder fieldBuilder) {
List<ClassMember> list = <ClassMember>[
- new _LateFieldClassMember(fieldBuilder, field,
+ new _SynthesizedFieldClassMember(fieldBuilder, field,
isInternalImplementation: true),
- new _LateFieldClassMember(fieldBuilder, _lateGetter,
+ new _SynthesizedFieldClassMember(fieldBuilder, _lateGetter,
isInternalImplementation: false)
];
if (_lateIsSetField != null) {
- list.add(new _LateFieldClassMember(fieldBuilder, _lateIsSetField,
+ list.add(new _SynthesizedFieldClassMember(fieldBuilder, _lateIsSetField,
isInternalImplementation: true));
}
return list;
@@ -954,11 +981,11 @@
List<ClassMember> getLocalSetters(SourceFieldBuilder fieldBuilder) {
List<ClassMember> list = <ClassMember>[];
if (_lateIsSetField != null) {
- list.add(new _LateFieldClassMember(fieldBuilder, _lateIsSetField,
+ list.add(new _SynthesizedFieldClassMember(fieldBuilder, _lateIsSetField,
forSetter: true, isInternalImplementation: true));
}
if (_lateSetter != null) {
- list.add(new _LateFieldClassMember(fieldBuilder, _lateSetter,
+ list.add(new _SynthesizedFieldClassMember(fieldBuilder, _lateSetter,
forSetter: true, isInternalImplementation: false));
}
return list;
@@ -1002,9 +1029,18 @@
Field referenceFrom,
Field lateIsSetReferenceFrom,
Procedure getterReferenceFrom,
- Procedure setterReferenceFrom)
- : super(name, fileUri, charOffset, charEndOffset, referenceFrom,
- lateIsSetReferenceFrom, getterReferenceFrom, setterReferenceFrom);
+ Procedure setterReferenceFrom,
+ bool isCovariant)
+ : super(
+ name,
+ fileUri,
+ charOffset,
+ charEndOffset,
+ referenceFrom,
+ lateIsSetReferenceFrom,
+ getterReferenceFrom,
+ setterReferenceFrom,
+ isCovariant);
}
class LateFieldWithInitializerEncoding extends AbstractLateFieldEncoding
@@ -1017,9 +1053,18 @@
Field referenceFrom,
Field lateIsSetReferenceFrom,
Procedure getterReferenceFrom,
- Procedure setterReferenceFrom)
- : super(name, fileUri, charOffset, charEndOffset, referenceFrom,
- lateIsSetReferenceFrom, getterReferenceFrom, setterReferenceFrom);
+ Procedure setterReferenceFrom,
+ bool isCovariant)
+ : super(
+ name,
+ fileUri,
+ charOffset,
+ charEndOffset,
+ referenceFrom,
+ lateIsSetReferenceFrom,
+ getterReferenceFrom,
+ setterReferenceFrom,
+ isCovariant);
@override
Statement _createGetterBody(
@@ -1046,9 +1091,18 @@
Field referenceFrom,
Field lateIsSetReferenceFrom,
Procedure getterReferenceFrom,
- Procedure setterReferenceFrom)
- : super(name, fileUri, charOffset, charEndOffset, referenceFrom,
- lateIsSetReferenceFrom, getterReferenceFrom, setterReferenceFrom);
+ Procedure setterReferenceFrom,
+ bool isCovariant)
+ : super(
+ name,
+ fileUri,
+ charOffset,
+ charEndOffset,
+ referenceFrom,
+ lateIsSetReferenceFrom,
+ getterReferenceFrom,
+ setterReferenceFrom,
+ isCovariant);
@override
Statement _createSetterBody(
@@ -1075,9 +1129,18 @@
Field referenceFrom,
Field lateIsSetReferenceFrom,
Procedure getterReferenceFrom,
- Procedure setterReferenceFrom)
- : super(name, fileUri, charOffset, charEndOffset, referenceFrom,
- lateIsSetReferenceFrom, getterReferenceFrom, setterReferenceFrom);
+ Procedure setterReferenceFrom,
+ bool isCovariant)
+ : super(
+ name,
+ fileUri,
+ charOffset,
+ charEndOffset,
+ referenceFrom,
+ lateIsSetReferenceFrom,
+ getterReferenceFrom,
+ setterReferenceFrom,
+ isCovariant);
@override
Statement _createGetterBody(
CoreTypes coreTypes, String name, Expression initializer) {
@@ -1094,7 +1157,8 @@
@override
Procedure _createSetter(
- String name, Uri fileUri, int charOffset, Procedure referenceFrom) =>
+ String name, Uri fileUri, int charOffset, Procedure referenceFrom,
+ {bool isCovariant}) =>
null;
@override
@@ -1103,7 +1167,7 @@
null;
}
-class _LateFieldClassMember implements ClassMember {
+class _SynthesizedFieldClassMember implements ClassMember {
final SourceFieldBuilder fieldBuilder;
final Member _member;
@@ -1114,7 +1178,7 @@
@override
final bool isInternalImplementation;
- _LateFieldClassMember(this.fieldBuilder, this._member,
+ _SynthesizedFieldClassMember(this.fieldBuilder, this._member,
{this.forSetter: false, this.isInternalImplementation})
: assert(isInternalImplementation != null);
@@ -1249,3 +1313,166 @@
String toString() =>
'_ClassMember($fieldBuilder,$_member,forSetter=${forSetter})';
}
+
+class ExternalFieldEncoding implements FieldEncoding {
+ Procedure _getter;
+ Procedure _setter;
+
+ ExternalFieldEncoding(
+ Uri fileUri,
+ int charOffset,
+ int charEndOffset,
+ Procedure getterReference,
+ Procedure setterReference,
+ bool isFinal,
+ bool isCovariant,
+ bool isNonNullableByDefault) {
+ _getter = new Procedure(null, ProcedureKind.Getter, new FunctionNode(null),
+ fileUri: fileUri, reference: getterReference?.reference)
+ ..fileOffset = charOffset
+ ..fileEndOffset = charEndOffset
+ ..isNonNullableByDefault = isNonNullableByDefault;
+ if (!isFinal) {
+ VariableDeclaration parameter = new VariableDeclaration(null)
+ ..isCovariant = isCovariant;
+ _setter = new Procedure(
+ null,
+ ProcedureKind.Setter,
+ new FunctionNode(null,
+ positionalParameters: [parameter], returnType: const VoidType()),
+ fileUri: fileUri,
+ reference: setterReference?.reference)
+ ..fileOffset = charOffset
+ ..fileEndOffset = charEndOffset
+ ..isNonNullableByDefault = isNonNullableByDefault;
+ }
+ }
+
+ @override
+ DartType get type => _getter.function.returnType;
+
+ @override
+ void set type(DartType value) {
+ _getter.function.returnType = value;
+ if (_setter != null) {
+ _setter.function.positionalParameters.first.type = value;
+ }
+ }
+
+ @override
+ void completeSignature(CoreTypes coreTypes) {}
+
+ @override
+ void createBodies(CoreTypes coreTypes, Expression initializer) {
+ //assert(initializer != null);
+ }
+
+ @override
+ List<Initializer> createInitializer(int fileOffset, Expression value,
+ {bool isSynthetic}) {
+ throw new UnsupportedError('ExternalFieldEncoding.createInitializer');
+ }
+
+ @override
+ void build(
+ SourceLibraryBuilder libraryBuilder, SourceFieldBuilder fieldBuilder) {
+ bool isExtensionMember = false;
+ String extensionName;
+ bool isInstanceMember = false;
+ String className;
+ if (fieldBuilder.isExtensionMember) {
+ isExtensionMember = true;
+ ExtensionBuilder extension = fieldBuilder.parent;
+ extensionName = extension.name;
+ } else {
+ isInstanceMember = !fieldBuilder.isStatic && !fieldBuilder.isTopLevel;
+ className = isInstanceMember ? fieldBuilder.classBuilder.name : null;
+ }
+ _getter..isConst = fieldBuilder.isConst;
+ String getterName = SourceFieldBuilder.createFieldName(
+ isInstanceMember,
+ className,
+ isExtensionMember,
+ extensionName,
+ fieldBuilder.name,
+ true,
+ FieldNameType.Getter);
+ _getter
+ ..isStatic = !isInstanceMember
+ ..isExtensionMember = isExtensionMember
+ ..isExternal = true;
+ // TODO(johnniwinther): How can the name already have been computed?
+ _getter.name ??= new Name(getterName, libraryBuilder.library);
+
+ if (_setter != null) {
+ String setterName = SourceFieldBuilder.createFieldName(
+ isInstanceMember,
+ className,
+ isExtensionMember,
+ extensionName,
+ fieldBuilder.name,
+ true,
+ FieldNameType.Setter);
+ _setter
+ ..isStatic = !isInstanceMember
+ ..isExtensionMember = isExtensionMember
+ ..isExternal = true;
+ // TODO(johnniwinther): How can the name already have been computed?
+ _setter?.name ??= new Name(setterName, libraryBuilder.library);
+ }
+ }
+
+ @override
+ void registerMembers(
+ SourceLibraryBuilder library,
+ SourceFieldBuilder fieldBuilder,
+ void Function(Member, BuiltMemberKind) f) {
+ f(
+ _getter,
+ fieldBuilder.isExtensionMember
+ ? BuiltMemberKind.ExtensionGetter
+ : BuiltMemberKind.Method);
+ if (_setter != null) {
+ f(
+ _setter,
+ fieldBuilder.isExtensionMember
+ ? BuiltMemberKind.ExtensionSetter
+ : BuiltMemberKind.Method);
+ }
+ }
+
+ @override
+ void setGenericCovariantImpl() {
+ _setter.function.positionalParameters.first.isGenericCovariantImpl = true;
+ }
+
+ @override
+ Field get field {
+ throw new UnsupportedError("ExternalFieldEncoding.field");
+ }
+
+ @override
+ Annotatable get annotatable => _getter;
+
+ @override
+ Member get readTarget => _getter;
+
+ @override
+ Member get writeTarget => _setter;
+
+ @override
+ List<ClassMember> getLocalMembers(SourceFieldBuilder fieldBuilder) =>
+ <ClassMember>[
+ new _SynthesizedFieldClassMember(fieldBuilder, _getter,
+ forSetter: false, isInternalImplementation: false)
+ ];
+
+ @override
+ List<ClassMember> getLocalSetters(SourceFieldBuilder fieldBuilder) =>
+ _setter != null
+ ? <ClassMember>[
+ new _SynthesizedFieldClassMember(fieldBuilder, _setter,
+ forSetter: true, isInternalImplementation: false)
+ ]
+ : const <ClassMember>[];
+}
diff --git a/pkg/front_end/lib/src/fasta/builder/function_builder.dart b/pkg/front_end/lib/src/fasta/builder/function_builder.dart
index 9aed09d..a7d3e2d 100644
--- a/pkg/front_end/lib/src/fasta/builder/function_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/function_builder.dart
@@ -63,8 +63,6 @@
bool get isAbstract;
- bool get isExternal;
-
bool get isConstructor;
bool get isRegularMethod;
diff --git a/pkg/front_end/lib/src/fasta/builder/member_builder.dart b/pkg/front_end/lib/src/fasta/builder/member_builder.dart
index 2d827d5..d1a3f67 100644
--- a/pkg/front_end/lib/src/fasta/builder/member_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/member_builder.dart
@@ -12,6 +12,7 @@
import '../../base/common.dart';
import '../kernel/class_hierarchy_builder.dart';
+import '../modifier.dart';
import '../problems.dart' show unsupported;
import '../type_inference/type_inference_engine.dart'
show InferenceDataForTesting;
@@ -56,6 +57,8 @@
// TODO(johnniwinther): Remove this and create a [ProcedureBuilder] interface.
ProcedureKind get kind;
+ bool get isExternal;
+
void buildOutlineExpressions(LibraryBuilder library, CoreTypes coreTypes);
/// Returns the [ClassMember]s for the non-setter members created for this
@@ -118,6 +121,9 @@
bool get isRedirectingGenerativeConstructor => false;
@override
+ bool get isExternal => (modifiers & externalMask) != 0;
+
+ @override
LibraryBuilder get library {
if (parent is LibraryBuilder) {
LibraryBuilder library = parent;
diff --git a/pkg/front_end/lib/src/fasta/builder/never_type_builder.dart b/pkg/front_end/lib/src/fasta/builder/never_type_builder.dart
index 850f31e..49a9dc0 100644
--- a/pkg/front_end/lib/src/fasta/builder/never_type_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/never_type_builder.dart
@@ -21,11 +21,11 @@
DartType buildType(LibraryBuilder library,
NullabilityBuilder nullabilityBuilder, List<TypeBuilder> arguments,
[bool notInstanceContext]) {
- return type.withNullability(nullabilityBuilder.build(library));
+ return type.withDeclaredNullability(nullabilityBuilder.build(library));
}
DartType buildTypesWithBuiltArguments(LibraryBuilder library,
Nullability nullability, List<DartType> arguments) {
- return type.withNullability(nullability);
+ return type.withDeclaredNullability(nullability);
}
}
diff --git a/pkg/front_end/lib/src/fasta/builder/procedure_builder.dart b/pkg/front_end/lib/src/fasta/builder/procedure_builder.dart
index 765aebb..086ea419 100644
--- a/pkg/front_end/lib/src/fasta/builder/procedure_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/procedure_builder.dart
@@ -4,12 +4,15 @@
import 'dart:core' hide MapEntry;
+import 'package:front_end/src/fasta/dill/dill_member_builder.dart';
import 'package:front_end/src/fasta/kernel/kernel_api.dart';
import 'package:kernel/ast.dart';
import 'package:kernel/type_algebra.dart';
import '../kernel/class_hierarchy_builder.dart';
+import '../kernel/forest.dart';
+import '../kernel/internal_ast.dart';
import '../kernel/redirecting_factory_body.dart' show RedirectingFactoryBody;
import '../loader.dart' show Loader;
@@ -21,6 +24,9 @@
import '../source/source_library_builder.dart' show SourceLibraryBuilder;
+import '../type_inference/type_inferrer.dart';
+import '../type_inference/type_schema.dart';
+
import 'builder.dart';
import 'constructor_reference_builder.dart';
import 'extension_builder.dart';
@@ -718,6 +724,79 @@
}
@override
+ void buildOutlineExpressions(LibraryBuilder library, CoreTypes coreTypes) {
+ super.buildOutlineExpressions(library, coreTypes);
+ LibraryBuilder thisLibrary = this.library;
+ if (thisLibrary is SourceLibraryBuilder) {
+ RedirectingFactoryBody redirectingFactoryBody = member.function.body;
+ if (redirectingFactoryBody.typeArguments != null &&
+ redirectingFactoryBody.typeArguments.any((t) => t is UnknownType)) {
+ TypeInferrerImpl inferrer = thisLibrary.loader.typeInferenceEngine
+ .createLocalTypeInferrer(
+ fileUri, classBuilder.thisType, thisLibrary, null);
+ inferrer.helper = thisLibrary.loader
+ .createBodyBuilderForOutlineExpression(
+ this.library, classBuilder, this, classBuilder.scope, fileUri);
+ Builder targetBuilder = redirectionTarget.target;
+ Member target;
+ if (targetBuilder is FunctionBuilder) {
+ target = targetBuilder.member;
+ } else if (targetBuilder is DillMemberBuilder) {
+ target = targetBuilder.member;
+ } else {
+ unhandled("${targetBuilder.runtimeType}", "buildOutlineExpressions",
+ charOffset, fileUri);
+ }
+ Arguments targetInvocationArguments;
+ {
+ List<Expression> positionalArguments = <Expression>[];
+ for (VariableDeclaration parameter
+ in member.function.positionalParameters) {
+ positionalArguments.add(new VariableGetImpl(
+ parameter,
+ inferrer.typePromoter.getFactForAccess(parameter, 0),
+ inferrer.typePromoter.currentScope,
+ forNullGuardedAccess: false));
+ }
+ List<NamedExpression> namedArguments = <NamedExpression>[];
+ for (VariableDeclaration parameter
+ in member.function.namedParameters) {
+ namedArguments.add(new NamedExpression(
+ parameter.name,
+ new VariableGetImpl(
+ parameter,
+ inferrer.typePromoter.getFactForAccess(parameter, 0),
+ inferrer.typePromoter.currentScope,
+ forNullGuardedAccess: false)));
+ }
+ // If arguments are created using [Forest.createArguments], and the
+ // type arguments are omitted, they are to be inferred.
+ targetInvocationArguments = const Forest().createArguments(
+ member.fileOffset, positionalArguments,
+ named: namedArguments);
+ }
+ InvocationInferenceResult result = inferrer.inferInvocation(
+ function.returnType,
+ charOffset,
+ target.function.computeFunctionType(Nullability.nonNullable),
+ targetInvocationArguments);
+ List<DartType> typeArguments;
+ if (result.inferredType is InterfaceType) {
+ typeArguments = (result.inferredType as InterfaceType).typeArguments;
+ } else {
+ // Assume that the error is reported elsewhere, use 'dynamic' for
+ // recovery.
+ typeArguments = new List<DartType>.filled(
+ target.enclosingClass.typeParameters.length, const DynamicType(),
+ growable: true);
+ }
+ member.function.body =
+ new RedirectingFactoryBody(target, typeArguments);
+ }
+ }
+ }
+
+ @override
List<ClassMember> get localMembers =>
throw new UnsupportedError('${runtimeType}.localMembers');
diff --git a/pkg/front_end/lib/src/fasta/builder/type_alias_builder.dart b/pkg/front_end/lib/src/fasta/builder/type_alias_builder.dart
index 7b26757..f049e93 100644
--- a/pkg/front_end/lib/src/fasta/builder/type_alias_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/type_alias_builder.dart
@@ -185,7 +185,7 @@
if (const DynamicType() == thisType) return thisType;
Nullability adjustedNullability =
isNullAlias ? Nullability.nullable : nullability;
- DartType result = thisType.withNullability(adjustedNullability);
+ DartType result = thisType.withDeclaredNullability(adjustedNullability);
if (typedef.typeParameters.isEmpty && arguments == null) return result;
Map<TypeParameter, DartType> substitution = <TypeParameter, DartType>{};
for (int i = 0; i < typedef.typeParameters.length; i++) {
@@ -269,7 +269,7 @@
thisType.nullability, nullabilityBuilder.build(library));
}
if (typedef.typeParameters.isEmpty && arguments == null) {
- return thisType.withNullability(nullability);
+ return thisType.withDeclaredNullability(nullability);
}
// Otherwise, substitute.
return buildTypesWithBuiltArguments(
diff --git a/pkg/front_end/lib/src/fasta/builder/type_variable_builder.dart b/pkg/front_end/lib/src/fasta/builder/type_variable_builder.dart
index 4ca6ab8..8ec76cb 100644
--- a/pkg/front_end/lib/src/fasta/builder/type_variable_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/type_variable_builder.dart
@@ -171,10 +171,10 @@
new List<TypeParameterType>.filled(pendingNullabilities.length, null);
int stackTop = 0;
for (TypeParameterType type in pendingNullabilities) {
- type.typeParameterTypeNullability = null;
+ type.declaredNullability = null;
}
for (TypeParameterType type in pendingNullabilities) {
- if (type.typeParameterTypeNullability != null) {
+ if (type.declaredNullability != null) {
// Nullability for [type] was already computed on one of the branches
// of the depth-first search. Continue to the next one.
continue;
@@ -182,15 +182,15 @@
if (type.parameter.bound is TypeParameterType) {
TypeParameterType current = type;
TypeParameterType next = current.parameter.bound;
- while (next != null && next.typeParameterTypeNullability == null) {
+ while (next != null && next.declaredNullability == null) {
stack[stackTop++] = current;
- current.typeParameterTypeNullability = marker;
+ current.declaredNullability = marker;
current = next;
if (current.parameter.bound is TypeParameterType) {
next = current.parameter.bound;
- if (next.typeParameterTypeNullability == marker) {
- next.typeParameterTypeNullability = Nullability.undetermined;
+ if (next.declaredNullability == marker) {
+ next.declaredNullability = Nullability.undetermined;
libraryBuilder.addProblem(
templateCycleInTypeVariables.withArguments(
next.parameter.name, current.parameter.name),
@@ -203,16 +203,16 @@
next = null;
}
}
- current.typeParameterTypeNullability =
+ current.declaredNullability =
TypeParameterType.computeNullabilityFromBound(current.parameter);
while (stackTop != 0) {
--stackTop;
current = stack[stackTop];
- current.typeParameterTypeNullability =
+ current.declaredNullability =
TypeParameterType.computeNullabilityFromBound(current.parameter);
}
} else {
- type.typeParameterTypeNullability =
+ type.declaredNullability =
TypeParameterType.computeNullabilityFromBound(type.parameter);
}
}
diff --git a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
index f9dfb2b..cc25ccd 100644
--- a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
@@ -665,6 +665,7 @@
@override
void endTopLevelFields(
+ Token externalToken,
Token staticToken,
Token covariantToken,
Token lateToken,
@@ -675,16 +676,31 @@
debugEvent("TopLevelFields");
if (!libraryBuilder.isNonNullableByDefault) {
reportNonNullableModifierError(lateToken);
+ if (externalToken != null) {
+ handleRecoverableError(
+ fasta.messageExternalField, externalToken, externalToken);
+ }
}
push(count);
}
@override
- void endClassFields(Token staticToken, Token covariantToken, Token lateToken,
- Token varFinalOrConst, int count, Token beginToken, Token endToken) {
+ void endClassFields(
+ Token externalToken,
+ Token staticToken,
+ Token covariantToken,
+ Token lateToken,
+ Token varFinalOrConst,
+ int count,
+ Token beginToken,
+ Token endToken) {
debugEvent("Fields");
if (!libraryBuilder.isNonNullableByDefault) {
reportNonNullableModifierError(lateToken);
+ if (externalToken != null) {
+ handleRecoverableError(
+ fasta.messageExternalField, externalToken, externalToken);
+ }
}
push(count);
}
@@ -1661,8 +1677,16 @@
void doBinaryExpression(Token token) {
assert(checkState(token, <ValueKind>[
- unionOfKinds([ValueKinds.Expression, ValueKinds.Generator]),
- unionOfKinds([ValueKinds.Expression, ValueKinds.Generator]),
+ unionOfKinds([
+ ValueKinds.Expression,
+ ValueKinds.Generator,
+ ValueKinds.ProblemBuilder,
+ ]),
+ unionOfKinds([
+ ValueKinds.Expression,
+ ValueKinds.Generator,
+ ValueKinds.ProblemBuilder,
+ ]),
]));
Expression right = popForValue();
Object left = pop();
@@ -1673,6 +1697,10 @@
if (left is Generator) {
push(left.buildEqualsOperation(token, right, isNot: isNot));
} else {
+ if (left is ProblemBuilder) {
+ ProblemBuilder problem = left;
+ left = buildProblem(problem.message, problem.charOffset, noLength);
+ }
assert(left is Expression);
push(forest.createEquals(fileOffset, left, right, isNot: isNot));
}
@@ -3579,8 +3607,10 @@
exitLocalScope();
}
FormalParameters catchParameters = popIfNotNull(catchKeyword);
- DartType exceptionType =
- buildDartType(popIfNotNull(onKeyword)) ?? const DynamicType();
+ DartType exceptionType = buildDartType(popIfNotNull(onKeyword)) ??
+ (libraryBuilder.isNonNullableByDefault
+ ? coreTypes.objectNonNullableRawType
+ : const DynamicType());
FormalParameterBuilder exception;
FormalParameterBuilder stackTrace;
List<Statement> compileTimeErrors;
diff --git a/pkg/front_end/lib/src/fasta/kernel/class_hierarchy_builder.dart b/pkg/front_end/lib/src/fasta/kernel/class_hierarchy_builder.dart
index f0afbcc..ecd72f5 100644
--- a/pkg/front_end/lib/src/fasta/kernel/class_hierarchy_builder.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/class_hierarchy_builder.dart
@@ -366,6 +366,7 @@
_overrideChecks.clear();
_delayedTypeComputations.clear();
inheritanceConflictCache.clear();
+ _delayedMemberChecks.clear();
}
void registerDelayedTypeComputation(DelayedTypeComputation computation) {
@@ -500,7 +501,7 @@
}
return asSupertypeOf(type, superclass)
.asInterfaceType
- .withNullability(type.nullability);
+ .withDeclaredNullability(type.nullability);
}
List<DartType> getTypeArgumentsAsInstanceOf(
@@ -563,7 +564,7 @@
if (node.maxInheritancePath != common[i + 1].maxInheritancePath) {
return getTypeAsInstanceOf(
type1, node.classBuilder.cls, clientLibrary, coreTypes)
- .withNullability(
+ .withDeclaredNullability(
uniteNullabilities(type1.nullability, type2.nullability));
} else {
do {
diff --git a/pkg/front_end/lib/src/fasta/kernel/implicit_field_type.dart b/pkg/front_end/lib/src/fasta/kernel/implicit_field_type.dart
index a8e6079..d3799f6 100644
--- a/pkg/front_end/lib/src/fasta/kernel/implicit_field_type.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/implicit_field_type.dart
@@ -29,6 +29,10 @@
_ImplicitFieldTypeRoot;
@override
+ Nullability get declaredNullability => unsupported(
+ "declaredNullability", fieldBuilder.charOffset, fieldBuilder.fileUri);
+
+ @override
Nullability get nullability =>
unsupported("nullability", fieldBuilder.charOffset, fieldBuilder.fileUri);
@@ -48,7 +52,7 @@
}
@override
- ImplicitFieldType withNullability(Nullability nullability) {
+ ImplicitFieldType withDeclaredNullability(Nullability nullability) {
return unsupported(
"withNullability", fieldBuilder.charOffset, fieldBuilder.fileUri);
}
@@ -113,12 +117,11 @@
}
return inferredType;
} else if (initializerToken != null) {
- InterfaceType enclosingClassThisType =
- fieldBuilder.field.enclosingClass == null
- ? null
- : fieldBuilder.library.loader.typeInferenceEngine.coreTypes
- .thisInterfaceType(fieldBuilder.field.enclosingClass,
- fieldBuilder.field.enclosingLibrary.nonNullable);
+ InterfaceType enclosingClassThisType = fieldBuilder.classBuilder == null
+ ? null
+ : fieldBuilder.library.loader.typeInferenceEngine.coreTypes
+ .thisInterfaceType(fieldBuilder.classBuilder.cls,
+ fieldBuilder.library.library.nonNullable);
TypeInferrerImpl typeInferrer = fieldBuilder
.library.loader.typeInferenceEngine
.createTopLevelTypeInferrer(
diff --git a/pkg/front_end/lib/src/fasta/kernel/implicit_type_argument.dart b/pkg/front_end/lib/src/fasta/kernel/implicit_type_argument.dart
index 14960a6..7e51793 100644
--- a/pkg/front_end/lib/src/fasta/kernel/implicit_type_argument.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/implicit_type_argument.dart
@@ -19,6 +19,10 @@
const ImplicitTypeArgument();
@override
+ Nullability get declaredNullability =>
+ unsupported("declaredNullability", -1, null);
+
+ @override
Nullability get nullability => unsupported("nullability", -1, null);
@override
@@ -37,7 +41,7 @@
}
@override
- ImplicitTypeArgument withNullability(Nullability nullability) {
+ ImplicitTypeArgument withDeclaredNullability(Nullability nullability) {
return unsupported("withNullability", -1, null);
}
diff --git a/pkg/front_end/lib/src/fasta/kernel/inference_visitor.dart b/pkg/front_end/lib/src/fasta/kernel/inference_visitor.dart
index f7ff3fe..06f50c5 100644
--- a/pkg/front_end/lib/src/fasta/kernel/inference_visitor.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/inference_visitor.dart
@@ -419,7 +419,6 @@
node.target.function
.computeThisFunctionType(inferrer.library.nonNullable),
node.arguments,
- node.name,
returnType:
computeConstructorReturnType(node.target, inferrer.coreTypes),
isConst: node.isConst);
@@ -449,8 +448,8 @@
: new FunctionType(
[], const DynamicType(), inferrer.library.nonNullable);
TypeArgumentsInfo typeArgumentsInfo = getTypeArgumentsInfo(node.arguments);
- InvocationInferenceResult result = inferrer.inferInvocation(typeContext,
- node.fileOffset, calleeType, node.arguments, node.target.name);
+ InvocationInferenceResult result = inferrer.inferInvocation(
+ typeContext, node.fileOffset, calleeType, node.arguments);
Expression replacement = new StaticInvocation(node.target, node.arguments);
if (!inferrer.isTopLevel && node.target != null) {
inferrer.library.checkBoundsInStaticInvocation(
@@ -702,7 +701,6 @@
node.target.function
.computeThisFunctionType(inferrer.library.nonNullable),
node.arguments,
- node.name,
returnType:
computeConstructorReturnType(node.target, inferrer.coreTypes),
isConst: node.isConst);
@@ -1061,7 +1059,6 @@
.computeThisFunctionType(inferrer.library.nonNullable)
.withoutTypeParameters),
node.argumentsJudgment,
- node.target.name,
returnType: inferrer.thisType,
skipTypeArgumentInference: true);
}
@@ -3438,7 +3435,8 @@
DartType rightType =
inferrer.getPositionalParameterTypeForTarget(equalsTarget, leftType, 0);
right = inferrer.ensureAssignableResult(
- rightType.withNullability(inferrer.library.nullable), rightResult,
+ rightType.withDeclaredNullability(inferrer.library.nullable),
+ rightResult,
errorTemplate: templateArgumentTypeNotAssignable);
Expression equals = new MethodInvocation(
@@ -4850,7 +4848,6 @@
node.target.function
.computeThisFunctionType(inferrer.library.nonNullable),
node.arguments,
- node.target.name,
returnType: inferrer.coreTypes.thisInterfaceType(
node.target.enclosingClass, inferrer.library.nonNullable),
skipTypeArgumentInference: true);
@@ -5014,7 +5011,7 @@
[], const DynamicType(), inferrer.library.nonNullable);
TypeArgumentsInfo typeArgumentsInfo = getTypeArgumentsInfo(node.arguments);
InvocationInferenceResult result = inferrer.inferInvocation(
- typeContext, node.fileOffset, calleeType, node.arguments, node.name);
+ typeContext, node.fileOffset, calleeType, node.arguments);
if (!inferrer.isTopLevel && node.target != null) {
inferrer.library.checkBoundsInStaticInvocation(
node,
@@ -5061,7 +5058,6 @@
.computeThisFunctionType(inferrer.library.nonNullable)
.withoutTypeParameters),
node.arguments,
- node.target.name,
returnType: inferrer.thisType,
skipTypeArgumentInference: true);
}
@@ -5688,7 +5684,7 @@
FunctionType calleeType =
new FunctionType([], inferredType, inferrer.library.nonNullable);
inferrer.inferInvocation(
- typeContext, node.fileOffset, calleeType, node.arguments, null);
+ typeContext, node.fileOffset, calleeType, node.arguments);
}
return new ExpressionInferenceResult(inferredType, node);
}
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart
index fa7ea0c..2bf846c 100644
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart
@@ -96,6 +96,7 @@
messageConstConstructorNonFinalField,
messageConstConstructorNonFinalFieldCause,
messageConstConstructorRedirectionToNonConst,
+ messageStrongModeNNBDButOptOut,
noLength,
templateFieldNonNullableNotInitializedByConstructorError,
templateFieldNonNullableWithoutInitializerError,
@@ -249,6 +250,13 @@
if (dillTarget.isLoaded) {
LibraryBuilder builder = dillTarget.loader.builders[uri];
if (builder != null) {
+ if (enableNonNullable &&
+ (loader.nnbdMode == NnbdMode.Strong ||
+ loader.nnbdMode == NnbdMode.Agnostic)) {
+ if (!builder.isNonNullableByDefault) {
+ loader.addProblem(messageStrongModeNNBDButOptOut, -1, 1, fileUri);
+ }
+ }
return builder;
}
}
@@ -321,10 +329,10 @@
loader.checkTypes();
loader.checkOverrides(myClasses);
loader.checkAbstractMembers(myClasses);
- loader.checkRedirectingFactories(myClasses);
loader.addNoSuchMethodForwarders(myClasses);
loader.checkMixins(myClasses);
loader.buildOutlineExpressions(loader.coreTypes);
+ loader.checkRedirectingFactories(myClasses);
_updateDelayedParameterTypes();
installAllComponentProblems(loader.allComponentProblems);
loader.allComponentProblems.clear();
@@ -758,6 +766,11 @@
List<FieldBuilder> lateFinalFields = <FieldBuilder>[];
builder.forEachDeclaredField((String name, FieldBuilder fieldBuilder) {
+ if (fieldBuilder.isExternal) {
+ // Skip external fields. These are external getters/setters and have
+ // no initialization.
+ return;
+ }
if (fieldBuilder.isDeclarationInstanceMember && !fieldBuilder.isFinal) {
nonFinalFields.add(fieldBuilder);
}
@@ -957,16 +970,16 @@
fieldBuilder.name.length,
fieldBuilder.fileUri);
}
- } else if (fieldBuilder.field.type is! InvalidType &&
+ } else if (fieldBuilder.fieldType is! InvalidType &&
isPotentiallyNonNullable(
- fieldBuilder.field.type, loader.coreTypes.futureOrClass) &&
+ fieldBuilder.fieldType, loader.coreTypes.futureOrClass) &&
(cls.constructors.isNotEmpty || cls.isMixinDeclaration)) {
SourceLibraryBuilder library = builder.library;
if (library.isNonNullableByDefault) {
library.addProblem(
templateFieldNonNullableWithoutInitializerError.withArguments(
fieldBuilder.name,
- fieldBuilder.field.type,
+ fieldBuilder.fieldType,
library.isNonNullableByDefault),
fieldBuilder.charOffset,
fieldBuilder.name.length,
diff --git a/pkg/front_end/lib/src/fasta/kernel/late_lowering.dart b/pkg/front_end/lib/src/fasta/kernel/late_lowering.dart
index 51904ae..c3f6dec 100644
--- a/pkg/front_end/lib/src/fasta/kernel/late_lowering.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/late_lowering.dart
@@ -61,7 +61,7 @@
// return let # = _#field in # == null ? _#field = <init> : #;
VariableDeclaration variable = new VariableDeclaration.forValue(
createVariableRead(needsPromotion: false)..fileOffset = fileOffset,
- type: type.withNullability(Nullability.nullable))
+ type: type.withDeclaredNullability(Nullability.nullable))
..fileOffset = fileOffset;
return new ReturnStatement(
new Let(
@@ -167,7 +167,7 @@
// : #1;
VariableDeclaration variable = new VariableDeclaration.forValue(
createVariableRead(needsPromotion: false)..fileOffset = fileOffset,
- type: type.withNullability(Nullability.nullable))
+ type: type.withDeclaredNullability(Nullability.nullable))
..fileOffset = fileOffset;
return new ReturnStatement(
new Let(
@@ -244,7 +244,7 @@
// return let # = _#field in # == null ? throw '...' : #;
VariableDeclaration variable = new VariableDeclaration.forValue(
createVariableRead()..fileOffset = fileOffset,
- type: type.withNullability(Nullability.nullable))
+ type: type.withDeclaredNullability(Nullability.nullable))
..fileOffset = fileOffset;
return new ReturnStatement(
new Let(
diff --git a/pkg/front_end/lib/src/fasta/kernel/transform_collections.dart b/pkg/front_end/lib/src/fasta/kernel/transform_collections.dart
index d5a37ef..c0b35ed 100644
--- a/pkg/front_end/lib/src/fasta/kernel/transform_collections.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/transform_collections.dart
@@ -609,7 +609,7 @@
Expression spreadExpression = entry.expression.accept<TreeNode>(this);
if (entry.isNullAware) {
VariableDeclaration temp = _createVariable(spreadExpression,
- collectionType.withNullability(_currentLibrary.nullable));
+ collectionType.withDeclaredNullability(_currentLibrary.nullable));
parts.add(_createNullAwareGuard(entry.fileOffset, temp,
makeLiteral(entry.fileOffset, []), collectionType));
} else {
@@ -682,7 +682,7 @@
assert(variable != null);
assert(variable.fileOffset != TreeNode.noOffset);
DartType promotedType =
- variable.type.withNullability(_currentLibrary.nonNullable);
+ variable.type.withDeclaredNullability(_currentLibrary.nonNullable);
if (promotedType != variable.type) {
return new VariableGet(variable, promotedType)
..fileOffset = variable.fileOffset;
diff --git a/pkg/front_end/lib/src/fasta/kernel/type_labeler.dart b/pkg/front_end/lib/src/fasta/kernel/type_labeler.dart
index 6d3b442..8f95981 100644
--- a/pkg/front_end/lib/src/fasta/kernel/type_labeler.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/type_labeler.dart
@@ -180,7 +180,7 @@
node.parameter.name,
enclosingLibrary == null ? unknownUri : enclosingLibrary.importUri,
enclosingLibrary == null ? unknownUri : enclosingLibrary.fileUri));
- addNullability(node.typeParameterTypeNullability);
+ addNullability(node.declaredNullability);
}
void visitFunctionType(FunctionType node) {
diff --git a/pkg/front_end/lib/src/fasta/scope.dart b/pkg/front_end/lib/src/fasta/scope.dart
index 2d7114b..67008ef 100644
--- a/pkg/front_end/lib/src/fasta/scope.dart
+++ b/pkg/front_end/lib/src/fasta/scope.dart
@@ -677,6 +677,9 @@
bool get isAssignable => false;
@override
+ bool get isExternal => false;
+
+ @override
void set parent(Builder value) {
throw new UnsupportedError('AmbiguousMemberBuilder.parent=');
}
diff --git a/pkg/front_end/lib/src/fasta/source/diet_listener.dart b/pkg/front_end/lib/src/fasta/source/diet_listener.dart
index 635e249..bf3499e 100644
--- a/pkg/front_end/lib/src/fasta/source/diet_listener.dart
+++ b/pkg/front_end/lib/src/fasta/source/diet_listener.dart
@@ -325,8 +325,15 @@
}
@override
- void endClassFields(Token staticToken, Token covariantToken, Token lateToken,
- Token varFinalOrConst, int count, Token beginToken, Token endToken) {
+ void endClassFields(
+ Token externalToken,
+ Token staticToken,
+ Token covariantToken,
+ Token lateToken,
+ Token varFinalOrConst,
+ int count,
+ Token beginToken,
+ Token endToken) {
debugEvent("Fields");
buildFields(count, beginToken, false);
}
@@ -357,6 +364,7 @@
@override
void endTopLevelFields(
+ Token externalToken,
Token staticToken,
Token covariantToken,
Token lateToken,
diff --git a/pkg/front_end/lib/src/fasta/source/outline_builder.dart b/pkg/front_end/lib/src/fasta/source/outline_builder.dart
index 05b1fac..753b7fc 100644
--- a/pkg/front_end/lib/src/fasta/source/outline_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/outline_builder.dart
@@ -1672,6 +1672,7 @@
@override
void endTopLevelFields(
+ Token externalToken,
Token staticToken,
Token covariantToken,
Token lateToken,
@@ -1682,10 +1683,16 @@
debugEvent("endTopLevelFields");
if (lateToken != null && !libraryBuilder.isNonNullableByDefault) {
reportNonNullableModifierError(lateToken);
+ if (externalToken != null) {
+ externalToken = null;
+ handleRecoverableError(
+ messageExternalField, externalToken, externalToken);
+ }
}
List<FieldInfo> fieldInfos = popFieldInfos(count);
TypeBuilder type = nullIfParserRecovery(pop());
- int modifiers = (staticToken != null ? staticMask : 0) |
+ int modifiers = (externalToken != null ? externalMask : 0) |
+ (staticToken != null ? staticMask : 0) |
(covariantToken != null ? covariantMask : 0) |
(lateToken != null ? lateMask : 0) |
Modifier.validateVarFinalOrConst(varFinalOrConst?.lexeme);
@@ -1698,15 +1705,28 @@
}
@override
- void endClassFields(Token staticToken, Token covariantToken, Token lateToken,
- Token varFinalOrConst, int count, Token beginToken, Token endToken) {
+ void endClassFields(
+ Token externalToken,
+ Token staticToken,
+ Token covariantToken,
+ Token lateToken,
+ Token varFinalOrConst,
+ int count,
+ Token beginToken,
+ Token endToken) {
debugEvent("Fields");
if (lateToken != null && !libraryBuilder.isNonNullableByDefault) {
reportNonNullableModifierError(lateToken);
+ if (externalToken != null) {
+ externalToken = null;
+ handleRecoverableError(
+ messageExternalField, externalToken, externalToken);
+ }
}
List<FieldInfo> fieldInfos = popFieldInfos(count);
TypeBuilder type = pop();
- int modifiers = (staticToken != null ? staticMask : 0) |
+ int modifiers = (externalToken != null ? externalMask : 0) |
+ (staticToken != null ? staticMask : 0) |
(covariantToken != null ? covariantMask : 0) |
(lateToken != null ? lateMask : 0) |
Modifier.validateVarFinalOrConst(varFinalOrConst?.lexeme);
diff --git a/pkg/front_end/lib/src/fasta/source/source_class_builder.dart b/pkg/front_end/lib/src/fasta/source/source_class_builder.dart
index 705327b..dd4152e 100644
--- a/pkg/front_end/lib/src/fasta/source/source_class_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_class_builder.dart
@@ -35,10 +35,10 @@
import '../fasta_codes.dart';
-import '../kernel/redirecting_factory_body.dart' show redirectingName;
import '../kernel/kernel_builder.dart' show compareProcedures;
import '../kernel/kernel_target.dart' show KernelTarget;
import '../kernel/redirecting_factory_body.dart' show RedirectingFactoryBody;
+import '../kernel/redirecting_factory_body.dart' show redirectingName;
import '../kernel/type_algorithms.dart'
show Variance, computeTypeVariableBuilderVariance;
@@ -48,6 +48,8 @@
import '../scope.dart';
+import '../type_inference/type_schema.dart';
+
import 'source_library_builder.dart' show SourceLibraryBuilder;
Class initializeClass(
@@ -312,18 +314,21 @@
return supertype;
}
- void checkVarianceInField(Field field, TypeEnvironment typeEnvironment,
- List<TypeParameter> typeParameters) {
+ void checkVarianceInField(SourceFieldBuilder fieldBuilder,
+ TypeEnvironment typeEnvironment, List<TypeParameter> typeParameters) {
for (TypeParameter typeParameter in typeParameters) {
- int fieldVariance = computeVariance(typeParameter, field.type);
- if (field.hasImplicitGetter) {
- reportVariancePositionIfInvalid(
- fieldVariance, typeParameter, field.fileUri, field.fileOffset);
+ int fieldVariance =
+ computeVariance(typeParameter, fieldBuilder.fieldType);
+ if (fieldBuilder.isClassInstanceMember) {
+ reportVariancePositionIfInvalid(fieldVariance, typeParameter,
+ fieldBuilder.fileUri, fieldBuilder.charOffset);
}
- if (field.hasImplicitSetter && !field.isCovariant) {
+ if (fieldBuilder.isClassInstanceMember &&
+ fieldBuilder.isAssignable &&
+ !fieldBuilder.isCovariant) {
fieldVariance = Variance.combine(Variance.contravariant, fieldVariance);
- reportVariancePositionIfInvalid(
- fieldVariance, typeParameter, field.fileUri, field.fileOffset);
+ reportVariancePositionIfInvalid(fieldVariance, typeParameter,
+ fieldBuilder.fileUri, fieldBuilder.charOffset);
}
}
}
@@ -570,9 +575,8 @@
forEach((String name, Builder builder) {
// Check fields.
- if (builder is FieldBuilder) {
- checkVarianceInField(
- builder.field, typeEnvironment, cls.typeParameters);
+ if (builder is SourceFieldBuilder) {
+ checkVarianceInField(builder, typeEnvironment, cls.typeParameters);
libraryBuilder.checkTypesInField(builder, typeEnvironment);
}
@@ -1054,29 +1058,19 @@
addRedirectingConstructor(declaration, library, referenceFrom);
}
if (targetBuilder is FunctionBuilder) {
- List<DartType> typeArguments = declaration.typeArguments;
- if (typeArguments == null) {
- // TODO(32049) If type arguments aren't specified, they should
- // be inferred. Currently, the inference is not performed.
- // The code below is a workaround.
- typeArguments = new List<DartType>.filled(
- targetBuilder.member.enclosingClass.typeParameters.length,
- const DynamicType(),
- growable: true);
- }
+ List<DartType> typeArguments = declaration.typeArguments ??
+ new List<DartType>.filled(
+ targetBuilder
+ .member.enclosingClass.typeParameters.length,
+ const UnknownType());
declaration.setRedirectingFactoryBody(
targetBuilder.member, typeArguments);
} else if (targetBuilder is DillMemberBuilder) {
- List<DartType> typeArguments = declaration.typeArguments;
- if (typeArguments == null) {
- // TODO(32049) If type arguments aren't specified, they should
- // be inferred. Currently, the inference is not performed.
- // The code below is a workaround.
- typeArguments = new List<DartType>.filled(
- targetBuilder.member.enclosingClass.typeParameters.length,
- const DynamicType(),
- growable: true);
- }
+ List<DartType> typeArguments = declaration.typeArguments ??
+ new List<DartType>.filled(
+ targetBuilder
+ .member.enclosingClass.typeParameters.length,
+ const UnknownType());
declaration.setRedirectingFactoryBody(
targetBuilder.member, typeArguments);
} else if (targetBuilder is AmbiguousBuilder) {
diff --git a/pkg/front_end/lib/src/fasta/source/source_library_builder.dart b/pkg/front_end/lib/src/fasta/source/source_library_builder.dart
index 7d76be2..477e0c8 100644
--- a/pkg/front_end/lib/src/fasta/source/source_library_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_library_builder.dart
@@ -449,6 +449,19 @@
_languageVersion =
new LanguageVersion(version, fileUri, offset, length, explicit);
library.setLanguageVersion(version);
+
+ if (loader.target.enableNonNullable &&
+ (loader.nnbdMode == NnbdMode.Strong ||
+ loader.nnbdMode == NnbdMode.Agnostic)) {
+ // In strong and agnostic mode, the language version is not allowed to
+ // opt a library out of nnbd.
+ if (!isNonNullableByDefault) {
+ addPostponedProblem(
+ messageStrongModeNNBDButOptOut, offset, length, fileUri);
+ _languageVersion = new InvalidLanguageVersion(
+ fileUri, offset, length, explicit, loader.target.currentSdkVersion);
+ }
+ }
}
ConstructorReferenceBuilder addConstructorReference(Object name,
@@ -3006,8 +3019,8 @@
void checkTypesInField(
FieldBuilder fieldBuilder, TypeEnvironment typeEnvironment) {
// Check the bounds in the field's type.
- checkBoundsInType(fieldBuilder.field.type, typeEnvironment,
- fieldBuilder.fileUri, fieldBuilder.field.fileOffset,
+ checkBoundsInType(fieldBuilder.fieldType, typeEnvironment,
+ fieldBuilder.fileUri, fieldBuilder.charOffset,
allowSuperBounded: true);
// Check that the field has an initializer if its type is potentially
@@ -3015,16 +3028,17 @@
if (isNonNullableByDefault) {
// Only static and top-level fields are checked here. Instance fields are
// checked elsewhere.
- DartType fieldType = fieldBuilder.field.type;
+ DartType fieldType = fieldBuilder.fieldType;
if (!fieldBuilder.isDeclarationInstanceMember &&
- !fieldBuilder.field.isLate &&
+ !fieldBuilder.isLate &&
+ !fieldBuilder.isExternal &&
fieldType is! InvalidType &&
isPotentiallyNonNullable(fieldType, typeEnvironment.futureOrClass) &&
!fieldBuilder.hasInitializer) {
addProblem(
templateFieldNonNullableWithoutInitializerError.withArguments(
fieldBuilder.name,
- fieldBuilder.field.type,
+ fieldBuilder.fieldType,
isNonNullableByDefault),
fieldBuilder.charOffset,
fieldBuilder.name.length,
diff --git a/pkg/front_end/lib/src/fasta/type_inference/factor_type.dart b/pkg/front_end/lib/src/fasta/type_inference/factor_type.dart
index 6f93a2b..c72ca48 100644
--- a/pkg/front_end/lib/src/fasta/type_inference/factor_type.dart
+++ b/pkg/front_end/lib/src/fasta/type_inference/factor_type.dart
@@ -17,7 +17,7 @@
// * Else if T is R? and Null <: S then factor(R, S)
// * Else if T is R? then factor(R, S)?
if (T.nullability == Nullability.nullable) {
- DartType R = T.withNullability(Nullability.nonNullable);
+ DartType R = T.withDeclaredNullability(Nullability.nonNullable);
if (identical(R, T)) {
return T;
}
@@ -26,20 +26,20 @@
typeEnvironment.nullType, S, SubtypeCheckMode.withNullabilities)) {
return factor_RS;
} else {
- return factor_RS.withNullability(Nullability.nullable);
+ return factor_RS.withDeclaredNullability(Nullability.nullable);
}
}
// * Else if T is R* and Null <: S then factor(R, S)
// * Else if T is R* then factor(R, S)*
if (T.nullability == Nullability.legacy) {
- DartType R = T.withNullability(Nullability.nonNullable);
+ DartType R = T.withDeclaredNullability(Nullability.nonNullable);
DartType factor_RS = factorType(typeEnvironment, R, S);
if (typeEnvironment.isSubtypeOf(
typeEnvironment.nullType, S, SubtypeCheckMode.withNullabilities)) {
return factor_RS;
} else {
- return factor_RS.withNullability(Nullability.legacy);
+ return factor_RS.withDeclaredNullability(Nullability.legacy);
}
}
diff --git a/pkg/front_end/lib/src/fasta/type_inference/standard_bounds.dart b/pkg/front_end/lib/src/fasta/type_inference/standard_bounds.dart
index e2d8911..30fe070 100644
--- a/pkg/front_end/lib/src/fasta/type_inference/standard_bounds.dart
+++ b/pkg/front_end/lib/src/fasta/type_inference/standard_bounds.dart
@@ -84,9 +84,11 @@
// MORETOP(S*, T*) = MORETOP(S, T).
if (s.nullability == Nullability.legacy &&
t.nullability == Nullability.legacy) {
- DartType nonNullableS = s.withNullability(Nullability.nonNullable);
+ DartType nonNullableS =
+ s.withDeclaredNullability(Nullability.nonNullable);
assert(s != nonNullableS);
- DartType nonNullableT = t.withNullability(Nullability.nonNullable);
+ DartType nonNullableT =
+ t.withDeclaredNullability(Nullability.nonNullable);
assert(t != nonNullableT);
return moretop(nonNullableS, nonNullableT);
}
@@ -106,9 +108,11 @@
// MORETOP(S?, T?) == MORETOP(S, T).
if (s.nullability == Nullability.nullable &&
t.nullability == Nullability.nullable) {
- DartType nonNullableS = s.withNullability(Nullability.nonNullable);
+ DartType nonNullableS =
+ s.withDeclaredNullability(Nullability.nonNullable);
assert(s != nonNullableS);
- DartType nonNullableT = t.withNullability(Nullability.nonNullable);
+ DartType nonNullableT =
+ t.withDeclaredNullability(Nullability.nonNullable);
assert(t != nonNullableT);
return moretop(nonNullableS, nonNullableT);
}
@@ -182,9 +186,11 @@
// MOREBOTTOM(S?, T?) = MOREBOTTOM(S, T).
if (t.nullability == Nullability.nullable &&
s.nullability == Nullability.nullable) {
- DartType nonNullableS = s.withNullability(Nullability.nonNullable);
+ DartType nonNullableS =
+ s.withDeclaredNullability(Nullability.nonNullable);
assert(s != nonNullableS);
- DartType nonNullableT = t.withNullability(Nullability.nonNullable);
+ DartType nonNullableT =
+ t.withDeclaredNullability(Nullability.nonNullable);
assert(t != nonNullableT);
return morebottom(nonNullableS, nonNullableT);
}
@@ -204,9 +210,11 @@
// MOREBOTTOM(S*, T*) = MOREBOTTOM(S, T).
if (s.nullability == Nullability.legacy &&
t.nullability == Nullability.legacy) {
- DartType nonNullableS = s.withNullability(Nullability.nonNullable);
+ DartType nonNullableS =
+ s.withDeclaredNullability(Nullability.nonNullable);
assert(s != nonNullableS);
- DartType nonNullableT = t.withNullability(Nullability.nonNullable);
+ DartType nonNullableT =
+ t.withDeclaredNullability(Nullability.nonNullable);
assert(t != nonNullableT);
return morebottom(nonNullableS, nonNullableT);
}
@@ -369,7 +377,7 @@
if (type2Nullability == Nullability.nonNullable) {
return type2;
}
- type2 = type2.withNullability(Nullability.nonNullable);
+ type2 = type2.withDeclaredNullability(Nullability.nonNullable);
type2Nullability = computeNullability(type2, coreTypes.futureOrClass);
if (type2Nullability == Nullability.nonNullable) {
return type2;
@@ -381,7 +389,7 @@
if (type1Nullability == Nullability.nonNullable) {
return type1;
}
- type1 = type1.withNullability(Nullability.nonNullable);
+ type1 = type1.withDeclaredNullability(Nullability.nonNullable);
type1Nullability = computeNullability(type1, coreTypes.futureOrClass);
if (type1Nullability == Nullability.nonNullable) {
return type1;
@@ -412,17 +420,19 @@
// without using the nullability of the outermost type. The result uses
// [intersectNullabilities] to compute the resulting type if the subtype
// relation is established.
- DartType nonNullableType1 = type1.withNullability(Nullability.nonNullable);
- DartType nonNullableType2 = type2.withNullability(Nullability.nonNullable);
+ DartType nonNullableType1 =
+ type1.withDeclaredNullability(Nullability.nonNullable);
+ DartType nonNullableType2 =
+ type2.withDeclaredNullability(Nullability.nonNullable);
if (isSubtypeOf(nonNullableType1, nonNullableType2,
SubtypeCheckMode.withNullabilities)) {
- return type1.withNullability(
+ return type1.withDeclaredNullability(
intersectNullabilities(type1.nullability, type2.nullability));
}
if (isSubtypeOf(nonNullableType2, nonNullableType1,
SubtypeCheckMode.withNullabilities)) {
- return type2.withNullability(
+ return type2.withDeclaredNullability(
intersectNullabilities(type1.nullability, type2.nullability));
}
@@ -486,10 +496,10 @@
// computed from arguments are legacy.
type1 = type1 == coreTypes.nullType
? type1
- : type1.withNullability(Nullability.legacy);
+ : type1.withDeclaredNullability(Nullability.legacy);
type2 = type2 == coreTypes.nullType
? type2
- : type2.withNullability(Nullability.legacy);
+ : type2.withDeclaredNullability(Nullability.legacy);
// For all types T, SLB(T,T) = T. Note that we don't test for equality
// because we don't want to make the algorithm quadratic. This is ok
@@ -674,9 +684,9 @@
if (coreTypes.isNull(type2)) {
return morebottom(type1, type2) ? type2 : type1;
}
- return type2.withNullability(Nullability.nullable);
+ return type2.withDeclaredNullability(Nullability.nullable);
} else if (coreTypes.isNull(type2)) {
- return type1.withNullability(Nullability.nullable);
+ return type1.withDeclaredNullability(Nullability.nullable);
}
// UP(T1, T2) where OBJECT(T1) and OBJECT(T2) =
@@ -696,13 +706,13 @@
Nullability.nonNullable) {
return type1;
}
- return type1.withNullability(Nullability.nullable);
+ return type1.withDeclaredNullability(Nullability.nullable);
} else if (coreTypes.isObject(type2)) {
if (computeNullability(type1, coreTypes.futureOrClass) ==
Nullability.nonNullable) {
return type2;
}
- return type2.withNullability(Nullability.nullable);
+ return type2.withDeclaredNullability(Nullability.nullable);
}
// The effect of the following rules is accounted for in the code below via
@@ -767,13 +777,13 @@
// uses [uniteNullabilities] to compute the resulting type if the subtype
// relation is established.
InterfaceType nonNonNullableType1 =
- type1.withNullability(Nullability.nonNullable);
+ type1.withDeclaredNullability(Nullability.nonNullable);
InterfaceType nonNonNullableType2 =
- type2.withNullability(Nullability.nonNullable);
+ type2.withDeclaredNullability(Nullability.nonNullable);
if (isSubtypeOf(nonNonNullableType1, nonNonNullableType2,
SubtypeCheckMode.withNullabilities)) {
- return type2.withNullability(
+ return type2.withDeclaredNullability(
uniteNullabilities(type1.nullability, type2.nullability));
}
@@ -781,7 +791,7 @@
// Note that both types must be class types at this point.
if (isSubtypeOf(nonNonNullableType2, nonNonNullableType1,
SubtypeCheckMode.withNullabilities)) {
- return type1.withNullability(
+ return type1.withDeclaredNullability(
uniteNullabilities(type1.nullability, type2.nullability));
}
@@ -1161,11 +1171,11 @@
// otherwise X1 if T2 <: X1
// otherwise UP(B1[Object/X1], T2)
if (isSubtypeOf(type1, type2, SubtypeCheckMode.withNullabilities)) {
- return type2.withNullability(
+ return type2.withDeclaredNullability(
uniteNullabilities(type1.nullability, type2.nullability));
}
if (isSubtypeOf(type2, type1, SubtypeCheckMode.withNullabilities)) {
- return type1.withNullability(
+ return type1.withDeclaredNullability(
uniteNullabilities(type1.nullability, type2.nullability));
}
Map<TypeParameter, DartType> substitution = <TypeParameter, DartType>{
@@ -1175,21 +1185,21 @@
substitute(type1.parameter.bound, substitution),
type2,
clientLibrary)
- .withNullability(
+ .withDeclaredNullability(
uniteNullabilities(type1.nullability, type2.nullability));
} else {
// UP(X1 & B1, T2) =
// T2 if X1 <: T2
// otherwise X1 if T2 <: X1
// otherwise UP(B1[Object/X1], T2)
- DartType demoted = new TypeParameterType(
- type1.parameter, type1.typeParameterTypeNullability);
+ DartType demoted =
+ new TypeParameterType(type1.parameter, type1.declaredNullability);
if (isSubtypeOf(demoted, type2, SubtypeCheckMode.withNullabilities)) {
- return type2.withNullability(
+ return type2.withDeclaredNullability(
uniteNullabilities(type1.nullability, type2.nullability));
}
if (isSubtypeOf(type2, demoted, SubtypeCheckMode.withNullabilities)) {
- return demoted.withNullability(
+ return demoted.withDeclaredNullability(
uniteNullabilities(type1.nullability, type2.nullability));
}
Map<TypeParameter, DartType> substitution = <TypeParameter, DartType>{
@@ -1199,7 +1209,7 @@
substitute(type1.promotedBound, substitution),
type2,
clientLibrary)
- .withNullability(
+ .withDeclaredNullability(
uniteNullabilities(type1.nullability, type2.nullability));
}
}
diff --git a/pkg/front_end/lib/src/fasta/type_inference/type_constraint_gatherer.dart b/pkg/front_end/lib/src/fasta/type_inference/type_constraint_gatherer.dart
index 9a8b9e4..f83901e 100644
--- a/pkg/front_end/lib/src/fasta/type_inference/type_constraint_gatherer.dart
+++ b/pkg/front_end/lib/src/fasta/type_inference/type_constraint_gatherer.dart
@@ -349,7 +349,7 @@
computeNullability(supertype.typeArguments[0], futureOrClass),
supertype.nullability);
DartType supertypeArg =
- supertype.typeArguments[0].withNullability(unitedNullability);
+ supertype.typeArguments[0].withDeclaredNullability(unitedNullability);
DartType supertypeFuture = futureType(supertypeArg, unitedNullability);
// The match against FutureOr<X> succeeds if the match against either
diff --git a/pkg/front_end/lib/src/fasta/type_inference/type_demotion.dart b/pkg/front_end/lib/src/fasta/type_inference/type_demotion.dart
index c9e3fe2..26858f0 100644
--- a/pkg/front_end/lib/src/fasta/type_inference/type_demotion.dart
+++ b/pkg/front_end/lib/src/fasta/type_inference/type_demotion.dart
@@ -122,7 +122,7 @@
Nullability newNullability = visitNullability(node);
if (demoteTypeVariables && node.promotedBound != null) {
return new TypeParameterType(
- node.parameter, newNullability ?? node.typeParameterTypeNullability);
+ node.parameter, newNullability ?? node.declaredNullability);
}
return createTypeParameterType(node, newNullability);
}
diff --git a/pkg/front_end/lib/src/fasta/type_inference/type_inference_engine.dart b/pkg/front_end/lib/src/fasta/type_inference/type_inference_engine.dart
index bbaff28..aeb2a72 100644
--- a/pkg/front_end/lib/src/fasta/type_inference/type_inference_engine.dart
+++ b/pkg/front_end/lib/src/fasta/type_inference/type_inference_engine.dart
@@ -284,17 +284,18 @@
@override
DartType promoteToNonNull(DartType type) {
if (type is TypeParameterType &&
- type.typeParameterTypeNullability != Nullability.nullable) {
- DartType bound = type.bound.withNullability(Nullability.nonNullable);
+ type.declaredNullability != Nullability.nullable) {
+ DartType bound =
+ type.bound.withDeclaredNullability(Nullability.nonNullable);
if (bound != type.bound) {
return new TypeParameterType(
- type.parameter, type.typeParameterTypeNullability, bound);
+ type.parameter, type.declaredNullability, bound);
}
return type;
} else if (type == typeEnvironment.nullType) {
return const NeverType(Nullability.nonNullable);
}
- return type.withNullability(Nullability.nonNullable);
+ return type.withDeclaredNullability(Nullability.nonNullable);
}
@override
diff --git a/pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart b/pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart
index 05ee3f4..8b3ce56 100644
--- a/pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart
+++ b/pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart
@@ -625,7 +625,7 @@
if (type == coreTypes.nullType || type is NeverType) {
return coreTypes.nullType;
}
- return type.withNullability(library.nullable);
+ return type.withDeclaredNullability(library.nullable);
}
DartType computeNonNullable(DartType type) {
@@ -638,7 +638,7 @@
return new TypeParameterType(type.parameter, Nullability.nonNullable,
computeNonNullable(type.promotedBound));
}
- return type.withNullability(library.nonNullable);
+ return type.withDeclaredNullability(library.nonNullable);
}
void registerIfUnreachableForTesting(TreeNode node, {bool isReachable}) {
@@ -917,7 +917,7 @@
..fileOffset = fileOffset;
DartType tearoffType =
getGetterTypeForMemberTarget(callMember, expressionType)
- .withNullability(expressionType.nullability);
+ .withDeclaredNullability(expressionType.nullability);
ConditionalExpression conditional = new ConditionalExpression(nullCheck,
new NullLiteral()..fileOffset = fileOffset, tearOff, tearoffType);
return new TypedTearoff(
@@ -953,7 +953,7 @@
}
expressionType =
getGetterTypeForMemberTarget(callMember, expressionType)
- .withNullability(expressionType.nullability);
+ .withDeclaredNullability(expressionType.nullability);
}
}
}
@@ -2005,7 +2005,7 @@
}
InvocationInferenceResult inferInvocation(DartType typeContext, int offset,
- FunctionType calleeType, Arguments arguments, Name targetName,
+ FunctionType calleeType, Arguments arguments,
{List<VariableDeclaration> hoistedExpressions,
bool isOverloadedArithmeticOperator: false,
DartType returnType,
@@ -2022,22 +2022,16 @@
if (extensionTypeParameterCount != 0) {
assert(returnType == null,
"Unexpected explicit return type for extension method invocation.");
- return _inferGenericExtensionMethodInvocation(
- extensionTypeParameterCount,
- typeContext,
- offset,
- calleeType,
- arguments,
- targetName,
- hoistedExpressions,
+ return _inferGenericExtensionMethodInvocation(extensionTypeParameterCount,
+ typeContext, offset, calleeType, arguments, hoistedExpressions,
isOverloadedArithmeticOperator: isOverloadedArithmeticOperator,
receiverType: receiverType,
skipTypeArgumentInference: skipTypeArgumentInference,
isConst: isConst,
isImplicitExtensionMember: isImplicitExtensionMember);
}
- return _inferInvocation(typeContext, offset, calleeType, arguments,
- targetName, hoistedExpressions,
+ return _inferInvocation(
+ typeContext, offset, calleeType, arguments, hoistedExpressions,
isOverloadedArithmeticOperator: isOverloadedArithmeticOperator,
receiverType: receiverType,
returnType: returnType,
@@ -2053,7 +2047,6 @@
int offset,
FunctionType calleeType,
Arguments arguments,
- Name targetName,
List<VariableDeclaration> hoistedExpressions,
{bool isOverloadedArithmeticOperator: false,
DartType receiverType,
@@ -2073,7 +2066,7 @@
arguments.fileOffset, [arguments.positional.first],
types: getExplicitExtensionTypeArguments(arguments));
_inferInvocation(const UnknownType(), offset, extensionFunctionType,
- extensionArguments, targetName, hoistedExpressions,
+ extensionArguments, hoistedExpressions,
skipTypeArgumentInference: skipTypeArgumentInference,
receiverType: receiverType,
isImplicitExtensionMember: isImplicitExtensionMember,
@@ -2099,7 +2092,7 @@
arguments.fileOffset, arguments.positional.skip(1).toList(),
named: arguments.named, types: getExplicitTypeArguments(arguments));
InvocationInferenceResult result = _inferInvocation(typeContext, offset,
- targetFunctionType, targetArguments, targetName, hoistedExpressions,
+ targetFunctionType, targetArguments, hoistedExpressions,
isOverloadedArithmeticOperator: isOverloadedArithmeticOperator,
skipTypeArgumentInference: skipTypeArgumentInference,
isConst: isConst,
@@ -2124,7 +2117,6 @@
int offset,
FunctionType calleeType,
Arguments arguments,
- Name targetName,
List<VariableDeclaration> hoistedExpressions,
{bool isOverloadedArithmeticOperator: false,
bool isBinaryOperator: false,
@@ -2636,7 +2628,7 @@
{bool isImplicitCall}) {
assert(isImplicitCall != null);
InvocationInferenceResult result = inferInvocation(
- typeContext, fileOffset, unknownFunction, arguments, name,
+ typeContext, fileOffset, unknownFunction, arguments,
hoistedExpressions: hoistedExpressions,
receiverType: const DynamicType(),
isImplicitCall: isImplicitCall);
@@ -2660,7 +2652,7 @@
{bool isImplicitCall}) {
assert(isImplicitCall != null);
InvocationInferenceResult result = inferInvocation(
- typeContext, fileOffset, unknownFunction, arguments, name,
+ typeContext, fileOffset, unknownFunction, arguments,
hoistedExpressions: hoistedExpressions,
receiverType: receiverType,
isImplicitCall: isImplicitCall);
@@ -2694,7 +2686,7 @@
implicitInvocationPropertyName: implicitInvocationPropertyName,
extensionAccessCandidates:
target.isAmbiguous ? target.candidates : null);
- inferInvocation(typeContext, fileOffset, unknownFunction, arguments, name,
+ inferInvocation(typeContext, fileOffset, unknownFunction, arguments,
hoistedExpressions: hoistedExpressions,
receiverType: receiverType,
isImplicitCall: isExpressionInvocation || isImplicitCall);
@@ -2749,8 +2741,8 @@
} else {
StaticInvocation staticInvocation = transformExtensionMethodInvocation(
fileOffset, target, receiver, arguments);
- InvocationInferenceResult result = inferInvocation(typeContext,
- fileOffset, functionType, staticInvocation.arguments, name,
+ InvocationInferenceResult result = inferInvocation(
+ typeContext, fileOffset, functionType, staticInvocation.arguments,
hoistedExpressions: hoistedExpressions,
receiverType: receiverType,
isImplicitExtensionMember: true,
@@ -2797,7 +2789,7 @@
assert(target.isCallFunction || target.isNullableCallFunction);
FunctionType functionType = getFunctionType(target, receiverType);
InvocationInferenceResult result = inferInvocation(
- typeContext, fileOffset, functionType, arguments, callName,
+ typeContext, fileOffset, functionType, arguments,
hoistedExpressions: hoistedExpressions,
receiverType: receiverType,
isImplicitCall: isImplicitCall);
@@ -2874,7 +2866,7 @@
contravariantCheck = true;
}
InvocationInferenceResult result = inferInvocation(
- typeContext, fileOffset, functionType, arguments, target.member?.name,
+ typeContext, fileOffset, functionType, arguments,
hoistedExpressions: hoistedExpressions,
receiverType: receiverType,
isImplicitCall: isImplicitCall);
@@ -3349,7 +3341,7 @@
FunctionType functionType = getFunctionType(target, receiverType);
InvocationInferenceResult result = inferInvocation(
- typeContext, fileOffset, functionType, arguments, target.member?.name,
+ typeContext, fileOffset, functionType, arguments,
isOverloadedArithmeticOperator: isOverloadedArithmeticOperator,
receiverType: receiverType,
isImplicitExtensionMember: target.isExtensionMember);
diff --git a/pkg/front_end/lib/src/fasta/type_inference/type_schema.dart b/pkg/front_end/lib/src/fasta/type_inference/type_schema.dart
index e05eba1..71b9ac1 100644
--- a/pkg/front_end/lib/src/fasta/type_inference/type_schema.dart
+++ b/pkg/front_end/lib/src/fasta/type_inference/type_schema.dart
@@ -57,10 +57,13 @@
/// The unknown type cannot appear in programs or in final inferred types: it is
/// purely part of the local inference process.
class UnknownType extends DartType {
+ const UnknownType();
+
@override
Nullability get nullability => null;
- const UnknownType();
+ @override
+ Nullability get declaredNullability => null;
@override
bool operator ==(Object other) => equals(other, null);
@@ -85,7 +88,7 @@
void visitChildren(Visitor<dynamic> v) {}
@override
- UnknownType withNullability(Nullability nullability) => this;
+ UnknownType withDeclaredNullability(Nullability nullability) => this;
@override
String toString() {
diff --git a/pkg/front_end/lib/src/fasta/type_inference/type_schema_environment.dart b/pkg/front_end/lib/src/fasta/type_inference/type_schema_environment.dart
index 05199b3..a3fcd38 100644
--- a/pkg/front_end/lib/src/fasta/type_inference/type_schema_environment.dart
+++ b/pkg/front_end/lib/src/fasta/type_inference/type_schema_environment.dart
@@ -166,10 +166,10 @@
// override.
if (type1 is InterfaceType && type1.classNode == coreTypes.intClass) {
if (type2 is InterfaceType && type2.classNode == coreTypes.intClass) {
- return type2.withNullability(type1.nullability);
+ return type2.withDeclaredNullability(type1.nullability);
}
if (type2 is InterfaceType && type2.classNode == coreTypes.doubleClass) {
- return type2.withNullability(type1.nullability);
+ return type2.withDeclaredNullability(type1.nullability);
}
}
return coreTypes.numRawType(type1.nullability);
diff --git a/pkg/front_end/lib/src/fasta/util/textual_outline.dart b/pkg/front_end/lib/src/fasta/util/textual_outline.dart
index 4f705d0..c3401cb 100644
--- a/pkg/front_end/lib/src/fasta/util/textual_outline.dart
+++ b/pkg/front_end/lib/src/fasta/util/textual_outline.dart
@@ -387,13 +387,21 @@
}
@override
- void endClassFields(Token staticToken, Token covariantToken, Token lateToken,
- Token varFinalOrConst, int count, Token beginToken, Token endToken) {
+ void endClassFields(
+ Token externalToken,
+ Token staticToken,
+ Token covariantToken,
+ Token lateToken,
+ Token varFinalOrConst,
+ int count,
+ Token beginToken,
+ Token endToken) {
elementStartToFinish[beginToken] = endToken;
}
@override
void endTopLevelFields(
+ Token externalToken,
Token staticToken,
Token covariantToken,
Token lateToken,
diff --git a/pkg/front_end/messages.status b/pkg/front_end/messages.status
index 5558bde..0fd1a31 100644
--- a/pkg/front_end/messages.status
+++ b/pkg/front_end/messages.status
@@ -5,6 +5,9 @@
# Note that test/spelling: Status will have no effect. Spelling errors can
# always be fixed by either spelling correctly or updating the dictionary.
+StrongModeNNBDButOptOut/analyzerCode: Fail
+StrongModeNNBDButOptOut/example: Fail
+
AbstractClassInstantiation/example: Fail
AbstractClassMember/part_wrapped_script5: Fail
AbstractClassMember/part_wrapped_script6: Fail
diff --git a/pkg/front_end/messages.yaml b/pkg/front_end/messages.yaml
index 9605edd..99782aa 100644
--- a/pkg/front_end/messages.yaml
+++ b/pkg/front_end/messages.yaml
@@ -1185,6 +1185,9 @@
Unspecified:
template: "#string"
+StrongModeNNBDButOptOut:
+ template: "A library can't opt out of non-nullable by default, when in nnbd-strong mode."
+
AbstractNotSync:
template: "Abstract methods can't use 'async', 'async*', or 'sync*'."
analyzerCode: NON_SYNC_ABSTRACT_METHOD
@@ -4046,7 +4049,7 @@
ExportOptOutFromOptIn:
template: "Null safe libraries are not allowed to export declarations from of opt-out libraries."
- configuration: nnbd-strong
+ configuration: nnbd-weak
script:
main.dart: |
export 'lib.dart';
diff --git a/pkg/front_end/parser_testcases/general/ambiguous_builder_01.dart b/pkg/front_end/parser_testcases/general/ambiguous_builder_01.dart
new file mode 100644
index 0000000..bc615ae
--- /dev/null
+++ b/pkg/front_end/parser_testcases/general/ambiguous_builder_01.dart
@@ -0,0 +1,9 @@
+// Copyright (c) 2020, 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.md file.
+
+x.y = 42;
+x.z = true;
+void foo() {
+ if (x != null) {}
+}
diff --git a/pkg/front_end/parser_testcases/general/ambiguous_builder_01.dart.expect b/pkg/front_end/parser_testcases/general/ambiguous_builder_01.dart.expect
new file mode 100644
index 0000000..9b87e15
--- /dev/null
+++ b/pkg/front_end/parser_testcases/general/ambiguous_builder_01.dart.expect
@@ -0,0 +1,128 @@
+Problems reported:
+
+parser/general/ambiguous_builder_01:5:1: A function declaration needs an explicit list of parameters.
+x.y = 42;
+^
+
+parser/general/ambiguous_builder_01:5:2: Expected a function body, but got '.'.
+x.y = 42;
+ ^
+
+parser/general/ambiguous_builder_01:5:2: Expected a declaration, but got '.'.
+x.y = 42;
+ ^
+
+parser/general/ambiguous_builder_01:5:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+x.y = 42;
+ ^
+
+parser/general/ambiguous_builder_01:6:1: A function declaration needs an explicit list of parameters.
+x.z = true;
+^
+
+parser/general/ambiguous_builder_01:6:2: Expected a function body, but got '.'.
+x.z = true;
+ ^
+
+parser/general/ambiguous_builder_01:6:2: Expected a declaration, but got '.'.
+x.z = true;
+ ^
+
+parser/general/ambiguous_builder_01:6:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+x.z = true;
+ ^
+
+beginCompilationUnit(x)
+ beginMetadataStar(x)
+ endMetadataStar(0)
+ beginTopLevelMember(x)
+ beginTopLevelMethod(, null)
+ handleNoType()
+ handleIdentifier(x, topLevelFunctionDeclaration)
+ handleNoTypeVariables(.)
+ handleRecoverableError(MissingFunctionParameters, x, x)
+ beginFormalParameters((, MemberKind.TopLevelMethod)
+ endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
+ handleAsyncModifier(null, null)
+ handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '.'., null, {token: .}], ., .)
+ handleInvalidFunctionBody({)
+ endTopLevelMethod(x, null, })
+ endTopLevelDeclaration(.)
+ beginMetadataStar(.)
+ endMetadataStar(0)
+ beginTopLevelMember(.)
+ handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got '.'., null, {token: .}], ., .)
+ handleInvalidTopLevelDeclaration(.)
+ endTopLevelDeclaration(y)
+ beginMetadataStar(y)
+ endMetadataStar(0)
+ beginTopLevelMember(y)
+ handleRecoverableError(MissingConstFinalVarOrType, y, y)
+ handleNoType(.)
+ handleIdentifier(y, topLevelVariableDeclaration)
+ beginFieldInitializer(=)
+ handleLiteralInt(42)
+ endFieldInitializer(=, ;)
+ endTopLevelFields(null, null, null, null, 1, y, ;)
+endTopLevelDeclaration(x)
+beginMetadataStar(x)
+endMetadataStar(0)
+beginTopLevelMember(x)
+ beginTopLevelMethod(;, null)
+ handleNoType(;)
+ handleIdentifier(x, topLevelFunctionDeclaration)
+ handleNoTypeVariables(.)
+ handleRecoverableError(MissingFunctionParameters, x, x)
+ beginFormalParameters((, MemberKind.TopLevelMethod)
+ endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
+ handleAsyncModifier(null, null)
+ handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '.'., null, {token: .}], ., .)
+ handleInvalidFunctionBody({)
+ endTopLevelMethod(x, null, })
+endTopLevelDeclaration(.)
+beginMetadataStar(.)
+endMetadataStar(0)
+beginTopLevelMember(.)
+ handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got '.'., null, {token: .}], ., .)
+ handleInvalidTopLevelDeclaration(.)
+endTopLevelDeclaration(z)
+beginMetadataStar(z)
+endMetadataStar(0)
+beginTopLevelMember(z)
+ handleRecoverableError(MissingConstFinalVarOrType, z, z)
+ handleNoType(.)
+ handleIdentifier(z, topLevelVariableDeclaration)
+ beginFieldInitializer(=)
+ handleLiteralBool(true)
+ endFieldInitializer(=, ;)
+endTopLevelFields(null, null, null, null, 1, z, ;)
+endTopLevelDeclaration(void)
+beginMetadataStar(void)
+endMetadataStar(0)
+beginTopLevelMember(void)
+beginTopLevelMethod(;, null)
+ handleVoidKeyword(void)
+ handleIdentifier(foo, topLevelFunctionDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.TopLevelMethod)
+ endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginIfStatement(if)
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(!=)
+ handleNoArguments(!=)
+ handleSend(x, !=)
+ beginBinaryExpression(!=)
+ handleLiteralNull(null)
+ endBinaryExpression(!=)
+ handleParenthesizedCondition(()
+ beginThenStatement({)
+ beginBlock({, BlockKind(statement))
+ endBlock(0, {, }, BlockKind(statement))
+ endThenStatement(})
+ endIfStatement(if, null)
+ endBlockFunctionBody(1, {, })
+endTopLevelMethod(void, null, })
+endTopLevelDeclaration()
+endCompilationUnit(7, )
diff --git a/pkg/front_end/parser_testcases/general/ambiguous_builder_01.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/ambiguous_builder_01.dart.intertwined.expect
new file mode 100644
index 0000000..e4575db
--- /dev/null
+++ b/pkg/front_end/parser_testcases/general/ambiguous_builder_01.dart.intertwined.expect
@@ -0,0 +1,209 @@
+parseUnit(x)
+ skipErrorTokens(x)
+ listener: beginCompilationUnit(x)
+ syntheticPreviousToken(x)
+ parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
+ parseMetadataStar()
+ listener: beginMetadataStar(x)
+ listener: endMetadataStar(0)
+ parseTopLevelMemberImpl()
+ listener: beginTopLevelMember(x)
+ isReservedKeyword(.)
+ parseTopLevelMethod(, null, , Instance of 'NoType', null, x, false)
+ listener: beginTopLevelMethod(, null)
+ listener: handleNoType()
+ ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
+ listener: handleIdentifier(x, topLevelFunctionDeclaration)
+ parseMethodTypeVar(x)
+ listener: handleNoTypeVariables(.)
+ parseGetterOrFormalParameters(x, x, false, MemberKind.TopLevelMethod)
+ missingParameterMessage(MemberKind.TopLevelMethod)
+ reportRecoverableError(x, MissingFunctionParameters)
+ listener: handleRecoverableError(MissingFunctionParameters, x, x)
+ rewriter()
+ parseFormalParametersRest((, MemberKind.TopLevelMethod)
+ listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+ listener: endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ parseFunctionBody(), false, false)
+ ensureBlock(), Instance of 'Template<(Token) => Message>', null)
+ reportRecoverableError(., Message[ExpectedFunctionBody, Expected a function body, but got '.'., null, {token: .}])
+ listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '.'., null, {token: .}], ., .)
+ insertBlock())
+ rewriter()
+ rewriter()
+ listener: handleInvalidFunctionBody({)
+ listener: endTopLevelMethod(x, null, })
+ listener: endTopLevelDeclaration(.)
+ parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+ parseMetadataStar(})
+ listener: beginMetadataStar(.)
+ listener: endMetadataStar(0)
+ listener: beginTopLevelMember(.)
+ parseInvalidTopLevelDeclaration(})
+ reportRecoverableErrorWithToken(., Instance of 'Template<(Token) => Message>')
+ listener: handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got '.'., null, {token: .}], ., .)
+ listener: handleInvalidTopLevelDeclaration(.)
+ listener: endTopLevelDeclaration(y)
+ parseTopLevelDeclarationImpl(., Instance of 'DirectiveContext')
+ parseMetadataStar(.)
+ listener: beginMetadataStar(y)
+ listener: endMetadataStar(0)
+ parseTopLevelMemberImpl(.)
+ listener: beginTopLevelMember(y)
+ isReservedKeyword(=)
+ parseFields(., null, null, null, null, null, ., Instance of 'NoType', y, DeclarationKind.TopLevel, null, false)
+ reportRecoverableError(y, MissingConstFinalVarOrType)
+ listener: handleRecoverableError(MissingConstFinalVarOrType, y, y)
+ listener: handleNoType(.)
+ ensureIdentifierPotentiallyRecovered(., topLevelVariableDeclaration, false)
+ listener: handleIdentifier(y, topLevelVariableDeclaration)
+ parseFieldInitializerOpt(y, y, null, null, DeclarationKind.TopLevel, null)
+ listener: beginFieldInitializer(=)
+ parseExpression(=)
+ parsePrecedenceExpression(=, 1, true)
+ parseUnaryExpression(=, true)
+ parsePrimary(=, expression)
+ parseLiteralInt(=)
+ listener: handleLiteralInt(42)
+ listener: endFieldInitializer(=, ;)
+ listener: endTopLevelFields(null, null, null, null, 1, y, ;)
+ listener: endTopLevelDeclaration(x)
+ parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+ parseMetadataStar(;)
+ listener: beginMetadataStar(x)
+ listener: endMetadataStar(0)
+ parseTopLevelMemberImpl(;)
+ listener: beginTopLevelMember(x)
+ isReservedKeyword(.)
+ parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, x, false)
+ listener: beginTopLevelMethod(;, null)
+ listener: handleNoType(;)
+ ensureIdentifierPotentiallyRecovered(;, topLevelFunctionDeclaration, false)
+ listener: handleIdentifier(x, topLevelFunctionDeclaration)
+ parseMethodTypeVar(x)
+ listener: handleNoTypeVariables(.)
+ parseGetterOrFormalParameters(x, x, false, MemberKind.TopLevelMethod)
+ missingParameterMessage(MemberKind.TopLevelMethod)
+ reportRecoverableError(x, MissingFunctionParameters)
+ listener: handleRecoverableError(MissingFunctionParameters, x, x)
+ rewriter()
+ parseFormalParametersRest((, MemberKind.TopLevelMethod)
+ listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+ listener: endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ parseFunctionBody(), false, false)
+ ensureBlock(), Instance of 'Template<(Token) => Message>', null)
+ reportRecoverableError(., Message[ExpectedFunctionBody, Expected a function body, but got '.'., null, {token: .}])
+ listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '.'., null, {token: .}], ., .)
+ insertBlock())
+ rewriter()
+ rewriter()
+ listener: handleInvalidFunctionBody({)
+ listener: endTopLevelMethod(x, null, })
+ listener: endTopLevelDeclaration(.)
+ parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+ parseMetadataStar(})
+ listener: beginMetadataStar(.)
+ listener: endMetadataStar(0)
+ listener: beginTopLevelMember(.)
+ parseInvalidTopLevelDeclaration(})
+ reportRecoverableErrorWithToken(., Instance of 'Template<(Token) => Message>')
+ listener: handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got '.'., null, {token: .}], ., .)
+ listener: handleInvalidTopLevelDeclaration(.)
+ listener: endTopLevelDeclaration(z)
+ parseTopLevelDeclarationImpl(., Instance of 'DirectiveContext')
+ parseMetadataStar(.)
+ listener: beginMetadataStar(z)
+ listener: endMetadataStar(0)
+ parseTopLevelMemberImpl(.)
+ listener: beginTopLevelMember(z)
+ isReservedKeyword(=)
+ parseFields(., null, null, null, null, null, ., Instance of 'NoType', z, DeclarationKind.TopLevel, null, false)
+ reportRecoverableError(z, MissingConstFinalVarOrType)
+ listener: handleRecoverableError(MissingConstFinalVarOrType, z, z)
+ listener: handleNoType(.)
+ ensureIdentifierPotentiallyRecovered(., topLevelVariableDeclaration, false)
+ listener: handleIdentifier(z, topLevelVariableDeclaration)
+ parseFieldInitializerOpt(z, z, null, null, DeclarationKind.TopLevel, null)
+ listener: beginFieldInitializer(=)
+ parseExpression(=)
+ parsePrecedenceExpression(=, 1, true)
+ parseUnaryExpression(=, true)
+ parsePrimary(=, expression)
+ parseLiteralBool(=)
+ listener: handleLiteralBool(true)
+ listener: endFieldInitializer(=, ;)
+ listener: endTopLevelFields(null, null, null, null, 1, z, ;)
+ listener: endTopLevelDeclaration(void)
+ parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+ parseMetadataStar(;)
+ listener: beginMetadataStar(void)
+ listener: endMetadataStar(0)
+ parseTopLevelMemberImpl(;)
+ listener: beginTopLevelMember(void)
+ parseTopLevelMethod(;, null, ;, Instance of 'VoidType', null, foo, false)
+ listener: beginTopLevelMethod(;, null)
+ listener: handleVoidKeyword(void)
+ ensureIdentifierPotentiallyRecovered(void, topLevelFunctionDeclaration, false)
+ listener: handleIdentifier(foo, topLevelFunctionDeclaration)
+ parseMethodTypeVar(foo)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(foo, foo, false, MemberKind.TopLevelMethod)
+ parseFormalParameters(foo, MemberKind.TopLevelMethod)
+ parseFormalParametersRest((, MemberKind.TopLevelMethod)
+ listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+ listener: endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ parseFunctionBody(), false, false)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, if)
+ parseStatement({)
+ parseStatementX({)
+ parseIfStatement({)
+ listener: beginIfStatement(if)
+ ensureParenthesizedCondition(if)
+ parseExpressionInParenthesisRest(()
+ parseExpression(()
+ parsePrecedenceExpression((, 1, true)
+ parseUnaryExpression((, true)
+ parsePrimary((, expression)
+ parseSendOrFunctionLiteral((, expression)
+ parseSend((, expression)
+ ensureIdentifier((, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(!=)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(!=)
+ listener: handleSend(x, !=)
+ listener: beginBinaryExpression(!=)
+ parsePrecedenceExpression(!=, 8, true)
+ parseUnaryExpression(!=, true)
+ parsePrimary(!=, expression)
+ parseLiteralNull(!=)
+ listener: handleLiteralNull(null)
+ listener: endBinaryExpression(!=)
+ ensureCloseParen(null, ()
+ listener: handleParenthesizedCondition(()
+ listener: beginThenStatement({)
+ parseStatement())
+ parseStatementX())
+ parseBlock(), BlockKind(statement))
+ ensureBlock(), null, null)
+ listener: beginBlock({, BlockKind(statement))
+ notEofOrValue(}, })
+ listener: endBlock(0, {, }, BlockKind(statement))
+ listener: endThenStatement(})
+ listener: endIfStatement(if, null)
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endTopLevelMethod(void, null, })
+ listener: endTopLevelDeclaration()
+ reportAllErrorTokens(x)
+ listener: endCompilationUnit(7, )
diff --git a/pkg/front_end/parser_testcases/general/ambiguous_builder_01.dart.parser.expect b/pkg/front_end/parser_testcases/general/ambiguous_builder_01.dart.parser.expect
new file mode 100644
index 0000000..7255852
--- /dev/null
+++ b/pkg/front_end/parser_testcases/general/ambiguous_builder_01.dart.parser.expect
@@ -0,0 +1,15 @@
+NOTICE: Stream was rewritten by parser!
+
+x(){}.y = 42;
+x(){}.z = true;
+void foo() {
+if (x != null) {}
+}
+
+
+x[StringToken]([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken].[SimpleToken]y[StringToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+x[StringToken]([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken].[SimpleToken]z[StringToken] =[SimpleToken] true[KeywordToken];[SimpleToken]
+void[KeywordToken] foo[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] !=[SimpleToken] null[KeywordToken])[SimpleToken] {[BeginToken]}[SimpleToken]
+}[SimpleToken]
+[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/general/ambiguous_builder_01.dart.scanner.expect b/pkg/front_end/parser_testcases/general/ambiguous_builder_01.dart.scanner.expect
new file mode 100644
index 0000000..6e6965d
--- /dev/null
+++ b/pkg/front_end/parser_testcases/general/ambiguous_builder_01.dart.scanner.expect
@@ -0,0 +1,13 @@
+x.y = 42;
+x.z = true;
+void foo() {
+if (x != null) {}
+}
+
+
+x[StringToken].[SimpleToken]y[StringToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+x[StringToken].[SimpleToken]z[StringToken] =[SimpleToken] true[KeywordToken];[SimpleToken]
+void[KeywordToken] foo[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]x[StringToken] !=[SimpleToken] null[KeywordToken])[SimpleToken] {[BeginToken]}[SimpleToken]
+}[SimpleToken]
+[SimpleToken]
diff --git a/pkg/front_end/test/explicit_creation_test.dart b/pkg/front_end/test/explicit_creation_test.dart
index fd6ded1..9416765 100644
--- a/pkg/front_end/test/explicit_creation_test.dart
+++ b/pkg/front_end/test/explicit_creation_test.dart
@@ -50,9 +50,9 @@
return new Directory(dirPath).uri;
}
-Uri frontendLibUri;
+Set<Uri> libUris = {};
-Future<void> main() async {
+Future<void> main(List<String> args) async {
Ticker ticker = new Ticker(isVerbose: false);
api.CompilerOptions compilerOptions = getOptions();
@@ -64,12 +64,25 @@
ProcessedOptions options = new ProcessedOptions(options: compilerOptions);
- frontendLibUri = repoDir.resolve("pkg/front_end/lib/");
- List<FileSystemEntity> entities =
- new Directory.fromUri(frontendLibUri).listSync(recursive: true);
- for (FileSystemEntity entity in entities) {
- if (entity is File && entity.path.endsWith(".dart")) {
- options.inputs.add(entity.uri);
+ if (args.isEmpty) {
+ libUris.add(repoDir.resolve("pkg/front_end/lib/"));
+ libUris.add(repoDir.resolve("pkg/_fe_analyzer_shared/lib/"));
+ } else {
+ if (args[0] == "--front-end-only") {
+ libUris.add(repoDir.resolve("pkg/front_end/lib/"));
+ } else if (args[0] == "--shared-only") {
+ libUris.add(repoDir.resolve("pkg/_fe_analyzer_shared/lib/"));
+ } else {
+ throw "Unsupported arguments: $args";
+ }
+ }
+ for (Uri uri in libUris) {
+ List<FileSystemEntity> entities =
+ new Directory.fromUri(uri).listSync(recursive: true);
+ for (FileSystemEntity entity in entities) {
+ if (entity is File && entity.path.endsWith(".dart")) {
+ options.inputs.add(entity.uri);
+ }
}
}
@@ -238,8 +251,17 @@
doReport = false;
}
}
- if (doReport && !uri.toString().startsWith(frontendLibUri.toString())) {
- doReport = false;
+ if (doReport) {
+ bool match = false;
+ for (Uri libUri in libUris) {
+ if (uri.toString().startsWith(libUri.toString())) {
+ match = true;
+ break;
+ }
+ }
+ if (!match) {
+ doReport = false;
+ }
}
if (doReport) {
addProblem(
diff --git a/pkg/front_end/test/fasta/testing/suite.dart b/pkg/front_end/test/fasta/testing/suite.dart
index 65b8127..d1d1102 100644
--- a/pkg/front_end/test/fasta/testing/suite.dart
+++ b/pkg/front_end/test/fasta/testing/suite.dart
@@ -181,13 +181,12 @@
class LinkDependenciesOptions {
final Set<Uri> content;
- final bool nnbdAgnosticMode;
+ final NnbdMode nnbdMode;
Component component;
List<Iterable<String>> errors;
- LinkDependenciesOptions(this.content, {this.nnbdAgnosticMode})
- : assert(content != null),
- assert(nnbdAgnosticMode != null);
+ LinkDependenciesOptions(this.content, {this.nnbdMode})
+ : assert(content != null);
}
class FastaContext extends ChainContext with MatchContext {
@@ -408,13 +407,29 @@
File optionsFile =
new File.fromUri(directory.uri.resolve('link.options'));
Set<Uri> content = new Set<Uri>();
- bool nnbdAgnosticMode = false;
+ NnbdMode nnbdMode;
if (optionsFile.existsSync()) {
for (String line in optionsFile.readAsStringSync().split('\n')) {
line = line.trim();
if (line.isEmpty) continue;
if (line.startsWith(Flags.nnbdAgnosticMode)) {
- nnbdAgnosticMode = true;
+ if (nnbdMode != null) {
+ throw new UnsupportedError(
+ 'Nnbd mode $nnbdMode already specified.');
+ }
+ nnbdMode = NnbdMode.Agnostic;
+ } else if (line.startsWith(Flags.nnbdStrongMode)) {
+ if (nnbdMode != null) {
+ throw new UnsupportedError(
+ 'Nnbd mode $nnbdMode already specified.');
+ }
+ nnbdMode = NnbdMode.Strong;
+ } else if (line.startsWith(Flags.nnbdWeakMode)) {
+ if (nnbdMode != null) {
+ throw new UnsupportedError(
+ 'Nnbd mode $nnbdMode already specified.');
+ }
+ nnbdMode = NnbdMode.Weak;
} else {
File f = new File.fromUri(description.uri.resolve(line));
if (!f.existsSync()) {
@@ -424,8 +439,8 @@
}
}
}
- linkDependenciesOptions = new LinkDependenciesOptions(content,
- nnbdAgnosticMode: nnbdAgnosticMode);
+ linkDependenciesOptions =
+ new LinkDependenciesOptions(content, nnbdMode: nnbdMode);
_linkDependencies[directory.uri] = linkDependenciesOptions;
}
return linkDependenciesOptions;
@@ -633,8 +648,8 @@
linkDependenciesOptions.component == null) {
// Compile linked dependency.
ProcessedOptions linkOptions = options;
- if (linkDependenciesOptions.nnbdAgnosticMode) {
- linkOptions = createProcessedOptions(NnbdMode.Agnostic);
+ if (linkDependenciesOptions.nnbdMode != null) {
+ linkOptions = createProcessedOptions(linkDependenciesOptions.nnbdMode);
}
await CompilerContext.runWithOptions(linkOptions, (_) async {
KernelTarget sourceTarget = await outlineInitialization(context,
diff --git a/pkg/front_end/test/lint_suite.dart b/pkg/front_end/test/lint_suite.dart
index b270bd0..5ae80a7 100644
--- a/pkg/front_end/test/lint_suite.dart
+++ b/pkg/front_end/test/lint_suite.dart
@@ -218,6 +218,7 @@
}
void endTopLevelFields(
+ Token externalToken,
Token staticToken,
Token covariantToken,
Token lateToken,
@@ -231,8 +232,15 @@
_latestTypes.removeLast();
}
- void endClassFields(Token staticToken, Token covariantToken, Token lateToken,
- Token varFinalOrConst, int count, Token beginToken, Token endToken) {
+ void endClassFields(
+ Token externalToken,
+ Token staticToken,
+ Token covariantToken,
+ Token lateToken,
+ Token varFinalOrConst,
+ int count,
+ Token beginToken,
+ Token endToken) {
if (!_latestTypes.last.type) {
onProblem(
varFinalOrConst.offset, varFinalOrConst.length, "No explicit type.");
diff --git a/pkg/front_end/test/lint_test.status b/pkg/front_end/test/lint_test.status
index c0e36d4..cc1e0e3 100644
--- a/pkg/front_end/test/lint_test.status
+++ b/pkg/front_end/test/lint_test.status
@@ -2,33 +2,39 @@
# for details. All rights reserved. Use of this source code is governed by a
# BSD-style license that can be found in the LICENSE.md file.
-src/api_prototype/compiler_options/Exports: Fail
-src/api_prototype/constant_evaluator/Exports: Fail
-src/api_prototype/front_end/Exports: Fail
-src/api_prototype/incremental_kernel_generator/Exports: Fail
-src/api_prototype/language_version/Exports: Fail
-src/api_unstable/bazel_worker/ImportsTwice: Fail
-src/fasta/fasta_codes/Exports: Fail
-src/fasta/incremental_compiler/ImportsTwice: Fail
-src/fasta/kernel/body_builder/ImportsTwice: Fail
-src/fasta/kernel/constant_evaluator/ExplicitType: Pass
-src/fasta/kernel/expression_generator_helper/ImportsTwice: Fail
-src/fasta/kernel/kernel_api/Exports: Fail
-src/fasta/kernel/kernel_ast_api/Exports: Fail
-src/fasta/kernel/kernel_builder/Exports: Fail
-src/fasta/kernel/type_algorithms/Exports: Fail
-src/fasta/messages/Exports: Fail
-src/fasta/parser/Exports: Fail
-src/fasta/parser/parser/ImportsTwice: Fail
-src/fasta/scanner/abstract_scanner/ImportsTwice: Fail
-src/fasta/scanner/Exports: Fail
-src/fasta/scanner/recover/ImportsTwice: Fail
-src/fasta/scanner/string_scanner/ImportsTwice: Fail
-src/fasta/scanner/token/ImportsTwice: Fail
-src/fasta/scanner/utf8_bytes_scanner/ImportsTwice: Fail
-src/fasta/source/scope_listener/Exports: Fail
-src/fasta/source/source_class_builder/ImportsTwice: Fail
-src/fasta/source/value_kinds/ImportsTwice: Fail
-src/fasta/type_inference/type_constraint_gatherer/ImportsTwice: Fail
-src/fasta/type_inference/type_inferrer/ImportsTwice: Fail
-src/testing/id_testing_helper/Exports: Fail
+_fe_analyzer_shared/lib/src/parser/parser/Exports: Fail
+_fe_analyzer_shared/lib/src/scanner/abstract_scanner/ImportsTwice: Fail
+_fe_analyzer_shared/lib/src/scanner/scanner/Exports: Fail
+_fe_analyzer_shared/lib/src/scanner/string_scanner/ImportsTwice: Fail
+_fe_analyzer_shared/lib/src/scanner/token_impl/ImportsTwice: Fail
+_fe_analyzer_shared/lib/src/scanner/utf8_bytes_scanner/ImportsTwice: Fail
+front_end/lib/src/api_prototype/compiler_options/Exports: Fail
+front_end/lib/src/api_prototype/constant_evaluator/Exports: Fail
+front_end/lib/src/api_prototype/front_end/Exports: Fail
+front_end/lib/src/api_prototype/incremental_kernel_generator/Exports: Fail
+front_end/lib/src/api_prototype/language_version/Exports: Fail
+front_end/lib/src/api_unstable/bazel_worker/ImportsTwice: Fail
+front_end/lib/src/fasta/fasta_codes/Exports: Fail
+front_end/lib/src/fasta/incremental_compiler/ImportsTwice: Fail
+front_end/lib/src/fasta/kernel/body_builder/ImportsTwice: Fail
+front_end/lib/src/fasta/kernel/constant_evaluator/ExplicitType: Pass
+front_end/lib/src/fasta/kernel/expression_generator_helper/ImportsTwice: Fail
+front_end/lib/src/fasta/kernel/kernel_api/Exports: Fail
+front_end/lib/src/fasta/kernel/kernel_ast_api/Exports: Fail
+front_end/lib/src/fasta/kernel/kernel_builder/Exports: Fail
+front_end/lib/src/fasta/kernel/type_algorithms/Exports: Fail
+front_end/lib/src/fasta/messages/Exports: Fail
+front_end/lib/src/fasta/parser/Exports: Fail
+front_end/lib/src/fasta/parser/parser/ImportsTwice: Fail
+front_end/lib/src/fasta/scanner/abstract_scanner/ImportsTwice: Fail
+front_end/lib/src/fasta/scanner/Exports: Fail
+front_end/lib/src/fasta/scanner/recover/ImportsTwice: Fail
+front_end/lib/src/fasta/scanner/string_scanner/ImportsTwice: Fail
+front_end/lib/src/fasta/scanner/token/ImportsTwice: Fail
+front_end/lib/src/fasta/scanner/utf8_bytes_scanner/ImportsTwice: Fail
+front_end/lib/src/fasta/source/scope_listener/Exports: Fail
+front_end/lib/src/fasta/source/source_class_builder/ImportsTwice: Fail
+front_end/lib/src/fasta/source/value_kinds/ImportsTwice: Fail
+front_end/lib/src/fasta/type_inference/type_constraint_gatherer/ImportsTwice: Fail
+front_end/lib/src/fasta/type_inference/type_inferrer/ImportsTwice: Fail
+front_end/lib/src/testing/id_testing_helper/Exports: Fail
diff --git a/pkg/front_end/test/parser_test_listener.dart b/pkg/front_end/test/parser_test_listener.dart
index be3ec58..ce3d1bd 100644
--- a/pkg/front_end/test/parser_test_listener.dart
+++ b/pkg/front_end/test/parser_test_listener.dart
@@ -519,8 +519,15 @@
'$kind)');
}
- void endClassFields(Token staticToken, Token covariantToken, Token lateToken,
- Token varFinalOrConst, int count, Token beginToken, Token endToken) {
+ void endClassFields(
+ Token externalToken,
+ Token staticToken,
+ Token covariantToken,
+ Token lateToken,
+ Token varFinalOrConst,
+ int count,
+ Token beginToken,
+ Token endToken) {
indent--;
seen(staticToken);
seen(covariantToken);
@@ -538,8 +545,15 @@
'$endToken)');
}
- void endMixinFields(Token staticToken, Token covariantToken, Token lateToken,
- Token varFinalOrConst, int count, Token beginToken, Token endToken) {
+ void endMixinFields(
+ Token externalToken,
+ Token staticToken,
+ Token covariantToken,
+ Token lateToken,
+ Token varFinalOrConst,
+ int count,
+ Token beginToken,
+ Token endToken) {
indent--;
seen(staticToken);
seen(covariantToken);
@@ -558,6 +572,7 @@
}
void endExtensionFields(
+ Token externalToken,
Token staticToken,
Token covariantToken,
Token lateToken,
@@ -1423,6 +1438,7 @@
}
void endTopLevelFields(
+ Token externalToken,
Token staticToken,
Token covariantToken,
Token lateToken,
diff --git a/pkg/front_end/test/parser_test_parser.dart b/pkg/front_end/test/parser_test_parser.dart
index d548c15..0e3ccce 100644
--- a/pkg/front_end/test/parser_test_parser.dart
+++ b/pkg/front_end/test/parser_test_parser.dart
@@ -771,6 +771,7 @@
Token token,
Token name,
Token lateToken,
+ Token externalToken,
Token varFinalOrConst,
DeclarationKind kind,
String enclosingDeclarationName) {
@@ -783,7 +784,7 @@
'$enclosingDeclarationName)');
indent++;
var result = super.parseFieldInitializerOpt(token, name, lateToken,
- varFinalOrConst, kind, enclosingDeclarationName);
+ externalToken, varFinalOrConst, kind, enclosingDeclarationName);
indent--;
return result;
}
diff --git a/pkg/front_end/test/spell_checking_list_messages.txt b/pkg/front_end/test/spell_checking_list_messages.txt
index 1e01dae..0a521d2 100644
--- a/pkg/front_end/test/spell_checking_list_messages.txt
+++ b/pkg/front_end/test/spell_checking_list_messages.txt
@@ -39,6 +39,7 @@
name.stack
native('native
nativetype
+nnbd
nosuchmethod
num1%.3ms
o
diff --git a/pkg/front_end/testcases/general/covariant_field.dart b/pkg/front_end/testcases/general/covariant_field.dart
new file mode 100644
index 0000000..8cf5831
--- /dev/null
+++ b/pkg/front_end/testcases/general/covariant_field.dart
@@ -0,0 +1,31 @@
+// Copyright (c) 2020, 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.
+
+class A {
+ num invariantField;
+ covariant num covariantField;
+}
+
+abstract class B implements A {
+ get invariantField;
+ set invariantField(value);
+ get covariantField;
+ set covariantField(value);
+}
+
+abstract class C implements A {
+ int get invariantField; // ok
+ void set invariantField(int value) {} // error
+ int get covariantField; // ok
+ void set covariantField(int value) {} // ok
+}
+
+abstract class D implements A {
+ int get invariantField; // ok
+ void set invariantField(covariant int value) {} // ok
+ int get covariantField; // ok
+ void set covariantField(covariant int value) {} // ok
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/nnbd/sink_hierarchy.dart.outline.expect b/pkg/front_end/testcases/general/covariant_field.dart.outline.expect
similarity index 66%
rename from pkg/front_end/testcases/nnbd/sink_hierarchy.dart.outline.expect
rename to pkg/front_end/testcases/general/covariant_field.dart.outline.expect
index ba36f10..dc1f6ed 100644
--- a/pkg/front_end/testcases/nnbd/sink_hierarchy.dart.outline.expect
+++ b/pkg/front_end/testcases/general/covariant_field.dart.outline.expect
@@ -1,12 +1,23 @@
library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/covariant_field.dart:19:31: Error: The parameter 'value' of the method 'C.invariantField' has type 'int', which does not match the corresponding type, 'num', in the overridden method, 'A.invariantField'.
+// Change to a supertype of 'num', or, for a covariant parameter, a subtype.
+// void set invariantField(int value) {} // error
+// ^
+// pkg/front_end/testcases/general/covariant_field.dart:6:7: Context: This is the overridden method ('invariantField').
+// num invariantField;
+// ^
+//
import self as self;
import "dart:core" as core;
-import "dart:async" as asy;
-abstract class Sink<T extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → self::Sink<self::Sink::T*>*
+class A extends core::Object {
+ field core::num* invariantField;
+ covariant field core::num* covariantField;
+ synthetic constructor •() → self::A*
;
- abstract method close() → void;
abstract member-signature get _identityHashCode() → core::int*;
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
@@ -18,10 +29,13 @@
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
abstract member-signature get runtimeType() → core::Type*;
}
-abstract class EventSink<T extends core::Object* = dynamic> extends core::Object implements self::Sink<self::EventSink::T*> {
- synthetic constructor •() → self::EventSink<self::EventSink::T*>*
+abstract class B extends core::Object implements self::A {
+ synthetic constructor •() → self::B*
;
- abstract method close() → void;
+ abstract get invariantField() → core::num*;
+ abstract set invariantField(core::num* value) → void;
+ abstract get covariantField() → core::num*;
+ abstract set covariantField(covariant core::num* value) → void;
abstract member-signature get _identityHashCode() → core::int*;
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
@@ -33,10 +47,15 @@
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
abstract member-signature get runtimeType() → core::Type*;
}
-abstract class StreamConsumer<S extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → self::StreamConsumer<self::StreamConsumer::S*>*
+abstract class C extends core::Object implements self::A {
+ synthetic constructor •() → self::C*
;
- abstract method close() → asy::Future<dynamic>*;
+ abstract get invariantField() → core::int*;
+ set invariantField(core::int* value) → void
+ ;
+ abstract get covariantField() → core::int*;
+ set covariantField(covariant core::int* value) → void
+ ;
abstract member-signature get _identityHashCode() → core::int*;
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
@@ -48,10 +67,15 @@
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
abstract member-signature get runtimeType() → core::Type*;
}
-abstract class StreamSink<S extends core::Object* = dynamic> extends core::Object implements self::EventSink<self::StreamSink::S*>, self::StreamConsumer<self::StreamSink::S*> {
- synthetic constructor •() → self::StreamSink<self::StreamSink::S*>*
+abstract class D extends core::Object implements self::A {
+ synthetic constructor •() → self::D*
;
- abstract method close() → asy::Future<dynamic>*;
+ abstract get invariantField() → core::int*;
+ set invariantField(covariant core::int* value) → void
+ ;
+ abstract get covariantField() → core::int*;
+ set covariantField(covariant core::int* value) → void
+ ;
abstract member-signature get _identityHashCode() → core::int*;
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
diff --git a/pkg/front_end/testcases/nnbd/sink_hierarchy.dart.strong.expect b/pkg/front_end/testcases/general/covariant_field.dart.strong.expect
similarity index 67%
rename from pkg/front_end/testcases/nnbd/sink_hierarchy.dart.strong.expect
rename to pkg/front_end/testcases/general/covariant_field.dart.strong.expect
index 8ff1525..9dd0b6b 100644
--- a/pkg/front_end/testcases/nnbd/sink_hierarchy.dart.strong.expect
+++ b/pkg/front_end/testcases/general/covariant_field.dart.strong.expect
@@ -1,13 +1,24 @@
library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/covariant_field.dart:19:31: Error: The parameter 'value' of the method 'C.invariantField' has type 'int', which does not match the corresponding type, 'num', in the overridden method, 'A.invariantField'.
+// Change to a supertype of 'num', or, for a covariant parameter, a subtype.
+// void set invariantField(int value) {} // error
+// ^
+// pkg/front_end/testcases/general/covariant_field.dart:6:7: Context: This is the overridden method ('invariantField').
+// num invariantField;
+// ^
+//
import self as self;
import "dart:core" as core;
-import "dart:async" as asy;
-abstract class Sink<T extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → self::Sink<self::Sink::T*>*
+class A extends core::Object {
+ field core::num* invariantField = null;
+ covariant field core::num* covariantField = null;
+ synthetic constructor •() → self::A*
: super core::Object::•()
;
- abstract method close() → void;
abstract member-signature get _identityHashCode() → core::int*;
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
@@ -19,11 +30,14 @@
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
abstract member-signature get runtimeType() → core::Type*;
}
-abstract class EventSink<T extends core::Object* = dynamic> extends core::Object implements self::Sink<self::EventSink::T*> {
- synthetic constructor •() → self::EventSink<self::EventSink::T*>*
+abstract class B extends core::Object implements self::A {
+ synthetic constructor •() → self::B*
: super core::Object::•()
;
- abstract method close() → void;
+ abstract get invariantField() → core::num*;
+ abstract set invariantField(core::num* value) → void;
+ abstract get covariantField() → core::num*;
+ abstract set covariantField(covariant core::num* value) → void;
abstract member-signature get _identityHashCode() → core::int*;
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
@@ -35,11 +49,14 @@
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
abstract member-signature get runtimeType() → core::Type*;
}
-abstract class StreamConsumer<S extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → self::StreamConsumer<self::StreamConsumer::S*>*
+abstract class C extends core::Object implements self::A {
+ synthetic constructor •() → self::C*
: super core::Object::•()
;
- abstract method close() → asy::Future<dynamic>*;
+ abstract get invariantField() → core::int*;
+ set invariantField(core::int* value) → void {}
+ abstract get covariantField() → core::int*;
+ set covariantField(covariant core::int* value) → void {}
abstract member-signature get _identityHashCode() → core::int*;
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
@@ -51,11 +68,14 @@
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
abstract member-signature get runtimeType() → core::Type*;
}
-abstract class StreamSink<S extends core::Object* = dynamic> extends core::Object implements self::EventSink<self::StreamSink::S*>, self::StreamConsumer<self::StreamSink::S*> {
- synthetic constructor •() → self::StreamSink<self::StreamSink::S*>*
+abstract class D extends core::Object implements self::A {
+ synthetic constructor •() → self::D*
: super core::Object::•()
;
- abstract method close() → asy::Future<dynamic>*;
+ abstract get invariantField() → core::int*;
+ set invariantField(covariant core::int* value) → void {}
+ abstract get covariantField() → core::int*;
+ set covariantField(covariant core::int* value) → void {}
abstract member-signature get _identityHashCode() → core::int*;
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
diff --git a/pkg/front_end/testcases/nnbd/issue40512/issue40512_lib.dart.outline.expect b/pkg/front_end/testcases/general/covariant_field.dart.strong.transformed.expect
similarity index 61%
copy from pkg/front_end/testcases/nnbd/issue40512/issue40512_lib.dart.outline.expect
copy to pkg/front_end/testcases/general/covariant_field.dart.strong.transformed.expect
index b7d1e81..a8f268f 100644
--- a/pkg/front_end/testcases/nnbd/issue40512/issue40512_lib.dart.outline.expect
+++ b/pkg/front_end/testcases/general/covariant_field.dart.strong.transformed.expect
@@ -1,49 +1,12 @@
library;
import self as self;
import "dart:core" as core;
-import "issue40512_lib.dart" as baz2;
-import "org-dartlang-testcase:///issue40512_lib.dart";
-
-abstract class _C&Object&A = core::Object with baz2::A /*isAnonymousMixin,hasConstConstructor*/ {
- const synthetic constructor •() → self::_C&Object&A*
+class A extends core::Object {
+ covariant field core::num* field = null;
+ synthetic constructor •() → self::A*
: super core::Object::•()
;
-}
-abstract class _C&Object&A&B = self::_C&Object&A with baz2::B /*isAnonymousMixin,hasConstConstructor*/ {
- const synthetic constructor •() → self::_C&Object&A&B*
- : super self::_C&Object&A::•()
- ;
- abstract forwarding-stub method toString({core::String* s}) → core::String*;
-}
-class C extends self::_C&Object&A&B {
- synthetic constructor •() → self::C*
- ;
- abstract forwarding-stub method toString({core::String* s}) → core::String*;
-}
-static method main() → void
- ;
-
-library baz2;
-import self as baz2;
-import "dart:core" as core;
-
-abstract class A extends core::Object /*isMixinDeclaration*/ {
- method toString({core::String* s = "hello"}) → core::String*
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class B extends core::Object {
- synthetic constructor •() → baz2::B*
- ;
abstract member-signature get _identityHashCode() → core::int*;
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
@@ -55,3 +18,21 @@
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
abstract member-signature get runtimeType() → core::Type*;
}
+abstract class B extends core::Object implements self::A {
+ synthetic constructor •() → self::B*
+ : super core::Object::•()
+ ;
+ abstract get field() → core::num*;
+ set field(covariant core::num* value) → void {}
+ abstract member-signature get _identityHashCode() → core::int*;
+ abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+ abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+ abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+ abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+ abstract member-signature operator ==(dynamic other) → core::bool*;
+ abstract member-signature get hashCode() → core::int*;
+ abstract member-signature method toString() → core::String*;
+ abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+ abstract member-signature get runtimeType() → core::Type*;
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/covariant_field.dart.textual_outline.expect b/pkg/front_end/testcases/general/covariant_field.dart.textual_outline.expect
new file mode 100644
index 0000000..704115a3
--- /dev/null
+++ b/pkg/front_end/testcases/general/covariant_field.dart.textual_outline.expect
@@ -0,0 +1,27 @@
+class A {
+ num invariantField;
+ covariant num covariantField;
+}
+
+abstract class B implements A {
+ get invariantField;
+ set invariantField(value);
+ get covariantField;
+ set covariantField(value);
+}
+
+abstract class C implements A {
+ int get invariantField;
+ void set invariantField(int value) {}
+ int get covariantField;
+ void set covariantField(int value) {}
+}
+
+abstract class D implements A {
+ int get invariantField;
+ void set invariantField(covariant int value) {}
+ int get covariantField;
+ void set covariantField(covariant int value) {}
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/general/covariant_field.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/covariant_field.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..2db7c04
--- /dev/null
+++ b/pkg/front_end/testcases/general/covariant_field.dart.textual_outline_modelled.expect
@@ -0,0 +1,27 @@
+abstract class B implements A {
+ get covariantField;
+ get invariantField;
+ set covariantField(value);
+ set invariantField(value);
+}
+
+abstract class C implements A {
+ int get covariantField;
+ int get invariantField;
+ void set covariantField(int value) {}
+ void set invariantField(int value) {}
+}
+
+abstract class D implements A {
+ int get covariantField;
+ int get invariantField;
+ void set covariantField(covariant int value) {}
+ void set invariantField(covariant int value) {}
+}
+
+class A {
+ covariant num covariantField;
+ num invariantField;
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/general/issue34714.dart b/pkg/front_end/testcases/general/issue34714.dart
new file mode 100644
index 0000000..918ed93
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue34714.dart
@@ -0,0 +1,13 @@
+// Copyright (c) 2020, 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.
+
+class A<T> {
+ factory A() = B; // Should infer B<T>.
+}
+
+class B<T> implements A<T> {
+ B();
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/nnbd/issue40512/issue40512_lib.dart.outline.expect b/pkg/front_end/testcases/general/issue34714.dart.outline.expect
similarity index 60%
copy from pkg/front_end/testcases/nnbd/issue40512/issue40512_lib.dart.outline.expect
copy to pkg/front_end/testcases/general/issue34714.dart.outline.expect
index b7d1e81..adff6eb 100644
--- a/pkg/front_end/testcases/nnbd/issue40512/issue40512_lib.dart.outline.expect
+++ b/pkg/front_end/testcases/general/issue34714.dart.outline.expect
@@ -1,36 +1,11 @@
library;
import self as self;
import "dart:core" as core;
-import "issue40512_lib.dart" as baz2;
-import "org-dartlang-testcase:///issue40512_lib.dart";
-
-abstract class _C&Object&A = core::Object with baz2::A /*isAnonymousMixin,hasConstConstructor*/ {
- const synthetic constructor •() → self::_C&Object&A*
- : super core::Object::•()
- ;
-}
-abstract class _C&Object&A&B = self::_C&Object&A with baz2::B /*isAnonymousMixin,hasConstConstructor*/ {
- const synthetic constructor •() → self::_C&Object&A&B*
- : super self::_C&Object&A::•()
- ;
- abstract forwarding-stub method toString({core::String* s}) → core::String*;
-}
-class C extends self::_C&Object&A&B {
- synthetic constructor •() → self::C*
- ;
- abstract forwarding-stub method toString({core::String* s}) → core::String*;
-}
-static method main() → void
- ;
-
-library baz2;
-import self as baz2;
-import "dart:core" as core;
-
-abstract class A extends core::Object /*isMixinDeclaration*/ {
- method toString({core::String* s = "hello"}) → core::String*
- ;
+class A<T extends core::Object* = dynamic> extends core::Object {
+ static field dynamic _redirecting# = <dynamic>[self::A::•];
+ static factory •<T extends core::Object* = dynamic>() → self::A<self::A::•::T*>*
+ let dynamic #redirecting_factory = self::B::• in let self::A::•::T* #typeArg0 = null in invalid-expression;
abstract member-signature get _identityHashCode() → core::int*;
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
@@ -38,11 +13,12 @@
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
abstract member-signature operator ==(dynamic other) → core::bool*;
abstract member-signature get hashCode() → core::int*;
+ abstract member-signature method toString() → core::String*;
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
abstract member-signature get runtimeType() → core::Type*;
}
-class B extends core::Object {
- synthetic constructor •() → baz2::B*
+class B<T extends core::Object* = dynamic> extends core::Object implements self::A<self::B::T*> {
+ constructor •() → self::B<self::B::T*>*
;
abstract member-signature get _identityHashCode() → core::int*;
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
@@ -55,3 +31,5 @@
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
abstract member-signature get runtimeType() → core::Type*;
}
+static method main() → dynamic
+ ;
diff --git a/pkg/front_end/testcases/nnbd/issue40512/issue40512_lib.dart.outline.expect b/pkg/front_end/testcases/general/issue34714.dart.strong.expect
similarity index 61%
copy from pkg/front_end/testcases/nnbd/issue40512/issue40512_lib.dart.outline.expect
copy to pkg/front_end/testcases/general/issue34714.dart.strong.expect
index b7d1e81..30003a1 100644
--- a/pkg/front_end/testcases/nnbd/issue40512/issue40512_lib.dart.outline.expect
+++ b/pkg/front_end/testcases/general/issue34714.dart.strong.expect
@@ -1,36 +1,11 @@
library;
import self as self;
import "dart:core" as core;
-import "issue40512_lib.dart" as baz2;
-import "org-dartlang-testcase:///issue40512_lib.dart";
-
-abstract class _C&Object&A = core::Object with baz2::A /*isAnonymousMixin,hasConstConstructor*/ {
- const synthetic constructor •() → self::_C&Object&A*
- : super core::Object::•()
- ;
-}
-abstract class _C&Object&A&B = self::_C&Object&A with baz2::B /*isAnonymousMixin,hasConstConstructor*/ {
- const synthetic constructor •() → self::_C&Object&A&B*
- : super self::_C&Object&A::•()
- ;
- abstract forwarding-stub method toString({core::String* s}) → core::String*;
-}
-class C extends self::_C&Object&A&B {
- synthetic constructor •() → self::C*
- ;
- abstract forwarding-stub method toString({core::String* s}) → core::String*;
-}
-static method main() → void
- ;
-
-library baz2;
-import self as baz2;
-import "dart:core" as core;
-
-abstract class A extends core::Object /*isMixinDeclaration*/ {
- method toString({core::String* s = "hello"}) → core::String*
- ;
+class A<T extends core::Object* = dynamic> extends core::Object {
+ static field dynamic _redirecting# = <dynamic>[self::A::•];
+ static factory •<T extends core::Object* = dynamic>() → self::A<self::A::•::T*>*
+ let dynamic #redirecting_factory = self::B::• in let self::A::•::T* #typeArg0 = null in invalid-expression;
abstract member-signature get _identityHashCode() → core::int*;
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
@@ -38,11 +13,13 @@
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
abstract member-signature operator ==(dynamic other) → core::bool*;
abstract member-signature get hashCode() → core::int*;
+ abstract member-signature method toString() → core::String*;
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
abstract member-signature get runtimeType() → core::Type*;
}
-class B extends core::Object {
- synthetic constructor •() → baz2::B*
+class B<T extends core::Object* = dynamic> extends core::Object implements self::A<self::B::T*> {
+ constructor •() → self::B<self::B::T*>*
+ : super core::Object::•()
;
abstract member-signature get _identityHashCode() → core::int*;
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
@@ -55,3 +32,4 @@
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
abstract member-signature get runtimeType() → core::Type*;
}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue40512/issue40512_lib.dart.outline.expect b/pkg/front_end/testcases/general/issue34714.dart.strong.transformed.expect
similarity index 61%
copy from pkg/front_end/testcases/nnbd/issue40512/issue40512_lib.dart.outline.expect
copy to pkg/front_end/testcases/general/issue34714.dart.strong.transformed.expect
index b7d1e81..18852c6 100644
--- a/pkg/front_end/testcases/nnbd/issue40512/issue40512_lib.dart.outline.expect
+++ b/pkg/front_end/testcases/general/issue34714.dart.strong.transformed.expect
@@ -1,36 +1,11 @@
library;
import self as self;
import "dart:core" as core;
-import "issue40512_lib.dart" as baz2;
-import "org-dartlang-testcase:///issue40512_lib.dart";
-
-abstract class _C&Object&A = core::Object with baz2::A /*isAnonymousMixin,hasConstConstructor*/ {
- const synthetic constructor •() → self::_C&Object&A*
- : super core::Object::•()
- ;
-}
-abstract class _C&Object&A&B = self::_C&Object&A with baz2::B /*isAnonymousMixin,hasConstConstructor*/ {
- const synthetic constructor •() → self::_C&Object&A&B*
- : super self::_C&Object&A::•()
- ;
- abstract forwarding-stub method toString({core::String* s}) → core::String*;
-}
-class C extends self::_C&Object&A&B {
- synthetic constructor •() → self::C*
- ;
- abstract forwarding-stub method toString({core::String* s}) → core::String*;
-}
-static method main() → void
- ;
-
-library baz2;
-import self as baz2;
-import "dart:core" as core;
-
-abstract class A extends core::Object /*isMixinDeclaration*/ {
- method toString({core::String* s = "hello"}) → core::String*
- ;
+class A<T extends core::Object* = dynamic> extends core::Object {
+ static field dynamic _redirecting# = <dynamic>[self::A::•];
+ static factory •<T extends core::Object* = dynamic>() → self::A<self::A::•::T*>*
+ let<BottomType> #redirecting_factory = self::B::• in let self::A::•::T* #typeArg0 = null in invalid-expression;
abstract member-signature get _identityHashCode() → core::int*;
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
@@ -38,11 +13,13 @@
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
abstract member-signature operator ==(dynamic other) → core::bool*;
abstract member-signature get hashCode() → core::int*;
+ abstract member-signature method toString() → core::String*;
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
abstract member-signature get runtimeType() → core::Type*;
}
-class B extends core::Object {
- synthetic constructor •() → baz2::B*
+class B<T extends core::Object* = dynamic> extends core::Object implements self::A<self::B::T*> {
+ constructor •() → self::B<self::B::T*>*
+ : super core::Object::•()
;
abstract member-signature get _identityHashCode() → core::int*;
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
@@ -55,3 +32,4 @@
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
abstract member-signature get runtimeType() → core::Type*;
}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/late_lowering/covariant_late_field.dart b/pkg/front_end/testcases/late_lowering/covariant_late_field.dart
new file mode 100644
index 0000000..9321f61
--- /dev/null
+++ b/pkg/front_end/testcases/late_lowering/covariant_late_field.dart
@@ -0,0 +1,31 @@
+// Copyright (c) 2020, 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.
+
+class A {
+ late num invariantField;
+ covariant late num covariantField;
+}
+
+abstract class B implements A {
+ get invariantField;
+ set invariantField(value);
+ get covariantField;
+ set covariantField(value);
+}
+
+abstract class C implements A {
+ int get invariantField; // ok
+ void set invariantField(int value) {} // error
+ int get covariantField; // ok
+ void set covariantField(int value) {} // ok
+}
+
+abstract class D implements A {
+ int get invariantField; // ok
+ void set invariantField(covariant int value) {} // ok
+ int get covariantField; // ok
+ void set covariantField(covariant int value) {} // ok
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/late_lowering/covariant_late_field.dart.outline.expect b/pkg/front_end/testcases/late_lowering/covariant_late_field.dart.outline.expect
new file mode 100644
index 0000000..3e97c77
--- /dev/null
+++ b/pkg/front_end/testcases/late_lowering/covariant_late_field.dart.outline.expect
@@ -0,0 +1,55 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/late_lowering/covariant_late_field.dart:19:31: Error: The parameter 'value' of the method 'C.invariantField' has type 'int', which does not match the corresponding type, 'num', in the overridden method, 'A.invariantField'.
+// Change to a supertype of 'num', or, for a covariant parameter, a subtype.
+// void set invariantField(int value) {} // error
+// ^
+// pkg/front_end/testcases/late_lowering/covariant_late_field.dart:6:12: Context: This is the overridden method ('invariantField').
+// late num invariantField;
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+class A extends core::Object {
+ field core::num? _#A#invariantField;
+ field core::num? _#A#covariantField;
+ synthetic constructor •() → self::A
+ ;
+ get invariantField() → core::num;
+ set invariantField(core::num #t1) → void;
+ get covariantField() → core::num;
+ set covariantField(covariant core::num #t2) → void;
+}
+abstract class B extends core::Object implements self::A {
+ synthetic constructor •() → self::B
+ ;
+ abstract get invariantField() → core::num;
+ abstract set invariantField(core::num value) → void;
+ abstract get covariantField() → core::num;
+ abstract set covariantField(covariant core::num value) → void;
+}
+abstract class C extends core::Object implements self::A {
+ synthetic constructor •() → self::C
+ ;
+ abstract get invariantField() → core::int;
+ set invariantField(core::int value) → void
+ ;
+ abstract get covariantField() → core::int;
+ set covariantField(covariant core::int value) → void
+ ;
+}
+abstract class D extends core::Object implements self::A {
+ synthetic constructor •() → self::D
+ ;
+ abstract get invariantField() → core::int;
+ set invariantField(covariant core::int value) → void
+ ;
+ abstract get covariantField() → core::int;
+ set covariantField(covariant core::int value) → void
+ ;
+}
+static method main() → dynamic
+ ;
diff --git a/pkg/front_end/testcases/late_lowering/covariant_late_field.dart.strong.expect b/pkg/front_end/testcases/late_lowering/covariant_late_field.dart.strong.expect
new file mode 100644
index 0000000..0d317bf
--- /dev/null
+++ b/pkg/front_end/testcases/late_lowering/covariant_late_field.dart.strong.expect
@@ -0,0 +1,59 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/late_lowering/covariant_late_field.dart:19:31: Error: The parameter 'value' of the method 'C.invariantField' has type 'int', which does not match the corresponding type, 'num', in the overridden method, 'A.invariantField'.
+// Change to a supertype of 'num', or, for a covariant parameter, a subtype.
+// void set invariantField(int value) {} // error
+// ^
+// pkg/front_end/testcases/late_lowering/covariant_late_field.dart:6:12: Context: This is the overridden method ('invariantField').
+// late num invariantField;
+// ^
+//
+import self as self;
+import "dart:core" as core;
+import "dart:_internal" as _in;
+
+class A extends core::Object {
+ field core::num? _#A#invariantField = null;
+ field core::num? _#A#covariantField = null;
+ synthetic constructor •() → self::A
+ : super core::Object::•()
+ ;
+ get invariantField() → core::num
+ return let final core::num? #t1 = this.{self::A::_#A#invariantField} in #t1.==(null) ?{core::num} throw new _in::LateInitializationErrorImpl::•("Field 'invariantField' has not been initialized.") : #t1{core::num};
+ set invariantField(core::num #t2) → void
+ this.{self::A::_#A#invariantField} = #t2;
+ get covariantField() → core::num
+ return let final core::num? #t3 = this.{self::A::_#A#covariantField} in #t3.==(null) ?{core::num} throw new _in::LateInitializationErrorImpl::•("Field 'covariantField' has not been initialized.") : #t3{core::num};
+ set covariantField(covariant core::num #t4) → void
+ this.{self::A::_#A#covariantField} = #t4;
+}
+abstract class B extends core::Object implements self::A {
+ synthetic constructor •() → self::B
+ : super core::Object::•()
+ ;
+ abstract get invariantField() → core::num;
+ abstract set invariantField(core::num value) → void;
+ abstract get covariantField() → core::num;
+ abstract set covariantField(covariant core::num value) → void;
+}
+abstract class C extends core::Object implements self::A {
+ synthetic constructor •() → self::C
+ : super core::Object::•()
+ ;
+ abstract get invariantField() → core::int;
+ set invariantField(core::int value) → void {}
+ abstract get covariantField() → core::int;
+ set covariantField(covariant core::int value) → void {}
+}
+abstract class D extends core::Object implements self::A {
+ synthetic constructor •() → self::D
+ : super core::Object::•()
+ ;
+ abstract get invariantField() → core::int;
+ set invariantField(covariant core::int value) → void {}
+ abstract get covariantField() → core::int;
+ set covariantField(covariant core::int value) → void {}
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/late_lowering/covariant_late_field.dart.textual_outline.expect b/pkg/front_end/testcases/late_lowering/covariant_late_field.dart.textual_outline.expect
new file mode 100644
index 0000000..0f1df96
--- /dev/null
+++ b/pkg/front_end/testcases/late_lowering/covariant_late_field.dart.textual_outline.expect
@@ -0,0 +1,25 @@
+class A {
+ late num ;
+ invariantField;
+ covariant late num ;
+ covariantField;
+}
+abstract class B implements A {
+ get invariantField;
+ set invariantField(value);
+ get covariantField;
+ set covariantField(value);
+}
+abstract class C implements A {
+ int get invariantField;
+ void set invariantField(int value) { }
+ int get covariantField;
+ void set covariantField(int value) { }
+}
+abstract class D implements A {
+ int get invariantField;
+ void set invariantField(covariant int value) { }
+ int get covariantField;
+ void set covariantField(covariant int value) { }
+}
+main() { }
diff --git a/pkg/front_end/testcases/late_lowering/covariant_late_field.dart.weak.expect b/pkg/front_end/testcases/late_lowering/covariant_late_field.dart.weak.expect
new file mode 100644
index 0000000..0d317bf
--- /dev/null
+++ b/pkg/front_end/testcases/late_lowering/covariant_late_field.dart.weak.expect
@@ -0,0 +1,59 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/late_lowering/covariant_late_field.dart:19:31: Error: The parameter 'value' of the method 'C.invariantField' has type 'int', which does not match the corresponding type, 'num', in the overridden method, 'A.invariantField'.
+// Change to a supertype of 'num', or, for a covariant parameter, a subtype.
+// void set invariantField(int value) {} // error
+// ^
+// pkg/front_end/testcases/late_lowering/covariant_late_field.dart:6:12: Context: This is the overridden method ('invariantField').
+// late num invariantField;
+// ^
+//
+import self as self;
+import "dart:core" as core;
+import "dart:_internal" as _in;
+
+class A extends core::Object {
+ field core::num? _#A#invariantField = null;
+ field core::num? _#A#covariantField = null;
+ synthetic constructor •() → self::A
+ : super core::Object::•()
+ ;
+ get invariantField() → core::num
+ return let final core::num? #t1 = this.{self::A::_#A#invariantField} in #t1.==(null) ?{core::num} throw new _in::LateInitializationErrorImpl::•("Field 'invariantField' has not been initialized.") : #t1{core::num};
+ set invariantField(core::num #t2) → void
+ this.{self::A::_#A#invariantField} = #t2;
+ get covariantField() → core::num
+ return let final core::num? #t3 = this.{self::A::_#A#covariantField} in #t3.==(null) ?{core::num} throw new _in::LateInitializationErrorImpl::•("Field 'covariantField' has not been initialized.") : #t3{core::num};
+ set covariantField(covariant core::num #t4) → void
+ this.{self::A::_#A#covariantField} = #t4;
+}
+abstract class B extends core::Object implements self::A {
+ synthetic constructor •() → self::B
+ : super core::Object::•()
+ ;
+ abstract get invariantField() → core::num;
+ abstract set invariantField(core::num value) → void;
+ abstract get covariantField() → core::num;
+ abstract set covariantField(covariant core::num value) → void;
+}
+abstract class C extends core::Object implements self::A {
+ synthetic constructor •() → self::C
+ : super core::Object::•()
+ ;
+ abstract get invariantField() → core::int;
+ set invariantField(core::int value) → void {}
+ abstract get covariantField() → core::int;
+ set covariantField(covariant core::int value) → void {}
+}
+abstract class D extends core::Object implements self::A {
+ synthetic constructor •() → self::D
+ : super core::Object::•()
+ ;
+ abstract get invariantField() → core::int;
+ set invariantField(covariant core::int value) → void {}
+ abstract get covariantField() → core::int;
+ set covariantField(covariant core::int value) → void {}
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/late_lowering/issue40805.dart.outline.expect b/pkg/front_end/testcases/late_lowering/issue40805.dart.outline.expect
index 094d748..78b4c33 100644
--- a/pkg/front_end/testcases/late_lowering/issue40805.dart.outline.expect
+++ b/pkg/front_end/testcases/late_lowering/issue40805.dart.outline.expect
@@ -3,16 +3,16 @@
import "dart:core" as core;
class C extends core::Object {
- covariant field core::int? _#C#x;
+ field core::int? _#C#x;
synthetic constructor •() → self::C
;
get x() → core::int;
- set x(core::int #t1) → void;
+ set x(covariant core::int #t1) → void;
}
class D extends self::C {
synthetic constructor •() → self::D
;
- set x(core::num value) → void
+ set x(covariant core::num value) → void
;
}
static method main() → dynamic
diff --git a/pkg/front_end/testcases/late_lowering/issue40805.dart.strong.expect b/pkg/front_end/testcases/late_lowering/issue40805.dart.strong.expect
index b0526f2..2f75d09 100644
--- a/pkg/front_end/testcases/late_lowering/issue40805.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/issue40805.dart.strong.expect
@@ -4,13 +4,13 @@
import "dart:_internal" as _in;
class C extends core::Object {
- covariant field core::int? _#C#x = null;
+ field core::int? _#C#x = null;
synthetic constructor •() → self::C
: super core::Object::•()
;
get x() → core::int
return let final core::int? #t1 = this.{self::C::_#C#x} in #t1.==(null) ?{core::int} throw new _in::LateInitializationErrorImpl::•("Field 'x' has not been initialized.") : #t1{core::int};
- set x(core::int #t2) → void
+ set x(covariant core::int #t2) → void
if(this.{self::C::_#C#x}.==(null))
this.{self::C::_#C#x} = #t2;
else
@@ -20,7 +20,7 @@
synthetic constructor •() → self::D
: super self::C::•()
;
- set x(core::num value) → void {
+ set x(covariant core::num value) → void {
super.{self::C::x} = value.{core::num::toInt}();
}
}
diff --git a/pkg/front_end/testcases/late_lowering/issue40805.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/issue40805.dart.strong.transformed.expect
index b0526f2..2f75d09 100644
--- a/pkg/front_end/testcases/late_lowering/issue40805.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/issue40805.dart.strong.transformed.expect
@@ -4,13 +4,13 @@
import "dart:_internal" as _in;
class C extends core::Object {
- covariant field core::int? _#C#x = null;
+ field core::int? _#C#x = null;
synthetic constructor •() → self::C
: super core::Object::•()
;
get x() → core::int
return let final core::int? #t1 = this.{self::C::_#C#x} in #t1.==(null) ?{core::int} throw new _in::LateInitializationErrorImpl::•("Field 'x' has not been initialized.") : #t1{core::int};
- set x(core::int #t2) → void
+ set x(covariant core::int #t2) → void
if(this.{self::C::_#C#x}.==(null))
this.{self::C::_#C#x} = #t2;
else
@@ -20,7 +20,7 @@
synthetic constructor •() → self::D
: super self::C::•()
;
- set x(core::num value) → void {
+ set x(covariant core::num value) → void {
super.{self::C::x} = value.{core::num::toInt}();
}
}
diff --git a/pkg/front_end/testcases/late_lowering/issue40805.dart.weak.expect b/pkg/front_end/testcases/late_lowering/issue40805.dart.weak.expect
index b0526f2..2f75d09 100644
--- a/pkg/front_end/testcases/late_lowering/issue40805.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/issue40805.dart.weak.expect
@@ -4,13 +4,13 @@
import "dart:_internal" as _in;
class C extends core::Object {
- covariant field core::int? _#C#x = null;
+ field core::int? _#C#x = null;
synthetic constructor •() → self::C
: super core::Object::•()
;
get x() → core::int
return let final core::int? #t1 = this.{self::C::_#C#x} in #t1.==(null) ?{core::int} throw new _in::LateInitializationErrorImpl::•("Field 'x' has not been initialized.") : #t1{core::int};
- set x(core::int #t2) → void
+ set x(covariant core::int #t2) → void
if(this.{self::C::_#C#x}.==(null))
this.{self::C::_#C#x} = #t2;
else
@@ -20,7 +20,7 @@
synthetic constructor •() → self::D
: super self::C::•()
;
- set x(core::num value) → void {
+ set x(covariant core::num value) → void {
super.{self::C::x} = value.{core::num::toInt}();
}
}
diff --git a/pkg/front_end/testcases/late_lowering/issue40805.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/issue40805.dart.weak.transformed.expect
index b0526f2..2f75d09 100644
--- a/pkg/front_end/testcases/late_lowering/issue40805.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/issue40805.dart.weak.transformed.expect
@@ -4,13 +4,13 @@
import "dart:_internal" as _in;
class C extends core::Object {
- covariant field core::int? _#C#x = null;
+ field core::int? _#C#x = null;
synthetic constructor •() → self::C
: super core::Object::•()
;
get x() → core::int
return let final core::int? #t1 = this.{self::C::_#C#x} in #t1.==(null) ?{core::int} throw new _in::LateInitializationErrorImpl::•("Field 'x' has not been initialized.") : #t1{core::int};
- set x(core::int #t2) → void
+ set x(covariant core::int #t2) → void
if(this.{self::C::_#C#x}.==(null))
this.{self::C::_#C#x} = #t2;
else
@@ -20,7 +20,7 @@
synthetic constructor •() → self::D
: super self::C::•()
;
- set x(core::num value) → void {
+ set x(covariant core::num value) → void {
super.{self::C::x} = value.{core::num::toInt}();
}
}
diff --git a/pkg/front_end/testcases/nnbd/bounds_from_opt_in.dart.outline.expect b/pkg/front_end/testcases/nnbd/bounds_from_opt_in.dart.outline.expect
deleted file mode 100644
index cb1c25d..0000000
--- a/pkg/front_end/testcases/nnbd/bounds_from_opt_in.dart.outline.expect
+++ /dev/null
@@ -1,40 +0,0 @@
-library;
-import self as self;
-import "dart:core" as core;
-import "bounds_from_opt_in_lib.dart" as bou;
-
-import "org-dartlang-testcase:///bounds_from_opt_in_lib.dart";
-
-class LegacyClass<T extends core::Null? = core::Null?> extends bou::Class<self::LegacyClass::T*> {
- synthetic constructor •() → self::LegacyClass<self::LegacyClass::T*>*
- ;
- method method<T extends core::Null? = core::Null?>() → dynamic
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-static method test() → dynamic
- ;
-static method main() → dynamic
- ;
-
-library /*isNonNullableByDefault*/;
-import self as bou;
-import "dart:core" as core;
-
-class Class<T extends Never = Never> extends core::Object {
- synthetic constructor •() → bou::Class<bou::Class::T>
- ;
- method method<T extends Never = Never>() → dynamic
- ;
-}
-static method method<T extends Never = Never>() → dynamic
- ;
diff --git a/pkg/front_end/testcases/nnbd/bounds_from_opt_in.dart.strong.expect b/pkg/front_end/testcases/nnbd/bounds_from_opt_in.dart.strong.expect
deleted file mode 100644
index 2998f39..0000000
--- a/pkg/front_end/testcases/nnbd/bounds_from_opt_in.dart.strong.expect
+++ /dev/null
@@ -1,41 +0,0 @@
-library;
-import self as self;
-import "dart:core" as core;
-import "bounds_from_opt_in_lib.dart" as bou;
-
-import "org-dartlang-testcase:///bounds_from_opt_in_lib.dart";
-
-class LegacyClass<T extends core::Null? = core::Null?> extends bou::Class<self::LegacyClass::T*> {
- synthetic constructor •() → self::LegacyClass<self::LegacyClass::T*>*
- : super bou::Class::•()
- ;
- method method<T extends core::Null? = core::Null?>() → dynamic {}
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-static method test() → dynamic {
- bou::Class<core::Null?>* c = new bou::Class::•<core::Null?>();
- c.{bou::Class::method}<core::Null?>();
- bou::method<core::Null?>();
-}
-static method main() → dynamic {}
-
-library /*isNonNullableByDefault*/;
-import self as bou;
-import "dart:core" as core;
-
-class Class<T extends Never = Never> extends core::Object {
- synthetic constructor •() → bou::Class<bou::Class::T>
- : super core::Object::•()
- ;
- method method<T extends Never = Never>() → dynamic {}
-}
-static method method<T extends Never = Never>() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/bounds_from_opt_in.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/bounds_from_opt_in.dart.strong.transformed.expect
deleted file mode 100644
index 2998f39..0000000
--- a/pkg/front_end/testcases/nnbd/bounds_from_opt_in.dart.strong.transformed.expect
+++ /dev/null
@@ -1,41 +0,0 @@
-library;
-import self as self;
-import "dart:core" as core;
-import "bounds_from_opt_in_lib.dart" as bou;
-
-import "org-dartlang-testcase:///bounds_from_opt_in_lib.dart";
-
-class LegacyClass<T extends core::Null? = core::Null?> extends bou::Class<self::LegacyClass::T*> {
- synthetic constructor •() → self::LegacyClass<self::LegacyClass::T*>*
- : super bou::Class::•()
- ;
- method method<T extends core::Null? = core::Null?>() → dynamic {}
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-static method test() → dynamic {
- bou::Class<core::Null?>* c = new bou::Class::•<core::Null?>();
- c.{bou::Class::method}<core::Null?>();
- bou::method<core::Null?>();
-}
-static method main() → dynamic {}
-
-library /*isNonNullableByDefault*/;
-import self as bou;
-import "dart:core" as core;
-
-class Class<T extends Never = Never> extends core::Object {
- synthetic constructor •() → bou::Class<bou::Class::T>
- : super core::Object::•()
- ;
- method method<T extends Never = Never>() → dynamic {}
-}
-static method method<T extends Never = Never>() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/constant_null_is.dart.strong.expect b/pkg/front_end/testcases/nnbd/constant_null_is.dart.strong.expect
deleted file mode 100644
index 6490709..0000000
--- a/pkg/front_end/testcases/nnbd/constant_null_is.dart.strong.expect
+++ /dev/null
@@ -1,62 +0,0 @@
-library /*isNonNullableByDefault*/;
-import self as self;
-import "dart:core" as core;
-import "dart:async" as asy;
-import "constant_null_is_lib.dart" as con;
-
-import "dart:async";
-import "org-dartlang-testcase:///constant_null_is_lib.dart";
-
-static const field core::bool c0 = #C1;
-static const field core::bool c1 = #C2;
-static const field core::bool c2 = #C1;
-static const field core::bool c3 = #C1;
-static const field core::bool c4 = #C2;
-static const field core::bool c5 = #C1;
-static const field core::bool c6 = #C2;
-static const field core::bool c7 = #C1;
-static const field core::bool c8 = #C1;
-static const field core::bool c9 = #C1;
-static const field core::bool c10 = #C2;
-static const field core::bool c11 = #C1;
-static const field core::bool c12 = #C1;
-static method main() → dynamic {
- self::expect(null is{ForNonNullableByDefault} core::int?, #C1, "null is int?");
- self::expect(null is{ForNonNullableByDefault} core::int, #C2, "null is int");
- self::expect(null is{ForNonNullableByDefault} core::Null?, #C1, "null is Null");
- self::expect(null is{ForNonNullableByDefault} Never?, #C1, "null is Never?");
- self::expect(null is{ForNonNullableByDefault} Never, #C2, "null is Never");
- self::expect(null is{ForNonNullableByDefault} asy::FutureOr<core::int?>, #C1, "null is FutureOr<int?>");
- self::expect(null is{ForNonNullableByDefault} asy::FutureOr<core::int>, #C2, "null is FutureOr<int>");
- self::expect(null is{ForNonNullableByDefault} asy::FutureOr<core::int>?, #C1, "null is FutureOr<int>?");
- self::expect(null is{ForNonNullableByDefault} asy::FutureOr<core::Null?>, #C1, "null is FutureOr<Null>");
- self::expect(null is{ForNonNullableByDefault} asy::FutureOr<core::Null?>?, #C1, "null is FutureOr<Null>?");
- self::expect(null is{ForNonNullableByDefault} asy::FutureOr<Never>, #C2, "null is FutureOr<Never>");
- self::expect(null is{ForNonNullableByDefault} asy::FutureOr<Never?>, #C1, "null is FutureOr<Never?>");
- self::expect(null is{ForNonNullableByDefault} asy::FutureOr<Never>?, #C1, "null is FutureOr<Never>?");
- con::test();
-}
-static method expect(dynamic expected, dynamic actual, core::String message) → dynamic {
- if(!expected.{core::Object::==}(actual))
- throw "Expected ${expected}, actual ${actual} for ${message}";
-}
-
-library;
-import self as con;
-import "constant_null_is.dart" as self;
-import "dart:core" as core;
-
-import "dart:async";
-import "org-dartlang-testcase:///constant_null_is.dart";
-
-static const field core::bool* d0 = #C2;
-static const field core::bool* d1 = #C1;
-static method test() → dynamic {
- self::expect(null is core::int*, #C2, "null is int (opt-out)");
- self::expect(null is core::Null?, #C1, "null is Null");
-}
-
-constants {
- #C1 = true
- #C2 = false
-}
diff --git a/pkg/front_end/testcases/nnbd/constant_null_is.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/constant_null_is.dart.strong.transformed.expect
deleted file mode 100644
index 6490709..0000000
--- a/pkg/front_end/testcases/nnbd/constant_null_is.dart.strong.transformed.expect
+++ /dev/null
@@ -1,62 +0,0 @@
-library /*isNonNullableByDefault*/;
-import self as self;
-import "dart:core" as core;
-import "dart:async" as asy;
-import "constant_null_is_lib.dart" as con;
-
-import "dart:async";
-import "org-dartlang-testcase:///constant_null_is_lib.dart";
-
-static const field core::bool c0 = #C1;
-static const field core::bool c1 = #C2;
-static const field core::bool c2 = #C1;
-static const field core::bool c3 = #C1;
-static const field core::bool c4 = #C2;
-static const field core::bool c5 = #C1;
-static const field core::bool c6 = #C2;
-static const field core::bool c7 = #C1;
-static const field core::bool c8 = #C1;
-static const field core::bool c9 = #C1;
-static const field core::bool c10 = #C2;
-static const field core::bool c11 = #C1;
-static const field core::bool c12 = #C1;
-static method main() → dynamic {
- self::expect(null is{ForNonNullableByDefault} core::int?, #C1, "null is int?");
- self::expect(null is{ForNonNullableByDefault} core::int, #C2, "null is int");
- self::expect(null is{ForNonNullableByDefault} core::Null?, #C1, "null is Null");
- self::expect(null is{ForNonNullableByDefault} Never?, #C1, "null is Never?");
- self::expect(null is{ForNonNullableByDefault} Never, #C2, "null is Never");
- self::expect(null is{ForNonNullableByDefault} asy::FutureOr<core::int?>, #C1, "null is FutureOr<int?>");
- self::expect(null is{ForNonNullableByDefault} asy::FutureOr<core::int>, #C2, "null is FutureOr<int>");
- self::expect(null is{ForNonNullableByDefault} asy::FutureOr<core::int>?, #C1, "null is FutureOr<int>?");
- self::expect(null is{ForNonNullableByDefault} asy::FutureOr<core::Null?>, #C1, "null is FutureOr<Null>");
- self::expect(null is{ForNonNullableByDefault} asy::FutureOr<core::Null?>?, #C1, "null is FutureOr<Null>?");
- self::expect(null is{ForNonNullableByDefault} asy::FutureOr<Never>, #C2, "null is FutureOr<Never>");
- self::expect(null is{ForNonNullableByDefault} asy::FutureOr<Never?>, #C1, "null is FutureOr<Never?>");
- self::expect(null is{ForNonNullableByDefault} asy::FutureOr<Never>?, #C1, "null is FutureOr<Never>?");
- con::test();
-}
-static method expect(dynamic expected, dynamic actual, core::String message) → dynamic {
- if(!expected.{core::Object::==}(actual))
- throw "Expected ${expected}, actual ${actual} for ${message}";
-}
-
-library;
-import self as con;
-import "constant_null_is.dart" as self;
-import "dart:core" as core;
-
-import "dart:async";
-import "org-dartlang-testcase:///constant_null_is.dart";
-
-static const field core::bool* d0 = #C2;
-static const field core::bool* d1 = #C1;
-static method test() → dynamic {
- self::expect(null is core::int*, #C2, "null is int (opt-out)");
- self::expect(null is core::Null?, #C1, "null is Null");
-}
-
-constants {
- #C1 = true
- #C2 = false
-}
diff --git a/pkg/front_end/testcases/nnbd/constants.dart.outline.expect b/pkg/front_end/testcases/nnbd/constants.dart.outline.expect
deleted file mode 100644
index a1f9f32..0000000
--- a/pkg/front_end/testcases/nnbd/constants.dart.outline.expect
+++ /dev/null
@@ -1,75 +0,0 @@
-library /*isNonNullableByDefault*/;
-import self as self;
-import "dart:core" as core;
-import "constants_lib.dart" as con;
-
-import "org-dartlang-testcase:///constants_lib.dart" as lib;
-
-typedef F1<invariant T extends core::Object? = dynamic> = (T%) → T%;
-typedef F2 = <T extends core::Object? = dynamic>(T%) → T%;
-static const field core::Type objectTypeLiteral = core::Object;
-static const field (core::int) → core::int partialInstantiation = con::id<core::int>;
-static const field con::Class<core::int> instance = const con::Class::•<core::int>(0);
-static const field core::Type functionTypeLiteral = (dynamic) → dynamic;
-static const field core::Type genericFunctionTypeLiteral = <T extends core::Object? = dynamic>(T%) → T%;
-static const field core::List<core::int> listLiteral = const <core::int>[0];
-static const field core::Set<core::int> setLiteral = const <core::int>{0};
-static const field core::Map<core::int, core::String> mapLiteral = const <core::int, core::String>{0: "foo"};
-static const field core::List<core::int> listConcatenation = self::listLiteral;
-static const field core::Set<core::int> setConcatenation = self::setLiteral;
-static const field core::Map<core::int, core::String> mapConcatenation = self::mapLiteral;
-static const field core::bool objectTypeLiteralIdentical = core::identical(self::objectTypeLiteral, con::objectTypeLiteral);
-static const field core::bool partialInstantiationIdentical = core::identical(self::partialInstantiation, con::partialInstantiation);
-static const field core::bool instanceIdentical = core::identical(self::instance, con::instance);
-static const field core::bool functionTypeLiteralIdentical = core::identical(self::functionTypeLiteral, con::functionTypeLiteral);
-static const field core::bool genericFunctionTypeLiteralIdentical = core::identical(self::genericFunctionTypeLiteral, con::genericFunctionTypeLiteral);
-static const field core::bool listLiteralIdentical = core::identical(self::listLiteral, con::listLiteral);
-static const field core::bool setLiteralIdentical = core::identical(self::setLiteral, con::setLiteral);
-static const field core::bool mapLiteralIdentical = core::identical(self::mapLiteral, con::mapLiteral);
-static const field core::bool listConcatenationIdentical = core::identical(self::listConcatenation, con::listConcatenation);
-static const field core::bool setConcatenationIdentical = core::identical(self::setConcatenation, con::setConcatenation);
-static const field core::bool mapConcatenationIdentical = core::identical(self::mapConcatenation, con::mapConcatenation);
-static final field core::bool inStrongMode;
-static method _inStrongMode() → core::bool
- ;
-static method main() → dynamic
- ;
-static method test(dynamic expected, dynamic actual) → dynamic
- ;
-
-library;
-import self as con;
-import "dart:core" as core;
-
-typedef F1<invariant T extends core::Object* = dynamic> = (T*) →* T*;
-typedef F2 = <T extends core::Object* = dynamic>(T*) →* T*;
-class Class<T extends core::Object* = dynamic> extends core::Object /*hasConstConstructor*/ {
- final field con::Class::T* field;
- const constructor •(con::Class::T* field) → con::Class<con::Class::T*>*
- : con::Class::field = field, super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-static const field core::Type* objectTypeLiteral = core::Object*;
-static const field (core::Object*, core::Object*) →* core::bool* c2 = core::identical;
-static const field (core::int*) →* core::int* partialInstantiation = con::id<core::int*>;
-static const field con::Class<core::int*>* instance = const con::Class::•<core::int*>(0);
-static const field core::Type* functionTypeLiteral = (dynamic) →* dynamic;
-static const field core::Type* genericFunctionTypeLiteral = <T extends core::Object* = dynamic>(T*) →* T*;
-static const field core::List<core::int*>* listLiteral = const <core::int*>[0];
-static const field core::Set<core::int*>* setLiteral = const <core::int*>{0};
-static const field core::Map<core::int*, core::String*>* mapLiteral = const <core::int*, core::String*>{0: "foo"};
-static const field core::List<core::int*>* listConcatenation = con::listLiteral;
-static const field core::Set<core::int*>* setConcatenation = con::setLiteral;
-static const field core::Map<core::int*, core::String*>* mapConcatenation = con::mapLiteral;
-static method id<T extends core::Object* = dynamic>(con::id::T* t) → con::id::T*
- ;
diff --git a/pkg/front_end/testcases/nnbd/constants.dart.strong.expect b/pkg/front_end/testcases/nnbd/constants.dart.strong.expect
deleted file mode 100644
index a05d553..0000000
--- a/pkg/front_end/testcases/nnbd/constants.dart.strong.expect
+++ /dev/null
@@ -1,139 +0,0 @@
-library /*isNonNullableByDefault*/;
-import self as self;
-import "dart:core" as core;
-import "constants_lib.dart" as con;
-
-import "org-dartlang-testcase:///constants_lib.dart" as lib;
-
-typedef F1<invariant T extends core::Object? = dynamic> = (T%) → T%;
-typedef F2 = <T extends core::Object? = dynamic>(T%) → T%;
-static const field core::Type objectTypeLiteral = #C1;
-static const field (core::int) → core::int partialInstantiation = #C3;
-static const field con::Class<core::int> instance = #C5;
-static const field core::Type functionTypeLiteral = #C6;
-static const field core::Type genericFunctionTypeLiteral = #C7;
-static const field core::List<core::int> listLiteral = #C8;
-static const field core::Set<core::int> setLiteral = #C12;
-static const field core::Map<core::int, core::String> mapLiteral = #C15;
-static const field core::List<core::int> listConcatenation = #C8;
-static const field core::Set<core::int> setConcatenation = #C12;
-static const field core::Map<core::int, core::String> mapConcatenation = #C15;
-static const field core::bool objectTypeLiteralIdentical = #C16;
-static const field core::bool partialInstantiationIdentical = #C16;
-static const field core::bool instanceIdentical = #C16;
-static const field core::bool functionTypeLiteralIdentical = #C16;
-static const field core::bool genericFunctionTypeLiteralIdentical = #C16;
-static const field core::bool listLiteralIdentical = #C16;
-static const field core::bool setLiteralIdentical = #C16;
-static const field core::bool mapLiteralIdentical = #C16;
-static const field core::bool listConcatenationIdentical = #C16;
-static const field core::bool setConcatenationIdentical = #C16;
-static const field core::bool mapConcatenationIdentical = #C16;
-static final field core::bool inStrongMode = self::_inStrongMode();
-static method _inStrongMode() → core::bool {
- return !((#C17) is{ForNonNullableByDefault} core::List<core::int>);
-}
-static method main() → dynamic {
- self::test(#C1, #C18);
- self::test(#C3, #C19);
- self::test(#C5, #C20);
- self::test(#C6, #C21);
- self::test(#C7, #C22);
- self::test(#C8, #C23);
- self::test(#C12, #C25);
- self::test(#C15, #C26);
- self::test(#C8, #C23);
- self::test(#C12, #C25);
- self::test(#C15, #C26);
- self::test(true, #C16);
- self::test(true, #C16);
- self::test(true, #C16);
- self::test(true, #C16);
- self::test(true, #C16);
- self::test(true, #C16);
- self::test(true, #C16);
- self::test(true, #C16);
- self::test(true, #C16);
- self::test(true, #C16);
- self::test(true, #C16);
-}
-static method test(dynamic expected, dynamic actual) → dynamic {
- core::print("test(${expected}, ${actual})");
- if(self::inStrongMode) {
- if(core::identical(expected, actual)) {
- throw "Unexpected identical for ${expected} and ${actual}";
- }
- }
- else {
- if(!core::identical(expected, actual)) {
- throw "Expected ${expected}, actual ${actual}";
- }
- }
-}
-
-library;
-import self as con;
-import "dart:core" as core;
-
-typedef F1<invariant T extends core::Object* = dynamic> = (T*) →* T*;
-typedef F2 = <T extends core::Object* = dynamic>(T*) →* T*;
-class Class<T extends core::Object* = dynamic> extends core::Object /*hasConstConstructor*/ {
- final field con::Class::T* field;
- const constructor •(con::Class::T* field) → con::Class<con::Class::T*>*
- : con::Class::field = field, super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-static const field core::Type* objectTypeLiteral = #C18;
-static const field (core::Object*, core::Object*) →* core::bool* c2 = #C27;
-static const field (core::int*) →* core::int* partialInstantiation = #C19;
-static const field con::Class<core::int*>* instance = #C20;
-static const field core::Type* functionTypeLiteral = #C21;
-static const field core::Type* genericFunctionTypeLiteral = #C22;
-static const field core::List<core::int*>* listLiteral = #C23;
-static const field core::Set<core::int*>* setLiteral = #C25;
-static const field core::Map<core::int*, core::String*>* mapLiteral = #C26;
-static const field core::List<core::int*>* listConcatenation = #C23;
-static const field core::Set<core::int*>* setConcatenation = #C25;
-static const field core::Map<core::int*, core::String*>* mapConcatenation = #C26;
-static method id<T extends core::Object* = dynamic>(con::id::T* t) → con::id::T*
- return t;
-
-constants {
- #C1 = TypeLiteralConstant(core::Object)
- #C2 = tearoff con::id
- #C3 = partial-instantiation con::id <core::int>
- #C4 = 0
- #C5 = con::Class<core::int> {field:#C4}
- #C6 = TypeLiteralConstant((dynamic) → dynamic)
- #C7 = TypeLiteralConstant(<T extends core::Object? = dynamic>(T%) → T%)
- #C8 = <core::int>[#C4]
- #C9 = null
- #C10 = <dynamic>[#C4, #C9]
- #C11 = core::_ImmutableMap<core::int, core::Null?> {_kvPairs:#C10}
- #C12 = col::_UnmodifiableSet<core::int> {_map:#C11}
- #C13 = "foo"
- #C14 = <dynamic>[#C4, #C13]
- #C15 = core::_ImmutableMap<core::int, core::String> {_kvPairs:#C14}
- #C16 = false
- #C17 = <core::int?>[]
- #C18 = TypeLiteralConstant(core::Object*)
- #C19 = partial-instantiation con::id <core::int*>
- #C20 = con::Class<core::int*> {field:#C4}
- #C21 = TypeLiteralConstant((dynamic) →* dynamic)
- #C22 = TypeLiteralConstant(<T extends core::Object* = dynamic>(T*) →* T*)
- #C23 = <core::int*>[#C4]
- #C24 = core::_ImmutableMap<core::int*, core::Null?> {_kvPairs:#C10}
- #C25 = col::_UnmodifiableSet<core::int*> {_map:#C24}
- #C26 = core::_ImmutableMap<core::int*, core::String*> {_kvPairs:#C14}
- #C27 = tearoff core::identical
-}
diff --git a/pkg/front_end/testcases/nnbd/constants.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/constants.dart.strong.transformed.expect
deleted file mode 100644
index a05d553..0000000
--- a/pkg/front_end/testcases/nnbd/constants.dart.strong.transformed.expect
+++ /dev/null
@@ -1,139 +0,0 @@
-library /*isNonNullableByDefault*/;
-import self as self;
-import "dart:core" as core;
-import "constants_lib.dart" as con;
-
-import "org-dartlang-testcase:///constants_lib.dart" as lib;
-
-typedef F1<invariant T extends core::Object? = dynamic> = (T%) → T%;
-typedef F2 = <T extends core::Object? = dynamic>(T%) → T%;
-static const field core::Type objectTypeLiteral = #C1;
-static const field (core::int) → core::int partialInstantiation = #C3;
-static const field con::Class<core::int> instance = #C5;
-static const field core::Type functionTypeLiteral = #C6;
-static const field core::Type genericFunctionTypeLiteral = #C7;
-static const field core::List<core::int> listLiteral = #C8;
-static const field core::Set<core::int> setLiteral = #C12;
-static const field core::Map<core::int, core::String> mapLiteral = #C15;
-static const field core::List<core::int> listConcatenation = #C8;
-static const field core::Set<core::int> setConcatenation = #C12;
-static const field core::Map<core::int, core::String> mapConcatenation = #C15;
-static const field core::bool objectTypeLiteralIdentical = #C16;
-static const field core::bool partialInstantiationIdentical = #C16;
-static const field core::bool instanceIdentical = #C16;
-static const field core::bool functionTypeLiteralIdentical = #C16;
-static const field core::bool genericFunctionTypeLiteralIdentical = #C16;
-static const field core::bool listLiteralIdentical = #C16;
-static const field core::bool setLiteralIdentical = #C16;
-static const field core::bool mapLiteralIdentical = #C16;
-static const field core::bool listConcatenationIdentical = #C16;
-static const field core::bool setConcatenationIdentical = #C16;
-static const field core::bool mapConcatenationIdentical = #C16;
-static final field core::bool inStrongMode = self::_inStrongMode();
-static method _inStrongMode() → core::bool {
- return !((#C17) is{ForNonNullableByDefault} core::List<core::int>);
-}
-static method main() → dynamic {
- self::test(#C1, #C18);
- self::test(#C3, #C19);
- self::test(#C5, #C20);
- self::test(#C6, #C21);
- self::test(#C7, #C22);
- self::test(#C8, #C23);
- self::test(#C12, #C25);
- self::test(#C15, #C26);
- self::test(#C8, #C23);
- self::test(#C12, #C25);
- self::test(#C15, #C26);
- self::test(true, #C16);
- self::test(true, #C16);
- self::test(true, #C16);
- self::test(true, #C16);
- self::test(true, #C16);
- self::test(true, #C16);
- self::test(true, #C16);
- self::test(true, #C16);
- self::test(true, #C16);
- self::test(true, #C16);
- self::test(true, #C16);
-}
-static method test(dynamic expected, dynamic actual) → dynamic {
- core::print("test(${expected}, ${actual})");
- if(self::inStrongMode) {
- if(core::identical(expected, actual)) {
- throw "Unexpected identical for ${expected} and ${actual}";
- }
- }
- else {
- if(!core::identical(expected, actual)) {
- throw "Expected ${expected}, actual ${actual}";
- }
- }
-}
-
-library;
-import self as con;
-import "dart:core" as core;
-
-typedef F1<invariant T extends core::Object* = dynamic> = (T*) →* T*;
-typedef F2 = <T extends core::Object* = dynamic>(T*) →* T*;
-class Class<T extends core::Object* = dynamic> extends core::Object /*hasConstConstructor*/ {
- final field con::Class::T* field;
- const constructor •(con::Class::T* field) → con::Class<con::Class::T*>*
- : con::Class::field = field, super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-static const field core::Type* objectTypeLiteral = #C18;
-static const field (core::Object*, core::Object*) →* core::bool* c2 = #C27;
-static const field (core::int*) →* core::int* partialInstantiation = #C19;
-static const field con::Class<core::int*>* instance = #C20;
-static const field core::Type* functionTypeLiteral = #C21;
-static const field core::Type* genericFunctionTypeLiteral = #C22;
-static const field core::List<core::int*>* listLiteral = #C23;
-static const field core::Set<core::int*>* setLiteral = #C25;
-static const field core::Map<core::int*, core::String*>* mapLiteral = #C26;
-static const field core::List<core::int*>* listConcatenation = #C23;
-static const field core::Set<core::int*>* setConcatenation = #C25;
-static const field core::Map<core::int*, core::String*>* mapConcatenation = #C26;
-static method id<T extends core::Object* = dynamic>(con::id::T* t) → con::id::T*
- return t;
-
-constants {
- #C1 = TypeLiteralConstant(core::Object)
- #C2 = tearoff con::id
- #C3 = partial-instantiation con::id <core::int>
- #C4 = 0
- #C5 = con::Class<core::int> {field:#C4}
- #C6 = TypeLiteralConstant((dynamic) → dynamic)
- #C7 = TypeLiteralConstant(<T extends core::Object? = dynamic>(T%) → T%)
- #C8 = <core::int>[#C4]
- #C9 = null
- #C10 = <dynamic>[#C4, #C9]
- #C11 = core::_ImmutableMap<core::int, core::Null?> {_kvPairs:#C10}
- #C12 = col::_UnmodifiableSet<core::int> {_map:#C11}
- #C13 = "foo"
- #C14 = <dynamic>[#C4, #C13]
- #C15 = core::_ImmutableMap<core::int, core::String> {_kvPairs:#C14}
- #C16 = false
- #C17 = <core::int?>[]
- #C18 = TypeLiteralConstant(core::Object*)
- #C19 = partial-instantiation con::id <core::int*>
- #C20 = con::Class<core::int*> {field:#C4}
- #C21 = TypeLiteralConstant((dynamic) →* dynamic)
- #C22 = TypeLiteralConstant(<T extends core::Object* = dynamic>(T*) →* T*)
- #C23 = <core::int*>[#C4]
- #C24 = core::_ImmutableMap<core::int*, core::Null?> {_kvPairs:#C10}
- #C25 = col::_UnmodifiableSet<core::int*> {_map:#C24}
- #C26 = core::_ImmutableMap<core::int*, core::String*> {_kvPairs:#C14}
- #C27 = tearoff core::identical
-}
diff --git a/pkg/front_end/testcases/nnbd/covariant_late_field.dart b/pkg/front_end/testcases/nnbd/covariant_late_field.dart
new file mode 100644
index 0000000..9321f61
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/covariant_late_field.dart
@@ -0,0 +1,31 @@
+// Copyright (c) 2020, 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.
+
+class A {
+ late num invariantField;
+ covariant late num covariantField;
+}
+
+abstract class B implements A {
+ get invariantField;
+ set invariantField(value);
+ get covariantField;
+ set covariantField(value);
+}
+
+abstract class C implements A {
+ int get invariantField; // ok
+ void set invariantField(int value) {} // error
+ int get covariantField; // ok
+ void set covariantField(int value) {} // ok
+}
+
+abstract class D implements A {
+ int get invariantField; // ok
+ void set invariantField(covariant int value) {} // ok
+ int get covariantField; // ok
+ void set covariantField(covariant int value) {} // ok
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/nnbd/covariant_late_field.dart.outline.expect b/pkg/front_end/testcases/nnbd/covariant_late_field.dart.outline.expect
new file mode 100644
index 0000000..68a5f71e
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/covariant_late_field.dart.outline.expect
@@ -0,0 +1,51 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/covariant_late_field.dart:19:31: Error: The parameter 'value' of the method 'C.invariantField' has type 'int', which does not match the corresponding type, 'num', in the overridden method, 'A.invariantField'.
+// Change to a supertype of 'num', or, for a covariant parameter, a subtype.
+// void set invariantField(int value) {} // error
+// ^
+// pkg/front_end/testcases/nnbd/covariant_late_field.dart:6:12: Context: This is the overridden method ('invariantField').
+// late num invariantField;
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+class A extends core::Object {
+ late field core::num invariantField;
+ late covariant field core::num covariantField;
+ synthetic constructor •() → self::A
+ ;
+}
+abstract class B extends core::Object implements self::A {
+ synthetic constructor •() → self::B
+ ;
+ abstract get invariantField() → core::num;
+ abstract set invariantField(core::num value) → void;
+ abstract get covariantField() → core::num;
+ abstract set covariantField(covariant core::num value) → void;
+}
+abstract class C extends core::Object implements self::A {
+ synthetic constructor •() → self::C
+ ;
+ abstract get invariantField() → core::int;
+ set invariantField(core::int value) → void
+ ;
+ abstract get covariantField() → core::int;
+ set covariantField(covariant core::int value) → void
+ ;
+}
+abstract class D extends core::Object implements self::A {
+ synthetic constructor •() → self::D
+ ;
+ abstract get invariantField() → core::int;
+ set invariantField(covariant core::int value) → void
+ ;
+ abstract get covariantField() → core::int;
+ set covariantField(covariant core::int value) → void
+ ;
+}
+static method main() → dynamic
+ ;
diff --git a/pkg/front_end/testcases/nnbd/covariant_late_field.dart.strong.expect b/pkg/front_end/testcases/nnbd/covariant_late_field.dart.strong.expect
new file mode 100644
index 0000000..f8620c0
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/covariant_late_field.dart.strong.expect
@@ -0,0 +1,50 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/covariant_late_field.dart:19:31: Error: The parameter 'value' of the method 'C.invariantField' has type 'int', which does not match the corresponding type, 'num', in the overridden method, 'A.invariantField'.
+// Change to a supertype of 'num', or, for a covariant parameter, a subtype.
+// void set invariantField(int value) {} // error
+// ^
+// pkg/front_end/testcases/nnbd/covariant_late_field.dart:6:12: Context: This is the overridden method ('invariantField').
+// late num invariantField;
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+class A extends core::Object {
+ late field core::num invariantField;
+ late covariant field core::num covariantField;
+ synthetic constructor •() → self::A
+ : super core::Object::•()
+ ;
+}
+abstract class B extends core::Object implements self::A {
+ synthetic constructor •() → self::B
+ : super core::Object::•()
+ ;
+ abstract get invariantField() → core::num;
+ abstract set invariantField(core::num value) → void;
+ abstract get covariantField() → core::num;
+ abstract set covariantField(covariant core::num value) → void;
+}
+abstract class C extends core::Object implements self::A {
+ synthetic constructor •() → self::C
+ : super core::Object::•()
+ ;
+ abstract get invariantField() → core::int;
+ set invariantField(core::int value) → void {}
+ abstract get covariantField() → core::int;
+ set covariantField(covariant core::int value) → void {}
+}
+abstract class D extends core::Object implements self::A {
+ synthetic constructor •() → self::D
+ : super core::Object::•()
+ ;
+ abstract get invariantField() → core::int;
+ set invariantField(covariant core::int value) → void {}
+ abstract get covariantField() → core::int;
+ set covariantField(covariant core::int value) → void {}
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/covariant_late_field.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd/covariant_late_field.dart.textual_outline.expect
new file mode 100644
index 0000000..0f1df96
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/covariant_late_field.dart.textual_outline.expect
@@ -0,0 +1,25 @@
+class A {
+ late num ;
+ invariantField;
+ covariant late num ;
+ covariantField;
+}
+abstract class B implements A {
+ get invariantField;
+ set invariantField(value);
+ get covariantField;
+ set covariantField(value);
+}
+abstract class C implements A {
+ int get invariantField;
+ void set invariantField(int value) { }
+ int get covariantField;
+ void set covariantField(int value) { }
+}
+abstract class D implements A {
+ int get invariantField;
+ void set invariantField(covariant int value) { }
+ int get covariantField;
+ void set covariantField(covariant int value) { }
+}
+main() { }
diff --git a/pkg/front_end/testcases/nnbd/covariant_late_field.dart.weak.expect b/pkg/front_end/testcases/nnbd/covariant_late_field.dart.weak.expect
new file mode 100644
index 0000000..f8620c0
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/covariant_late_field.dart.weak.expect
@@ -0,0 +1,50 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/covariant_late_field.dart:19:31: Error: The parameter 'value' of the method 'C.invariantField' has type 'int', which does not match the corresponding type, 'num', in the overridden method, 'A.invariantField'.
+// Change to a supertype of 'num', or, for a covariant parameter, a subtype.
+// void set invariantField(int value) {} // error
+// ^
+// pkg/front_end/testcases/nnbd/covariant_late_field.dart:6:12: Context: This is the overridden method ('invariantField').
+// late num invariantField;
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+class A extends core::Object {
+ late field core::num invariantField;
+ late covariant field core::num covariantField;
+ synthetic constructor •() → self::A
+ : super core::Object::•()
+ ;
+}
+abstract class B extends core::Object implements self::A {
+ synthetic constructor •() → self::B
+ : super core::Object::•()
+ ;
+ abstract get invariantField() → core::num;
+ abstract set invariantField(core::num value) → void;
+ abstract get covariantField() → core::num;
+ abstract set covariantField(covariant core::num value) → void;
+}
+abstract class C extends core::Object implements self::A {
+ synthetic constructor •() → self::C
+ : super core::Object::•()
+ ;
+ abstract get invariantField() → core::int;
+ set invariantField(core::int value) → void {}
+ abstract get covariantField() → core::int;
+ set covariantField(covariant core::int value) → void {}
+}
+abstract class D extends core::Object implements self::A {
+ synthetic constructor •() → self::D
+ : super core::Object::•()
+ ;
+ abstract get invariantField() → core::int;
+ set invariantField(covariant core::int value) → void {}
+ abstract get covariantField() → core::int;
+ set covariantField(covariant core::int value) → void {}
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/export_from_opt_out.dart.outline.expect b/pkg/front_end/testcases/nnbd/export_from_opt_out.dart.outline.expect
deleted file mode 100644
index 05e8397..0000000
--- a/pkg/front_end/testcases/nnbd/export_from_opt_out.dart.outline.expect
+++ /dev/null
@@ -1,161 +0,0 @@
-library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/export_from_opt_out.dart:6:1: Error: Null safe libraries are not allowed to export declarations from of opt-out libraries.
-// export 'export_from_opt_out_lib1.dart';
-// ^
-//
-// pkg/front_end/testcases/nnbd/export_from_opt_out.dart:10:1: Error: Null safe libraries are not allowed to export declarations from of opt-out libraries.
-// export 'export_from_opt_out_lib2.dart' hide legacyMethod2;
-// ^
-//
-// pkg/front_end/testcases/nnbd/export_from_opt_out.dart:13:1: Error: Null safe libraries are not allowed to export declarations from of opt-out libraries.
-// export 'export_from_opt_out_lib3.dart' show LegacyClass2;
-// ^
-//
-// pkg/front_end/testcases/nnbd/export_from_opt_out.dart:16:1: Error: Null safe libraries are not allowed to export declarations from of opt-out libraries.
-// export 'export_from_opt_out_lib3.dart' show legacyMethod1;
-// ^
-//
-// pkg/front_end/testcases/nnbd/export_from_opt_out.dart:19:1: Error: Null safe libraries are not allowed to export declarations from of opt-out libraries.
-// export 'export_from_opt_out_lib3.dart' show LegacyExtension;
-// ^
-//
-// pkg/front_end/testcases/nnbd/export_from_opt_out.dart:22:1: Error: Null safe libraries are not allowed to export declarations from of opt-out libraries.
-// export 'export_from_opt_out_lib3.dart' show LegacyTypedef;
-// ^
-//
-import self as self;
-import "export_from_opt_out_lib1.dart" as exp;
-import "export_from_opt_out_lib2.dart" as exp2;
-import "export_from_opt_out_lib3.dart" as exp3;
-import "export_from_opt_out_lib5.dart" as exp4;
-additionalExports = (exp::LegacyClass1,
- exp2::LegacyClass3,
- exp2::LegacyClass4,
- exp3::LegacyClass2,
- exp3::legacyMethod1,
- exp3::LegacyExtension,
- exp3::LegacyTypedef,
- exp4::NnbdClass1,
- exp4::NnbdClass2)
-
-export "org-dartlang-testcase:///export_from_opt_out_lib1.dart";
-export "org-dartlang-testcase:///export_from_opt_out_lib2.dart";
-export "org-dartlang-testcase:///export_from_opt_out_lib3.dart";
-export "org-dartlang-testcase:///export_from_opt_out_lib3.dart";
-export "org-dartlang-testcase:///export_from_opt_out_lib3.dart";
-export "org-dartlang-testcase:///export_from_opt_out_lib3.dart";
-export "org-dartlang-testcase:///export_from_opt_out_lib3.dart";
-export "org-dartlang-testcase:///export_from_opt_out_lib3.dart";
-export "org-dartlang-testcase:///export_from_opt_out_lib4.dart";
-export "org-dartlang-testcase:///export_from_opt_out_lib5.dart";
-
-static method main() → dynamic
- ;
-
-library;
-import self as exp;
-import "dart:core" as core;
-
-class LegacyClass1 extends core::Object {
- synthetic constructor •() → exp::LegacyClass1*
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-
-library;
-import self as exp2;
-import "dart:core" as core;
-
-class LegacyClass3 extends core::Object {
- synthetic constructor •() → exp2::LegacyClass3*
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class LegacyClass4 extends core::Object {
- synthetic constructor •() → exp2::LegacyClass4*
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-static method legacyMethod2() → dynamic
- ;
-
-library;
-import self as exp3;
-import "dart:core" as core;
-import "export_from_opt_out_lib5.dart" as exp4;
-additionalExports = (exp4::NnbdClass1,
- exp4::NnbdClass2)
-
-export "org-dartlang-testcase:///export_from_opt_out_lib5.dart";
-
-typedef LegacyTypedef = () →* void;
-class LegacyClass2 extends core::Object {
- synthetic constructor •() → exp3::LegacyClass2*
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-extension LegacyExtension on core::String* {
-}
-static method legacyMethod1() → dynamic
- ;
-
-library;
-import self as self2;
-import "export_from_opt_out_lib5.dart" as exp4;
-additionalExports = (exp4::NnbdClass1,
- exp4::NnbdClass2)
-
-export "org-dartlang-testcase:///export_from_opt_out_lib5.dart";
-
-
-library /*isNonNullableByDefault*/;
-import self as exp4;
-import "dart:core" as core;
-
-class NnbdClass1 extends core::Object {
- synthetic constructor •() → exp4::NnbdClass1
- ;
-}
-class NnbdClass2 extends core::Object {
- synthetic constructor •() → exp4::NnbdClass2
- ;
-}
diff --git a/pkg/front_end/testcases/nnbd/export_from_opt_out.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/export_from_opt_out.dart.strong.transformed.expect
deleted file mode 100644
index 241f5aa..0000000
--- a/pkg/front_end/testcases/nnbd/export_from_opt_out.dart.strong.transformed.expect
+++ /dev/null
@@ -1,164 +0,0 @@
-library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/export_from_opt_out.dart:6:1: Error: Null safe libraries are not allowed to export declarations from of opt-out libraries.
-// export 'export_from_opt_out_lib1.dart';
-// ^
-//
-// pkg/front_end/testcases/nnbd/export_from_opt_out.dart:10:1: Error: Null safe libraries are not allowed to export declarations from of opt-out libraries.
-// export 'export_from_opt_out_lib2.dart' hide legacyMethod2;
-// ^
-//
-// pkg/front_end/testcases/nnbd/export_from_opt_out.dart:13:1: Error: Null safe libraries are not allowed to export declarations from of opt-out libraries.
-// export 'export_from_opt_out_lib3.dart' show LegacyClass2;
-// ^
-//
-// pkg/front_end/testcases/nnbd/export_from_opt_out.dart:16:1: Error: Null safe libraries are not allowed to export declarations from of opt-out libraries.
-// export 'export_from_opt_out_lib3.dart' show legacyMethod1;
-// ^
-//
-// pkg/front_end/testcases/nnbd/export_from_opt_out.dart:19:1: Error: Null safe libraries are not allowed to export declarations from of opt-out libraries.
-// export 'export_from_opt_out_lib3.dart' show LegacyExtension;
-// ^
-//
-// pkg/front_end/testcases/nnbd/export_from_opt_out.dart:22:1: Error: Null safe libraries are not allowed to export declarations from of opt-out libraries.
-// export 'export_from_opt_out_lib3.dart' show LegacyTypedef;
-// ^
-//
-import self as self;
-import "export_from_opt_out_lib1.dart" as exp;
-import "export_from_opt_out_lib2.dart" as exp2;
-import "export_from_opt_out_lib3.dart" as exp3;
-import "export_from_opt_out_lib5.dart" as exp4;
-additionalExports = (exp::LegacyClass1,
- exp2::LegacyClass3,
- exp2::LegacyClass4,
- exp3::LegacyClass2,
- exp3::legacyMethod1,
- exp3::LegacyExtension,
- exp3::LegacyTypedef,
- exp4::NnbdClass1,
- exp4::NnbdClass2)
-
-export "org-dartlang-testcase:///export_from_opt_out_lib1.dart";
-export "org-dartlang-testcase:///export_from_opt_out_lib2.dart";
-export "org-dartlang-testcase:///export_from_opt_out_lib3.dart";
-export "org-dartlang-testcase:///export_from_opt_out_lib3.dart";
-export "org-dartlang-testcase:///export_from_opt_out_lib3.dart";
-export "org-dartlang-testcase:///export_from_opt_out_lib3.dart";
-export "org-dartlang-testcase:///export_from_opt_out_lib3.dart";
-export "org-dartlang-testcase:///export_from_opt_out_lib3.dart";
-export "org-dartlang-testcase:///export_from_opt_out_lib4.dart";
-export "org-dartlang-testcase:///export_from_opt_out_lib5.dart";
-
-static method main() → dynamic {}
-
-library;
-import self as exp;
-import "dart:core" as core;
-
-class LegacyClass1 extends core::Object {
- synthetic constructor •() → exp::LegacyClass1*
- : super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-
-library;
-import self as exp2;
-import "dart:core" as core;
-
-class LegacyClass3 extends core::Object {
- synthetic constructor •() → exp2::LegacyClass3*
- : super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class LegacyClass4 extends core::Object {
- synthetic constructor •() → exp2::LegacyClass4*
- : super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-static method legacyMethod2() → dynamic {}
-
-library;
-import self as exp3;
-import "dart:core" as core;
-import "export_from_opt_out_lib5.dart" as exp4;
-additionalExports = (exp4::NnbdClass1,
- exp4::NnbdClass2)
-
-export "org-dartlang-testcase:///export_from_opt_out_lib5.dart";
-
-typedef LegacyTypedef = () →* void;
-class LegacyClass2 extends core::Object {
- synthetic constructor •() → exp3::LegacyClass2*
- : super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-extension LegacyExtension on core::String* {
-}
-static method legacyMethod1() → dynamic {}
-
-library;
-import self as self2;
-import "export_from_opt_out_lib5.dart" as exp4;
-additionalExports = (exp4::NnbdClass1,
- exp4::NnbdClass2)
-
-export "org-dartlang-testcase:///export_from_opt_out_lib5.dart";
-
-
-library /*isNonNullableByDefault*/;
-import self as exp4;
-import "dart:core" as core;
-
-class NnbdClass1 extends core::Object {
- synthetic constructor •() → exp4::NnbdClass1
- : super core::Object::•()
- ;
-}
-class NnbdClass2 extends core::Object {
- synthetic constructor •() → exp4::NnbdClass2
- : super core::Object::•()
- ;
-}
diff --git a/pkg/front_end/testcases/nnbd/export_from_opt_out.dart.weak.expect b/pkg/front_end/testcases/nnbd/export_from_opt_out.dart.weak.expect
deleted file mode 100644
index 241f5aa..0000000
--- a/pkg/front_end/testcases/nnbd/export_from_opt_out.dart.weak.expect
+++ /dev/null
@@ -1,164 +0,0 @@
-library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/export_from_opt_out.dart:6:1: Error: Null safe libraries are not allowed to export declarations from of opt-out libraries.
-// export 'export_from_opt_out_lib1.dart';
-// ^
-//
-// pkg/front_end/testcases/nnbd/export_from_opt_out.dart:10:1: Error: Null safe libraries are not allowed to export declarations from of opt-out libraries.
-// export 'export_from_opt_out_lib2.dart' hide legacyMethod2;
-// ^
-//
-// pkg/front_end/testcases/nnbd/export_from_opt_out.dart:13:1: Error: Null safe libraries are not allowed to export declarations from of opt-out libraries.
-// export 'export_from_opt_out_lib3.dart' show LegacyClass2;
-// ^
-//
-// pkg/front_end/testcases/nnbd/export_from_opt_out.dart:16:1: Error: Null safe libraries are not allowed to export declarations from of opt-out libraries.
-// export 'export_from_opt_out_lib3.dart' show legacyMethod1;
-// ^
-//
-// pkg/front_end/testcases/nnbd/export_from_opt_out.dart:19:1: Error: Null safe libraries are not allowed to export declarations from of opt-out libraries.
-// export 'export_from_opt_out_lib3.dart' show LegacyExtension;
-// ^
-//
-// pkg/front_end/testcases/nnbd/export_from_opt_out.dart:22:1: Error: Null safe libraries are not allowed to export declarations from of opt-out libraries.
-// export 'export_from_opt_out_lib3.dart' show LegacyTypedef;
-// ^
-//
-import self as self;
-import "export_from_opt_out_lib1.dart" as exp;
-import "export_from_opt_out_lib2.dart" as exp2;
-import "export_from_opt_out_lib3.dart" as exp3;
-import "export_from_opt_out_lib5.dart" as exp4;
-additionalExports = (exp::LegacyClass1,
- exp2::LegacyClass3,
- exp2::LegacyClass4,
- exp3::LegacyClass2,
- exp3::legacyMethod1,
- exp3::LegacyExtension,
- exp3::LegacyTypedef,
- exp4::NnbdClass1,
- exp4::NnbdClass2)
-
-export "org-dartlang-testcase:///export_from_opt_out_lib1.dart";
-export "org-dartlang-testcase:///export_from_opt_out_lib2.dart";
-export "org-dartlang-testcase:///export_from_opt_out_lib3.dart";
-export "org-dartlang-testcase:///export_from_opt_out_lib3.dart";
-export "org-dartlang-testcase:///export_from_opt_out_lib3.dart";
-export "org-dartlang-testcase:///export_from_opt_out_lib3.dart";
-export "org-dartlang-testcase:///export_from_opt_out_lib3.dart";
-export "org-dartlang-testcase:///export_from_opt_out_lib3.dart";
-export "org-dartlang-testcase:///export_from_opt_out_lib4.dart";
-export "org-dartlang-testcase:///export_from_opt_out_lib5.dart";
-
-static method main() → dynamic {}
-
-library;
-import self as exp;
-import "dart:core" as core;
-
-class LegacyClass1 extends core::Object {
- synthetic constructor •() → exp::LegacyClass1*
- : super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-
-library;
-import self as exp2;
-import "dart:core" as core;
-
-class LegacyClass3 extends core::Object {
- synthetic constructor •() → exp2::LegacyClass3*
- : super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class LegacyClass4 extends core::Object {
- synthetic constructor •() → exp2::LegacyClass4*
- : super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-static method legacyMethod2() → dynamic {}
-
-library;
-import self as exp3;
-import "dart:core" as core;
-import "export_from_opt_out_lib5.dart" as exp4;
-additionalExports = (exp4::NnbdClass1,
- exp4::NnbdClass2)
-
-export "org-dartlang-testcase:///export_from_opt_out_lib5.dart";
-
-typedef LegacyTypedef = () →* void;
-class LegacyClass2 extends core::Object {
- synthetic constructor •() → exp3::LegacyClass2*
- : super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-extension LegacyExtension on core::String* {
-}
-static method legacyMethod1() → dynamic {}
-
-library;
-import self as self2;
-import "export_from_opt_out_lib5.dart" as exp4;
-additionalExports = (exp4::NnbdClass1,
- exp4::NnbdClass2)
-
-export "org-dartlang-testcase:///export_from_opt_out_lib5.dart";
-
-
-library /*isNonNullableByDefault*/;
-import self as exp4;
-import "dart:core" as core;
-
-class NnbdClass1 extends core::Object {
- synthetic constructor •() → exp4::NnbdClass1
- : super core::Object::•()
- ;
-}
-class NnbdClass2 extends core::Object {
- synthetic constructor •() → exp4::NnbdClass2
- : super core::Object::•()
- ;
-}
diff --git a/pkg/front_end/testcases/nnbd/export_from_opt_out.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/export_from_opt_out.dart.weak.transformed.expect
deleted file mode 100644
index 241f5aa..0000000
--- a/pkg/front_end/testcases/nnbd/export_from_opt_out.dart.weak.transformed.expect
+++ /dev/null
@@ -1,164 +0,0 @@
-library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/export_from_opt_out.dart:6:1: Error: Null safe libraries are not allowed to export declarations from of opt-out libraries.
-// export 'export_from_opt_out_lib1.dart';
-// ^
-//
-// pkg/front_end/testcases/nnbd/export_from_opt_out.dart:10:1: Error: Null safe libraries are not allowed to export declarations from of opt-out libraries.
-// export 'export_from_opt_out_lib2.dart' hide legacyMethod2;
-// ^
-//
-// pkg/front_end/testcases/nnbd/export_from_opt_out.dart:13:1: Error: Null safe libraries are not allowed to export declarations from of opt-out libraries.
-// export 'export_from_opt_out_lib3.dart' show LegacyClass2;
-// ^
-//
-// pkg/front_end/testcases/nnbd/export_from_opt_out.dart:16:1: Error: Null safe libraries are not allowed to export declarations from of opt-out libraries.
-// export 'export_from_opt_out_lib3.dart' show legacyMethod1;
-// ^
-//
-// pkg/front_end/testcases/nnbd/export_from_opt_out.dart:19:1: Error: Null safe libraries are not allowed to export declarations from of opt-out libraries.
-// export 'export_from_opt_out_lib3.dart' show LegacyExtension;
-// ^
-//
-// pkg/front_end/testcases/nnbd/export_from_opt_out.dart:22:1: Error: Null safe libraries are not allowed to export declarations from of opt-out libraries.
-// export 'export_from_opt_out_lib3.dart' show LegacyTypedef;
-// ^
-//
-import self as self;
-import "export_from_opt_out_lib1.dart" as exp;
-import "export_from_opt_out_lib2.dart" as exp2;
-import "export_from_opt_out_lib3.dart" as exp3;
-import "export_from_opt_out_lib5.dart" as exp4;
-additionalExports = (exp::LegacyClass1,
- exp2::LegacyClass3,
- exp2::LegacyClass4,
- exp3::LegacyClass2,
- exp3::legacyMethod1,
- exp3::LegacyExtension,
- exp3::LegacyTypedef,
- exp4::NnbdClass1,
- exp4::NnbdClass2)
-
-export "org-dartlang-testcase:///export_from_opt_out_lib1.dart";
-export "org-dartlang-testcase:///export_from_opt_out_lib2.dart";
-export "org-dartlang-testcase:///export_from_opt_out_lib3.dart";
-export "org-dartlang-testcase:///export_from_opt_out_lib3.dart";
-export "org-dartlang-testcase:///export_from_opt_out_lib3.dart";
-export "org-dartlang-testcase:///export_from_opt_out_lib3.dart";
-export "org-dartlang-testcase:///export_from_opt_out_lib3.dart";
-export "org-dartlang-testcase:///export_from_opt_out_lib3.dart";
-export "org-dartlang-testcase:///export_from_opt_out_lib4.dart";
-export "org-dartlang-testcase:///export_from_opt_out_lib5.dart";
-
-static method main() → dynamic {}
-
-library;
-import self as exp;
-import "dart:core" as core;
-
-class LegacyClass1 extends core::Object {
- synthetic constructor •() → exp::LegacyClass1*
- : super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-
-library;
-import self as exp2;
-import "dart:core" as core;
-
-class LegacyClass3 extends core::Object {
- synthetic constructor •() → exp2::LegacyClass3*
- : super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class LegacyClass4 extends core::Object {
- synthetic constructor •() → exp2::LegacyClass4*
- : super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-static method legacyMethod2() → dynamic {}
-
-library;
-import self as exp3;
-import "dart:core" as core;
-import "export_from_opt_out_lib5.dart" as exp4;
-additionalExports = (exp4::NnbdClass1,
- exp4::NnbdClass2)
-
-export "org-dartlang-testcase:///export_from_opt_out_lib5.dart";
-
-typedef LegacyTypedef = () →* void;
-class LegacyClass2 extends core::Object {
- synthetic constructor •() → exp3::LegacyClass2*
- : super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-extension LegacyExtension on core::String* {
-}
-static method legacyMethod1() → dynamic {}
-
-library;
-import self as self2;
-import "export_from_opt_out_lib5.dart" as exp4;
-additionalExports = (exp4::NnbdClass1,
- exp4::NnbdClass2)
-
-export "org-dartlang-testcase:///export_from_opt_out_lib5.dart";
-
-
-library /*isNonNullableByDefault*/;
-import self as exp4;
-import "dart:core" as core;
-
-class NnbdClass1 extends core::Object {
- synthetic constructor •() → exp4::NnbdClass1
- : super core::Object::•()
- ;
-}
-class NnbdClass2 extends core::Object {
- synthetic constructor •() → exp4::NnbdClass2
- : super core::Object::•()
- ;
-}
diff --git a/pkg/front_end/testcases/nnbd/external_fields.dart b/pkg/front_end/testcases/nnbd/external_fields.dart
new file mode 100644
index 0000000..d6f1971
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/external_fields.dart
@@ -0,0 +1,110 @@
+// Copyright (c) 2020, 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.
+
+class Annotation {
+ const Annotation();
+}
+
+
+@Annotation()
+external int topLevelField;
+
+@Annotation()
+external final int finalTopLevelField;
+
+external var untypedTopLevelField;
+
+external final untypedFinalTopLevelField;
+
+class A {
+ @Annotation()
+ external int instanceField;
+
+ @Annotation()
+ external final int finalInstanceField;
+
+ @Annotation()
+ external covariant num covariantInstanceField;
+
+ @Annotation()
+ external static int staticField;
+
+ @Annotation()
+ external static final int finalStaticField;
+
+ external var untypedInstanceField;
+
+ external final untypedFinalInstanceField;
+
+ external covariant var untypedCovariantInstanceField;
+
+ external static var untypedStaticField;
+
+ external static final untypedFinalStaticField;
+}
+
+mixin B {
+ @Annotation()
+ external int instanceField;
+
+ @Annotation()
+ external final int finalInstanceField;
+
+ @Annotation()
+ external covariant num covariantInstanceField;
+
+ @Annotation()
+ external static int staticField;
+
+ @Annotation()
+ external static final int finalStaticField;
+
+ external var untypedInstanceField;
+
+ external final untypedFinalInstanceField;
+
+ external covariant var untypedCovariantInstanceField;
+
+ external static var untypedStaticField;
+
+ external static final untypedFinalStaticField;
+}
+
+extension Extension on A {
+ @Annotation()
+ external int extensionInstanceField;
+
+ @Annotation()
+ external final int finalExtensionInstanceField;
+
+ @Annotation()
+ external static int extensionStaticField;
+
+ @Annotation()
+ external static final int finalExtensionStaticField;
+
+ external var untypedExtensionInstanceField;
+
+ external final untypedFinalExtensionInstanceField;
+
+ external static var untypedExtensionStaticField;
+
+ external static final untypedFinalExtensionStaticField;
+}
+
+class C implements A {
+ external var instanceField;
+
+ external final finalInstanceField;
+
+ external var covariantInstanceField;
+
+ external var untypedInstanceField;
+
+ external final untypedFinalInstanceField;
+
+ external var untypedCovariantInstanceField;
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/nnbd/external_fields.dart.outline.expect b/pkg/front_end/testcases/nnbd/external_fields.dart.outline.expect
new file mode 100644
index 0000000..3cce0af
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/external_fields.dart.outline.expect
@@ -0,0 +1,111 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class Annotation extends core::Object /*hasConstConstructor*/ {
+ const constructor •() → self::Annotation
+ : super core::Object::•()
+ ;
+}
+class A extends core::Object {
+ synthetic constructor •() → self::A
+ ;
+ @self::Annotation::•()
+ external get instanceField() → core::int;
+ external set instanceField(core::int #t1) → void;
+ @self::Annotation::•()
+ external get finalInstanceField() → core::int;
+ @self::Annotation::•()
+ external get covariantInstanceField() → core::num;
+ external set covariantInstanceField(covariant core::num #t2) → void;
+ @self::Annotation::•()
+ external static get staticField() → core::int;
+ external static set staticField(core::int #t3) → void;
+ @self::Annotation::•()
+ external static get finalStaticField() → core::int;
+ external get untypedInstanceField() → dynamic;
+ external set untypedInstanceField(dynamic #t4) → void;
+ external get untypedFinalInstanceField() → dynamic;
+ external get untypedCovariantInstanceField() → dynamic;
+ external set untypedCovariantInstanceField(covariant dynamic #t5) → void;
+ external static get untypedStaticField() → dynamic;
+ external static set untypedStaticField(dynamic #t6) → void;
+ external static get untypedFinalStaticField() → dynamic;
+}
+abstract class B extends core::Object /*isMixinDeclaration*/ {
+ @self::Annotation::•()
+ external get instanceField() → core::int;
+ external set instanceField(core::int #t7) → void;
+ @self::Annotation::•()
+ external get finalInstanceField() → core::int;
+ @self::Annotation::•()
+ external get covariantInstanceField() → core::num;
+ external set covariantInstanceField(covariant core::num #t8) → void;
+ @self::Annotation::•()
+ external static get staticField() → core::int;
+ external static set staticField(core::int #t9) → void;
+ @self::Annotation::•()
+ external static get finalStaticField() → core::int;
+ external get untypedInstanceField() → dynamic;
+ external set untypedInstanceField(dynamic #t10) → void;
+ external get untypedFinalInstanceField() → dynamic;
+ external get untypedCovariantInstanceField() → dynamic;
+ external set untypedCovariantInstanceField(covariant dynamic #t11) → void;
+ external static get untypedStaticField() → dynamic;
+ external static set untypedStaticField(dynamic #t12) → void;
+ external static get untypedFinalStaticField() → dynamic;
+}
+class C extends core::Object implements self::A {
+ synthetic constructor •() → self::C
+ ;
+ external get instanceField() → core::int;
+ external set instanceField(core::int #t13) → void;
+ external get finalInstanceField() → core::int;
+ external get covariantInstanceField() → core::num;
+ external set covariantInstanceField(covariant core::num #t14) → void;
+ external get untypedInstanceField() → dynamic;
+ external set untypedInstanceField(dynamic #t15) → void;
+ external get untypedFinalInstanceField() → dynamic;
+ external get untypedCovariantInstanceField() → dynamic;
+ external set untypedCovariantInstanceField(covariant dynamic #t16) → void;
+}
+extension Extension on self::A {
+ get extensionInstanceField = get self::Extension|extensionInstanceField;
+ set extensionInstanceField = set self::Extension|extensionInstanceField;
+ get finalExtensionInstanceField = get self::Extension|finalExtensionInstanceField;
+ static get extensionStaticField = get self::Extension|extensionStaticField;
+ static set extensionStaticField = set self::Extension|extensionStaticField;
+ static get finalExtensionStaticField = get self::Extension|finalExtensionStaticField;
+ get untypedExtensionInstanceField = get self::Extension|untypedExtensionInstanceField;
+ set untypedExtensionInstanceField = set self::Extension|untypedExtensionInstanceField;
+ get untypedFinalExtensionInstanceField = get self::Extension|untypedFinalExtensionInstanceField;
+ static get untypedExtensionStaticField = get self::Extension|untypedExtensionStaticField;
+ static set untypedExtensionStaticField = set self::Extension|untypedExtensionStaticField;
+ static get untypedFinalExtensionStaticField = get self::Extension|untypedFinalExtensionStaticField;
+}
+@self::Annotation::•()
+external static get topLevelField() → core::int;
+external static set topLevelField(core::int #t17) → void;
+@self::Annotation::•()
+external static get finalTopLevelField() → core::int;
+external static get untypedTopLevelField() → dynamic;
+external static set untypedTopLevelField(dynamic #t18) → void;
+external static get untypedFinalTopLevelField() → dynamic;
+@self::Annotation::•()
+external static get Extension|extensionInstanceField() → core::int;
+external static set Extension|extensionInstanceField(core::int #t19) → void;
+@self::Annotation::•()
+external static get Extension|finalExtensionInstanceField() → core::int;
+@self::Annotation::•()
+external static get Extension|extensionStaticField() → core::int;
+external static set Extension|extensionStaticField(core::int #t20) → void;
+@self::Annotation::•()
+external static get Extension|finalExtensionStaticField() → core::int;
+external static get Extension|untypedExtensionInstanceField() → dynamic;
+external static set Extension|untypedExtensionInstanceField(dynamic #t21) → void;
+external static get Extension|untypedFinalExtensionInstanceField() → dynamic;
+external static get Extension|untypedExtensionStaticField() → dynamic;
+external static set Extension|untypedExtensionStaticField(dynamic #t22) → void;
+external static get Extension|untypedFinalExtensionStaticField() → dynamic;
+static method main() → dynamic
+ ;
diff --git a/pkg/front_end/testcases/nnbd/external_fields.dart.strong.expect b/pkg/front_end/testcases/nnbd/external_fields.dart.strong.expect
new file mode 100644
index 0000000..6c72fc2
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/external_fields.dart.strong.expect
@@ -0,0 +1,116 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class Annotation extends core::Object /*hasConstConstructor*/ {
+ const constructor •() → self::Annotation
+ : super core::Object::•()
+ ;
+}
+class A extends core::Object {
+ synthetic constructor •() → self::A
+ : super core::Object::•()
+ ;
+ @#C1
+ external get instanceField() → core::int;
+ external set instanceField(core::int #t1) → void;
+ @#C1
+ external get finalInstanceField() → core::int;
+ @#C1
+ external get covariantInstanceField() → core::num;
+ external set covariantInstanceField(covariant core::num #t2) → void;
+ @#C1
+ external static get staticField() → core::int;
+ external static set staticField(core::int #t3) → void;
+ @#C1
+ external static get finalStaticField() → core::int;
+ external get untypedInstanceField() → dynamic;
+ external set untypedInstanceField(dynamic #t4) → void;
+ external get untypedFinalInstanceField() → dynamic;
+ external get untypedCovariantInstanceField() → dynamic;
+ external set untypedCovariantInstanceField(covariant dynamic #t5) → void;
+ external static get untypedStaticField() → dynamic;
+ external static set untypedStaticField(dynamic #t6) → void;
+ external static get untypedFinalStaticField() → dynamic;
+}
+abstract class B extends core::Object /*isMixinDeclaration*/ {
+ @#C1
+ external get instanceField() → core::int;
+ external set instanceField(core::int #t7) → void;
+ @#C1
+ external get finalInstanceField() → core::int;
+ @#C1
+ external get covariantInstanceField() → core::num;
+ external set covariantInstanceField(covariant core::num #t8) → void;
+ @#C1
+ external static get staticField() → core::int;
+ external static set staticField(core::int #t9) → void;
+ @#C1
+ external static get finalStaticField() → core::int;
+ external get untypedInstanceField() → dynamic;
+ external set untypedInstanceField(dynamic #t10) → void;
+ external get untypedFinalInstanceField() → dynamic;
+ external get untypedCovariantInstanceField() → dynamic;
+ external set untypedCovariantInstanceField(covariant dynamic #t11) → void;
+ external static get untypedStaticField() → dynamic;
+ external static set untypedStaticField(dynamic #t12) → void;
+ external static get untypedFinalStaticField() → dynamic;
+}
+class C extends core::Object implements self::A {
+ synthetic constructor •() → self::C
+ : super core::Object::•()
+ ;
+ external get instanceField() → core::int;
+ external set instanceField(core::int #t13) → void;
+ external get finalInstanceField() → core::int;
+ external get covariantInstanceField() → core::num;
+ external set covariantInstanceField(covariant core::num #t14) → void;
+ external get untypedInstanceField() → dynamic;
+ external set untypedInstanceField(dynamic #t15) → void;
+ external get untypedFinalInstanceField() → dynamic;
+ external get untypedCovariantInstanceField() → dynamic;
+ external set untypedCovariantInstanceField(covariant dynamic #t16) → void;
+}
+extension Extension on self::A {
+ get extensionInstanceField = get self::Extension|extensionInstanceField;
+ set extensionInstanceField = set self::Extension|extensionInstanceField;
+ get finalExtensionInstanceField = get self::Extension|finalExtensionInstanceField;
+ static get extensionStaticField = get self::Extension|extensionStaticField;
+ static set extensionStaticField = set self::Extension|extensionStaticField;
+ static get finalExtensionStaticField = get self::Extension|finalExtensionStaticField;
+ get untypedExtensionInstanceField = get self::Extension|untypedExtensionInstanceField;
+ set untypedExtensionInstanceField = set self::Extension|untypedExtensionInstanceField;
+ get untypedFinalExtensionInstanceField = get self::Extension|untypedFinalExtensionInstanceField;
+ static get untypedExtensionStaticField = get self::Extension|untypedExtensionStaticField;
+ static set untypedExtensionStaticField = set self::Extension|untypedExtensionStaticField;
+ static get untypedFinalExtensionStaticField = get self::Extension|untypedFinalExtensionStaticField;
+}
+@#C1
+external static get topLevelField() → core::int;
+external static set topLevelField(core::int #t17) → void;
+@#C1
+external static get finalTopLevelField() → core::int;
+external static get untypedTopLevelField() → dynamic;
+external static set untypedTopLevelField(dynamic #t18) → void;
+external static get untypedFinalTopLevelField() → dynamic;
+@#C1
+external static get Extension|extensionInstanceField() → core::int;
+external static set Extension|extensionInstanceField(core::int #t19) → void;
+@#C1
+external static get Extension|finalExtensionInstanceField() → core::int;
+@#C1
+external static get Extension|extensionStaticField() → core::int;
+external static set Extension|extensionStaticField(core::int #t20) → void;
+@#C1
+external static get Extension|finalExtensionStaticField() → core::int;
+external static get Extension|untypedExtensionInstanceField() → dynamic;
+external static set Extension|untypedExtensionInstanceField(dynamic #t21) → void;
+external static get Extension|untypedFinalExtensionInstanceField() → dynamic;
+external static get Extension|untypedExtensionStaticField() → dynamic;
+external static set Extension|untypedExtensionStaticField(dynamic #t22) → void;
+external static get Extension|untypedFinalExtensionStaticField() → dynamic;
+static method main() → dynamic {}
+
+constants {
+ #C1 = self::Annotation {}
+}
diff --git a/pkg/front_end/testcases/nnbd/external_fields.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/external_fields.dart.strong.transformed.expect
new file mode 100644
index 0000000..6c72fc2
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/external_fields.dart.strong.transformed.expect
@@ -0,0 +1,116 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class Annotation extends core::Object /*hasConstConstructor*/ {
+ const constructor •() → self::Annotation
+ : super core::Object::•()
+ ;
+}
+class A extends core::Object {
+ synthetic constructor •() → self::A
+ : super core::Object::•()
+ ;
+ @#C1
+ external get instanceField() → core::int;
+ external set instanceField(core::int #t1) → void;
+ @#C1
+ external get finalInstanceField() → core::int;
+ @#C1
+ external get covariantInstanceField() → core::num;
+ external set covariantInstanceField(covariant core::num #t2) → void;
+ @#C1
+ external static get staticField() → core::int;
+ external static set staticField(core::int #t3) → void;
+ @#C1
+ external static get finalStaticField() → core::int;
+ external get untypedInstanceField() → dynamic;
+ external set untypedInstanceField(dynamic #t4) → void;
+ external get untypedFinalInstanceField() → dynamic;
+ external get untypedCovariantInstanceField() → dynamic;
+ external set untypedCovariantInstanceField(covariant dynamic #t5) → void;
+ external static get untypedStaticField() → dynamic;
+ external static set untypedStaticField(dynamic #t6) → void;
+ external static get untypedFinalStaticField() → dynamic;
+}
+abstract class B extends core::Object /*isMixinDeclaration*/ {
+ @#C1
+ external get instanceField() → core::int;
+ external set instanceField(core::int #t7) → void;
+ @#C1
+ external get finalInstanceField() → core::int;
+ @#C1
+ external get covariantInstanceField() → core::num;
+ external set covariantInstanceField(covariant core::num #t8) → void;
+ @#C1
+ external static get staticField() → core::int;
+ external static set staticField(core::int #t9) → void;
+ @#C1
+ external static get finalStaticField() → core::int;
+ external get untypedInstanceField() → dynamic;
+ external set untypedInstanceField(dynamic #t10) → void;
+ external get untypedFinalInstanceField() → dynamic;
+ external get untypedCovariantInstanceField() → dynamic;
+ external set untypedCovariantInstanceField(covariant dynamic #t11) → void;
+ external static get untypedStaticField() → dynamic;
+ external static set untypedStaticField(dynamic #t12) → void;
+ external static get untypedFinalStaticField() → dynamic;
+}
+class C extends core::Object implements self::A {
+ synthetic constructor •() → self::C
+ : super core::Object::•()
+ ;
+ external get instanceField() → core::int;
+ external set instanceField(core::int #t13) → void;
+ external get finalInstanceField() → core::int;
+ external get covariantInstanceField() → core::num;
+ external set covariantInstanceField(covariant core::num #t14) → void;
+ external get untypedInstanceField() → dynamic;
+ external set untypedInstanceField(dynamic #t15) → void;
+ external get untypedFinalInstanceField() → dynamic;
+ external get untypedCovariantInstanceField() → dynamic;
+ external set untypedCovariantInstanceField(covariant dynamic #t16) → void;
+}
+extension Extension on self::A {
+ get extensionInstanceField = get self::Extension|extensionInstanceField;
+ set extensionInstanceField = set self::Extension|extensionInstanceField;
+ get finalExtensionInstanceField = get self::Extension|finalExtensionInstanceField;
+ static get extensionStaticField = get self::Extension|extensionStaticField;
+ static set extensionStaticField = set self::Extension|extensionStaticField;
+ static get finalExtensionStaticField = get self::Extension|finalExtensionStaticField;
+ get untypedExtensionInstanceField = get self::Extension|untypedExtensionInstanceField;
+ set untypedExtensionInstanceField = set self::Extension|untypedExtensionInstanceField;
+ get untypedFinalExtensionInstanceField = get self::Extension|untypedFinalExtensionInstanceField;
+ static get untypedExtensionStaticField = get self::Extension|untypedExtensionStaticField;
+ static set untypedExtensionStaticField = set self::Extension|untypedExtensionStaticField;
+ static get untypedFinalExtensionStaticField = get self::Extension|untypedFinalExtensionStaticField;
+}
+@#C1
+external static get topLevelField() → core::int;
+external static set topLevelField(core::int #t17) → void;
+@#C1
+external static get finalTopLevelField() → core::int;
+external static get untypedTopLevelField() → dynamic;
+external static set untypedTopLevelField(dynamic #t18) → void;
+external static get untypedFinalTopLevelField() → dynamic;
+@#C1
+external static get Extension|extensionInstanceField() → core::int;
+external static set Extension|extensionInstanceField(core::int #t19) → void;
+@#C1
+external static get Extension|finalExtensionInstanceField() → core::int;
+@#C1
+external static get Extension|extensionStaticField() → core::int;
+external static set Extension|extensionStaticField(core::int #t20) → void;
+@#C1
+external static get Extension|finalExtensionStaticField() → core::int;
+external static get Extension|untypedExtensionInstanceField() → dynamic;
+external static set Extension|untypedExtensionInstanceField(dynamic #t21) → void;
+external static get Extension|untypedFinalExtensionInstanceField() → dynamic;
+external static get Extension|untypedExtensionStaticField() → dynamic;
+external static set Extension|untypedExtensionStaticField(dynamic #t22) → void;
+external static get Extension|untypedFinalExtensionStaticField() → dynamic;
+static method main() → dynamic {}
+
+constants {
+ #C1 = self::Annotation {}
+}
diff --git a/pkg/front_end/testcases/nnbd/external_fields.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd/external_fields.dart.textual_outline.expect
new file mode 100644
index 0000000..5566de8
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/external_fields.dart.textual_outline.expect
@@ -0,0 +1,54 @@
+class Annotation {
+ const Annotation();
+}
+@Annotation()
+external int topLevelField;
+@Annotation()
+external final int finalTopLevelField;
+external var untypedTopLevelField;
+external final untypedFinalTopLevelField;
+class A {
+ @Annotation()
+ external int instanceField;
+ @Annotation()
+ external final int finalInstanceField;
+ @Annotation()
+ external covariant num covariantInstanceField;
+ @Annotation()
+ external static int staticField;
+ @Annotation()
+ external static final int finalStaticField;
+ external var untypedInstanceField;
+ external final untypedFinalInstanceField;
+ external covariant var untypedCovariantInstanceField;
+ external static var untypedStaticField;
+ external static final untypedFinalStaticField;
+}
+mixin B {
+ @Annotation()
+ external int instanceField;
+ @Annotation()
+ external final int finalInstanceField;
+ @Annotation()
+ external covariant num covariantInstanceField;
+ @Annotation()
+ external static int staticField;
+ @Annotation()
+ external static final int finalStaticField;
+ external var untypedInstanceField;
+ external final untypedFinalInstanceField;
+ external covariant var untypedCovariantInstanceField;
+ external static var untypedStaticField;
+ external static final untypedFinalStaticField;
+}
+extension Extension ;
+on A (){ }
+class C implements A {
+ external var instanceField;
+ external final finalInstanceField;
+ external var covariantInstanceField;
+ external var untypedInstanceField;
+ external final untypedFinalInstanceField;
+ external var untypedCovariantInstanceField;
+}
+main() { }
diff --git a/pkg/front_end/testcases/nnbd/external_fields.dart.weak.expect b/pkg/front_end/testcases/nnbd/external_fields.dart.weak.expect
new file mode 100644
index 0000000..6c72fc2
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/external_fields.dart.weak.expect
@@ -0,0 +1,116 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class Annotation extends core::Object /*hasConstConstructor*/ {
+ const constructor •() → self::Annotation
+ : super core::Object::•()
+ ;
+}
+class A extends core::Object {
+ synthetic constructor •() → self::A
+ : super core::Object::•()
+ ;
+ @#C1
+ external get instanceField() → core::int;
+ external set instanceField(core::int #t1) → void;
+ @#C1
+ external get finalInstanceField() → core::int;
+ @#C1
+ external get covariantInstanceField() → core::num;
+ external set covariantInstanceField(covariant core::num #t2) → void;
+ @#C1
+ external static get staticField() → core::int;
+ external static set staticField(core::int #t3) → void;
+ @#C1
+ external static get finalStaticField() → core::int;
+ external get untypedInstanceField() → dynamic;
+ external set untypedInstanceField(dynamic #t4) → void;
+ external get untypedFinalInstanceField() → dynamic;
+ external get untypedCovariantInstanceField() → dynamic;
+ external set untypedCovariantInstanceField(covariant dynamic #t5) → void;
+ external static get untypedStaticField() → dynamic;
+ external static set untypedStaticField(dynamic #t6) → void;
+ external static get untypedFinalStaticField() → dynamic;
+}
+abstract class B extends core::Object /*isMixinDeclaration*/ {
+ @#C1
+ external get instanceField() → core::int;
+ external set instanceField(core::int #t7) → void;
+ @#C1
+ external get finalInstanceField() → core::int;
+ @#C1
+ external get covariantInstanceField() → core::num;
+ external set covariantInstanceField(covariant core::num #t8) → void;
+ @#C1
+ external static get staticField() → core::int;
+ external static set staticField(core::int #t9) → void;
+ @#C1
+ external static get finalStaticField() → core::int;
+ external get untypedInstanceField() → dynamic;
+ external set untypedInstanceField(dynamic #t10) → void;
+ external get untypedFinalInstanceField() → dynamic;
+ external get untypedCovariantInstanceField() → dynamic;
+ external set untypedCovariantInstanceField(covariant dynamic #t11) → void;
+ external static get untypedStaticField() → dynamic;
+ external static set untypedStaticField(dynamic #t12) → void;
+ external static get untypedFinalStaticField() → dynamic;
+}
+class C extends core::Object implements self::A {
+ synthetic constructor •() → self::C
+ : super core::Object::•()
+ ;
+ external get instanceField() → core::int;
+ external set instanceField(core::int #t13) → void;
+ external get finalInstanceField() → core::int;
+ external get covariantInstanceField() → core::num;
+ external set covariantInstanceField(covariant core::num #t14) → void;
+ external get untypedInstanceField() → dynamic;
+ external set untypedInstanceField(dynamic #t15) → void;
+ external get untypedFinalInstanceField() → dynamic;
+ external get untypedCovariantInstanceField() → dynamic;
+ external set untypedCovariantInstanceField(covariant dynamic #t16) → void;
+}
+extension Extension on self::A {
+ get extensionInstanceField = get self::Extension|extensionInstanceField;
+ set extensionInstanceField = set self::Extension|extensionInstanceField;
+ get finalExtensionInstanceField = get self::Extension|finalExtensionInstanceField;
+ static get extensionStaticField = get self::Extension|extensionStaticField;
+ static set extensionStaticField = set self::Extension|extensionStaticField;
+ static get finalExtensionStaticField = get self::Extension|finalExtensionStaticField;
+ get untypedExtensionInstanceField = get self::Extension|untypedExtensionInstanceField;
+ set untypedExtensionInstanceField = set self::Extension|untypedExtensionInstanceField;
+ get untypedFinalExtensionInstanceField = get self::Extension|untypedFinalExtensionInstanceField;
+ static get untypedExtensionStaticField = get self::Extension|untypedExtensionStaticField;
+ static set untypedExtensionStaticField = set self::Extension|untypedExtensionStaticField;
+ static get untypedFinalExtensionStaticField = get self::Extension|untypedFinalExtensionStaticField;
+}
+@#C1
+external static get topLevelField() → core::int;
+external static set topLevelField(core::int #t17) → void;
+@#C1
+external static get finalTopLevelField() → core::int;
+external static get untypedTopLevelField() → dynamic;
+external static set untypedTopLevelField(dynamic #t18) → void;
+external static get untypedFinalTopLevelField() → dynamic;
+@#C1
+external static get Extension|extensionInstanceField() → core::int;
+external static set Extension|extensionInstanceField(core::int #t19) → void;
+@#C1
+external static get Extension|finalExtensionInstanceField() → core::int;
+@#C1
+external static get Extension|extensionStaticField() → core::int;
+external static set Extension|extensionStaticField(core::int #t20) → void;
+@#C1
+external static get Extension|finalExtensionStaticField() → core::int;
+external static get Extension|untypedExtensionInstanceField() → dynamic;
+external static set Extension|untypedExtensionInstanceField(dynamic #t21) → void;
+external static get Extension|untypedFinalExtensionInstanceField() → dynamic;
+external static get Extension|untypedExtensionStaticField() → dynamic;
+external static set Extension|untypedExtensionStaticField(dynamic #t22) → void;
+external static get Extension|untypedFinalExtensionStaticField() → dynamic;
+static method main() → dynamic {}
+
+constants {
+ #C1 = self::Annotation {}
+}
diff --git a/pkg/front_end/testcases/nnbd/external_fields.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/external_fields.dart.weak.transformed.expect
new file mode 100644
index 0000000..6c72fc2
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/external_fields.dart.weak.transformed.expect
@@ -0,0 +1,116 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class Annotation extends core::Object /*hasConstConstructor*/ {
+ const constructor •() → self::Annotation
+ : super core::Object::•()
+ ;
+}
+class A extends core::Object {
+ synthetic constructor •() → self::A
+ : super core::Object::•()
+ ;
+ @#C1
+ external get instanceField() → core::int;
+ external set instanceField(core::int #t1) → void;
+ @#C1
+ external get finalInstanceField() → core::int;
+ @#C1
+ external get covariantInstanceField() → core::num;
+ external set covariantInstanceField(covariant core::num #t2) → void;
+ @#C1
+ external static get staticField() → core::int;
+ external static set staticField(core::int #t3) → void;
+ @#C1
+ external static get finalStaticField() → core::int;
+ external get untypedInstanceField() → dynamic;
+ external set untypedInstanceField(dynamic #t4) → void;
+ external get untypedFinalInstanceField() → dynamic;
+ external get untypedCovariantInstanceField() → dynamic;
+ external set untypedCovariantInstanceField(covariant dynamic #t5) → void;
+ external static get untypedStaticField() → dynamic;
+ external static set untypedStaticField(dynamic #t6) → void;
+ external static get untypedFinalStaticField() → dynamic;
+}
+abstract class B extends core::Object /*isMixinDeclaration*/ {
+ @#C1
+ external get instanceField() → core::int;
+ external set instanceField(core::int #t7) → void;
+ @#C1
+ external get finalInstanceField() → core::int;
+ @#C1
+ external get covariantInstanceField() → core::num;
+ external set covariantInstanceField(covariant core::num #t8) → void;
+ @#C1
+ external static get staticField() → core::int;
+ external static set staticField(core::int #t9) → void;
+ @#C1
+ external static get finalStaticField() → core::int;
+ external get untypedInstanceField() → dynamic;
+ external set untypedInstanceField(dynamic #t10) → void;
+ external get untypedFinalInstanceField() → dynamic;
+ external get untypedCovariantInstanceField() → dynamic;
+ external set untypedCovariantInstanceField(covariant dynamic #t11) → void;
+ external static get untypedStaticField() → dynamic;
+ external static set untypedStaticField(dynamic #t12) → void;
+ external static get untypedFinalStaticField() → dynamic;
+}
+class C extends core::Object implements self::A {
+ synthetic constructor •() → self::C
+ : super core::Object::•()
+ ;
+ external get instanceField() → core::int;
+ external set instanceField(core::int #t13) → void;
+ external get finalInstanceField() → core::int;
+ external get covariantInstanceField() → core::num;
+ external set covariantInstanceField(covariant core::num #t14) → void;
+ external get untypedInstanceField() → dynamic;
+ external set untypedInstanceField(dynamic #t15) → void;
+ external get untypedFinalInstanceField() → dynamic;
+ external get untypedCovariantInstanceField() → dynamic;
+ external set untypedCovariantInstanceField(covariant dynamic #t16) → void;
+}
+extension Extension on self::A {
+ get extensionInstanceField = get self::Extension|extensionInstanceField;
+ set extensionInstanceField = set self::Extension|extensionInstanceField;
+ get finalExtensionInstanceField = get self::Extension|finalExtensionInstanceField;
+ static get extensionStaticField = get self::Extension|extensionStaticField;
+ static set extensionStaticField = set self::Extension|extensionStaticField;
+ static get finalExtensionStaticField = get self::Extension|finalExtensionStaticField;
+ get untypedExtensionInstanceField = get self::Extension|untypedExtensionInstanceField;
+ set untypedExtensionInstanceField = set self::Extension|untypedExtensionInstanceField;
+ get untypedFinalExtensionInstanceField = get self::Extension|untypedFinalExtensionInstanceField;
+ static get untypedExtensionStaticField = get self::Extension|untypedExtensionStaticField;
+ static set untypedExtensionStaticField = set self::Extension|untypedExtensionStaticField;
+ static get untypedFinalExtensionStaticField = get self::Extension|untypedFinalExtensionStaticField;
+}
+@#C1
+external static get topLevelField() → core::int;
+external static set topLevelField(core::int #t17) → void;
+@#C1
+external static get finalTopLevelField() → core::int;
+external static get untypedTopLevelField() → dynamic;
+external static set untypedTopLevelField(dynamic #t18) → void;
+external static get untypedFinalTopLevelField() → dynamic;
+@#C1
+external static get Extension|extensionInstanceField() → core::int;
+external static set Extension|extensionInstanceField(core::int #t19) → void;
+@#C1
+external static get Extension|finalExtensionInstanceField() → core::int;
+@#C1
+external static get Extension|extensionStaticField() → core::int;
+external static set Extension|extensionStaticField(core::int #t20) → void;
+@#C1
+external static get Extension|finalExtensionStaticField() → core::int;
+external static get Extension|untypedExtensionInstanceField() → dynamic;
+external static set Extension|untypedExtensionInstanceField(dynamic #t21) → void;
+external static get Extension|untypedFinalExtensionInstanceField() → dynamic;
+external static get Extension|untypedExtensionStaticField() → dynamic;
+external static set Extension|untypedExtensionStaticField(dynamic #t22) → void;
+external static get Extension|untypedFinalExtensionStaticField() → dynamic;
+static method main() → dynamic {}
+
+constants {
+ #C1 = self::Annotation {}
+}
diff --git a/pkg/front_end/testcases/nnbd/generic_override.dart.outline.expect b/pkg/front_end/testcases/nnbd/generic_override.dart.outline.expect
deleted file mode 100644
index 2a9d802..0000000
--- a/pkg/front_end/testcases/nnbd/generic_override.dart.outline.expect
+++ /dev/null
@@ -1,195 +0,0 @@
-library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/generic_override.dart:39:8: Error: Declared bound 'Object?' of type variable 'T' of 'Class2.method4b' doesn't match the bound 'Object' on overridden method 'Class1.method4b'.
-// - 'Object' is from 'dart:core'.
-// void method4b<T extends Object?>(); // error
-// ^
-// pkg/front_end/testcases/nnbd/generic_override.dart:19:8: Context: This is the overridden method ('method4b').
-// void method4b<T extends Object>();
-// ^
-//
-// pkg/front_end/testcases/nnbd/generic_override.dart:40:8: Error: Declared bound 'Object' of type variable 'T' of 'Class2.method4c' doesn't match the bound 'Object?' on overridden method 'Class1.method4c'.
-// - 'Object' is from 'dart:core'.
-// void method4c<T extends Object>(); // error
-// ^
-// pkg/front_end/testcases/nnbd/generic_override.dart:20:8: Context: This is the overridden method ('method4c').
-// void method4c<T extends Object?>();
-// ^
-//
-// pkg/front_end/testcases/nnbd/generic_override.dart:43:8: Error: Declared bound 'Class1?' of type variable 'T' of 'Class2.method5b' doesn't match the bound 'Class1' on overridden method 'Class1.method5b'.
-// - 'Class1' is from 'pkg/front_end/testcases/nnbd/generic_override.dart'.
-// void method5b<T extends Class1?>(); // error
-// ^
-// pkg/front_end/testcases/nnbd/generic_override.dart:23:8: Context: This is the overridden method ('method5b').
-// void method5b<T extends Class1>();
-// ^
-//
-// pkg/front_end/testcases/nnbd/generic_override.dart:44:8: Error: Declared bound 'Class1' of type variable 'T' of 'Class2.method5c' doesn't match the bound 'Class1?' on overridden method 'Class1.method5c'.
-// - 'Class1' is from 'pkg/front_end/testcases/nnbd/generic_override.dart'.
-// void method5c<T extends Class1>(); // error
-// ^
-// pkg/front_end/testcases/nnbd/generic_override.dart:24:8: Context: This is the overridden method ('method5c').
-// void method5c<T extends Class1?>();
-// ^
-//
-import self as self;
-import "dart:core" as core;
-import "generic_override_lib.dart" as gen;
-
-import "org-dartlang-testcase:///generic_override_lib.dart";
-
-abstract class Class1 extends core::Object {
- synthetic constructor •() → self::Class1
- ;
- abstract method method1a<T extends core::Object? = dynamic>() → void;
- abstract method method1b<T extends core::Object? = dynamic>() → void;
- abstract method method1c<T extends core::Object? = dynamic>() → void;
- abstract method method2a<T extends core::Object? = core::Object?>() → void;
- abstract method method2b<T extends core::Object? = core::Object?>() → void;
- abstract method method2c<T extends core::Object? = core::Object?>() → void;
- abstract method method3a<T extends dynamic = dynamic>() → void;
- abstract method method3b<T extends dynamic = dynamic>() → void;
- abstract method method3c<T extends dynamic = dynamic>() → void;
- abstract method method4a<T extends core::Object = core::Object>() → void;
- abstract method method4b<T extends core::Object = core::Object>() → void;
- abstract method method4c<T extends core::Object? = core::Object?>() → void;
- abstract method method5a<T extends self::Class1 = self::Class1>() → void;
- abstract method method5b<T extends self::Class1 = self::Class1>() → void;
- abstract method method5c<T extends self::Class1? = self::Class1?>() → void;
-}
-abstract class Class2 extends self::Class1 {
- synthetic constructor •() → self::Class2
- ;
- abstract method method1a<T extends core::Object? = dynamic>() → void;
- abstract method method1b<T extends core::Object? = core::Object?>() → void;
- abstract method method1c<T extends dynamic = dynamic>() → void;
- abstract method method2a<T extends core::Object? = dynamic>() → void;
- abstract method method2b<T extends core::Object? = core::Object?>() → void;
- abstract method method2c<T extends dynamic = dynamic>() → void;
- abstract method method3a<T extends core::Object? = dynamic>() → void;
- abstract method method3b<T extends core::Object? = core::Object?>() → void;
- abstract method method3c<T extends dynamic = dynamic>() → void;
- abstract method method4a<T extends core::Object = core::Object>() → void;
- abstract method method4b<T extends core::Object? = core::Object?>() → void;
- abstract method method4c<T extends core::Object = core::Object>() → void;
- abstract method method5a<T extends self::Class1 = self::Class1>() → void;
- abstract method method5b<T extends self::Class1? = self::Class1?>() → void;
- abstract method method5c<T extends self::Class1 = self::Class1>() → void;
-}
-abstract class Class3 extends gen::LegacyClass1 {
- synthetic constructor •() → self::Class3
- ;
- abstract method method1a<T extends core::Object? = dynamic>() → void;
- abstract method method1b<T extends core::Object? = core::Object?>() → void;
- abstract method method1c<T extends dynamic = dynamic>() → void;
- abstract method method2a<T extends core::Object? = dynamic>() → void;
- abstract method method2b<T extends core::Object? = core::Object?>() → void;
- abstract method method2c<T extends dynamic = dynamic>() → void;
- abstract method method3a<T extends core::Object? = dynamic>() → void;
- abstract method method3b<T extends core::Object? = core::Object?>() → void;
- abstract method method3c<T extends dynamic = dynamic>() → void;
- abstract method method4a<T extends core::Object = core::Object>() → void;
- abstract method method4b<T extends core::Object? = core::Object?>() → void;
- abstract method method4c<T extends core::Object = core::Object>() → void;
- abstract method method5a<T extends self::Class1 = self::Class1>() → void;
- abstract method method5b<T extends self::Class1? = self::Class1?>() → void;
- abstract method method5c<T extends self::Class1 = self::Class1>() → void;
-}
-static method main() → dynamic
- ;
-
-library;
-import self as gen;
-import "dart:core" as core;
-import "generic_override.dart" as self;
-
-import "org-dartlang-testcase:///generic_override.dart";
-
-abstract class LegacyClass1 extends core::Object {
- synthetic constructor •() → gen::LegacyClass1*
- ;
- abstract method method1a<T extends core::Object* = dynamic>() → void;
- abstract method method1b<T extends core::Object* = dynamic>() → void;
- abstract method method1c<T extends core::Object* = dynamic>() → void;
- abstract method method2a<T extends core::Object* = core::Object*>() → void;
- abstract method method2b<T extends core::Object* = core::Object*>() → void;
- abstract method method2c<T extends core::Object* = core::Object*>() → void;
- abstract method method3a<T extends dynamic = dynamic>() → void;
- abstract method method3b<T extends dynamic = dynamic>() → void;
- abstract method method3c<T extends dynamic = dynamic>() → void;
- abstract method method4a<T extends core::Object* = core::Object*>() → void;
- abstract method method4b<T extends core::Object* = core::Object*>() → void;
- abstract method method4c<T extends core::Object* = core::Object*>() → void;
- abstract method method5a<T extends self::Class1* = self::Class1*>() → void;
- abstract method method5b<T extends self::Class1* = self::Class1*>() → void;
- abstract method method5c<T extends self::Class1* = self::Class1*>() → void;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-abstract class LegacyClass2 extends self::Class1 {
- synthetic constructor •() → gen::LegacyClass2*
- ;
- abstract method method1a<T extends core::Object* = dynamic>() → void;
- abstract method method1b<T extends core::Object* = core::Object*>() → void;
- abstract method method1c<T extends dynamic = dynamic>() → void;
- abstract method method2a<T extends core::Object* = dynamic>() → void;
- abstract method method2b<T extends core::Object* = core::Object*>() → void;
- abstract method method2c<T extends dynamic = dynamic>() → void;
- abstract method method3a<T extends core::Object* = dynamic>() → void;
- abstract method method3b<T extends core::Object* = core::Object*>() → void;
- abstract method method3c<T extends dynamic = dynamic>() → void;
- abstract method method4a<T extends core::Object* = core::Object*>() → void;
- abstract method method4b<T extends core::Object* = core::Object*>() → void;
- abstract method method4c<T extends core::Object* = core::Object*>() → void;
- abstract method method5a<T extends self::Class1* = self::Class1*>() → void;
- abstract method method5b<T extends self::Class1* = self::Class1*>() → void;
- abstract method method5c<T extends self::Class1* = self::Class1*>() → void;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-abstract class LegacyClass3 extends self::Class1 {
- synthetic constructor •() → gen::LegacyClass3*
- ;
- abstract member-signature method method1a<T extends core::Object* = dynamic>() → void;
- abstract member-signature method method1b<T extends core::Object* = dynamic>() → void;
- abstract member-signature method method1c<T extends core::Object* = dynamic>() → void;
- abstract member-signature method method2a<T extends core::Object* = core::Object*>() → void;
- abstract member-signature method method2b<T extends core::Object* = core::Object*>() → void;
- abstract member-signature method method2c<T extends core::Object* = core::Object*>() → void;
- abstract member-signature method method4a<T extends core::Object* = core::Object*>() → void;
- abstract member-signature method method4b<T extends core::Object* = core::Object*>() → void;
- abstract member-signature method method4c<T extends core::Object* = core::Object*>() → void;
- abstract member-signature method method5a<T extends self::Class1* = self::Class1*>() → void;
- abstract member-signature method method5b<T extends self::Class1* = self::Class1*>() → void;
- abstract member-signature method method5c<T extends self::Class1* = self::Class1*>() → void;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-static method main() → dynamic
- ;
diff --git a/pkg/front_end/testcases/nnbd/generic_override.dart.strong.expect b/pkg/front_end/testcases/nnbd/generic_override.dart.strong.expect
deleted file mode 100644
index f6b9ee8..0000000
--- a/pkg/front_end/testcases/nnbd/generic_override.dart.strong.expect
+++ /dev/null
@@ -1,199 +0,0 @@
-library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/generic_override.dart:39:8: Error: Declared bound 'Object?' of type variable 'T' of 'Class2.method4b' doesn't match the bound 'Object' on overridden method 'Class1.method4b'.
-// - 'Object' is from 'dart:core'.
-// void method4b<T extends Object?>(); // error
-// ^
-// pkg/front_end/testcases/nnbd/generic_override.dart:19:8: Context: This is the overridden method ('method4b').
-// void method4b<T extends Object>();
-// ^
-//
-// pkg/front_end/testcases/nnbd/generic_override.dart:40:8: Error: Declared bound 'Object' of type variable 'T' of 'Class2.method4c' doesn't match the bound 'Object?' on overridden method 'Class1.method4c'.
-// - 'Object' is from 'dart:core'.
-// void method4c<T extends Object>(); // error
-// ^
-// pkg/front_end/testcases/nnbd/generic_override.dart:20:8: Context: This is the overridden method ('method4c').
-// void method4c<T extends Object?>();
-// ^
-//
-// pkg/front_end/testcases/nnbd/generic_override.dart:43:8: Error: Declared bound 'Class1?' of type variable 'T' of 'Class2.method5b' doesn't match the bound 'Class1' on overridden method 'Class1.method5b'.
-// - 'Class1' is from 'pkg/front_end/testcases/nnbd/generic_override.dart'.
-// void method5b<T extends Class1?>(); // error
-// ^
-// pkg/front_end/testcases/nnbd/generic_override.dart:23:8: Context: This is the overridden method ('method5b').
-// void method5b<T extends Class1>();
-// ^
-//
-// pkg/front_end/testcases/nnbd/generic_override.dart:44:8: Error: Declared bound 'Class1' of type variable 'T' of 'Class2.method5c' doesn't match the bound 'Class1?' on overridden method 'Class1.method5c'.
-// - 'Class1' is from 'pkg/front_end/testcases/nnbd/generic_override.dart'.
-// void method5c<T extends Class1>(); // error
-// ^
-// pkg/front_end/testcases/nnbd/generic_override.dart:24:8: Context: This is the overridden method ('method5c').
-// void method5c<T extends Class1?>();
-// ^
-//
-import self as self;
-import "dart:core" as core;
-import "generic_override_lib.dart" as gen;
-
-import "org-dartlang-testcase:///generic_override_lib.dart";
-
-abstract class Class1 extends core::Object {
- synthetic constructor •() → self::Class1
- : super core::Object::•()
- ;
- abstract method method1a<T extends core::Object? = dynamic>() → void;
- abstract method method1b<T extends core::Object? = dynamic>() → void;
- abstract method method1c<T extends core::Object? = dynamic>() → void;
- abstract method method2a<T extends core::Object? = core::Object?>() → void;
- abstract method method2b<T extends core::Object? = core::Object?>() → void;
- abstract method method2c<T extends core::Object? = core::Object?>() → void;
- abstract method method3a<T extends dynamic = dynamic>() → void;
- abstract method method3b<T extends dynamic = dynamic>() → void;
- abstract method method3c<T extends dynamic = dynamic>() → void;
- abstract method method4a<T extends core::Object = core::Object>() → void;
- abstract method method4b<T extends core::Object = core::Object>() → void;
- abstract method method4c<T extends core::Object? = core::Object?>() → void;
- abstract method method5a<T extends self::Class1 = self::Class1>() → void;
- abstract method method5b<T extends self::Class1 = self::Class1>() → void;
- abstract method method5c<T extends self::Class1? = self::Class1?>() → void;
-}
-abstract class Class2 extends self::Class1 {
- synthetic constructor •() → self::Class2
- : super self::Class1::•()
- ;
- abstract method method1a<T extends core::Object? = dynamic>() → void;
- abstract method method1b<T extends core::Object? = core::Object?>() → void;
- abstract method method1c<T extends dynamic = dynamic>() → void;
- abstract method method2a<T extends core::Object? = dynamic>() → void;
- abstract method method2b<T extends core::Object? = core::Object?>() → void;
- abstract method method2c<T extends dynamic = dynamic>() → void;
- abstract method method3a<T extends core::Object? = dynamic>() → void;
- abstract method method3b<T extends core::Object? = core::Object?>() → void;
- abstract method method3c<T extends dynamic = dynamic>() → void;
- abstract method method4a<T extends core::Object = core::Object>() → void;
- abstract method method4b<T extends core::Object? = core::Object?>() → void;
- abstract method method4c<T extends core::Object = core::Object>() → void;
- abstract method method5a<T extends self::Class1 = self::Class1>() → void;
- abstract method method5b<T extends self::Class1? = self::Class1?>() → void;
- abstract method method5c<T extends self::Class1 = self::Class1>() → void;
-}
-abstract class Class3 extends gen::LegacyClass1 {
- synthetic constructor •() → self::Class3
- : super gen::LegacyClass1::•()
- ;
- abstract method method1a<T extends core::Object? = dynamic>() → void;
- abstract method method1b<T extends core::Object? = core::Object?>() → void;
- abstract method method1c<T extends dynamic = dynamic>() → void;
- abstract method method2a<T extends core::Object? = dynamic>() → void;
- abstract method method2b<T extends core::Object? = core::Object?>() → void;
- abstract method method2c<T extends dynamic = dynamic>() → void;
- abstract method method3a<T extends core::Object? = dynamic>() → void;
- abstract method method3b<T extends core::Object? = core::Object?>() → void;
- abstract method method3c<T extends dynamic = dynamic>() → void;
- abstract method method4a<T extends core::Object = core::Object>() → void;
- abstract method method4b<T extends core::Object? = core::Object?>() → void;
- abstract method method4c<T extends core::Object = core::Object>() → void;
- abstract method method5a<T extends self::Class1 = self::Class1>() → void;
- abstract method method5b<T extends self::Class1? = self::Class1?>() → void;
- abstract method method5c<T extends self::Class1 = self::Class1>() → void;
-}
-static method main() → dynamic {}
-
-library;
-import self as gen;
-import "dart:core" as core;
-import "generic_override.dart" as self;
-
-import "org-dartlang-testcase:///generic_override.dart";
-
-abstract class LegacyClass1 extends core::Object {
- synthetic constructor •() → gen::LegacyClass1*
- : super core::Object::•()
- ;
- abstract method method1a<T extends core::Object* = dynamic>() → void;
- abstract method method1b<T extends core::Object* = dynamic>() → void;
- abstract method method1c<T extends core::Object* = dynamic>() → void;
- abstract method method2a<T extends core::Object* = core::Object*>() → void;
- abstract method method2b<T extends core::Object* = core::Object*>() → void;
- abstract method method2c<T extends core::Object* = core::Object*>() → void;
- abstract method method3a<T extends dynamic = dynamic>() → void;
- abstract method method3b<T extends dynamic = dynamic>() → void;
- abstract method method3c<T extends dynamic = dynamic>() → void;
- abstract method method4a<T extends core::Object* = core::Object*>() → void;
- abstract method method4b<T extends core::Object* = core::Object*>() → void;
- abstract method method4c<T extends core::Object* = core::Object*>() → void;
- abstract method method5a<T extends self::Class1* = self::Class1*>() → void;
- abstract method method5b<T extends self::Class1* = self::Class1*>() → void;
- abstract method method5c<T extends self::Class1* = self::Class1*>() → void;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-abstract class LegacyClass2 extends self::Class1 {
- synthetic constructor •() → gen::LegacyClass2*
- : super self::Class1::•()
- ;
- abstract method method1a<T extends core::Object* = dynamic>() → void;
- abstract method method1b<T extends core::Object* = core::Object*>() → void;
- abstract method method1c<T extends dynamic = dynamic>() → void;
- abstract method method2a<T extends core::Object* = dynamic>() → void;
- abstract method method2b<T extends core::Object* = core::Object*>() → void;
- abstract method method2c<T extends dynamic = dynamic>() → void;
- abstract method method3a<T extends core::Object* = dynamic>() → void;
- abstract method method3b<T extends core::Object* = core::Object*>() → void;
- abstract method method3c<T extends dynamic = dynamic>() → void;
- abstract method method4a<T extends core::Object* = core::Object*>() → void;
- abstract method method4b<T extends core::Object* = core::Object*>() → void;
- abstract method method4c<T extends core::Object* = core::Object*>() → void;
- abstract method method5a<T extends self::Class1* = self::Class1*>() → void;
- abstract method method5b<T extends self::Class1* = self::Class1*>() → void;
- abstract method method5c<T extends self::Class1* = self::Class1*>() → void;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-abstract class LegacyClass3 extends self::Class1 {
- synthetic constructor •() → gen::LegacyClass3*
- : super self::Class1::•()
- ;
- abstract member-signature method method1a<T extends core::Object* = dynamic>() → void;
- abstract member-signature method method1b<T extends core::Object* = dynamic>() → void;
- abstract member-signature method method1c<T extends core::Object* = dynamic>() → void;
- abstract member-signature method method2a<T extends core::Object* = core::Object*>() → void;
- abstract member-signature method method2b<T extends core::Object* = core::Object*>() → void;
- abstract member-signature method method2c<T extends core::Object* = core::Object*>() → void;
- abstract member-signature method method4a<T extends core::Object* = core::Object*>() → void;
- abstract member-signature method method4b<T extends core::Object* = core::Object*>() → void;
- abstract member-signature method method4c<T extends core::Object* = core::Object*>() → void;
- abstract member-signature method method5a<T extends self::Class1* = self::Class1*>() → void;
- abstract member-signature method method5b<T extends self::Class1* = self::Class1*>() → void;
- abstract member-signature method method5c<T extends self::Class1* = self::Class1*>() → void;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/generic_override.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/generic_override.dart.strong.transformed.expect
deleted file mode 100644
index f6b9ee8..0000000
--- a/pkg/front_end/testcases/nnbd/generic_override.dart.strong.transformed.expect
+++ /dev/null
@@ -1,199 +0,0 @@
-library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/generic_override.dart:39:8: Error: Declared bound 'Object?' of type variable 'T' of 'Class2.method4b' doesn't match the bound 'Object' on overridden method 'Class1.method4b'.
-// - 'Object' is from 'dart:core'.
-// void method4b<T extends Object?>(); // error
-// ^
-// pkg/front_end/testcases/nnbd/generic_override.dart:19:8: Context: This is the overridden method ('method4b').
-// void method4b<T extends Object>();
-// ^
-//
-// pkg/front_end/testcases/nnbd/generic_override.dart:40:8: Error: Declared bound 'Object' of type variable 'T' of 'Class2.method4c' doesn't match the bound 'Object?' on overridden method 'Class1.method4c'.
-// - 'Object' is from 'dart:core'.
-// void method4c<T extends Object>(); // error
-// ^
-// pkg/front_end/testcases/nnbd/generic_override.dart:20:8: Context: This is the overridden method ('method4c').
-// void method4c<T extends Object?>();
-// ^
-//
-// pkg/front_end/testcases/nnbd/generic_override.dart:43:8: Error: Declared bound 'Class1?' of type variable 'T' of 'Class2.method5b' doesn't match the bound 'Class1' on overridden method 'Class1.method5b'.
-// - 'Class1' is from 'pkg/front_end/testcases/nnbd/generic_override.dart'.
-// void method5b<T extends Class1?>(); // error
-// ^
-// pkg/front_end/testcases/nnbd/generic_override.dart:23:8: Context: This is the overridden method ('method5b').
-// void method5b<T extends Class1>();
-// ^
-//
-// pkg/front_end/testcases/nnbd/generic_override.dart:44:8: Error: Declared bound 'Class1' of type variable 'T' of 'Class2.method5c' doesn't match the bound 'Class1?' on overridden method 'Class1.method5c'.
-// - 'Class1' is from 'pkg/front_end/testcases/nnbd/generic_override.dart'.
-// void method5c<T extends Class1>(); // error
-// ^
-// pkg/front_end/testcases/nnbd/generic_override.dart:24:8: Context: This is the overridden method ('method5c').
-// void method5c<T extends Class1?>();
-// ^
-//
-import self as self;
-import "dart:core" as core;
-import "generic_override_lib.dart" as gen;
-
-import "org-dartlang-testcase:///generic_override_lib.dart";
-
-abstract class Class1 extends core::Object {
- synthetic constructor •() → self::Class1
- : super core::Object::•()
- ;
- abstract method method1a<T extends core::Object? = dynamic>() → void;
- abstract method method1b<T extends core::Object? = dynamic>() → void;
- abstract method method1c<T extends core::Object? = dynamic>() → void;
- abstract method method2a<T extends core::Object? = core::Object?>() → void;
- abstract method method2b<T extends core::Object? = core::Object?>() → void;
- abstract method method2c<T extends core::Object? = core::Object?>() → void;
- abstract method method3a<T extends dynamic = dynamic>() → void;
- abstract method method3b<T extends dynamic = dynamic>() → void;
- abstract method method3c<T extends dynamic = dynamic>() → void;
- abstract method method4a<T extends core::Object = core::Object>() → void;
- abstract method method4b<T extends core::Object = core::Object>() → void;
- abstract method method4c<T extends core::Object? = core::Object?>() → void;
- abstract method method5a<T extends self::Class1 = self::Class1>() → void;
- abstract method method5b<T extends self::Class1 = self::Class1>() → void;
- abstract method method5c<T extends self::Class1? = self::Class1?>() → void;
-}
-abstract class Class2 extends self::Class1 {
- synthetic constructor •() → self::Class2
- : super self::Class1::•()
- ;
- abstract method method1a<T extends core::Object? = dynamic>() → void;
- abstract method method1b<T extends core::Object? = core::Object?>() → void;
- abstract method method1c<T extends dynamic = dynamic>() → void;
- abstract method method2a<T extends core::Object? = dynamic>() → void;
- abstract method method2b<T extends core::Object? = core::Object?>() → void;
- abstract method method2c<T extends dynamic = dynamic>() → void;
- abstract method method3a<T extends core::Object? = dynamic>() → void;
- abstract method method3b<T extends core::Object? = core::Object?>() → void;
- abstract method method3c<T extends dynamic = dynamic>() → void;
- abstract method method4a<T extends core::Object = core::Object>() → void;
- abstract method method4b<T extends core::Object? = core::Object?>() → void;
- abstract method method4c<T extends core::Object = core::Object>() → void;
- abstract method method5a<T extends self::Class1 = self::Class1>() → void;
- abstract method method5b<T extends self::Class1? = self::Class1?>() → void;
- abstract method method5c<T extends self::Class1 = self::Class1>() → void;
-}
-abstract class Class3 extends gen::LegacyClass1 {
- synthetic constructor •() → self::Class3
- : super gen::LegacyClass1::•()
- ;
- abstract method method1a<T extends core::Object? = dynamic>() → void;
- abstract method method1b<T extends core::Object? = core::Object?>() → void;
- abstract method method1c<T extends dynamic = dynamic>() → void;
- abstract method method2a<T extends core::Object? = dynamic>() → void;
- abstract method method2b<T extends core::Object? = core::Object?>() → void;
- abstract method method2c<T extends dynamic = dynamic>() → void;
- abstract method method3a<T extends core::Object? = dynamic>() → void;
- abstract method method3b<T extends core::Object? = core::Object?>() → void;
- abstract method method3c<T extends dynamic = dynamic>() → void;
- abstract method method4a<T extends core::Object = core::Object>() → void;
- abstract method method4b<T extends core::Object? = core::Object?>() → void;
- abstract method method4c<T extends core::Object = core::Object>() → void;
- abstract method method5a<T extends self::Class1 = self::Class1>() → void;
- abstract method method5b<T extends self::Class1? = self::Class1?>() → void;
- abstract method method5c<T extends self::Class1 = self::Class1>() → void;
-}
-static method main() → dynamic {}
-
-library;
-import self as gen;
-import "dart:core" as core;
-import "generic_override.dart" as self;
-
-import "org-dartlang-testcase:///generic_override.dart";
-
-abstract class LegacyClass1 extends core::Object {
- synthetic constructor •() → gen::LegacyClass1*
- : super core::Object::•()
- ;
- abstract method method1a<T extends core::Object* = dynamic>() → void;
- abstract method method1b<T extends core::Object* = dynamic>() → void;
- abstract method method1c<T extends core::Object* = dynamic>() → void;
- abstract method method2a<T extends core::Object* = core::Object*>() → void;
- abstract method method2b<T extends core::Object* = core::Object*>() → void;
- abstract method method2c<T extends core::Object* = core::Object*>() → void;
- abstract method method3a<T extends dynamic = dynamic>() → void;
- abstract method method3b<T extends dynamic = dynamic>() → void;
- abstract method method3c<T extends dynamic = dynamic>() → void;
- abstract method method4a<T extends core::Object* = core::Object*>() → void;
- abstract method method4b<T extends core::Object* = core::Object*>() → void;
- abstract method method4c<T extends core::Object* = core::Object*>() → void;
- abstract method method5a<T extends self::Class1* = self::Class1*>() → void;
- abstract method method5b<T extends self::Class1* = self::Class1*>() → void;
- abstract method method5c<T extends self::Class1* = self::Class1*>() → void;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-abstract class LegacyClass2 extends self::Class1 {
- synthetic constructor •() → gen::LegacyClass2*
- : super self::Class1::•()
- ;
- abstract method method1a<T extends core::Object* = dynamic>() → void;
- abstract method method1b<T extends core::Object* = core::Object*>() → void;
- abstract method method1c<T extends dynamic = dynamic>() → void;
- abstract method method2a<T extends core::Object* = dynamic>() → void;
- abstract method method2b<T extends core::Object* = core::Object*>() → void;
- abstract method method2c<T extends dynamic = dynamic>() → void;
- abstract method method3a<T extends core::Object* = dynamic>() → void;
- abstract method method3b<T extends core::Object* = core::Object*>() → void;
- abstract method method3c<T extends dynamic = dynamic>() → void;
- abstract method method4a<T extends core::Object* = core::Object*>() → void;
- abstract method method4b<T extends core::Object* = core::Object*>() → void;
- abstract method method4c<T extends core::Object* = core::Object*>() → void;
- abstract method method5a<T extends self::Class1* = self::Class1*>() → void;
- abstract method method5b<T extends self::Class1* = self::Class1*>() → void;
- abstract method method5c<T extends self::Class1* = self::Class1*>() → void;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-abstract class LegacyClass3 extends self::Class1 {
- synthetic constructor •() → gen::LegacyClass3*
- : super self::Class1::•()
- ;
- abstract member-signature method method1a<T extends core::Object* = dynamic>() → void;
- abstract member-signature method method1b<T extends core::Object* = dynamic>() → void;
- abstract member-signature method method1c<T extends core::Object* = dynamic>() → void;
- abstract member-signature method method2a<T extends core::Object* = core::Object*>() → void;
- abstract member-signature method method2b<T extends core::Object* = core::Object*>() → void;
- abstract member-signature method method2c<T extends core::Object* = core::Object*>() → void;
- abstract member-signature method method4a<T extends core::Object* = core::Object*>() → void;
- abstract member-signature method method4b<T extends core::Object* = core::Object*>() → void;
- abstract member-signature method method4c<T extends core::Object* = core::Object*>() → void;
- abstract member-signature method method5a<T extends self::Class1* = self::Class1*>() → void;
- abstract member-signature method method5b<T extends self::Class1* = self::Class1*>() → void;
- abstract member-signature method method5c<T extends self::Class1* = self::Class1*>() → void;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in.dart.outline.expect b/pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in.dart.outline.expect
deleted file mode 100644
index 86acb31..0000000
--- a/pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in.dart.outline.expect
+++ /dev/null
@@ -1,62 +0,0 @@
-library;
-import self as self;
-import "dart:core" as core;
-import "infer_constraints_from_opt_in_lib.dart" as inf;
-
-import "org-dartlang-testcase:///infer_constraints_from_opt_in_lib.dart";
-
-abstract class A extends core::Object {
- synthetic constructor •() → self::A*
- ;
- method baz(inf::B* b) → dynamic
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-static method main() → dynamic
- ;
-
-library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in_lib.dart:11:9: Error: Field 'field5' should be initialized because its type 'C<int?>' doesn't allow null.
-// - 'C' is from 'pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in_lib.dart'.
-// C<int?> field5;
-// ^^^^^^
-//
-// pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in_lib.dart:13:5: Error: Field 'field7' should be initialized because its type 'int' doesn't allow null.
-// int field7;
-// ^^^^^^
-//
-import self as inf;
-import "dart:core" as core;
-
-class C<T extends core::Object? = dynamic> extends core::Object {
- synthetic constructor •() → inf::C<inf::C::T%>
- ;
-}
-abstract class B extends core::Object {
- synthetic constructor •() → inf::B
- ;
- abstract method bar<X extends core::List<core::int?>? = core::List<core::int?>?>() → inf::B::bar::X%;
- abstract method foo(core::List<core::int> list) → dynamic;
-}
-static field inf::C<dynamic> field1;
-static field inf::C<dynamic>? field2;
-static field inf::C<core::int> field3;
-static field inf::C<core::int>? field4;
-static field inf::C<core::int?> field5;
-static field inf::C<core::int?>? field6;
-static field core::int field7;
-static field core::int? field8;
-static method method() → dynamic
- ;
diff --git a/pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in.dart.strong.expect b/pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in.dart.strong.expect
deleted file mode 100644
index e98a6278..0000000
--- a/pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in.dart.strong.expect
+++ /dev/null
@@ -1,120 +0,0 @@
-library;
-import self as self;
-import "dart:core" as core;
-import "infer_constraints_from_opt_in_lib.dart" as inf;
-import "dart:collection" as col;
-
-import "org-dartlang-testcase:///infer_constraints_from_opt_in_lib.dart";
-
-abstract class A extends core::Object {
- synthetic constructor •() → self::A*
- : super core::Object::•()
- ;
- method baz(inf::B* b) → dynamic {
- b.{inf::B::foo}(b.{inf::B::bar}<core::List<core::int*>*>());
- }
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-static method main() → dynamic {
- core::List<dynamic>* local0 = <dynamic>[];
- core::List<inf::C<dynamic>*>* local1a = <inf::C<dynamic>*>[inf::field1];
- core::List<inf::C<dynamic>*>* local1b = <inf::C<dynamic>*>[inf::field2];
- core::List<inf::C<core::int*>*>* local1c = <inf::C<core::int*>*>[inf::field3];
- core::List<inf::C<core::int*>*>* local1d = <inf::C<core::int*>*>[inf::field4];
- core::List<inf::C<core::int*>*>* local1e = <inf::C<core::int*>*>[inf::field5];
- core::List<inf::C<core::int*>*>* local1f = <inf::C<core::int*>*>[inf::field6];
- core::List<core::int*>* local1g = <core::int*>[inf::field7];
- core::List<core::int*>* local1h = <core::int*>[inf::field8];
- core::List<core::Null?>* local1i = <core::Null?>[null];
- core::Set<inf::C<dynamic>*>* local2a = let final core::Set<inf::C<dynamic>*>* #t1 = col::LinkedHashSet::•<inf::C<dynamic>*>() in let final dynamic #t2 = #t1.{core::Set::add}(inf::field1) in let final dynamic #t3 = #t1.{core::Set::add}(null) in #t1;
- core::Set<inf::C<dynamic>*>* local2b = let final core::Set<inf::C<dynamic>*>* #t4 = col::LinkedHashSet::•<inf::C<dynamic>*>() in let final dynamic #t5 = #t4.{core::Set::add}(inf::field2) in let final dynamic #t6 = #t4.{core::Set::add}(null) in #t4;
- core::Set<inf::C<core::int*>*>* local2c = let final core::Set<inf::C<core::int*>*>* #t7 = col::LinkedHashSet::•<inf::C<core::int*>*>() in let final dynamic #t8 = #t7.{core::Set::add}(inf::field3) in let final dynamic #t9 = #t7.{core::Set::add}(null) in #t7;
- core::Set<inf::C<core::int*>*>* local2d = let final core::Set<inf::C<core::int*>*>* #t10 = col::LinkedHashSet::•<inf::C<core::int*>*>() in let final dynamic #t11 = #t10.{core::Set::add}(inf::field4) in let final dynamic #t12 = #t10.{core::Set::add}(null) in #t10;
- core::Set<inf::C<core::int*>*>* local2e = let final core::Set<inf::C<core::int*>*>* #t13 = col::LinkedHashSet::•<inf::C<core::int*>*>() in let final dynamic #t14 = #t13.{core::Set::add}(inf::field5) in let final dynamic #t15 = #t13.{core::Set::add}(null) in #t13;
- core::Set<inf::C<core::int*>*>* local2f = let final core::Set<inf::C<core::int*>*>* #t16 = col::LinkedHashSet::•<inf::C<core::int*>*>() in let final dynamic #t17 = #t16.{core::Set::add}(inf::field6) in let final dynamic #t18 = #t16.{core::Set::add}(null) in #t16;
- core::Set<core::int*>* local2g = let final core::Set<core::int*>* #t19 = col::LinkedHashSet::•<core::int*>() in let final dynamic #t20 = #t19.{core::Set::add}(inf::field7) in let final dynamic #t21 = #t19.{core::Set::add}(null) in #t19;
- core::Set<core::int*>* local2h = let final core::Set<core::int*>* #t22 = col::LinkedHashSet::•<core::int*>() in let final dynamic #t23 = #t22.{core::Set::add}(inf::field8) in let final dynamic #t24 = #t22.{core::Set::add}(null) in #t22;
- core::Set<inf::C<dynamic>*>* local3a = let final core::Set<inf::C<dynamic>*>* #t25 = col::LinkedHashSet::•<inf::C<dynamic>*>() in let final dynamic #t26 = #t25.{core::Set::add}(null) in let final dynamic #t27 = #t25.{core::Set::add}(inf::field1) in #t25;
- core::Set<inf::C<dynamic>*>* local3b = let final core::Set<inf::C<dynamic>*>* #t28 = col::LinkedHashSet::•<inf::C<dynamic>*>() in let final dynamic #t29 = #t28.{core::Set::add}(null) in let final dynamic #t30 = #t28.{core::Set::add}(inf::field2) in #t28;
- core::Set<inf::C<core::int*>*>* local3c = let final core::Set<inf::C<core::int*>*>* #t31 = col::LinkedHashSet::•<inf::C<core::int*>*>() in let final dynamic #t32 = #t31.{core::Set::add}(null) in let final dynamic #t33 = #t31.{core::Set::add}(inf::field3) in #t31;
- core::Set<inf::C<core::int*>*>* local3d = let final core::Set<inf::C<core::int*>*>* #t34 = col::LinkedHashSet::•<inf::C<core::int*>*>() in let final dynamic #t35 = #t34.{core::Set::add}(null) in let final dynamic #t36 = #t34.{core::Set::add}(inf::field4) in #t34;
- core::Set<inf::C<core::int*>*>* local3e = let final core::Set<inf::C<core::int*>*>* #t37 = col::LinkedHashSet::•<inf::C<core::int*>*>() in let final dynamic #t38 = #t37.{core::Set::add}(null) in let final dynamic #t39 = #t37.{core::Set::add}(inf::field5) in #t37;
- core::Set<inf::C<core::int*>*>* local3f = let final core::Set<inf::C<core::int*>*>* #t40 = col::LinkedHashSet::•<inf::C<core::int*>*>() in let final dynamic #t41 = #t40.{core::Set::add}(null) in let final dynamic #t42 = #t40.{core::Set::add}(inf::field6) in #t40;
- core::Set<core::int*>* local3g = let final core::Set<core::int*>* #t43 = col::LinkedHashSet::•<core::int*>() in let final dynamic #t44 = #t43.{core::Set::add}(null) in let final dynamic #t45 = #t43.{core::Set::add}(inf::field7) in #t43;
- core::Set<core::int*>* local3h = let final core::Set<core::int*>* #t46 = col::LinkedHashSet::•<core::int*>() in let final dynamic #t47 = #t46.{core::Set::add}(null) in let final dynamic #t48 = #t46.{core::Set::add}(inf::field8) in #t46;
-}
-
-library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in_lib.dart:11:9: Error: Field 'field5' should be initialized because its type 'C<int?>' doesn't allow null.
-// - 'C' is from 'pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in_lib.dart'.
-// C<int?> field5;
-// ^^^^^^
-//
-// pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in_lib.dart:13:5: Error: Field 'field7' should be initialized because its type 'int' doesn't allow null.
-// int field7;
-// ^^^^^^
-//
-import self as inf;
-import "dart:core" as core;
-import "dart:collection" as col;
-
-class C<T extends core::Object? = dynamic> extends core::Object {
- synthetic constructor •() → inf::C<inf::C::T%>
- : super core::Object::•()
- ;
-}
-abstract class B extends core::Object {
- synthetic constructor •() → inf::B
- : super core::Object::•()
- ;
- abstract method bar<X extends core::List<core::int?>? = core::List<core::int?>?>() → inf::B::bar::X%;
- abstract method foo(core::List<core::int> list) → dynamic;
-}
-static field inf::C<dynamic> field1 = new inf::C::•<dynamic>();
-static field inf::C<dynamic>? field2;
-static field inf::C<core::int> field3 = new inf::C::•<core::int>();
-static field inf::C<core::int>? field4;
-static field inf::C<core::int?> field5;
-static field inf::C<core::int?>? field6;
-static field core::int field7;
-static field core::int? field8;
-static method method() → dynamic {
- core::List<dynamic> local0 = <dynamic>[];
- core::List<inf::C<dynamic>> local1a = <inf::C<dynamic>>[inf::field1];
- core::List<inf::C<dynamic>?> local1b = <inf::C<dynamic>?>[inf::field2];
- core::List<inf::C<core::int>> local1c = <inf::C<core::int>>[inf::field3];
- core::List<inf::C<core::int>?> local1d = <inf::C<core::int>?>[inf::field4];
- core::List<inf::C<core::int?>> local1e = <inf::C<core::int?>>[inf::field5];
- core::List<inf::C<core::int?>?> local1f = <inf::C<core::int?>?>[inf::field6];
- core::List<core::int> local1g = <core::int>[inf::field7];
- core::List<core::int?> local1h = <core::int?>[inf::field8];
- core::List<core::Null?> local1i = <core::Null?>[null];
- core::Set<inf::C<dynamic>?> local2a = let final core::Set<inf::C<dynamic>?> #t49 = col::LinkedHashSet::•<inf::C<dynamic>?>() in let final dynamic #t50 = #t49.{core::Set::add}(inf::field1) in let final dynamic #t51 = #t49.{core::Set::add}(null) in #t49;
- core::Set<inf::C<dynamic>?> local2b = let final core::Set<inf::C<dynamic>?> #t52 = col::LinkedHashSet::•<inf::C<dynamic>?>() in let final dynamic #t53 = #t52.{core::Set::add}(inf::field2) in let final dynamic #t54 = #t52.{core::Set::add}(null) in #t52;
- core::Set<inf::C<core::int>?> local2c = let final core::Set<inf::C<core::int>?> #t55 = col::LinkedHashSet::•<inf::C<core::int>?>() in let final dynamic #t56 = #t55.{core::Set::add}(inf::field3) in let final dynamic #t57 = #t55.{core::Set::add}(null) in #t55;
- core::Set<inf::C<core::int>?> local2d = let final core::Set<inf::C<core::int>?> #t58 = col::LinkedHashSet::•<inf::C<core::int>?>() in let final dynamic #t59 = #t58.{core::Set::add}(inf::field4) in let final dynamic #t60 = #t58.{core::Set::add}(null) in #t58;
- core::Set<inf::C<core::int?>?> local2e = let final core::Set<inf::C<core::int?>?> #t61 = col::LinkedHashSet::•<inf::C<core::int?>?>() in let final dynamic #t62 = #t61.{core::Set::add}(inf::field5) in let final dynamic #t63 = #t61.{core::Set::add}(null) in #t61;
- core::Set<inf::C<core::int?>?> local2f = let final core::Set<inf::C<core::int?>?> #t64 = col::LinkedHashSet::•<inf::C<core::int?>?>() in let final dynamic #t65 = #t64.{core::Set::add}(inf::field6) in let final dynamic #t66 = #t64.{core::Set::add}(null) in #t64;
- core::Set<core::int?> local2g = let final core::Set<core::int?> #t67 = col::LinkedHashSet::•<core::int?>() in let final dynamic #t68 = #t67.{core::Set::add}(inf::field7) in let final dynamic #t69 = #t67.{core::Set::add}(null) in #t67;
- core::Set<core::int?> local2h = let final core::Set<core::int?> #t70 = col::LinkedHashSet::•<core::int?>() in let final dynamic #t71 = #t70.{core::Set::add}(inf::field8) in let final dynamic #t72 = #t70.{core::Set::add}(null) in #t70;
- core::Set<inf::C<dynamic>?> local3a = let final core::Set<inf::C<dynamic>?> #t73 = col::LinkedHashSet::•<inf::C<dynamic>?>() in let final dynamic #t74 = #t73.{core::Set::add}(null) in let final dynamic #t75 = #t73.{core::Set::add}(inf::field1) in #t73;
- core::Set<inf::C<dynamic>?> local3b = let final core::Set<inf::C<dynamic>?> #t76 = col::LinkedHashSet::•<inf::C<dynamic>?>() in let final dynamic #t77 = #t76.{core::Set::add}(null) in let final dynamic #t78 = #t76.{core::Set::add}(inf::field2) in #t76;
- core::Set<inf::C<core::int>?> local3c = let final core::Set<inf::C<core::int>?> #t79 = col::LinkedHashSet::•<inf::C<core::int>?>() in let final dynamic #t80 = #t79.{core::Set::add}(null) in let final dynamic #t81 = #t79.{core::Set::add}(inf::field3) in #t79;
- core::Set<inf::C<core::int>?> local3d = let final core::Set<inf::C<core::int>?> #t82 = col::LinkedHashSet::•<inf::C<core::int>?>() in let final dynamic #t83 = #t82.{core::Set::add}(null) in let final dynamic #t84 = #t82.{core::Set::add}(inf::field4) in #t82;
- core::Set<inf::C<core::int?>?> local3e = let final core::Set<inf::C<core::int?>?> #t85 = col::LinkedHashSet::•<inf::C<core::int?>?>() in let final dynamic #t86 = #t85.{core::Set::add}(null) in let final dynamic #t87 = #t85.{core::Set::add}(inf::field5) in #t85;
- core::Set<inf::C<core::int?>?> local3f = let final core::Set<inf::C<core::int?>?> #t88 = col::LinkedHashSet::•<inf::C<core::int?>?>() in let final dynamic #t89 = #t88.{core::Set::add}(null) in let final dynamic #t90 = #t88.{core::Set::add}(inf::field6) in #t88;
- core::Set<core::int?> local3g = let final core::Set<core::int?> #t91 = col::LinkedHashSet::•<core::int?>() in let final dynamic #t92 = #t91.{core::Set::add}(null) in let final dynamic #t93 = #t91.{core::Set::add}(inf::field7) in #t91;
- core::Set<core::int?> local3h = let final core::Set<core::int?> #t94 = col::LinkedHashSet::•<core::int?>() in let final dynamic #t95 = #t94.{core::Set::add}(null) in let final dynamic #t96 = #t94.{core::Set::add}(inf::field8) in #t94;
-}
diff --git a/pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in.dart.strong.transformed.expect
deleted file mode 100644
index 240e8dc..0000000
--- a/pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in.dart.strong.transformed.expect
+++ /dev/null
@@ -1,120 +0,0 @@
-library;
-import self as self;
-import "dart:core" as core;
-import "infer_constraints_from_opt_in_lib.dart" as inf;
-import "dart:collection" as col;
-
-import "org-dartlang-testcase:///infer_constraints_from_opt_in_lib.dart";
-
-abstract class A extends core::Object {
- synthetic constructor •() → self::A*
- : super core::Object::•()
- ;
- method baz(inf::B* b) → dynamic {
- b.{inf::B::foo}(b.{inf::B::bar}<core::List<core::int*>*>());
- }
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-static method main() → dynamic {
- core::List<dynamic>* local0 = <dynamic>[];
- core::List<inf::C<dynamic>*>* local1a = <inf::C<dynamic>*>[inf::field1];
- core::List<inf::C<dynamic>*>* local1b = <inf::C<dynamic>*>[inf::field2];
- core::List<inf::C<core::int*>*>* local1c = <inf::C<core::int*>*>[inf::field3];
- core::List<inf::C<core::int*>*>* local1d = <inf::C<core::int*>*>[inf::field4];
- core::List<inf::C<core::int*>*>* local1e = <inf::C<core::int*>*>[inf::field5];
- core::List<inf::C<core::int*>*>* local1f = <inf::C<core::int*>*>[inf::field6];
- core::List<core::int*>* local1g = <core::int*>[inf::field7];
- core::List<core::int*>* local1h = <core::int*>[inf::field8];
- core::List<core::Null?>* local1i = <core::Null?>[null];
- core::Set<inf::C<dynamic>*>* local2a = let final core::Set<inf::C<dynamic>*>* #t1 = col::LinkedHashSet::•<inf::C<dynamic>*>() in let final core::bool #t2 = #t1.{core::Set::add}(inf::field1) in let final core::bool #t3 = #t1.{core::Set::add}(null) in #t1;
- core::Set<inf::C<dynamic>*>* local2b = let final core::Set<inf::C<dynamic>*>* #t4 = col::LinkedHashSet::•<inf::C<dynamic>*>() in let final core::bool #t5 = #t4.{core::Set::add}(inf::field2) in let final core::bool #t6 = #t4.{core::Set::add}(null) in #t4;
- core::Set<inf::C<core::int*>*>* local2c = let final core::Set<inf::C<core::int*>*>* #t7 = col::LinkedHashSet::•<inf::C<core::int*>*>() in let final core::bool #t8 = #t7.{core::Set::add}(inf::field3) in let final core::bool #t9 = #t7.{core::Set::add}(null) in #t7;
- core::Set<inf::C<core::int*>*>* local2d = let final core::Set<inf::C<core::int*>*>* #t10 = col::LinkedHashSet::•<inf::C<core::int*>*>() in let final core::bool #t11 = #t10.{core::Set::add}(inf::field4) in let final core::bool #t12 = #t10.{core::Set::add}(null) in #t10;
- core::Set<inf::C<core::int*>*>* local2e = let final core::Set<inf::C<core::int*>*>* #t13 = col::LinkedHashSet::•<inf::C<core::int*>*>() in let final core::bool #t14 = #t13.{core::Set::add}(inf::field5) in let final core::bool #t15 = #t13.{core::Set::add}(null) in #t13;
- core::Set<inf::C<core::int*>*>* local2f = let final core::Set<inf::C<core::int*>*>* #t16 = col::LinkedHashSet::•<inf::C<core::int*>*>() in let final core::bool #t17 = #t16.{core::Set::add}(inf::field6) in let final core::bool #t18 = #t16.{core::Set::add}(null) in #t16;
- core::Set<core::int*>* local2g = let final core::Set<core::int*>* #t19 = col::LinkedHashSet::•<core::int*>() in let final core::bool #t20 = #t19.{core::Set::add}(inf::field7) in let final core::bool #t21 = #t19.{core::Set::add}(null) in #t19;
- core::Set<core::int*>* local2h = let final core::Set<core::int*>* #t22 = col::LinkedHashSet::•<core::int*>() in let final core::bool #t23 = #t22.{core::Set::add}(inf::field8) in let final core::bool #t24 = #t22.{core::Set::add}(null) in #t22;
- core::Set<inf::C<dynamic>*>* local3a = let final core::Set<inf::C<dynamic>*>* #t25 = col::LinkedHashSet::•<inf::C<dynamic>*>() in let final core::bool #t26 = #t25.{core::Set::add}(null) in let final core::bool #t27 = #t25.{core::Set::add}(inf::field1) in #t25;
- core::Set<inf::C<dynamic>*>* local3b = let final core::Set<inf::C<dynamic>*>* #t28 = col::LinkedHashSet::•<inf::C<dynamic>*>() in let final core::bool #t29 = #t28.{core::Set::add}(null) in let final core::bool #t30 = #t28.{core::Set::add}(inf::field2) in #t28;
- core::Set<inf::C<core::int*>*>* local3c = let final core::Set<inf::C<core::int*>*>* #t31 = col::LinkedHashSet::•<inf::C<core::int*>*>() in let final core::bool #t32 = #t31.{core::Set::add}(null) in let final core::bool #t33 = #t31.{core::Set::add}(inf::field3) in #t31;
- core::Set<inf::C<core::int*>*>* local3d = let final core::Set<inf::C<core::int*>*>* #t34 = col::LinkedHashSet::•<inf::C<core::int*>*>() in let final core::bool #t35 = #t34.{core::Set::add}(null) in let final core::bool #t36 = #t34.{core::Set::add}(inf::field4) in #t34;
- core::Set<inf::C<core::int*>*>* local3e = let final core::Set<inf::C<core::int*>*>* #t37 = col::LinkedHashSet::•<inf::C<core::int*>*>() in let final core::bool #t38 = #t37.{core::Set::add}(null) in let final core::bool #t39 = #t37.{core::Set::add}(inf::field5) in #t37;
- core::Set<inf::C<core::int*>*>* local3f = let final core::Set<inf::C<core::int*>*>* #t40 = col::LinkedHashSet::•<inf::C<core::int*>*>() in let final core::bool #t41 = #t40.{core::Set::add}(null) in let final core::bool #t42 = #t40.{core::Set::add}(inf::field6) in #t40;
- core::Set<core::int*>* local3g = let final core::Set<core::int*>* #t43 = col::LinkedHashSet::•<core::int*>() in let final core::bool #t44 = #t43.{core::Set::add}(null) in let final core::bool #t45 = #t43.{core::Set::add}(inf::field7) in #t43;
- core::Set<core::int*>* local3h = let final core::Set<core::int*>* #t46 = col::LinkedHashSet::•<core::int*>() in let final core::bool #t47 = #t46.{core::Set::add}(null) in let final core::bool #t48 = #t46.{core::Set::add}(inf::field8) in #t46;
-}
-
-library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in_lib.dart:11:9: Error: Field 'field5' should be initialized because its type 'C<int?>' doesn't allow null.
-// - 'C' is from 'pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in_lib.dart'.
-// C<int?> field5;
-// ^^^^^^
-//
-// pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in_lib.dart:13:5: Error: Field 'field7' should be initialized because its type 'int' doesn't allow null.
-// int field7;
-// ^^^^^^
-//
-import self as inf;
-import "dart:core" as core;
-import "dart:collection" as col;
-
-class C<T extends core::Object? = dynamic> extends core::Object {
- synthetic constructor •() → inf::C<inf::C::T%>
- : super core::Object::•()
- ;
-}
-abstract class B extends core::Object {
- synthetic constructor •() → inf::B
- : super core::Object::•()
- ;
- abstract method bar<X extends core::List<core::int?>? = core::List<core::int?>?>() → inf::B::bar::X%;
- abstract method foo(core::List<core::int> list) → dynamic;
-}
-static field inf::C<dynamic> field1 = new inf::C::•<dynamic>();
-static field inf::C<dynamic>? field2;
-static field inf::C<core::int> field3 = new inf::C::•<core::int>();
-static field inf::C<core::int>? field4;
-static field inf::C<core::int?> field5;
-static field inf::C<core::int?>? field6;
-static field core::int field7;
-static field core::int? field8;
-static method method() → dynamic {
- core::List<dynamic> local0 = <dynamic>[];
- core::List<inf::C<dynamic>> local1a = <inf::C<dynamic>>[inf::field1];
- core::List<inf::C<dynamic>?> local1b = <inf::C<dynamic>?>[inf::field2];
- core::List<inf::C<core::int>> local1c = <inf::C<core::int>>[inf::field3];
- core::List<inf::C<core::int>?> local1d = <inf::C<core::int>?>[inf::field4];
- core::List<inf::C<core::int?>> local1e = <inf::C<core::int?>>[inf::field5];
- core::List<inf::C<core::int?>?> local1f = <inf::C<core::int?>?>[inf::field6];
- core::List<core::int> local1g = <core::int>[inf::field7];
- core::List<core::int?> local1h = <core::int?>[inf::field8];
- core::List<core::Null?> local1i = <core::Null?>[null];
- core::Set<inf::C<dynamic>?> local2a = let final core::Set<inf::C<dynamic>?> #t49 = col::LinkedHashSet::•<inf::C<dynamic>?>() in let final core::bool #t50 = #t49.{core::Set::add}(inf::field1) in let final core::bool #t51 = #t49.{core::Set::add}(null) in #t49;
- core::Set<inf::C<dynamic>?> local2b = let final core::Set<inf::C<dynamic>?> #t52 = col::LinkedHashSet::•<inf::C<dynamic>?>() in let final core::bool #t53 = #t52.{core::Set::add}(inf::field2) in let final core::bool #t54 = #t52.{core::Set::add}(null) in #t52;
- core::Set<inf::C<core::int>?> local2c = let final core::Set<inf::C<core::int>?> #t55 = col::LinkedHashSet::•<inf::C<core::int>?>() in let final core::bool #t56 = #t55.{core::Set::add}(inf::field3) in let final core::bool #t57 = #t55.{core::Set::add}(null) in #t55;
- core::Set<inf::C<core::int>?> local2d = let final core::Set<inf::C<core::int>?> #t58 = col::LinkedHashSet::•<inf::C<core::int>?>() in let final core::bool #t59 = #t58.{core::Set::add}(inf::field4) in let final core::bool #t60 = #t58.{core::Set::add}(null) in #t58;
- core::Set<inf::C<core::int?>?> local2e = let final core::Set<inf::C<core::int?>?> #t61 = col::LinkedHashSet::•<inf::C<core::int?>?>() in let final core::bool #t62 = #t61.{core::Set::add}(inf::field5) in let final core::bool #t63 = #t61.{core::Set::add}(null) in #t61;
- core::Set<inf::C<core::int?>?> local2f = let final core::Set<inf::C<core::int?>?> #t64 = col::LinkedHashSet::•<inf::C<core::int?>?>() in let final core::bool #t65 = #t64.{core::Set::add}(inf::field6) in let final core::bool #t66 = #t64.{core::Set::add}(null) in #t64;
- core::Set<core::int?> local2g = let final core::Set<core::int?> #t67 = col::LinkedHashSet::•<core::int?>() in let final core::bool #t68 = #t67.{core::Set::add}(inf::field7) in let final core::bool #t69 = #t67.{core::Set::add}(null) in #t67;
- core::Set<core::int?> local2h = let final core::Set<core::int?> #t70 = col::LinkedHashSet::•<core::int?>() in let final core::bool #t71 = #t70.{core::Set::add}(inf::field8) in let final core::bool #t72 = #t70.{core::Set::add}(null) in #t70;
- core::Set<inf::C<dynamic>?> local3a = let final core::Set<inf::C<dynamic>?> #t73 = col::LinkedHashSet::•<inf::C<dynamic>?>() in let final core::bool #t74 = #t73.{core::Set::add}(null) in let final core::bool #t75 = #t73.{core::Set::add}(inf::field1) in #t73;
- core::Set<inf::C<dynamic>?> local3b = let final core::Set<inf::C<dynamic>?> #t76 = col::LinkedHashSet::•<inf::C<dynamic>?>() in let final core::bool #t77 = #t76.{core::Set::add}(null) in let final core::bool #t78 = #t76.{core::Set::add}(inf::field2) in #t76;
- core::Set<inf::C<core::int>?> local3c = let final core::Set<inf::C<core::int>?> #t79 = col::LinkedHashSet::•<inf::C<core::int>?>() in let final core::bool #t80 = #t79.{core::Set::add}(null) in let final core::bool #t81 = #t79.{core::Set::add}(inf::field3) in #t79;
- core::Set<inf::C<core::int>?> local3d = let final core::Set<inf::C<core::int>?> #t82 = col::LinkedHashSet::•<inf::C<core::int>?>() in let final core::bool #t83 = #t82.{core::Set::add}(null) in let final core::bool #t84 = #t82.{core::Set::add}(inf::field4) in #t82;
- core::Set<inf::C<core::int?>?> local3e = let final core::Set<inf::C<core::int?>?> #t85 = col::LinkedHashSet::•<inf::C<core::int?>?>() in let final core::bool #t86 = #t85.{core::Set::add}(null) in let final core::bool #t87 = #t85.{core::Set::add}(inf::field5) in #t85;
- core::Set<inf::C<core::int?>?> local3f = let final core::Set<inf::C<core::int?>?> #t88 = col::LinkedHashSet::•<inf::C<core::int?>?>() in let final core::bool #t89 = #t88.{core::Set::add}(null) in let final core::bool #t90 = #t88.{core::Set::add}(inf::field6) in #t88;
- core::Set<core::int?> local3g = let final core::Set<core::int?> #t91 = col::LinkedHashSet::•<core::int?>() in let final core::bool #t92 = #t91.{core::Set::add}(null) in let final core::bool #t93 = #t91.{core::Set::add}(inf::field7) in #t91;
- core::Set<core::int?> local3h = let final core::Set<core::int?> #t94 = col::LinkedHashSet::•<core::int?>() in let final core::bool #t95 = #t94.{core::Set::add}(null) in let final core::bool #t96 = #t94.{core::Set::add}(inf::field8) in #t94;
-}
diff --git a/pkg/front_end/testcases/nnbd/infer_from_opt_in.dart.strong.expect b/pkg/front_end/testcases/nnbd/infer_from_opt_in.dart.strong.expect
deleted file mode 100644
index ff3f272..0000000
--- a/pkg/front_end/testcases/nnbd/infer_from_opt_in.dart.strong.expect
+++ /dev/null
@@ -1,31 +0,0 @@
-library /*isNonNullableByDefault*/;
-import self as self;
-import "dart:core" as core;
-import "infer_from_opt_in_lib.dart" as inf;
-
-import "org-dartlang-testcase:///infer_from_opt_in_lib.dart";
-
-static method reify<T extends core::Object? = dynamic>(self::reify::T% arg) → dynamic
- return self::reify::T%;
-static method main() → dynamic {
- inf::Foo x = new inf::Foo::•();
- inf::Foo y = new inf::Foo::•();
- () → inf::Foo z = () → inf::Foo => inf::createFoo();
- inf::callback((inf::Foo? x) → inf::Foo? => x);
- core::print(self::reify<inf::Foo>(x));
- core::print(self::reify<inf::Foo>(y));
- core::print(self::reify<() → inf::Foo>(z));
-}
-
-library /*isNonNullableByDefault*/;
-import self as inf;
-import "dart:core" as core;
-
-class Foo extends core::Object {
- synthetic constructor •() → inf::Foo
- : super core::Object::•()
- ;
-}
-static method createFoo() → inf::Foo
- return new inf::Foo::•();
-static method callback((inf::Foo?) → inf::Foo? f) → void {}
diff --git a/pkg/front_end/testcases/nnbd/infer_from_opt_in.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/infer_from_opt_in.dart.strong.transformed.expect
deleted file mode 100644
index ff3f272..0000000
--- a/pkg/front_end/testcases/nnbd/infer_from_opt_in.dart.strong.transformed.expect
+++ /dev/null
@@ -1,31 +0,0 @@
-library /*isNonNullableByDefault*/;
-import self as self;
-import "dart:core" as core;
-import "infer_from_opt_in_lib.dart" as inf;
-
-import "org-dartlang-testcase:///infer_from_opt_in_lib.dart";
-
-static method reify<T extends core::Object? = dynamic>(self::reify::T% arg) → dynamic
- return self::reify::T%;
-static method main() → dynamic {
- inf::Foo x = new inf::Foo::•();
- inf::Foo y = new inf::Foo::•();
- () → inf::Foo z = () → inf::Foo => inf::createFoo();
- inf::callback((inf::Foo? x) → inf::Foo? => x);
- core::print(self::reify<inf::Foo>(x));
- core::print(self::reify<inf::Foo>(y));
- core::print(self::reify<() → inf::Foo>(z));
-}
-
-library /*isNonNullableByDefault*/;
-import self as inf;
-import "dart:core" as core;
-
-class Foo extends core::Object {
- synthetic constructor •() → inf::Foo
- : super core::Object::•()
- ;
-}
-static method createFoo() → inf::Foo
- return new inf::Foo::•();
-static method callback((inf::Foo?) → inf::Foo? f) → void {}
diff --git a/pkg/front_end/testcases/nnbd/infer_from_opt_out.dart.outline.expect b/pkg/front_end/testcases/nnbd/infer_from_opt_out.dart.outline.expect
deleted file mode 100644
index 0264131e..0000000
--- a/pkg/front_end/testcases/nnbd/infer_from_opt_out.dart.outline.expect
+++ /dev/null
@@ -1,33 +0,0 @@
-library /*isNonNullableByDefault*/;
-import self as self;
-import "dart:core" as core;
-
-import "org-dartlang-testcase:///infer_from_opt_out_lib.dart";
-
-static method reify<T extends core::Object? = dynamic>(self::reify::T% arg) → dynamic
- ;
-static method main() → dynamic
- ;
-
-library;
-import self as self2;
-import "dart:core" as core;
-
-class Foo extends core::Object {
- synthetic constructor •() → self2::Foo*
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-static method createFoo() → self2::Foo*
- ;
-static method callback((self2::Foo*) →* self2::Foo* f) → void
- ;
diff --git a/pkg/front_end/testcases/nnbd/infer_from_opt_out.dart.strong.expect b/pkg/front_end/testcases/nnbd/infer_from_opt_out.dart.strong.expect
deleted file mode 100644
index e562600..0000000
--- a/pkg/front_end/testcases/nnbd/infer_from_opt_out.dart.strong.expect
+++ /dev/null
@@ -1,41 +0,0 @@
-library /*isNonNullableByDefault*/;
-import self as self;
-import "dart:core" as core;
-import "infer_from_opt_out_lib.dart" as inf;
-
-import "org-dartlang-testcase:///infer_from_opt_out_lib.dart";
-
-static method reify<T extends core::Object? = dynamic>(self::reify::T% arg) → dynamic
- return self::reify::T%;
-static method main() → dynamic {
- inf::Foo x = new inf::Foo::•();
- inf::Foo y = new inf::Foo::•();
- () → inf::Foo z = () → inf::Foo => inf::createFoo();
- inf::callback((inf::Foo x) → inf::Foo => x);
- core::print(self::reify<inf::Foo>(x));
- core::print(self::reify<inf::Foo>(y));
- core::print(self::reify<() → inf::Foo>(z));
-}
-
-library;
-import self as inf;
-import "dart:core" as core;
-
-class Foo extends core::Object {
- synthetic constructor •() → inf::Foo*
- : super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-static method createFoo() → inf::Foo*
- return new inf::Foo::•();
-static method callback((inf::Foo*) →* inf::Foo* f) → void {}
diff --git a/pkg/front_end/testcases/nnbd/infer_from_opt_out.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/infer_from_opt_out.dart.strong.transformed.expect
deleted file mode 100644
index e562600..0000000
--- a/pkg/front_end/testcases/nnbd/infer_from_opt_out.dart.strong.transformed.expect
+++ /dev/null
@@ -1,41 +0,0 @@
-library /*isNonNullableByDefault*/;
-import self as self;
-import "dart:core" as core;
-import "infer_from_opt_out_lib.dart" as inf;
-
-import "org-dartlang-testcase:///infer_from_opt_out_lib.dart";
-
-static method reify<T extends core::Object? = dynamic>(self::reify::T% arg) → dynamic
- return self::reify::T%;
-static method main() → dynamic {
- inf::Foo x = new inf::Foo::•();
- inf::Foo y = new inf::Foo::•();
- () → inf::Foo z = () → inf::Foo => inf::createFoo();
- inf::callback((inf::Foo x) → inf::Foo => x);
- core::print(self::reify<inf::Foo>(x));
- core::print(self::reify<inf::Foo>(y));
- core::print(self::reify<() → inf::Foo>(z));
-}
-
-library;
-import self as inf;
-import "dart:core" as core;
-
-class Foo extends core::Object {
- synthetic constructor •() → inf::Foo*
- : super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-static method createFoo() → inf::Foo*
- return new inf::Foo::•();
-static method callback((inf::Foo*) →* inf::Foo* f) → void {}
diff --git a/pkg/front_end/testcases/nnbd/infer_in_legacy_from_opted_in.dart.outline.expect b/pkg/front_end/testcases/nnbd/infer_in_legacy_from_opted_in.dart.outline.expect
deleted file mode 100644
index f226132..0000000
--- a/pkg/front_end/testcases/nnbd/infer_in_legacy_from_opted_in.dart.outline.expect
+++ /dev/null
@@ -1,20 +0,0 @@
-library;
-import self as self;
-import "dart:core" as core;
-
-import "org-dartlang-testcase:///infer_in_legacy_from_opted_in_lib.dart";
-
-static method bar(core::int* x) → dynamic
- ;
-static method main() → dynamic
- ;
-
-library /*isNonNullableByDefault*/;
-import self as self2;
-import "dart:core" as core;
-
-static field core::int y;
-static method foo<T extends core::num = core::num>(self2::foo::T t1, self2::foo::T t2) → self2::foo::T
- ;
-static method baz(core::int? v) → dynamic
- ;
diff --git a/pkg/front_end/testcases/nnbd/infer_in_legacy_from_opted_in.dart.strong.expect b/pkg/front_end/testcases/nnbd/infer_in_legacy_from_opted_in.dart.strong.expect
deleted file mode 100644
index 52dc9a8..0000000
--- a/pkg/front_end/testcases/nnbd/infer_in_legacy_from_opted_in.dart.strong.expect
+++ /dev/null
@@ -1,20 +0,0 @@
-library;
-import self as self;
-import "dart:core" as core;
-import "infer_in_legacy_from_opted_in_lib.dart" as inf;
-
-import "org-dartlang-testcase:///infer_in_legacy_from_opted_in_lib.dart";
-
-static method bar(core::int* x) → dynamic {
- inf::baz(inf::foo<core::int*>(x, inf::y));
-}
-static method main() → dynamic {}
-
-library /*isNonNullableByDefault*/;
-import self as inf;
-import "dart:core" as core;
-
-static field core::int y = 42;
-static method foo<T extends core::num = core::num>(inf::foo::T t1, inf::foo::T t2) → inf::foo::T
- return t1;
-static method baz(core::int? v) → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/infer_in_legacy_from_opted_in.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/infer_in_legacy_from_opted_in.dart.strong.transformed.expect
deleted file mode 100644
index 52dc9a8..0000000
--- a/pkg/front_end/testcases/nnbd/infer_in_legacy_from_opted_in.dart.strong.transformed.expect
+++ /dev/null
@@ -1,20 +0,0 @@
-library;
-import self as self;
-import "dart:core" as core;
-import "infer_in_legacy_from_opted_in_lib.dart" as inf;
-
-import "org-dartlang-testcase:///infer_in_legacy_from_opted_in_lib.dart";
-
-static method bar(core::int* x) → dynamic {
- inf::baz(inf::foo<core::int*>(x, inf::y));
-}
-static method main() → dynamic {}
-
-library /*isNonNullableByDefault*/;
-import self as inf;
-import "dart:core" as core;
-
-static field core::int y = 42;
-static method foo<T extends core::num = core::num>(inf::foo::T t1, inf::foo::T t2) → inf::foo::T
- return t1;
-static method baz(core::int? v) → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/inheritance_from_opt_in.dart.outline.expect b/pkg/front_end/testcases/nnbd/inheritance_from_opt_in.dart.outline.expect
deleted file mode 100644
index d86d906..0000000
--- a/pkg/front_end/testcases/nnbd/inheritance_from_opt_in.dart.outline.expect
+++ /dev/null
@@ -1,222 +0,0 @@
-//
-// Problems in component:
-//
-// pkg/front_end/testcases/nnbd/inheritance_from_opt_in.dart:27:7: Error: 'LegacyClass5' can't implement both 'GenericInterface<dynamic>' and 'GenericInterface<Object>'
-// - 'GenericInterface' is from 'pkg/front_end/testcases/nnbd/inheritance_from_opt_in_lib.dart'.
-// - 'Object' is from 'dart:core'.
-// class LegacyClass5 extends Class5 implements GenericInterface<Object> {}
-// ^
-//
-library;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/inheritance_from_opt_in.dart:21:52: Error: Null safety features are disabled for this library.
-// Try removing the `@dart=` annotation or setting the language version higher.
-// class LegacyClass4c implements GenericInterface<num?> {}
-// ^
-// pkg/front_end/testcases/nnbd/inheritance_from_opt_in.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
-// // @dart=2.5
-// ^^^^^^^^^^^^
-//
-import self as self;
-import "inheritance_from_opt_in_lib.dart" as inh;
-import "dart:core" as core;
-
-import "org-dartlang-testcase:///inheritance_from_opt_in_lib.dart";
-
-class LegacyClass1 extends inh::Class1 {
- synthetic constructor •() → self::LegacyClass1*
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class LegacyClass2<T extends core::Object* = dynamic> extends inh::Class2<self::LegacyClass2::T*> {
- synthetic constructor •() → self::LegacyClass2<self::LegacyClass2::T*>*
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class LegacyClass3a<T extends core::Object* = dynamic> extends inh::Class3<self::LegacyClass3a::T*> {
- synthetic constructor •() → self::LegacyClass3a<self::LegacyClass3a::T*>*
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class LegacyClass3b<T extends core::Object* = dynamic> extends inh::Class3<self::LegacyClass3b::T*> implements inh::GenericInterface<self::LegacyClass3b::T*> {
- synthetic constructor •() → self::LegacyClass3b<self::LegacyClass3b::T*>*
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class LegacyClass4a extends inh::Class4a {
- synthetic constructor •() → self::LegacyClass4a*
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class LegacyClass4b extends core::Object implements inh::GenericInterface<core::num*> {
- synthetic constructor •() → self::LegacyClass4b*
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class LegacyClass4c extends core::Object implements inh::GenericInterface<core::num?> {
- synthetic constructor •() → self::LegacyClass4c*
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class LegacyClass4d extends inh::Class4a implements inh::GenericInterface<core::num*> {
- synthetic constructor •() → self::LegacyClass4d*
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class LegacyClass4e extends core::Object implements inh::Class4a, inh::Class4b {
- synthetic constructor •() → self::LegacyClass4e*
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class LegacyClass5 extends inh::Class5 implements inh::GenericInterface<core::Object*> {
- synthetic constructor •() → self::LegacyClass5*
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class LegacyClass6a<T extends core::Object* = dynamic> extends inh::Class3<self::LegacyClass6a::T*> implements inh::GenericSubInterface<self::LegacyClass6a::T*> {
- synthetic constructor •() → self::LegacyClass6a<self::LegacyClass6a::T*>*
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class LegacyClass6b<T extends core::Object* = dynamic> extends self::LegacyClass3a<self::LegacyClass6b::T*> implements inh::GenericSubInterface<self::LegacyClass6b::T*> {
- synthetic constructor •() → self::LegacyClass6b<self::LegacyClass6b::T*>*
- ;
-}
-
-library /*isNonNullableByDefault*/;
-import self as inh;
-import "dart:core" as core;
-
-abstract class GenericInterface<T extends core::Object? = dynamic> extends core::Object {
- synthetic constructor •() → inh::GenericInterface<inh::GenericInterface::T%>
- ;
-}
-abstract class GenericSubInterface<T extends core::Object? = dynamic> extends inh::GenericInterface<inh::GenericSubInterface::T%> {
- synthetic constructor •() → inh::GenericSubInterface<inh::GenericSubInterface::T%>
- ;
-}
-class Class1 extends core::Object {
- synthetic constructor •() → inh::Class1
- ;
-}
-class Class2<T extends core::Object? = dynamic> extends core::Object {
- synthetic constructor •() → inh::Class2<inh::Class2::T%>
- ;
-}
-class Class3<T extends core::Object? = dynamic> extends core::Object implements inh::GenericInterface<inh::Class3::T%> {
- synthetic constructor •() → inh::Class3<inh::Class3::T%>
- ;
-}
-class Class4a extends core::Object implements inh::GenericInterface<core::num> {
- synthetic constructor •() → inh::Class4a
- ;
-}
-class Class4b extends core::Object implements inh::GenericInterface<core::num?> {
- synthetic constructor •() → inh::Class4b
- ;
-}
-class Class5 extends core::Object implements inh::GenericInterface<dynamic> {
- synthetic constructor •() → inh::Class5
- ;
-}
diff --git a/pkg/front_end/testcases/nnbd/inheritance_from_opt_in.dart.weak.expect b/pkg/front_end/testcases/nnbd/inheritance_from_opt_in.dart.weak.expect
deleted file mode 100644
index 6b6a775..0000000
--- a/pkg/front_end/testcases/nnbd/inheritance_from_opt_in.dart.weak.expect
+++ /dev/null
@@ -1,242 +0,0 @@
-//
-// Problems in component:
-//
-// pkg/front_end/testcases/nnbd/inheritance_from_opt_in.dart:27:7: Error: 'LegacyClass5' can't implement both 'GenericInterface<dynamic>' and 'GenericInterface<Object>'
-// - 'GenericInterface' is from 'pkg/front_end/testcases/nnbd/inheritance_from_opt_in_lib.dart'.
-// - 'Object' is from 'dart:core'.
-// class LegacyClass5 extends Class5 implements GenericInterface<Object> {}
-// ^
-//
-library;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/inheritance_from_opt_in.dart:21:52: Error: Null safety features are disabled for this library.
-// Try removing the `@dart=` annotation or setting the language version higher.
-// class LegacyClass4c implements GenericInterface<num?> {}
-// ^
-// pkg/front_end/testcases/nnbd/inheritance_from_opt_in.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
-// // @dart=2.5
-// ^^^^^^^^^^^^
-//
-import self as self;
-import "inheritance_from_opt_in_lib.dart" as inh;
-import "dart:core" as core;
-
-import "org-dartlang-testcase:///inheritance_from_opt_in_lib.dart";
-
-class LegacyClass1 extends inh::Class1 {
- synthetic constructor •() → self::LegacyClass1*
- : super inh::Class1::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class LegacyClass2<T extends core::Object* = dynamic> extends inh::Class2<self::LegacyClass2::T*> {
- synthetic constructor •() → self::LegacyClass2<self::LegacyClass2::T*>*
- : super inh::Class2::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class LegacyClass3a<T extends core::Object* = dynamic> extends inh::Class3<self::LegacyClass3a::T*> {
- synthetic constructor •() → self::LegacyClass3a<self::LegacyClass3a::T*>*
- : super inh::Class3::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class LegacyClass3b<T extends core::Object* = dynamic> extends inh::Class3<self::LegacyClass3b::T*> implements inh::GenericInterface<self::LegacyClass3b::T*> {
- synthetic constructor •() → self::LegacyClass3b<self::LegacyClass3b::T*>*
- : super inh::Class3::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class LegacyClass4a extends inh::Class4a {
- synthetic constructor •() → self::LegacyClass4a*
- : super inh::Class4a::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class LegacyClass4b extends core::Object implements inh::GenericInterface<core::num*> {
- synthetic constructor •() → self::LegacyClass4b*
- : super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class LegacyClass4c extends core::Object implements inh::GenericInterface<core::num?> {
- synthetic constructor •() → self::LegacyClass4c*
- : super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class LegacyClass4d extends inh::Class4a implements inh::GenericInterface<core::num*> {
- synthetic constructor •() → self::LegacyClass4d*
- : super inh::Class4a::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class LegacyClass4e extends core::Object implements inh::Class4a, inh::Class4b {
- synthetic constructor •() → self::LegacyClass4e*
- : super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class LegacyClass5 extends inh::Class5 implements inh::GenericInterface<core::Object*> {
- synthetic constructor •() → self::LegacyClass5*
- : super inh::Class5::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class LegacyClass6a<T extends core::Object* = dynamic> extends inh::Class3<self::LegacyClass6a::T*> implements inh::GenericSubInterface<self::LegacyClass6a::T*> {
- synthetic constructor •() → self::LegacyClass6a<self::LegacyClass6a::T*>*
- : super inh::Class3::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class LegacyClass6b<T extends core::Object* = dynamic> extends self::LegacyClass3a<self::LegacyClass6b::T*> implements inh::GenericSubInterface<self::LegacyClass6b::T*> {
- synthetic constructor •() → self::LegacyClass6b<self::LegacyClass6b::T*>*
- : super self::LegacyClass3a::•()
- ;
-}
-
-library /*isNonNullableByDefault*/;
-import self as inh;
-import "dart:core" as core;
-
-abstract class GenericInterface<T extends core::Object? = dynamic> extends core::Object {
- synthetic constructor •() → inh::GenericInterface<inh::GenericInterface::T%>
- : super core::Object::•()
- ;
-}
-abstract class GenericSubInterface<T extends core::Object? = dynamic> extends inh::GenericInterface<inh::GenericSubInterface::T%> {
- synthetic constructor •() → inh::GenericSubInterface<inh::GenericSubInterface::T%>
- : super inh::GenericInterface::•()
- ;
-}
-class Class1 extends core::Object {
- synthetic constructor •() → inh::Class1
- : super core::Object::•()
- ;
-}
-class Class2<T extends core::Object? = dynamic> extends core::Object {
- synthetic constructor •() → inh::Class2<inh::Class2::T%>
- : super core::Object::•()
- ;
-}
-class Class3<T extends core::Object? = dynamic> extends core::Object implements inh::GenericInterface<inh::Class3::T%> {
- synthetic constructor •() → inh::Class3<inh::Class3::T%>
- : super core::Object::•()
- ;
-}
-class Class4a extends core::Object implements inh::GenericInterface<core::num> {
- synthetic constructor •() → inh::Class4a
- : super core::Object::•()
- ;
-}
-class Class4b extends core::Object implements inh::GenericInterface<core::num?> {
- synthetic constructor •() → inh::Class4b
- : super core::Object::•()
- ;
-}
-class Class5 extends core::Object implements inh::GenericInterface<dynamic> {
- synthetic constructor •() → inh::Class5
- : super core::Object::•()
- ;
-}
diff --git a/pkg/front_end/testcases/nnbd/inheritance_from_opt_out.dart.outline.expect b/pkg/front_end/testcases/nnbd/inheritance_from_opt_out.dart.outline.expect
deleted file mode 100644
index 42e7bc9..0000000
--- a/pkg/front_end/testcases/nnbd/inheritance_from_opt_out.dart.outline.expect
+++ /dev/null
@@ -1,178 +0,0 @@
-library /*isNonNullableByDefault*/;
-import self as self;
-import "inheritance_from_opt_out_lib.dart" as inh;
-import "dart:core" as core;
-
-import "org-dartlang-testcase:///inheritance_from_opt_out_lib.dart";
-
-class Class1 extends inh::LegacyClass1 {
- synthetic constructor •() → self::Class1
- ;
-}
-class Class2<T extends core::Object? = dynamic> extends inh::LegacyClass2<self::Class2::T%> {
- synthetic constructor •() → self::Class2<self::Class2::T%>
- ;
-}
-class Class3a<T extends core::Object? = dynamic> extends inh::LegacyClass3<self::Class3a::T%> {
- synthetic constructor •() → self::Class3a<self::Class3a::T%>
- ;
-}
-class Class3b<T extends core::Object? = dynamic> extends inh::LegacyClass3<self::Class3b::T%> implements inh::GenericInterface<self::Class3b::T%> {
- synthetic constructor •() → self::Class3b<self::Class3b::T%>
- ;
-}
-class Class4a extends inh::LegacyClass4 {
- synthetic constructor •() → self::Class4a
- ;
-}
-class Class4b extends core::Object implements inh::GenericInterface<core::num> {
- synthetic constructor •() → self::Class4b
- ;
- abstract forwarding-stub operator ==(dynamic other) → core::bool*;
-}
-class Class4c extends core::Object implements inh::GenericInterface<core::num?> {
- synthetic constructor •() → self::Class4c
- ;
- abstract forwarding-stub operator ==(dynamic other) → core::bool*;
-}
-class Class4d extends inh::LegacyClass4 implements inh::GenericInterface<core::num> {
- synthetic constructor •() → self::Class4d
- ;
-}
-static method main() → dynamic
- ;
-
-library;
-import self as inh;
-import "dart:core" as core;
-
-abstract class GenericInterface<T extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → inh::GenericInterface<inh::GenericInterface::T*>*
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-abstract class GenericSubInterface<T extends core::Object* = dynamic> extends core::Object implements inh::GenericInterface<inh::GenericSubInterface::T*> {
- synthetic constructor •() → inh::GenericSubInterface<inh::GenericSubInterface::T*>*
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class LegacyClass1 extends core::Object {
- synthetic constructor •() → inh::LegacyClass1*
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class LegacyClass2<T extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → inh::LegacyClass2<inh::LegacyClass2::T*>*
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class LegacyClass3<T extends core::Object* = dynamic> extends core::Object implements inh::GenericInterface<inh::LegacyClass3::T*> {
- synthetic constructor •() → inh::LegacyClass3<inh::LegacyClass3::T*>*
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class LegacyClass4 extends core::Object implements inh::GenericInterface<core::num*> {
- synthetic constructor •() → inh::LegacyClass4*
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class LegacyClass5<T extends core::Object* = dynamic> extends inh::LegacyClass3<inh::LegacyClass5::T*> implements inh::GenericInterface<inh::LegacyClass5::T*> {
- synthetic constructor •() → inh::LegacyClass5<inh::LegacyClass5::T*>*
- ;
-}
-abstract class _LegacyClass6&Object&LegacyClass3<T extends core::Object* = dynamic> = core::Object with inh::LegacyClass3<inh::_LegacyClass6&Object&LegacyClass3::T*> /*isAnonymousMixin,hasConstConstructor*/ {
- const synthetic constructor •() → inh::_LegacyClass6&Object&LegacyClass3<inh::_LegacyClass6&Object&LegacyClass3::T*>*
- : super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class LegacyClass6<T extends core::Object* = dynamic> extends inh::_LegacyClass6&Object&LegacyClass3<inh::LegacyClass6::T*> implements inh::GenericInterface<inh::LegacyClass6::T*> {
- synthetic constructor •() → inh::LegacyClass6<inh::LegacyClass6::T*>*
- ;
-}
-class LegacyClass7<T extends core::Object* = dynamic> extends inh::LegacyClass3<inh::LegacyClass7::T*> implements inh::GenericSubInterface<inh::LegacyClass7::T*> {
- synthetic constructor •() → inh::LegacyClass7<inh::LegacyClass7::T*>*
- ;
-}
-abstract class _LegacyClass8&Object&LegacyClass3<T extends core::Object* = dynamic> = core::Object with inh::LegacyClass3<inh::_LegacyClass8&Object&LegacyClass3::T*> /*isAnonymousMixin,hasConstConstructor*/ {
- const synthetic constructor •() → inh::_LegacyClass8&Object&LegacyClass3<inh::_LegacyClass8&Object&LegacyClass3::T*>*
- : super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class LegacyClass8<T extends core::Object* = dynamic> extends inh::_LegacyClass8&Object&LegacyClass3<inh::LegacyClass8::T*> implements inh::GenericSubInterface<inh::LegacyClass8::T*> {
- synthetic constructor •() → inh::LegacyClass8<inh::LegacyClass8::T*>*
- ;
-}
diff --git a/pkg/front_end/testcases/nnbd/inheritance_from_opt_out.dart.strong.expect b/pkg/front_end/testcases/nnbd/inheritance_from_opt_out.dart.strong.expect
deleted file mode 100644
index 3e37070..0000000
--- a/pkg/front_end/testcases/nnbd/inheritance_from_opt_out.dart.strong.expect
+++ /dev/null
@@ -1,195 +0,0 @@
-library /*isNonNullableByDefault*/;
-import self as self;
-import "inheritance_from_opt_out_lib.dart" as inh;
-import "dart:core" as core;
-
-import "org-dartlang-testcase:///inheritance_from_opt_out_lib.dart";
-
-class Class1 extends inh::LegacyClass1 {
- synthetic constructor •() → self::Class1
- : super inh::LegacyClass1::•()
- ;
-}
-class Class2<T extends core::Object? = dynamic> extends inh::LegacyClass2<self::Class2::T%> {
- synthetic constructor •() → self::Class2<self::Class2::T%>
- : super inh::LegacyClass2::•()
- ;
-}
-class Class3a<T extends core::Object? = dynamic> extends inh::LegacyClass3<self::Class3a::T%> {
- synthetic constructor •() → self::Class3a<self::Class3a::T%>
- : super inh::LegacyClass3::•()
- ;
-}
-class Class3b<T extends core::Object? = dynamic> extends inh::LegacyClass3<self::Class3b::T%> implements inh::GenericInterface<self::Class3b::T%> {
- synthetic constructor •() → self::Class3b<self::Class3b::T%>
- : super inh::LegacyClass3::•()
- ;
-}
-class Class4a extends inh::LegacyClass4 {
- synthetic constructor •() → self::Class4a
- : super inh::LegacyClass4::•()
- ;
-}
-class Class4b extends core::Object implements inh::GenericInterface<core::num> {
- synthetic constructor •() → self::Class4b
- : super core::Object::•()
- ;
- abstract forwarding-stub operator ==(dynamic other) → core::bool*;
-}
-class Class4c extends core::Object implements inh::GenericInterface<core::num?> {
- synthetic constructor •() → self::Class4c
- : super core::Object::•()
- ;
- abstract forwarding-stub operator ==(dynamic other) → core::bool*;
-}
-class Class4d extends inh::LegacyClass4 implements inh::GenericInterface<core::num> {
- synthetic constructor •() → self::Class4d
- : super inh::LegacyClass4::•()
- ;
-}
-static method main() → dynamic {}
-
-library;
-import self as inh;
-import "dart:core" as core;
-
-abstract class GenericInterface<T extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → inh::GenericInterface<inh::GenericInterface::T*>*
- : super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-abstract class GenericSubInterface<T extends core::Object* = dynamic> extends core::Object implements inh::GenericInterface<inh::GenericSubInterface::T*> {
- synthetic constructor •() → inh::GenericSubInterface<inh::GenericSubInterface::T*>*
- : super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class LegacyClass1 extends core::Object {
- synthetic constructor •() → inh::LegacyClass1*
- : super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class LegacyClass2<T extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → inh::LegacyClass2<inh::LegacyClass2::T*>*
- : super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class LegacyClass3<T extends core::Object* = dynamic> extends core::Object implements inh::GenericInterface<inh::LegacyClass3::T*> {
- synthetic constructor •() → inh::LegacyClass3<inh::LegacyClass3::T*>*
- : super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class LegacyClass4 extends core::Object implements inh::GenericInterface<core::num*> {
- synthetic constructor •() → inh::LegacyClass4*
- : super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class LegacyClass5<T extends core::Object* = dynamic> extends inh::LegacyClass3<inh::LegacyClass5::T*> implements inh::GenericInterface<inh::LegacyClass5::T*> {
- synthetic constructor •() → inh::LegacyClass5<inh::LegacyClass5::T*>*
- : super inh::LegacyClass3::•()
- ;
-}
-abstract class _LegacyClass6&Object&LegacyClass3<T extends core::Object* = dynamic> = core::Object with inh::LegacyClass3<inh::_LegacyClass6&Object&LegacyClass3::T*> /*isAnonymousMixin,hasConstConstructor*/ {
- const synthetic constructor •() → inh::_LegacyClass6&Object&LegacyClass3<inh::_LegacyClass6&Object&LegacyClass3::T*>*
- : super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class LegacyClass6<T extends core::Object* = dynamic> extends inh::_LegacyClass6&Object&LegacyClass3<inh::LegacyClass6::T*> implements inh::GenericInterface<inh::LegacyClass6::T*> {
- synthetic constructor •() → inh::LegacyClass6<inh::LegacyClass6::T*>*
- : super inh::_LegacyClass6&Object&LegacyClass3::•()
- ;
-}
-class LegacyClass7<T extends core::Object* = dynamic> extends inh::LegacyClass3<inh::LegacyClass7::T*> implements inh::GenericSubInterface<inh::LegacyClass7::T*> {
- synthetic constructor •() → inh::LegacyClass7<inh::LegacyClass7::T*>*
- : super inh::LegacyClass3::•()
- ;
-}
-abstract class _LegacyClass8&Object&LegacyClass3<T extends core::Object* = dynamic> = core::Object with inh::LegacyClass3<inh::_LegacyClass8&Object&LegacyClass3::T*> /*isAnonymousMixin,hasConstConstructor*/ {
- const synthetic constructor •() → inh::_LegacyClass8&Object&LegacyClass3<inh::_LegacyClass8&Object&LegacyClass3::T*>*
- : super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class LegacyClass8<T extends core::Object* = dynamic> extends inh::_LegacyClass8&Object&LegacyClass3<inh::LegacyClass8::T*> implements inh::GenericSubInterface<inh::LegacyClass8::T*> {
- synthetic constructor •() → inh::LegacyClass8<inh::LegacyClass8::T*>*
- : super inh::_LegacyClass8&Object&LegacyClass3::•()
- ;
-}
diff --git a/pkg/front_end/testcases/nnbd/inheritance_from_opt_out.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/inheritance_from_opt_out.dart.strong.transformed.expect
deleted file mode 100644
index 46bad42..0000000
--- a/pkg/front_end/testcases/nnbd/inheritance_from_opt_out.dart.strong.transformed.expect
+++ /dev/null
@@ -1,195 +0,0 @@
-library /*isNonNullableByDefault*/;
-import self as self;
-import "inheritance_from_opt_out_lib.dart" as inh;
-import "dart:core" as core;
-
-import "org-dartlang-testcase:///inheritance_from_opt_out_lib.dart";
-
-class Class1 extends inh::LegacyClass1 {
- synthetic constructor •() → self::Class1
- : super inh::LegacyClass1::•()
- ;
-}
-class Class2<T extends core::Object? = dynamic> extends inh::LegacyClass2<self::Class2::T%> {
- synthetic constructor •() → self::Class2<self::Class2::T%>
- : super inh::LegacyClass2::•()
- ;
-}
-class Class3a<T extends core::Object? = dynamic> extends inh::LegacyClass3<self::Class3a::T%> {
- synthetic constructor •() → self::Class3a<self::Class3a::T%>
- : super inh::LegacyClass3::•()
- ;
-}
-class Class3b<T extends core::Object? = dynamic> extends inh::LegacyClass3<self::Class3b::T%> implements inh::GenericInterface<self::Class3b::T%> {
- synthetic constructor •() → self::Class3b<self::Class3b::T%>
- : super inh::LegacyClass3::•()
- ;
-}
-class Class4a extends inh::LegacyClass4 {
- synthetic constructor •() → self::Class4a
- : super inh::LegacyClass4::•()
- ;
-}
-class Class4b extends core::Object implements inh::GenericInterface<core::num> {
- synthetic constructor •() → self::Class4b
- : super core::Object::•()
- ;
- abstract forwarding-stub operator ==(dynamic other) → core::bool*;
-}
-class Class4c extends core::Object implements inh::GenericInterface<core::num?> {
- synthetic constructor •() → self::Class4c
- : super core::Object::•()
- ;
- abstract forwarding-stub operator ==(dynamic other) → core::bool*;
-}
-class Class4d extends inh::LegacyClass4 implements inh::GenericInterface<core::num> {
- synthetic constructor •() → self::Class4d
- : super inh::LegacyClass4::•()
- ;
-}
-static method main() → dynamic {}
-
-library;
-import self as inh;
-import "dart:core" as core;
-
-abstract class GenericInterface<T extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → inh::GenericInterface<inh::GenericInterface::T*>*
- : super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-abstract class GenericSubInterface<T extends core::Object* = dynamic> extends core::Object implements inh::GenericInterface<inh::GenericSubInterface::T*> {
- synthetic constructor •() → inh::GenericSubInterface<inh::GenericSubInterface::T*>*
- : super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class LegacyClass1 extends core::Object {
- synthetic constructor •() → inh::LegacyClass1*
- : super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class LegacyClass2<T extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → inh::LegacyClass2<inh::LegacyClass2::T*>*
- : super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class LegacyClass3<T extends core::Object* = dynamic> extends core::Object implements inh::GenericInterface<inh::LegacyClass3::T*> {
- synthetic constructor •() → inh::LegacyClass3<inh::LegacyClass3::T*>*
- : super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class LegacyClass4 extends core::Object implements inh::GenericInterface<core::num*> {
- synthetic constructor •() → inh::LegacyClass4*
- : super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class LegacyClass5<T extends core::Object* = dynamic> extends inh::LegacyClass3<inh::LegacyClass5::T*> implements inh::GenericInterface<inh::LegacyClass5::T*> {
- synthetic constructor •() → inh::LegacyClass5<inh::LegacyClass5::T*>*
- : super inh::LegacyClass3::•()
- ;
-}
-abstract class _LegacyClass6&Object&LegacyClass3<T extends core::Object* = dynamic> extends core::Object implements inh::LegacyClass3<inh::_LegacyClass6&Object&LegacyClass3::T*> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ {
- const synthetic constructor •() → inh::_LegacyClass6&Object&LegacyClass3<inh::_LegacyClass6&Object&LegacyClass3::T*>*
- : super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class LegacyClass6<T extends core::Object* = dynamic> extends inh::_LegacyClass6&Object&LegacyClass3<inh::LegacyClass6::T*> implements inh::GenericInterface<inh::LegacyClass6::T*> {
- synthetic constructor •() → inh::LegacyClass6<inh::LegacyClass6::T*>*
- : super inh::_LegacyClass6&Object&LegacyClass3::•()
- ;
-}
-class LegacyClass7<T extends core::Object* = dynamic> extends inh::LegacyClass3<inh::LegacyClass7::T*> implements inh::GenericSubInterface<inh::LegacyClass7::T*> {
- synthetic constructor •() → inh::LegacyClass7<inh::LegacyClass7::T*>*
- : super inh::LegacyClass3::•()
- ;
-}
-abstract class _LegacyClass8&Object&LegacyClass3<T extends core::Object* = dynamic> extends core::Object implements inh::LegacyClass3<inh::_LegacyClass8&Object&LegacyClass3::T*> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ {
- const synthetic constructor •() → inh::_LegacyClass8&Object&LegacyClass3<inh::_LegacyClass8&Object&LegacyClass3::T*>*
- : super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class LegacyClass8<T extends core::Object* = dynamic> extends inh::_LegacyClass8&Object&LegacyClass3<inh::LegacyClass8::T*> implements inh::GenericSubInterface<inh::LegacyClass8::T*> {
- synthetic constructor •() → inh::LegacyClass8<inh::LegacyClass8::T*>*
- : super inh::_LegacyClass8&Object&LegacyClass3::•()
- ;
-}
diff --git a/pkg/front_end/testcases/nnbd/issue40512/issue40512_lib.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue40512/issue40512_lib.dart.strong.expect
deleted file mode 100644
index 001a4f4..0000000
--- a/pkg/front_end/testcases/nnbd/issue40512/issue40512_lib.dart.strong.expect
+++ /dev/null
@@ -1,65 +0,0 @@
-library;
-import self as self;
-import "dart:core" as core;
-import "issue40512_lib.dart" as baz2;
-
-import "org-dartlang-testcase:///issue40512_lib.dart";
-
-abstract class _C&Object&A = core::Object with baz2::A /*isAnonymousMixin,hasConstConstructor*/ {
- const synthetic constructor •() → self::_C&Object&A*
- : super core::Object::•()
- ;
-}
-abstract class _C&Object&A&B = self::_C&Object&A with baz2::B /*isAnonymousMixin,hasConstConstructor*/ {
- const synthetic constructor •() → self::_C&Object&A&B*
- : super self::_C&Object&A::•()
- ;
- abstract forwarding-stub method toString({core::String* s = #C1}) → core::String*;
-}
-class C extends self::_C&Object&A&B {
- synthetic constructor •() → self::C*
- : super self::_C&Object&A&B::•()
- ;
- abstract forwarding-stub method toString({core::String* s = #C1}) → core::String*;
-}
-static method main() → void {
- core::print(new baz2::B::•());
- core::print(new self::C::•());
-}
-
-library baz2;
-import self as baz2;
-import "dart:core" as core;
-
-abstract class A extends core::Object /*isMixinDeclaration*/ {
- method toString({core::String* s = #C1}) → core::String*
- return s;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class B extends core::Object {
- synthetic constructor •() → baz2::B*
- : super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-
-constants {
- #C1 = "hello"
-}
diff --git a/pkg/front_end/testcases/nnbd/issue40512/issue40512_lib.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue40512/issue40512_lib.dart.strong.transformed.expect
deleted file mode 100644
index 27a8f38..0000000
--- a/pkg/front_end/testcases/nnbd/issue40512/issue40512_lib.dart.strong.transformed.expect
+++ /dev/null
@@ -1,85 +0,0 @@
-library;
-import self as self;
-import "dart:core" as core;
-import "issue40512_lib.dart" as baz2;
-
-import "org-dartlang-testcase:///issue40512_lib.dart";
-
-abstract class _C&Object&A extends core::Object implements baz2::A /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ {
- const synthetic constructor •() → self::_C&Object&A*
- : super core::Object::•()
- ;
- method /* from org-dartlang-testcase:///issue40512_lib.dart */ toString({core::String* s = #C1}) → core::String*
- return s;
- abstract member-signature get /* from org-dartlang-testcase:///issue40512_lib.dart */ _identityHashCode() → core::int*;
- abstract member-signature method /* from org-dartlang-testcase:///issue40512_lib.dart */ _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method /* from org-dartlang-testcase:///issue40512_lib.dart */ _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method /* from org-dartlang-testcase:///issue40512_lib.dart */ _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method /* from org-dartlang-testcase:///issue40512_lib.dart */ _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator /* from org-dartlang-testcase:///issue40512_lib.dart */ ==(dynamic other) → core::bool*;
- abstract member-signature get /* from org-dartlang-testcase:///issue40512_lib.dart */ hashCode() → core::int*;
- abstract member-signature method /* from org-dartlang-testcase:///issue40512_lib.dart */ noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get /* from org-dartlang-testcase:///issue40512_lib.dart */ runtimeType() → core::Type*;
-}
-abstract class _C&Object&A&B extends self::_C&Object&A implements baz2::B /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ {
- const synthetic constructor •() → self::_C&Object&A&B*
- : super self::_C&Object&A::•()
- ;
- abstract forwarding-stub method toString({core::String* s = #C1}) → core::String*;
- abstract member-signature get /* from org-dartlang-testcase:///issue40512_lib.dart */ _identityHashCode() → core::int*;
- abstract member-signature method /* from org-dartlang-testcase:///issue40512_lib.dart */ _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method /* from org-dartlang-testcase:///issue40512_lib.dart */ _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method /* from org-dartlang-testcase:///issue40512_lib.dart */ _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method /* from org-dartlang-testcase:///issue40512_lib.dart */ _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator /* from org-dartlang-testcase:///issue40512_lib.dart */ ==(dynamic other) → core::bool*;
- abstract member-signature get /* from org-dartlang-testcase:///issue40512_lib.dart */ hashCode() → core::int*;
- abstract member-signature method /* from org-dartlang-testcase:///issue40512_lib.dart */ noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get /* from org-dartlang-testcase:///issue40512_lib.dart */ runtimeType() → core::Type*;
-}
-class C extends self::_C&Object&A&B {
- synthetic constructor •() → self::C*
- : super self::_C&Object&A&B::•()
- ;
- abstract forwarding-stub method toString({core::String* s = #C1}) → core::String*;
-}
-static method main() → void {
- core::print(new baz2::B::•());
- core::print(new self::C::•());
-}
-
-library baz2;
-import self as baz2;
-import "dart:core" as core;
-
-abstract class A extends core::Object /*isMixinDeclaration*/ {
- method toString({core::String* s = #C1}) → core::String*
- return s;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class B extends core::Object {
- synthetic constructor •() → baz2::B*
- : super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-
-constants {
- #C1 = "hello"
-}
diff --git a/pkg/front_end/testcases/nnbd/issue41156.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue41156.dart.strong.expect
index d977afe..5e2f0fe 100644
--- a/pkg/front_end/testcases/nnbd/issue41156.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue41156.dart.strong.expect
@@ -75,7 +75,7 @@
try {
throw v;
}
- on dynamic catch(final dynamic _) {
+ on core::Object catch(final core::Object _) {
}
return let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/nnbd/issue41156.dart:39:29: Error: A non-null value must be returned since the return type 'String' doesn't allow null.
String Function(int) x2 = (int v) /* error */ {
@@ -85,7 +85,7 @@
try {
return throw v;
}
- on dynamic catch(final dynamic _) {
+ on core::Object catch(final core::Object _) {
}
return let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/nnbd/issue41156.dart:44:29: Error: A non-null value must be returned since the return type 'Never' doesn't allow null.
String Function(int) x3 = (int v) /* error */ {
@@ -95,7 +95,7 @@
try {
self::throwing();
}
- on dynamic catch(final dynamic _) {
+ on core::Object catch(final core::Object _) {
}
return let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/nnbd/issue41156.dart:49:29: Error: A non-null value must be returned since the return type 'String' doesn't allow null.
String Function(int) x5 = (int v) /* error */ {
@@ -105,7 +105,7 @@
try {
return self::throwing();
}
- on dynamic catch(final dynamic _) {
+ on core::Object catch(final core::Object _) {
}
return let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/nnbd/issue41156.dart:54:29: Error: A non-null value must be returned since the return type 'Never' doesn't allow null.
String Function(int) x6 = (int v) /* error */ {
@@ -115,7 +115,7 @@
try {
throw v;
}
- on dynamic catch(final dynamic _) {
+ on core::Object catch(final core::Object _) {
}
return let final<BottomType> #t5 = invalid-expression "pkg/front_end/testcases/nnbd/issue41156.dart:59:37: Error: A non-null value must be returned since the return type 'String' doesn't allow null.
Future<String> Function(int) y2 = (int v) async /* error */ {
@@ -125,7 +125,7 @@
try {
return throw v;
}
- on dynamic catch(final dynamic _) {
+ on core::Object catch(final core::Object _) {
}
return let final<BottomType> #t6 = invalid-expression "pkg/front_end/testcases/nnbd/issue41156.dart:64:37: Error: A non-null value must be returned since the return type 'Never' doesn't allow null.
Future<String> Function(int) y3 = (int v) async /* error */ {
@@ -135,7 +135,7 @@
try {
self::throwing();
}
- on dynamic catch(final dynamic _) {
+ on core::Object catch(final core::Object _) {
}
return let final<BottomType> #t7 = invalid-expression "pkg/front_end/testcases/nnbd/issue41156.dart:69:37: Error: A non-null value must be returned since the return type 'String' doesn't allow null.
Future<String> Function(int) y5 = (int v) async /* error */ {
@@ -145,7 +145,7 @@
try {
return self::throwing();
}
- on dynamic catch(final dynamic _) {
+ on core::Object catch(final core::Object _) {
}
return let final<BottomType> #t8 = invalid-expression "pkg/front_end/testcases/nnbd/issue41156.dart:74:37: Error: A non-null value must be returned since the return type 'Never' doesn't allow null.
Future<String> Function(int) y6 = (int v) async /* error */ {
diff --git a/pkg/front_end/testcases/nnbd/issue41156.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue41156.dart.strong.transformed.expect
index 275ec42..ac884f2 100644
--- a/pkg/front_end/testcases/nnbd/issue41156.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41156.dart.strong.transformed.expect
@@ -232,7 +232,7 @@
try {
throw v;
}
- on dynamic catch(final dynamic _) {
+ on core::Object catch(final core::Object _) {
}
return let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/nnbd/issue41156.dart:39:29: Error: A non-null value must be returned since the return type 'String' doesn't allow null.
String Function(int) x2 = (int v) /* error */ {
@@ -242,7 +242,7 @@
try {
return throw v;
}
- on dynamic catch(final dynamic _) {
+ on core::Object catch(final core::Object _) {
}
return let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/nnbd/issue41156.dart:44:29: Error: A non-null value must be returned since the return type 'Never' doesn't allow null.
String Function(int) x3 = (int v) /* error */ {
@@ -252,7 +252,7 @@
try {
self::throwing();
}
- on dynamic catch(final dynamic _) {
+ on core::Object catch(final core::Object _) {
}
return let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/nnbd/issue41156.dart:49:29: Error: A non-null value must be returned since the return type 'String' doesn't allow null.
String Function(int) x5 = (int v) /* error */ {
@@ -262,7 +262,7 @@
try {
return self::throwing();
}
- on dynamic catch(final dynamic _) {
+ on core::Object catch(final core::Object _) {
}
return let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/nnbd/issue41156.dart:54:29: Error: A non-null value must be returned since the return type 'Never' doesn't allow null.
String Function(int) x6 = (int v) /* error */ {
@@ -283,7 +283,7 @@
try {
throw v;
}
- on dynamic catch(final dynamic _) {
+ on core::Object catch(final core::Object _) {
}
:return_value = let final<BottomType> #t5 = invalid-expression "pkg/front_end/testcases/nnbd/issue41156.dart:59:37: Error: A non-null value must be returned since the return type 'String' doesn't allow null.
Future<String> Function(int) y2 = (int v) async /* error */ {
@@ -318,7 +318,7 @@
:return_value = throw v;
break #L9;
}
- on dynamic catch(final dynamic _) {
+ on core::Object catch(final core::Object _) {
}
:return_value = let final<BottomType> #t6 = invalid-expression "pkg/front_end/testcases/nnbd/issue41156.dart:64:37: Error: A non-null value must be returned since the return type 'Never' doesn't allow null.
Future<String> Function(int) y3 = (int v) async /* error */ {
@@ -352,7 +352,7 @@
try {
self::throwing();
}
- on dynamic catch(final dynamic _) {
+ on core::Object catch(final core::Object _) {
}
:return_value = let final<BottomType> #t7 = invalid-expression "pkg/front_end/testcases/nnbd/issue41156.dart:69:37: Error: A non-null value must be returned since the return type 'String' doesn't allow null.
Future<String> Function(int) y5 = (int v) async /* error */ {
@@ -387,7 +387,7 @@
:return_value = self::throwing();
break #L11;
}
- on dynamic catch(final dynamic _) {
+ on core::Object catch(final core::Object _) {
}
:return_value = let final<BottomType> #t8 = invalid-expression "pkg/front_end/testcases/nnbd/issue41156.dart:74:37: Error: A non-null value must be returned since the return type 'Never' doesn't allow null.
Future<String> Function(int) y6 = (int v) async /* error */ {
diff --git a/pkg/front_end/testcases/nnbd/issue41156.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue41156.dart.weak.expect
index d977afe..5e2f0fe 100644
--- a/pkg/front_end/testcases/nnbd/issue41156.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue41156.dart.weak.expect
@@ -75,7 +75,7 @@
try {
throw v;
}
- on dynamic catch(final dynamic _) {
+ on core::Object catch(final core::Object _) {
}
return let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/nnbd/issue41156.dart:39:29: Error: A non-null value must be returned since the return type 'String' doesn't allow null.
String Function(int) x2 = (int v) /* error */ {
@@ -85,7 +85,7 @@
try {
return throw v;
}
- on dynamic catch(final dynamic _) {
+ on core::Object catch(final core::Object _) {
}
return let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/nnbd/issue41156.dart:44:29: Error: A non-null value must be returned since the return type 'Never' doesn't allow null.
String Function(int) x3 = (int v) /* error */ {
@@ -95,7 +95,7 @@
try {
self::throwing();
}
- on dynamic catch(final dynamic _) {
+ on core::Object catch(final core::Object _) {
}
return let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/nnbd/issue41156.dart:49:29: Error: A non-null value must be returned since the return type 'String' doesn't allow null.
String Function(int) x5 = (int v) /* error */ {
@@ -105,7 +105,7 @@
try {
return self::throwing();
}
- on dynamic catch(final dynamic _) {
+ on core::Object catch(final core::Object _) {
}
return let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/nnbd/issue41156.dart:54:29: Error: A non-null value must be returned since the return type 'Never' doesn't allow null.
String Function(int) x6 = (int v) /* error */ {
@@ -115,7 +115,7 @@
try {
throw v;
}
- on dynamic catch(final dynamic _) {
+ on core::Object catch(final core::Object _) {
}
return let final<BottomType> #t5 = invalid-expression "pkg/front_end/testcases/nnbd/issue41156.dart:59:37: Error: A non-null value must be returned since the return type 'String' doesn't allow null.
Future<String> Function(int) y2 = (int v) async /* error */ {
@@ -125,7 +125,7 @@
try {
return throw v;
}
- on dynamic catch(final dynamic _) {
+ on core::Object catch(final core::Object _) {
}
return let final<BottomType> #t6 = invalid-expression "pkg/front_end/testcases/nnbd/issue41156.dart:64:37: Error: A non-null value must be returned since the return type 'Never' doesn't allow null.
Future<String> Function(int) y3 = (int v) async /* error */ {
@@ -135,7 +135,7 @@
try {
self::throwing();
}
- on dynamic catch(final dynamic _) {
+ on core::Object catch(final core::Object _) {
}
return let final<BottomType> #t7 = invalid-expression "pkg/front_end/testcases/nnbd/issue41156.dart:69:37: Error: A non-null value must be returned since the return type 'String' doesn't allow null.
Future<String> Function(int) y5 = (int v) async /* error */ {
@@ -145,7 +145,7 @@
try {
return self::throwing();
}
- on dynamic catch(final dynamic _) {
+ on core::Object catch(final core::Object _) {
}
return let final<BottomType> #t8 = invalid-expression "pkg/front_end/testcases/nnbd/issue41156.dart:74:37: Error: A non-null value must be returned since the return type 'Never' doesn't allow null.
Future<String> Function(int) y6 = (int v) async /* error */ {
diff --git a/pkg/front_end/testcases/nnbd/issue41156.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue41156.dart.weak.transformed.expect
index 275ec42..ac884f2 100644
--- a/pkg/front_end/testcases/nnbd/issue41156.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41156.dart.weak.transformed.expect
@@ -232,7 +232,7 @@
try {
throw v;
}
- on dynamic catch(final dynamic _) {
+ on core::Object catch(final core::Object _) {
}
return let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/nnbd/issue41156.dart:39:29: Error: A non-null value must be returned since the return type 'String' doesn't allow null.
String Function(int) x2 = (int v) /* error */ {
@@ -242,7 +242,7 @@
try {
return throw v;
}
- on dynamic catch(final dynamic _) {
+ on core::Object catch(final core::Object _) {
}
return let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/nnbd/issue41156.dart:44:29: Error: A non-null value must be returned since the return type 'Never' doesn't allow null.
String Function(int) x3 = (int v) /* error */ {
@@ -252,7 +252,7 @@
try {
self::throwing();
}
- on dynamic catch(final dynamic _) {
+ on core::Object catch(final core::Object _) {
}
return let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/nnbd/issue41156.dart:49:29: Error: A non-null value must be returned since the return type 'String' doesn't allow null.
String Function(int) x5 = (int v) /* error */ {
@@ -262,7 +262,7 @@
try {
return self::throwing();
}
- on dynamic catch(final dynamic _) {
+ on core::Object catch(final core::Object _) {
}
return let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/nnbd/issue41156.dart:54:29: Error: A non-null value must be returned since the return type 'Never' doesn't allow null.
String Function(int) x6 = (int v) /* error */ {
@@ -283,7 +283,7 @@
try {
throw v;
}
- on dynamic catch(final dynamic _) {
+ on core::Object catch(final core::Object _) {
}
:return_value = let final<BottomType> #t5 = invalid-expression "pkg/front_end/testcases/nnbd/issue41156.dart:59:37: Error: A non-null value must be returned since the return type 'String' doesn't allow null.
Future<String> Function(int) y2 = (int v) async /* error */ {
@@ -318,7 +318,7 @@
:return_value = throw v;
break #L9;
}
- on dynamic catch(final dynamic _) {
+ on core::Object catch(final core::Object _) {
}
:return_value = let final<BottomType> #t6 = invalid-expression "pkg/front_end/testcases/nnbd/issue41156.dart:64:37: Error: A non-null value must be returned since the return type 'Never' doesn't allow null.
Future<String> Function(int) y3 = (int v) async /* error */ {
@@ -352,7 +352,7 @@
try {
self::throwing();
}
- on dynamic catch(final dynamic _) {
+ on core::Object catch(final core::Object _) {
}
:return_value = let final<BottomType> #t7 = invalid-expression "pkg/front_end/testcases/nnbd/issue41156.dart:69:37: Error: A non-null value must be returned since the return type 'String' doesn't allow null.
Future<String> Function(int) y5 = (int v) async /* error */ {
@@ -387,7 +387,7 @@
:return_value = self::throwing();
break #L11;
}
- on dynamic catch(final dynamic _) {
+ on core::Object catch(final core::Object _) {
}
:return_value = let final<BottomType> #t8 = invalid-expression "pkg/front_end/testcases/nnbd/issue41156.dart:74:37: Error: A non-null value must be returned since the return type 'Never' doesn't allow null.
Future<String> Function(int) y6 = (int v) async /* error */ {
diff --git a/pkg/front_end/testcases/nnbd/issue41180.dart.outline.expect b/pkg/front_end/testcases/nnbd/issue41180.dart.outline.expect
deleted file mode 100644
index e4be866..0000000
--- a/pkg/front_end/testcases/nnbd/issue41180.dart.outline.expect
+++ /dev/null
@@ -1,55 +0,0 @@
-library;
-import self as self;
-import "dart:core" as core;
-import "issue41180_lib.dart" as iss;
-
-import "org-dartlang-testcase:///issue41180_lib.dart";
-
-class D<Y extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → self::D<self::D::Y*>*
- ;
- method method() → iss::C<self::D::Y*>*
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-static method main() → void
- ;
-static method findKey(iss::Map<core::String*, dynamic>* m, dynamic search) → void
- ;
-
-library /*isNonNullableByDefault*/;
-import self as iss;
-import "dart:core" as core;
-
-class C<X extends core::Object? = dynamic> extends core::Object {
- constructor •(() → iss::Map<core::String, core::String> f) → iss::C<iss::C::X%>
- ;
-}
-class Map<K extends core::Object? = dynamic, V extends core::Object? = dynamic> extends core::Object {
- final field iss::Map::K% key;
- final field iss::Map::V% value;
- constructor •(iss::Map::K% key, iss::Map::V% value) → iss::Map<iss::Map::K%, iss::Map::V%>
- ;
- get entries() → iss::Iterable<core::MapEntry<iss::Map::K%, iss::Map::V%>>
- ;
-}
-class Iterable<E extends core::Object? = dynamic> extends core::Object {
- final field iss::Iterable::E% element;
- constructor •(iss::Iterable::E% element) → iss::Iterable<iss::Iterable::E%>
- ;
- method singleWhere((iss::Iterable::E%) → core::bool test, {generic-covariant-impl () →? iss::Iterable::E% orElse}) → iss::Iterable::E%
- ;
-}
-static method foo(() → iss::Map<core::String, core::String> f) → void
- ;
-static set bar(() → iss::Map<core::String, core::String> f) → void
- ;
diff --git a/pkg/front_end/testcases/nnbd/issue41180.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue41180.dart.strong.expect
deleted file mode 100644
index 636c18f..0000000
--- a/pkg/front_end/testcases/nnbd/issue41180.dart.strong.expect
+++ /dev/null
@@ -1,77 +0,0 @@
-library;
-import self as self;
-import "dart:core" as core;
-import "issue41180_lib.dart" as iss;
-
-import "org-dartlang-testcase:///issue41180_lib.dart";
-
-class D<Y extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → self::D<self::D::Y*>*
- : super core::Object::•()
- ;
- method method() → iss::C<self::D::Y*>*
- return new iss::C::•<self::D::Y*>(() → core::Null? => null);
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-static method main() → void {
- iss::foo(() → core::Null? => null);
- iss::bar = () → iss::Map<core::String*, core::String*>* => null;
- new self::D::•<core::int*>().{self::D::method}();
- self::findKey(new iss::Map::•<core::String*, core::String*>("foo", "bar"), "bar");
-}
-static method findKey(iss::Map<core::String*, dynamic>* m, dynamic search) → void {
- core::print(let final core::MapEntry<core::String*, dynamic>* #t1 = m.{iss::Map::entries}.{iss::Iterable::singleWhere}((core::MapEntry<core::String*, dynamic>* entry) → core::bool* => entry.{core::MapEntry::value}.{core::Object::==}(search), orElse: () → core::Null? => null) in #t1.{core::Object::==}(null) ?{core::String*} null : #t1.{core::MapEntry::key});
-}
-
-library /*isNonNullableByDefault*/;
-import self as iss;
-import "dart:core" as core;
-
-class C<X extends core::Object? = dynamic> extends core::Object {
- constructor •(() → iss::Map<core::String, core::String> f) → iss::C<iss::C::X%>
- : super core::Object::•() {
- core::print(f.{core::Object::runtimeType});
- }
-}
-class Map<K extends core::Object? = dynamic, V extends core::Object? = dynamic> extends core::Object {
- final field iss::Map::K% key;
- final field iss::Map::V% value;
- constructor •(iss::Map::K% key, iss::Map::V% value) → iss::Map<iss::Map::K%, iss::Map::V%>
- : iss::Map::key = key, iss::Map::value = value, super core::Object::•()
- ;
- get entries() → iss::Iterable<core::MapEntry<iss::Map::K%, iss::Map::V%>>
- return new iss::Iterable::•<core::MapEntry<iss::Map::K%, iss::Map::V%>>(new core::MapEntry::_<iss::Map::K%, iss::Map::V%>(this.{iss::Map::key}, this.{iss::Map::value}));
-}
-class Iterable<E extends core::Object? = dynamic> extends core::Object {
- final field iss::Iterable::E% element;
- constructor •(iss::Iterable::E% element) → iss::Iterable<iss::Iterable::E%>
- : iss::Iterable::element = element, super core::Object::•()
- ;
- method singleWhere((iss::Iterable::E%) → core::bool test, {generic-covariant-impl () →? iss::Iterable::E% orElse = #C1}) → iss::Iterable::E% {
- if(test.call(this.{iss::Iterable::element})) {
- return this.{iss::Iterable::element};
- }
- if(!orElse.{core::Object::==}(null))
- return orElse{() → iss::Iterable::E%}.call();
- throw "error";
- }
-}
-static method foo(() → iss::Map<core::String, core::String> f) → void {
- core::print(f.{core::Object::runtimeType});
-}
-static set bar(() → iss::Map<core::String, core::String> f) → void {
- core::print(f.{core::Object::runtimeType});
-}
-
-constants {
- #C1 = null
-}
diff --git a/pkg/front_end/testcases/nnbd/issue41180.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue41180.dart.strong.transformed.expect
deleted file mode 100644
index 636c18f..0000000
--- a/pkg/front_end/testcases/nnbd/issue41180.dart.strong.transformed.expect
+++ /dev/null
@@ -1,77 +0,0 @@
-library;
-import self as self;
-import "dart:core" as core;
-import "issue41180_lib.dart" as iss;
-
-import "org-dartlang-testcase:///issue41180_lib.dart";
-
-class D<Y extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → self::D<self::D::Y*>*
- : super core::Object::•()
- ;
- method method() → iss::C<self::D::Y*>*
- return new iss::C::•<self::D::Y*>(() → core::Null? => null);
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-static method main() → void {
- iss::foo(() → core::Null? => null);
- iss::bar = () → iss::Map<core::String*, core::String*>* => null;
- new self::D::•<core::int*>().{self::D::method}();
- self::findKey(new iss::Map::•<core::String*, core::String*>("foo", "bar"), "bar");
-}
-static method findKey(iss::Map<core::String*, dynamic>* m, dynamic search) → void {
- core::print(let final core::MapEntry<core::String*, dynamic>* #t1 = m.{iss::Map::entries}.{iss::Iterable::singleWhere}((core::MapEntry<core::String*, dynamic>* entry) → core::bool* => entry.{core::MapEntry::value}.{core::Object::==}(search), orElse: () → core::Null? => null) in #t1.{core::Object::==}(null) ?{core::String*} null : #t1.{core::MapEntry::key});
-}
-
-library /*isNonNullableByDefault*/;
-import self as iss;
-import "dart:core" as core;
-
-class C<X extends core::Object? = dynamic> extends core::Object {
- constructor •(() → iss::Map<core::String, core::String> f) → iss::C<iss::C::X%>
- : super core::Object::•() {
- core::print(f.{core::Object::runtimeType});
- }
-}
-class Map<K extends core::Object? = dynamic, V extends core::Object? = dynamic> extends core::Object {
- final field iss::Map::K% key;
- final field iss::Map::V% value;
- constructor •(iss::Map::K% key, iss::Map::V% value) → iss::Map<iss::Map::K%, iss::Map::V%>
- : iss::Map::key = key, iss::Map::value = value, super core::Object::•()
- ;
- get entries() → iss::Iterable<core::MapEntry<iss::Map::K%, iss::Map::V%>>
- return new iss::Iterable::•<core::MapEntry<iss::Map::K%, iss::Map::V%>>(new core::MapEntry::_<iss::Map::K%, iss::Map::V%>(this.{iss::Map::key}, this.{iss::Map::value}));
-}
-class Iterable<E extends core::Object? = dynamic> extends core::Object {
- final field iss::Iterable::E% element;
- constructor •(iss::Iterable::E% element) → iss::Iterable<iss::Iterable::E%>
- : iss::Iterable::element = element, super core::Object::•()
- ;
- method singleWhere((iss::Iterable::E%) → core::bool test, {generic-covariant-impl () →? iss::Iterable::E% orElse = #C1}) → iss::Iterable::E% {
- if(test.call(this.{iss::Iterable::element})) {
- return this.{iss::Iterable::element};
- }
- if(!orElse.{core::Object::==}(null))
- return orElse{() → iss::Iterable::E%}.call();
- throw "error";
- }
-}
-static method foo(() → iss::Map<core::String, core::String> f) → void {
- core::print(f.{core::Object::runtimeType});
-}
-static set bar(() → iss::Map<core::String, core::String> f) → void {
- core::print(f.{core::Object::runtimeType});
-}
-
-constants {
- #C1 = null
-}
diff --git a/pkg/front_end/testcases/nnbd/issue41210a/issue41210_lib1.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue41210a/issue41210_lib1.dart.strong.expect
deleted file mode 100644
index 722b163..0000000
--- a/pkg/front_end/testcases/nnbd/issue41210a/issue41210_lib1.dart.strong.expect
+++ /dev/null
@@ -1,81 +0,0 @@
-library;
-import self as self;
-import "dart:core" as core;
-import "issue41210_lib1.dart" as iss;
-
-import "org-dartlang-testcase:///issue41210_lib1.dart";
-
-abstract class _C&Object&A = core::Object with iss::A /*isAnonymousMixin,hasConstConstructor*/ {
- const synthetic constructor •() → self::_C&Object&A*
- : super core::Object::•()
- ;
-}
-abstract class _C&Object&A&B = self::_C&Object&A with iss::B /*isAnonymousMixin,hasConstConstructor*/ {
- const synthetic constructor •() → self::_C&Object&A&B*
- : super self::_C&Object&A::•()
- ;
- abstract forwarding-stub method method({core::String* s = #C1}) → core::String*;
-}
-class C extends self::_C&Object&A&B {
- synthetic constructor •() → self::C*
- : super self::_C&Object&A&B::•()
- ;
- abstract forwarding-stub method method({core::String* s = #C1}) → core::String*;
-}
-static method main() → dynamic {
- core::print(new self::C::•().{self::C::method}());
-}
-
-library;
-import self as iss;
-import "dart:core" as core;
-import "issue41210_lib2.dart" as iss2;
-
-import "org-dartlang-testcase:///issue41210_lib2.dart";
-
-abstract class A extends core::Object implements iss2::Interface /*isMixinDeclaration*/ {
- method method({core::String* s = #C1}) → core::String*
- return s;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-abstract class B extends core::Object implements iss2::Interface {
- synthetic constructor •() → iss::B*
- : super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
- abstract member-signature method method() → core::String*;
-}
-static method main() → void {}
-
-library /*isNonNullableByDefault*/;
-import self as iss2;
-import "dart:core" as core;
-
-abstract class Interface extends core::Object {
- synthetic constructor •() → iss2::Interface
- : super core::Object::•()
- ;
- abstract method method() → core::String;
-}
-
-constants {
- #C1 = "hello"
-}
diff --git a/pkg/front_end/testcases/nnbd/issue41210a/issue41210_lib1.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue41210a/issue41210_lib1.dart.strong.transformed.expect
deleted file mode 100644
index b7893ae..0000000
--- a/pkg/front_end/testcases/nnbd/issue41210a/issue41210_lib1.dart.strong.transformed.expect
+++ /dev/null
@@ -1,103 +0,0 @@
-library;
-import self as self;
-import "dart:core" as core;
-import "issue41210_lib1.dart" as iss;
-
-import "org-dartlang-testcase:///issue41210_lib1.dart";
-
-abstract class _C&Object&A extends core::Object implements iss::A /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ {
- const synthetic constructor •() → self::_C&Object&A*
- : super core::Object::•()
- ;
- method /* from org-dartlang-testcase:///issue41210_lib1.dart */ method({core::String* s = #C1}) → core::String*
- return s;
- abstract member-signature get /* from org-dartlang-testcase:///issue41210_lib1.dart */ _identityHashCode() → core::int*;
- abstract member-signature method /* from org-dartlang-testcase:///issue41210_lib1.dart */ _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method /* from org-dartlang-testcase:///issue41210_lib1.dart */ _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method /* from org-dartlang-testcase:///issue41210_lib1.dart */ _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method /* from org-dartlang-testcase:///issue41210_lib1.dart */ _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator /* from org-dartlang-testcase:///issue41210_lib1.dart */ ==(dynamic other) → core::bool*;
- abstract member-signature get /* from org-dartlang-testcase:///issue41210_lib1.dart */ hashCode() → core::int*;
- abstract member-signature method /* from org-dartlang-testcase:///issue41210_lib1.dart */ toString() → core::String*;
- abstract member-signature method /* from org-dartlang-testcase:///issue41210_lib1.dart */ noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get /* from org-dartlang-testcase:///issue41210_lib1.dart */ runtimeType() → core::Type*;
-}
-abstract class _C&Object&A&B extends self::_C&Object&A implements iss::B /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ {
- const synthetic constructor •() → self::_C&Object&A&B*
- : super self::_C&Object&A::•()
- ;
- abstract forwarding-stub method method({core::String* s = #C1}) → core::String*;
- abstract member-signature get /* from org-dartlang-testcase:///issue41210_lib1.dart */ _identityHashCode() → core::int*;
- abstract member-signature method /* from org-dartlang-testcase:///issue41210_lib1.dart */ _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method /* from org-dartlang-testcase:///issue41210_lib1.dart */ _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method /* from org-dartlang-testcase:///issue41210_lib1.dart */ _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method /* from org-dartlang-testcase:///issue41210_lib1.dart */ _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator /* from org-dartlang-testcase:///issue41210_lib1.dart */ ==(dynamic other) → core::bool*;
- abstract member-signature get /* from org-dartlang-testcase:///issue41210_lib1.dart */ hashCode() → core::int*;
- abstract member-signature method /* from org-dartlang-testcase:///issue41210_lib1.dart */ toString() → core::String*;
- abstract member-signature method /* from org-dartlang-testcase:///issue41210_lib1.dart */ noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get /* from org-dartlang-testcase:///issue41210_lib1.dart */ runtimeType() → core::Type*;
-}
-class C extends self::_C&Object&A&B {
- synthetic constructor •() → self::C*
- : super self::_C&Object&A&B::•()
- ;
- abstract forwarding-stub method method({core::String* s = #C1}) → core::String*;
-}
-static method main() → dynamic {
- core::print(new self::C::•().{self::C::method}());
-}
-
-library;
-import self as iss;
-import "dart:core" as core;
-import "issue41210_lib2.dart" as iss2;
-
-import "org-dartlang-testcase:///issue41210_lib2.dart";
-
-abstract class A extends core::Object implements iss2::Interface /*isMixinDeclaration*/ {
- method method({core::String* s = #C1}) → core::String*
- return s;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-abstract class B extends core::Object implements iss2::Interface {
- synthetic constructor •() → iss::B*
- : super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
- abstract member-signature method method() → core::String*;
-}
-static method main() → void {}
-
-library /*isNonNullableByDefault*/;
-import self as iss2;
-import "dart:core" as core;
-
-abstract class Interface extends core::Object {
- synthetic constructor •() → iss2::Interface
- : super core::Object::•()
- ;
- abstract method method() → core::String;
-}
-
-constants {
- #C1 = "hello"
-}
diff --git a/pkg/front_end/testcases/nnbd/issue41210b.dart.outline.expect b/pkg/front_end/testcases/nnbd/issue41210b.dart.outline.expect
deleted file mode 100644
index 1df2bf5..0000000
--- a/pkg/front_end/testcases/nnbd/issue41210b.dart.outline.expect
+++ /dev/null
@@ -1,82 +0,0 @@
-library;
-import self as self;
-import "dart:core" as core;
-import "issue41210b_lib1.dart" as iss;
-
-import "org-dartlang-testcase:///issue41210b_lib1.dart";
-
-abstract class _C&Object&A = core::Object with iss::A /*isAnonymousMixin,hasConstConstructor*/ {
- const synthetic constructor •() → self::_C&Object&A*
- : super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-abstract class _C&Object&A&B = self::_C&Object&A with iss::B /*isAnonymousMixin,hasConstConstructor*/ {
- const synthetic constructor •() → self::_C&Object&A&B*
- : super self::_C&Object&A::•()
- ;
-}
-class C extends self::_C&Object&A&B {
- synthetic constructor •() → self::C*
- ;
-}
-static method main() → dynamic
- ;
-
-library;
-import self as iss;
-import "dart:core" as core;
-import "issue41210b_lib2.dart" as iss2;
-
-import "org-dartlang-testcase:///issue41210b_lib2.dart";
-
-abstract class A extends core::Object implements iss2::Interface /*isMixinDeclaration*/ {
- method method({core::String* s = "hello"}) → core::String*
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-abstract class B extends core::Object implements iss2::Interface {
- synthetic constructor •() → iss::B*
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
- abstract member-signature method method() → core::String*;
-}
-static method main() → void
- ;
-
-library /*isNonNullableByDefault*/;
-import self as iss2;
-import "dart:core" as core;
-
-abstract class Interface extends core::Object {
- synthetic constructor •() → iss2::Interface
- ;
- abstract method method() → core::String;
-}
diff --git a/pkg/front_end/testcases/nnbd/issue41210b.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue41210b.dart.strong.expect
deleted file mode 100644
index 9d35f25..0000000
--- a/pkg/front_end/testcases/nnbd/issue41210b.dart.strong.expect
+++ /dev/null
@@ -1,89 +0,0 @@
-library;
-import self as self;
-import "dart:core" as core;
-import "issue41210b_lib1.dart" as iss;
-
-import "org-dartlang-testcase:///issue41210b_lib1.dart";
-
-abstract class _C&Object&A = core::Object with iss::A /*isAnonymousMixin,hasConstConstructor*/ {
- const synthetic constructor •() → self::_C&Object&A*
- : super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-abstract class _C&Object&A&B = self::_C&Object&A with iss::B /*isAnonymousMixin,hasConstConstructor*/ {
- const synthetic constructor •() → self::_C&Object&A&B*
- : super self::_C&Object&A::•()
- ;
-}
-class C extends self::_C&Object&A&B {
- synthetic constructor •() → self::C*
- : super self::_C&Object&A&B::•()
- ;
-}
-static method main() → dynamic {
- core::print(new self::C::•().{iss::A::method}());
-}
-
-library;
-import self as iss;
-import "dart:core" as core;
-import "issue41210b_lib2.dart" as iss2;
-
-import "org-dartlang-testcase:///issue41210b_lib2.dart";
-
-abstract class A extends core::Object implements iss2::Interface /*isMixinDeclaration*/ {
- method method({core::String* s = #C1}) → core::String*
- return s;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-abstract class B extends core::Object implements iss2::Interface {
- synthetic constructor •() → iss::B*
- : super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
- abstract member-signature method method() → core::String*;
-}
-static method main() → void {}
-
-library /*isNonNullableByDefault*/;
-import self as iss2;
-import "dart:core" as core;
-
-abstract class Interface extends core::Object {
- synthetic constructor •() → iss2::Interface
- : super core::Object::•()
- ;
- abstract method method() → core::String;
-}
-
-constants {
- #C1 = "hello"
-}
diff --git a/pkg/front_end/testcases/nnbd/issue41210b.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue41210b.dart.strong.transformed.expect
deleted file mode 100644
index 8339fe6..0000000
--- a/pkg/front_end/testcases/nnbd/issue41210b.dart.strong.transformed.expect
+++ /dev/null
@@ -1,102 +0,0 @@
-library;
-import self as self;
-import "dart:core" as core;
-import "issue41210b_lib1.dart" as iss;
-
-import "org-dartlang-testcase:///issue41210b_lib1.dart";
-
-abstract class _C&Object&A extends core::Object implements iss::A /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ {
- const synthetic constructor •() → self::_C&Object&A*
- : super core::Object::•()
- ;
- abstract member-signature get /* from org-dartlang-testcase:///issue41210b_lib1.dart */ _identityHashCode() → core::int*;
- abstract member-signature method /* from org-dartlang-testcase:///issue41210b_lib1.dart */ _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method /* from org-dartlang-testcase:///issue41210b_lib1.dart */ _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method /* from org-dartlang-testcase:///issue41210b_lib1.dart */ _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method /* from org-dartlang-testcase:///issue41210b_lib1.dart */ _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator /* from org-dartlang-testcase:///issue41210b_lib1.dart */ ==(dynamic other) → core::bool*;
- abstract member-signature get /* from org-dartlang-testcase:///issue41210b_lib1.dart */ hashCode() → core::int*;
- abstract member-signature method /* from org-dartlang-testcase:///issue41210b_lib1.dart */ toString() → core::String*;
- abstract member-signature method /* from org-dartlang-testcase:///issue41210b_lib1.dart */ noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get /* from org-dartlang-testcase:///issue41210b_lib1.dart */ runtimeType() → core::Type*;
- method /* from org-dartlang-testcase:///issue41210b_lib1.dart */ method({core::String* s = #C1}) → core::String*
- return s;
-}
-abstract class _C&Object&A&B extends self::_C&Object&A implements iss::B /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ {
- const synthetic constructor •() → self::_C&Object&A&B*
- : super self::_C&Object&A::•()
- ;
- abstract member-signature get /* from org-dartlang-testcase:///issue41210b_lib1.dart */ _identityHashCode() → core::int*;
- abstract member-signature method /* from org-dartlang-testcase:///issue41210b_lib1.dart */ _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method /* from org-dartlang-testcase:///issue41210b_lib1.dart */ _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method /* from org-dartlang-testcase:///issue41210b_lib1.dart */ _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method /* from org-dartlang-testcase:///issue41210b_lib1.dart */ _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator /* from org-dartlang-testcase:///issue41210b_lib1.dart */ ==(dynamic other) → core::bool*;
- abstract member-signature get /* from org-dartlang-testcase:///issue41210b_lib1.dart */ hashCode() → core::int*;
- abstract member-signature method /* from org-dartlang-testcase:///issue41210b_lib1.dart */ toString() → core::String*;
- abstract member-signature method /* from org-dartlang-testcase:///issue41210b_lib1.dart */ noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get /* from org-dartlang-testcase:///issue41210b_lib1.dart */ runtimeType() → core::Type*;
- abstract member-signature method /* from org-dartlang-testcase:///issue41210b_lib1.dart */ method() → core::String*;
-}
-class C extends self::_C&Object&A&B {
- synthetic constructor •() → self::C*
- : super self::_C&Object&A&B::•()
- ;
-}
-static method main() → dynamic {
- core::print(new self::C::•().{iss::A::method}());
-}
-
-library;
-import self as iss;
-import "dart:core" as core;
-import "issue41210b_lib2.dart" as iss2;
-
-import "org-dartlang-testcase:///issue41210b_lib2.dart";
-
-abstract class A extends core::Object implements iss2::Interface /*isMixinDeclaration*/ {
- method method({core::String* s = #C1}) → core::String*
- return s;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-abstract class B extends core::Object implements iss2::Interface {
- synthetic constructor •() → iss::B*
- : super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
- abstract member-signature method method() → core::String*;
-}
-static method main() → void {}
-
-library /*isNonNullableByDefault*/;
-import self as iss2;
-import "dart:core" as core;
-
-abstract class Interface extends core::Object {
- synthetic constructor •() → iss2::Interface
- : super core::Object::•()
- ;
- abstract method method() → core::String;
-}
-
-constants {
- #C1 = "hello"
-}
diff --git a/pkg/front_end/testcases/nnbd/issue41496.dart.outline.expect b/pkg/front_end/testcases/nnbd/issue41496.dart.outline.expect
deleted file mode 100644
index de2e711..0000000
--- a/pkg/front_end/testcases/nnbd/issue41496.dart.outline.expect
+++ /dev/null
@@ -1,32 +0,0 @@
-library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/issue41496.dart:7:11: Error: Field 'f1' should be initialized because its type 'void Function()' doesn't allow null.
-// LegacyFoo f1;
-// ^^
-//
-// pkg/front_end/testcases/nnbd/issue41496.dart:10:20: Error: Field 'f2' should be initialized because its type 'void Function()' doesn't allow null.
-// static LegacyFoo f2;
-// ^^
-//
-import self as self;
-import "dart:core" as core;
-
-import "org-dartlang-testcase:///issue41496_lib.dart";
-
-class C extends core::Object {
- static field () → void f2;
- synthetic constructor •() → self::C
- ;
-}
-static field () → void f1;
-static method main() → dynamic
- ;
-
-library opted_out_lib;
-import self as self2;
-
-typedef LegacyFoo = () →* void;
-static method test(() →* void f) → dynamic
- ;
diff --git a/pkg/front_end/testcases/nnbd/issue41496.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue41496.dart.strong.expect
deleted file mode 100644
index 5a1bc313..0000000
--- a/pkg/front_end/testcases/nnbd/issue41496.dart.strong.expect
+++ /dev/null
@@ -1,33 +0,0 @@
-library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/issue41496.dart:7:11: Error: Field 'f1' should be initialized because its type 'void Function()' doesn't allow null.
-// LegacyFoo f1;
-// ^^
-//
-// pkg/front_end/testcases/nnbd/issue41496.dart:10:20: Error: Field 'f2' should be initialized because its type 'void Function()' doesn't allow null.
-// static LegacyFoo f2;
-// ^^
-//
-import self as self;
-import "dart:core" as core;
-
-import "org-dartlang-testcase:///issue41496_lib.dart";
-
-class C extends core::Object {
- static field () → void f2 = null;
- synthetic constructor •() → self::C
- : super core::Object::•()
- ;
-}
-static field () → void f1;
-static method main() → dynamic {
- new self::C::•();
-}
-
-library opted_out_lib;
-import self as self2;
-
-typedef LegacyFoo = () →* void;
-static method test(() →* void f) → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue41496.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue41496.dart.strong.transformed.expect
deleted file mode 100644
index 5a1bc313..0000000
--- a/pkg/front_end/testcases/nnbd/issue41496.dart.strong.transformed.expect
+++ /dev/null
@@ -1,33 +0,0 @@
-library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/issue41496.dart:7:11: Error: Field 'f1' should be initialized because its type 'void Function()' doesn't allow null.
-// LegacyFoo f1;
-// ^^
-//
-// pkg/front_end/testcases/nnbd/issue41496.dart:10:20: Error: Field 'f2' should be initialized because its type 'void Function()' doesn't allow null.
-// static LegacyFoo f2;
-// ^^
-//
-import self as self;
-import "dart:core" as core;
-
-import "org-dartlang-testcase:///issue41496_lib.dart";
-
-class C extends core::Object {
- static field () → void f2 = null;
- synthetic constructor •() → self::C
- : super core::Object::•()
- ;
-}
-static field () → void f1;
-static method main() → dynamic {
- new self::C::•();
-}
-
-library opted_out_lib;
-import self as self2;
-
-typedef LegacyFoo = () →* void;
-static method test(() →* void f) → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue41496b.dart.outline.expect b/pkg/front_end/testcases/nnbd/issue41496b.dart.outline.expect
deleted file mode 100644
index e596933..0000000
--- a/pkg/front_end/testcases/nnbd/issue41496b.dart.outline.expect
+++ /dev/null
@@ -1,36 +0,0 @@
-library opted_out_lib;
-import self as self;
-
-import "org-dartlang-testcase:///issue41496b_lib.dart" as opt_in;
-
-typedef LegacyFoo = () →* void;
-static method test(() →* void f) → dynamic
- ;
-static method main() → dynamic
- ;
-
-library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/issue41496b_lib.dart:7:11: Error: Field 'f1' should be initialized because its type 'void Function()' doesn't allow null.
-// LegacyFoo f1;
-// ^^
-//
-// pkg/front_end/testcases/nnbd/issue41496b_lib.dart:10:20: Error: Field 'f2' should be initialized because its type 'void Function()' doesn't allow null.
-// static LegacyFoo f2;
-// ^^
-//
-import self as self2;
-import "dart:core" as core;
-
-import "org-dartlang-testcase:///issue41496b.dart";
-
-class C extends core::Object {
- static field () → void f2;
- synthetic constructor •() → self2::C
- ;
-}
-static field () → void f1;
-static method main() → dynamic
- ;
diff --git a/pkg/front_end/testcases/nnbd/issue41496b.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue41496b.dart.strong.transformed.expect
deleted file mode 100644
index b70a566..0000000
--- a/pkg/front_end/testcases/nnbd/issue41496b.dart.strong.transformed.expect
+++ /dev/null
@@ -1,39 +0,0 @@
-library opted_out_lib;
-import self as self;
-import "issue41496b_lib.dart" as iss;
-
-import "org-dartlang-testcase:///issue41496b_lib.dart" as opt_in;
-
-typedef LegacyFoo = () →* void;
-static method test(() →* void f) → dynamic {}
-static method main() → dynamic {
- iss::main();
-}
-
-library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/issue41496b_lib.dart:7:11: Error: Field 'f1' should be initialized because its type 'void Function()' doesn't allow null.
-// LegacyFoo f1;
-// ^^
-//
-// pkg/front_end/testcases/nnbd/issue41496b_lib.dart:10:20: Error: Field 'f2' should be initialized because its type 'void Function()' doesn't allow null.
-// static LegacyFoo f2;
-// ^^
-//
-import self as iss;
-import "dart:core" as core;
-
-import "org-dartlang-testcase:///issue41496b.dart";
-
-class C extends core::Object {
- static field () → void f2 = null;
- synthetic constructor •() → iss::C
- : super core::Object::•()
- ;
-}
-static field () → void f1;
-static method main() → dynamic {
- new iss::C::•();
-}
diff --git a/pkg/front_end/testcases/nnbd/issue41496b.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue41496b.dart.weak.expect
deleted file mode 100644
index b70a566..0000000
--- a/pkg/front_end/testcases/nnbd/issue41496b.dart.weak.expect
+++ /dev/null
@@ -1,39 +0,0 @@
-library opted_out_lib;
-import self as self;
-import "issue41496b_lib.dart" as iss;
-
-import "org-dartlang-testcase:///issue41496b_lib.dart" as opt_in;
-
-typedef LegacyFoo = () →* void;
-static method test(() →* void f) → dynamic {}
-static method main() → dynamic {
- iss::main();
-}
-
-library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/issue41496b_lib.dart:7:11: Error: Field 'f1' should be initialized because its type 'void Function()' doesn't allow null.
-// LegacyFoo f1;
-// ^^
-//
-// pkg/front_end/testcases/nnbd/issue41496b_lib.dart:10:20: Error: Field 'f2' should be initialized because its type 'void Function()' doesn't allow null.
-// static LegacyFoo f2;
-// ^^
-//
-import self as iss;
-import "dart:core" as core;
-
-import "org-dartlang-testcase:///issue41496b.dart";
-
-class C extends core::Object {
- static field () → void f2 = null;
- synthetic constructor •() → iss::C
- : super core::Object::•()
- ;
-}
-static field () → void f1;
-static method main() → dynamic {
- new iss::C::•();
-}
diff --git a/pkg/front_end/testcases/nnbd/issue41496b.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue41496b.dart.weak.transformed.expect
deleted file mode 100644
index b70a566..0000000
--- a/pkg/front_end/testcases/nnbd/issue41496b.dart.weak.transformed.expect
+++ /dev/null
@@ -1,39 +0,0 @@
-library opted_out_lib;
-import self as self;
-import "issue41496b_lib.dart" as iss;
-
-import "org-dartlang-testcase:///issue41496b_lib.dart" as opt_in;
-
-typedef LegacyFoo = () →* void;
-static method test(() →* void f) → dynamic {}
-static method main() → dynamic {
- iss::main();
-}
-
-library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/issue41496b_lib.dart:7:11: Error: Field 'f1' should be initialized because its type 'void Function()' doesn't allow null.
-// LegacyFoo f1;
-// ^^
-//
-// pkg/front_end/testcases/nnbd/issue41496b_lib.dart:10:20: Error: Field 'f2' should be initialized because its type 'void Function()' doesn't allow null.
-// static LegacyFoo f2;
-// ^^
-//
-import self as iss;
-import "dart:core" as core;
-
-import "org-dartlang-testcase:///issue41496b.dart";
-
-class C extends core::Object {
- static field () → void f2 = null;
- synthetic constructor •() → iss::C
- : super core::Object::•()
- ;
-}
-static field () → void f1;
-static method main() → dynamic {
- new iss::C::•();
-}
diff --git a/pkg/front_end/testcases/nnbd/issue41498.dart.outline.expect b/pkg/front_end/testcases/nnbd/issue41498.dart.outline.expect
deleted file mode 100644
index 14ca504..0000000
--- a/pkg/front_end/testcases/nnbd/issue41498.dart.outline.expect
+++ /dev/null
@@ -1,44 +0,0 @@
-library /*isNonNullableByDefault*/;
-import self as self;
-import "dart:core" as core;
-
-import "org-dartlang-testcase:///issue41498_lib.dart";
-
-class C extends core::Object {
- synthetic constructor •() → self::C
- ;
- static method test() → void
- ;
- method test2() → void
- ;
-}
-static method test() → dynamic
- ;
-static method main() → dynamic
- ;
-
-library opted_out_lib;
-import self as self2;
-import "dart:core" as core;
-
-typedef LegacyFoo = () →* void;
-class C extends core::Object {
- synthetic constructor •() → self2::C*
- ;
- static method test() → void
- ;
- method test2() → void
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-static method test() → dynamic
- ;
diff --git a/pkg/front_end/testcases/nnbd/issue41498.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue41498.dart.weak.expect
deleted file mode 100644
index eb65bba..0000000
--- a/pkg/front_end/testcases/nnbd/issue41498.dart.weak.expect
+++ /dev/null
@@ -1,96 +0,0 @@
-library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/issue41498.dart:11:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
-// f.toString(); // error
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41498.dart:17:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
-// f.toString(); // error
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41498.dart:24:3: Error: Non-nullable variable 'f' must be assigned before it can be used.
-// f.toString(); // error
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41498.dart:29:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
-// f.toString(); // error
-// ^
-//
-import self as self;
-import "dart:core" as core;
-
-import "org-dartlang-testcase:///issue41498_lib.dart";
-
-class C extends core::Object {
- synthetic constructor •() → self::C
- : super core::Object::•()
- ;
- static method test() → void {
- () → void f;
- (let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/nnbd/issue41498.dart:11:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
- f.toString(); // error
- ^" in f).{core::Object::toString}();
- }
- method test2() → void {
- () → void f;
- (let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/nnbd/issue41498.dart:17:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
- f.toString(); // error
- ^" in f).{core::Object::toString}();
- }
-}
-static method test() → dynamic {
- () → void f;
- (let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/nnbd/issue41498.dart:24:3: Error: Non-nullable variable 'f' must be assigned before it can be used.
- f.toString(); // error
- ^" in f).{core::Object::toString}();
- core::Function foo = () → core::Null? {
- () → void f;
- (let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/nnbd/issue41498.dart:29:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
- f.toString(); // error
- ^" in f).{core::Object::toString}();
- };
- self::C::test();
- new self::C::•().{self::C::test2}();
-}
-static method main() → dynamic {}
-
-library opted_out_lib;
-import self as self2;
-import "dart:core" as core;
-
-typedef LegacyFoo = () →* void;
-class C extends core::Object {
- synthetic constructor •() → self2::C*
- : super core::Object::•()
- ;
- static method test() → void {
- () →* void f;
- f.{core::Object::toString}();
- }
- method test2() → void {
- () →* void f;
- f.{core::Object::toString}();
- }
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-static method test() → dynamic {
- () →* void f;
- f.{core::Object::toString}();
- core::Function* foo = () → core::Null? {
- () →* void f;
- f.{core::Object::toString}();
- };
- self2::C::test();
- new self2::C::•().{self2::C::test2}();
-}
diff --git a/pkg/front_end/testcases/nnbd/issue41498.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue41498.dart.weak.transformed.expect
deleted file mode 100644
index eb65bba..0000000
--- a/pkg/front_end/testcases/nnbd/issue41498.dart.weak.transformed.expect
+++ /dev/null
@@ -1,96 +0,0 @@
-library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/issue41498.dart:11:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
-// f.toString(); // error
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41498.dart:17:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
-// f.toString(); // error
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41498.dart:24:3: Error: Non-nullable variable 'f' must be assigned before it can be used.
-// f.toString(); // error
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41498.dart:29:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
-// f.toString(); // error
-// ^
-//
-import self as self;
-import "dart:core" as core;
-
-import "org-dartlang-testcase:///issue41498_lib.dart";
-
-class C extends core::Object {
- synthetic constructor •() → self::C
- : super core::Object::•()
- ;
- static method test() → void {
- () → void f;
- (let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/nnbd/issue41498.dart:11:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
- f.toString(); // error
- ^" in f).{core::Object::toString}();
- }
- method test2() → void {
- () → void f;
- (let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/nnbd/issue41498.dart:17:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
- f.toString(); // error
- ^" in f).{core::Object::toString}();
- }
-}
-static method test() → dynamic {
- () → void f;
- (let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/nnbd/issue41498.dart:24:3: Error: Non-nullable variable 'f' must be assigned before it can be used.
- f.toString(); // error
- ^" in f).{core::Object::toString}();
- core::Function foo = () → core::Null? {
- () → void f;
- (let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/nnbd/issue41498.dart:29:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
- f.toString(); // error
- ^" in f).{core::Object::toString}();
- };
- self::C::test();
- new self::C::•().{self::C::test2}();
-}
-static method main() → dynamic {}
-
-library opted_out_lib;
-import self as self2;
-import "dart:core" as core;
-
-typedef LegacyFoo = () →* void;
-class C extends core::Object {
- synthetic constructor •() → self2::C*
- : super core::Object::•()
- ;
- static method test() → void {
- () →* void f;
- f.{core::Object::toString}();
- }
- method test2() → void {
- () →* void f;
- f.{core::Object::toString}();
- }
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-static method test() → dynamic {
- () →* void f;
- f.{core::Object::toString}();
- core::Function* foo = () → core::Null? {
- () →* void f;
- f.{core::Object::toString}();
- };
- self2::C::test();
- new self2::C::•().{self2::C::test2}();
-}
diff --git a/pkg/front_end/testcases/nnbd/issue41498b.dart.outline.expect b/pkg/front_end/testcases/nnbd/issue41498b.dart.outline.expect
deleted file mode 100644
index f480629..0000000
--- a/pkg/front_end/testcases/nnbd/issue41498b.dart.outline.expect
+++ /dev/null
@@ -1,48 +0,0 @@
-library opted_out_lib;
-import self as self;
-import "dart:core" as core;
-
-import "org-dartlang-testcase:///issue41498b_lib.dart" as opt_in;
-
-typedef LegacyFoo = () →* void;
-class C extends core::Object {
- synthetic constructor •() → self::C*
- ;
- static method test() → void
- ;
- method test2() → void
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-static method test() → dynamic
- ;
-static method main() → dynamic
- ;
-
-library /*isNonNullableByDefault*/;
-import self as self2;
-import "dart:core" as core;
-
-import "org-dartlang-testcase:///issue41498b.dart";
-
-class C extends core::Object {
- synthetic constructor •() → self2::C
- ;
- static method test() → void
- ;
- method test2() → void
- ;
-}
-static method test() → dynamic
- ;
-static method main() → dynamic
- ;
diff --git a/pkg/front_end/testcases/nnbd/issue41498b.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue41498b.dart.strong.transformed.expect
deleted file mode 100644
index 0a74101..0000000
--- a/pkg/front_end/testcases/nnbd/issue41498b.dart.strong.transformed.expect
+++ /dev/null
@@ -1,102 +0,0 @@
-library opted_out_lib;
-import self as self;
-import "dart:core" as core;
-import "issue41498b_lib.dart" as iss;
-
-import "org-dartlang-testcase:///issue41498b_lib.dart" as opt_in;
-
-typedef LegacyFoo = () →* void;
-class C extends core::Object {
- synthetic constructor •() → self::C*
- : super core::Object::•()
- ;
- static method test() → void {
- () →* void f;
- f.{core::Object::toString}();
- }
- method test2() → void {
- () →* void f;
- f.{core::Object::toString}();
- }
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-static method test() → dynamic {
- () →* void f;
- f.{core::Object::toString}();
- core::Function* foo = () → core::Null? {
- () →* void f;
- f.{core::Object::toString}();
- };
- self::C::test();
- new self::C::•().{self::C::test2}();
-}
-static method main() → dynamic {
- iss::main();
-}
-
-library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/issue41498b_lib.dart:11:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
-// f.toString(); // error
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41498b_lib.dart:17:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
-// f.toString(); // error
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41498b_lib.dart:24:3: Error: Non-nullable variable 'f' must be assigned before it can be used.
-// f.toString(); // error
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41498b_lib.dart:29:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
-// f.toString(); // error
-// ^
-//
-import self as iss;
-import "dart:core" as core;
-
-import "org-dartlang-testcase:///issue41498b.dart";
-
-class C extends core::Object {
- synthetic constructor •() → iss::C
- : super core::Object::•()
- ;
- static method test() → void {
- () → void f;
- (let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/nnbd/issue41498b_lib.dart:11:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
- f.toString(); // error
- ^" in f).{core::Object::toString}();
- }
- method test2() → void {
- () → void f;
- (let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/nnbd/issue41498b_lib.dart:17:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
- f.toString(); // error
- ^" in f).{core::Object::toString}();
- }
-}
-static method test() → dynamic {
- () → void f;
- (let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/nnbd/issue41498b_lib.dart:24:3: Error: Non-nullable variable 'f' must be assigned before it can be used.
- f.toString(); // error
- ^" in f).{core::Object::toString}();
- core::Function foo = () → core::Null? {
- () → void f;
- (let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/nnbd/issue41498b_lib.dart:29:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
- f.toString(); // error
- ^" in f).{core::Object::toString}();
- };
- iss::C::test();
- new iss::C::•().{iss::C::test2}();
-}
-static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue41498b.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue41498b.dart.weak.expect
deleted file mode 100644
index 0a74101..0000000
--- a/pkg/front_end/testcases/nnbd/issue41498b.dart.weak.expect
+++ /dev/null
@@ -1,102 +0,0 @@
-library opted_out_lib;
-import self as self;
-import "dart:core" as core;
-import "issue41498b_lib.dart" as iss;
-
-import "org-dartlang-testcase:///issue41498b_lib.dart" as opt_in;
-
-typedef LegacyFoo = () →* void;
-class C extends core::Object {
- synthetic constructor •() → self::C*
- : super core::Object::•()
- ;
- static method test() → void {
- () →* void f;
- f.{core::Object::toString}();
- }
- method test2() → void {
- () →* void f;
- f.{core::Object::toString}();
- }
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-static method test() → dynamic {
- () →* void f;
- f.{core::Object::toString}();
- core::Function* foo = () → core::Null? {
- () →* void f;
- f.{core::Object::toString}();
- };
- self::C::test();
- new self::C::•().{self::C::test2}();
-}
-static method main() → dynamic {
- iss::main();
-}
-
-library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/issue41498b_lib.dart:11:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
-// f.toString(); // error
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41498b_lib.dart:17:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
-// f.toString(); // error
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41498b_lib.dart:24:3: Error: Non-nullable variable 'f' must be assigned before it can be used.
-// f.toString(); // error
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41498b_lib.dart:29:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
-// f.toString(); // error
-// ^
-//
-import self as iss;
-import "dart:core" as core;
-
-import "org-dartlang-testcase:///issue41498b.dart";
-
-class C extends core::Object {
- synthetic constructor •() → iss::C
- : super core::Object::•()
- ;
- static method test() → void {
- () → void f;
- (let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/nnbd/issue41498b_lib.dart:11:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
- f.toString(); // error
- ^" in f).{core::Object::toString}();
- }
- method test2() → void {
- () → void f;
- (let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/nnbd/issue41498b_lib.dart:17:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
- f.toString(); // error
- ^" in f).{core::Object::toString}();
- }
-}
-static method test() → dynamic {
- () → void f;
- (let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/nnbd/issue41498b_lib.dart:24:3: Error: Non-nullable variable 'f' must be assigned before it can be used.
- f.toString(); // error
- ^" in f).{core::Object::toString}();
- core::Function foo = () → core::Null? {
- () → void f;
- (let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/nnbd/issue41498b_lib.dart:29:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
- f.toString(); // error
- ^" in f).{core::Object::toString}();
- };
- iss::C::test();
- new iss::C::•().{iss::C::test2}();
-}
-static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue41498b.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue41498b.dart.weak.transformed.expect
deleted file mode 100644
index 0a74101..0000000
--- a/pkg/front_end/testcases/nnbd/issue41498b.dart.weak.transformed.expect
+++ /dev/null
@@ -1,102 +0,0 @@
-library opted_out_lib;
-import self as self;
-import "dart:core" as core;
-import "issue41498b_lib.dart" as iss;
-
-import "org-dartlang-testcase:///issue41498b_lib.dart" as opt_in;
-
-typedef LegacyFoo = () →* void;
-class C extends core::Object {
- synthetic constructor •() → self::C*
- : super core::Object::•()
- ;
- static method test() → void {
- () →* void f;
- f.{core::Object::toString}();
- }
- method test2() → void {
- () →* void f;
- f.{core::Object::toString}();
- }
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-static method test() → dynamic {
- () →* void f;
- f.{core::Object::toString}();
- core::Function* foo = () → core::Null? {
- () →* void f;
- f.{core::Object::toString}();
- };
- self::C::test();
- new self::C::•().{self::C::test2}();
-}
-static method main() → dynamic {
- iss::main();
-}
-
-library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/issue41498b_lib.dart:11:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
-// f.toString(); // error
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41498b_lib.dart:17:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
-// f.toString(); // error
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41498b_lib.dart:24:3: Error: Non-nullable variable 'f' must be assigned before it can be used.
-// f.toString(); // error
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41498b_lib.dart:29:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
-// f.toString(); // error
-// ^
-//
-import self as iss;
-import "dart:core" as core;
-
-import "org-dartlang-testcase:///issue41498b.dart";
-
-class C extends core::Object {
- synthetic constructor •() → iss::C
- : super core::Object::•()
- ;
- static method test() → void {
- () → void f;
- (let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/nnbd/issue41498b_lib.dart:11:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
- f.toString(); // error
- ^" in f).{core::Object::toString}();
- }
- method test2() → void {
- () → void f;
- (let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/nnbd/issue41498b_lib.dart:17:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
- f.toString(); // error
- ^" in f).{core::Object::toString}();
- }
-}
-static method test() → dynamic {
- () → void f;
- (let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/nnbd/issue41498b_lib.dart:24:3: Error: Non-nullable variable 'f' must be assigned before it can be used.
- f.toString(); // error
- ^" in f).{core::Object::toString}();
- core::Function foo = () → core::Null? {
- () → void f;
- (let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/nnbd/issue41498b_lib.dart:29:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
- f.toString(); // error
- ^" in f).{core::Object::toString}();
- };
- iss::C::test();
- new iss::C::•().{iss::C::test2}();
-}
-static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue41499.dart.outline.expect b/pkg/front_end/testcases/nnbd/issue41499.dart.outline.expect
deleted file mode 100644
index 4b8ad7d..0000000
--- a/pkg/front_end/testcases/nnbd/issue41499.dart.outline.expect
+++ /dev/null
@@ -1,27 +0,0 @@
-library /*isNonNullableByDefault*/;
-import self as self;
-import "dart:core" as core;
-
-import "org-dartlang-testcase:///issue41499_lib.dart";
-
-class C extends core::Object {
- synthetic constructor •() → self::C
- ;
- static method sTest() → () → void
- ;
- method mTest() → () → void
- ;
- get gTest() → () → void
- ;
-}
-static method test() → () → void
- ;
-static method main() → dynamic
- ;
-
-library;
-import self as self2;
-
-typedef LegacyFoo = () →* void;
-static method test(() →* void f) → dynamic
- ;
diff --git a/pkg/front_end/testcases/nnbd/issue41499.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue41499.dart.strong.expect
deleted file mode 100644
index e55976c..0000000
--- a/pkg/front_end/testcases/nnbd/issue41499.dart.strong.expect
+++ /dev/null
@@ -1,57 +0,0 @@
-library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/issue41499.dart:8:20: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
-// static LegacyFoo sTest() {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41499.dart:10:13: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
-// LegacyFoo mTest() {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41499.dart:12:17: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
-// LegacyFoo get gTest {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41499.dart:15:11: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
-// LegacyFoo test() {}
-// ^
-//
-import self as self;
-import "dart:core" as core;
-
-import "org-dartlang-testcase:///issue41499_lib.dart";
-
-class C extends core::Object {
- synthetic constructor •() → self::C
- : super core::Object::•()
- ;
- static method sTest() → () → void {
- return let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/nnbd/issue41499.dart:8:20: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
- static LegacyFoo sTest() {}
- ^" in null;
- }
- method mTest() → () → void {
- return let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/nnbd/issue41499.dart:10:13: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
- LegacyFoo mTest() {}
- ^" in null;
- }
- get gTest() → () → void {
- return let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/nnbd/issue41499.dart:12:17: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
- LegacyFoo get gTest {}
- ^" in null;
- }
-}
-static method test() → () → void {
- return let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/nnbd/issue41499.dart:15:11: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
-LegacyFoo test() {}
- ^" in null;
-}
-static method main() → dynamic {}
-
-library;
-import self as self2;
-
-typedef LegacyFoo = () →* void;
-static method test(() →* void f) → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue41499.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue41499.dart.strong.transformed.expect
deleted file mode 100644
index e55976c..0000000
--- a/pkg/front_end/testcases/nnbd/issue41499.dart.strong.transformed.expect
+++ /dev/null
@@ -1,57 +0,0 @@
-library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/issue41499.dart:8:20: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
-// static LegacyFoo sTest() {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41499.dart:10:13: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
-// LegacyFoo mTest() {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41499.dart:12:17: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
-// LegacyFoo get gTest {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41499.dart:15:11: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
-// LegacyFoo test() {}
-// ^
-//
-import self as self;
-import "dart:core" as core;
-
-import "org-dartlang-testcase:///issue41499_lib.dart";
-
-class C extends core::Object {
- synthetic constructor •() → self::C
- : super core::Object::•()
- ;
- static method sTest() → () → void {
- return let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/nnbd/issue41499.dart:8:20: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
- static LegacyFoo sTest() {}
- ^" in null;
- }
- method mTest() → () → void {
- return let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/nnbd/issue41499.dart:10:13: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
- LegacyFoo mTest() {}
- ^" in null;
- }
- get gTest() → () → void {
- return let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/nnbd/issue41499.dart:12:17: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
- LegacyFoo get gTest {}
- ^" in null;
- }
-}
-static method test() → () → void {
- return let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/nnbd/issue41499.dart:15:11: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
-LegacyFoo test() {}
- ^" in null;
-}
-static method main() → dynamic {}
-
-library;
-import self as self2;
-
-typedef LegacyFoo = () →* void;
-static method test(() →* void f) → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue41499.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue41499.dart.weak.expect
deleted file mode 100644
index e55976c..0000000
--- a/pkg/front_end/testcases/nnbd/issue41499.dart.weak.expect
+++ /dev/null
@@ -1,57 +0,0 @@
-library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/issue41499.dart:8:20: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
-// static LegacyFoo sTest() {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41499.dart:10:13: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
-// LegacyFoo mTest() {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41499.dart:12:17: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
-// LegacyFoo get gTest {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41499.dart:15:11: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
-// LegacyFoo test() {}
-// ^
-//
-import self as self;
-import "dart:core" as core;
-
-import "org-dartlang-testcase:///issue41499_lib.dart";
-
-class C extends core::Object {
- synthetic constructor •() → self::C
- : super core::Object::•()
- ;
- static method sTest() → () → void {
- return let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/nnbd/issue41499.dart:8:20: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
- static LegacyFoo sTest() {}
- ^" in null;
- }
- method mTest() → () → void {
- return let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/nnbd/issue41499.dart:10:13: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
- LegacyFoo mTest() {}
- ^" in null;
- }
- get gTest() → () → void {
- return let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/nnbd/issue41499.dart:12:17: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
- LegacyFoo get gTest {}
- ^" in null;
- }
-}
-static method test() → () → void {
- return let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/nnbd/issue41499.dart:15:11: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
-LegacyFoo test() {}
- ^" in null;
-}
-static method main() → dynamic {}
-
-library;
-import self as self2;
-
-typedef LegacyFoo = () →* void;
-static method test(() →* void f) → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue41499.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue41499.dart.weak.transformed.expect
deleted file mode 100644
index e55976c..0000000
--- a/pkg/front_end/testcases/nnbd/issue41499.dart.weak.transformed.expect
+++ /dev/null
@@ -1,57 +0,0 @@
-library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/issue41499.dart:8:20: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
-// static LegacyFoo sTest() {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41499.dart:10:13: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
-// LegacyFoo mTest() {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41499.dart:12:17: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
-// LegacyFoo get gTest {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41499.dart:15:11: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
-// LegacyFoo test() {}
-// ^
-//
-import self as self;
-import "dart:core" as core;
-
-import "org-dartlang-testcase:///issue41499_lib.dart";
-
-class C extends core::Object {
- synthetic constructor •() → self::C
- : super core::Object::•()
- ;
- static method sTest() → () → void {
- return let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/nnbd/issue41499.dart:8:20: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
- static LegacyFoo sTest() {}
- ^" in null;
- }
- method mTest() → () → void {
- return let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/nnbd/issue41499.dart:10:13: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
- LegacyFoo mTest() {}
- ^" in null;
- }
- get gTest() → () → void {
- return let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/nnbd/issue41499.dart:12:17: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
- LegacyFoo get gTest {}
- ^" in null;
- }
-}
-static method test() → () → void {
- return let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/nnbd/issue41499.dart:15:11: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
-LegacyFoo test() {}
- ^" in null;
-}
-static method main() → dynamic {}
-
-library;
-import self as self2;
-
-typedef LegacyFoo = () →* void;
-static method test(() →* void f) → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue41499b.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue41499b.dart.strong.expect
deleted file mode 100644
index 06d4715..0000000
--- a/pkg/front_end/testcases/nnbd/issue41499b.dart.strong.expect
+++ /dev/null
@@ -1,59 +0,0 @@
-library;
-import self as self;
-
-import "org-dartlang-testcase:///issue41499b_lib.dart" as opt_in;
-
-typedef LegacyFoo = () →* void;
-static method test(() →* void f) → dynamic {}
-static method main() → dynamic {}
-
-library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/issue41499b_lib.dart:8:20: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
-// static LegacyFoo sTest() {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41499b_lib.dart:10:13: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
-// LegacyFoo mTest() {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41499b_lib.dart:12:17: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
-// LegacyFoo get gTest {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41499b_lib.dart:15:11: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
-// LegacyFoo test() {}
-// ^
-//
-import self as self2;
-import "dart:core" as core;
-
-import "org-dartlang-testcase:///issue41499b.dart";
-
-class C extends core::Object {
- synthetic constructor •() → self2::C
- : super core::Object::•()
- ;
- static method sTest() → () → void {
- return let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/nnbd/issue41499b_lib.dart:8:20: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
- static LegacyFoo sTest() {}
- ^" in null;
- }
- method mTest() → () → void {
- return let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/nnbd/issue41499b_lib.dart:10:13: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
- LegacyFoo mTest() {}
- ^" in null;
- }
- get gTest() → () → void {
- return let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/nnbd/issue41499b_lib.dart:12:17: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
- LegacyFoo get gTest {}
- ^" in null;
- }
-}
-static method test() → () → void {
- return let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/nnbd/issue41499b_lib.dart:15:11: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
-LegacyFoo test() {}
- ^" in null;
-}
diff --git a/pkg/front_end/testcases/nnbd/issue41499b.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue41499b.dart.strong.transformed.expect
deleted file mode 100644
index 06d4715..0000000
--- a/pkg/front_end/testcases/nnbd/issue41499b.dart.strong.transformed.expect
+++ /dev/null
@@ -1,59 +0,0 @@
-library;
-import self as self;
-
-import "org-dartlang-testcase:///issue41499b_lib.dart" as opt_in;
-
-typedef LegacyFoo = () →* void;
-static method test(() →* void f) → dynamic {}
-static method main() → dynamic {}
-
-library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/issue41499b_lib.dart:8:20: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
-// static LegacyFoo sTest() {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41499b_lib.dart:10:13: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
-// LegacyFoo mTest() {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41499b_lib.dart:12:17: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
-// LegacyFoo get gTest {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41499b_lib.dart:15:11: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
-// LegacyFoo test() {}
-// ^
-//
-import self as self2;
-import "dart:core" as core;
-
-import "org-dartlang-testcase:///issue41499b.dart";
-
-class C extends core::Object {
- synthetic constructor •() → self2::C
- : super core::Object::•()
- ;
- static method sTest() → () → void {
- return let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/nnbd/issue41499b_lib.dart:8:20: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
- static LegacyFoo sTest() {}
- ^" in null;
- }
- method mTest() → () → void {
- return let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/nnbd/issue41499b_lib.dart:10:13: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
- LegacyFoo mTest() {}
- ^" in null;
- }
- get gTest() → () → void {
- return let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/nnbd/issue41499b_lib.dart:12:17: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
- LegacyFoo get gTest {}
- ^" in null;
- }
-}
-static method test() → () → void {
- return let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/nnbd/issue41499b_lib.dart:15:11: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
-LegacyFoo test() {}
- ^" in null;
-}
diff --git a/pkg/front_end/testcases/nnbd/issue41499b.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue41499b.dart.weak.expect
deleted file mode 100644
index 06d4715..0000000
--- a/pkg/front_end/testcases/nnbd/issue41499b.dart.weak.expect
+++ /dev/null
@@ -1,59 +0,0 @@
-library;
-import self as self;
-
-import "org-dartlang-testcase:///issue41499b_lib.dart" as opt_in;
-
-typedef LegacyFoo = () →* void;
-static method test(() →* void f) → dynamic {}
-static method main() → dynamic {}
-
-library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/issue41499b_lib.dart:8:20: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
-// static LegacyFoo sTest() {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41499b_lib.dart:10:13: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
-// LegacyFoo mTest() {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41499b_lib.dart:12:17: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
-// LegacyFoo get gTest {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41499b_lib.dart:15:11: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
-// LegacyFoo test() {}
-// ^
-//
-import self as self2;
-import "dart:core" as core;
-
-import "org-dartlang-testcase:///issue41499b.dart";
-
-class C extends core::Object {
- synthetic constructor •() → self2::C
- : super core::Object::•()
- ;
- static method sTest() → () → void {
- return let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/nnbd/issue41499b_lib.dart:8:20: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
- static LegacyFoo sTest() {}
- ^" in null;
- }
- method mTest() → () → void {
- return let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/nnbd/issue41499b_lib.dart:10:13: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
- LegacyFoo mTest() {}
- ^" in null;
- }
- get gTest() → () → void {
- return let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/nnbd/issue41499b_lib.dart:12:17: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
- LegacyFoo get gTest {}
- ^" in null;
- }
-}
-static method test() → () → void {
- return let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/nnbd/issue41499b_lib.dart:15:11: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
-LegacyFoo test() {}
- ^" in null;
-}
diff --git a/pkg/front_end/testcases/nnbd/issue41499b.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue41499b.dart.weak.transformed.expect
deleted file mode 100644
index 06d4715..0000000
--- a/pkg/front_end/testcases/nnbd/issue41499b.dart.weak.transformed.expect
+++ /dev/null
@@ -1,59 +0,0 @@
-library;
-import self as self;
-
-import "org-dartlang-testcase:///issue41499b_lib.dart" as opt_in;
-
-typedef LegacyFoo = () →* void;
-static method test(() →* void f) → dynamic {}
-static method main() → dynamic {}
-
-library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/issue41499b_lib.dart:8:20: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
-// static LegacyFoo sTest() {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41499b_lib.dart:10:13: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
-// LegacyFoo mTest() {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41499b_lib.dart:12:17: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
-// LegacyFoo get gTest {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41499b_lib.dart:15:11: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
-// LegacyFoo test() {}
-// ^
-//
-import self as self2;
-import "dart:core" as core;
-
-import "org-dartlang-testcase:///issue41499b.dart";
-
-class C extends core::Object {
- synthetic constructor •() → self2::C
- : super core::Object::•()
- ;
- static method sTest() → () → void {
- return let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/nnbd/issue41499b_lib.dart:8:20: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
- static LegacyFoo sTest() {}
- ^" in null;
- }
- method mTest() → () → void {
- return let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/nnbd/issue41499b_lib.dart:10:13: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
- LegacyFoo mTest() {}
- ^" in null;
- }
- get gTest() → () → void {
- return let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/nnbd/issue41499b_lib.dart:12:17: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
- LegacyFoo get gTest {}
- ^" in null;
- }
-}
-static method test() → () → void {
- return let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/nnbd/issue41499b_lib.dart:15:11: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
-LegacyFoo test() {}
- ^" in null;
-}
diff --git a/pkg/front_end/testcases/nnbd/issue41520.dart b/pkg/front_end/testcases/nnbd/issue41520.dart
new file mode 100644
index 0000000..2454a01
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/issue41520.dart
@@ -0,0 +1,23 @@
+// Copyright (c) 2020, 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.
+
+void errors() {
+ try {} catch (error) {
+ error.notAMethodOnObject();
+ _takesObject(error);
+ }
+
+ try {} catch (error, stackTrace) {
+ error.notAMethodOnObject();
+ stackTrace.notAMethodOnStackTrace();
+ _takesObject(error);
+ _takesStackTrace(stackTrace);
+ }
+}
+
+void _takesObject(Object o) {}
+
+void _takesStackTrace(StackTrace o) {}
+
+void main() {}
diff --git a/pkg/front_end/testcases/nnbd/issue41520.dart.outline.expect b/pkg/front_end/testcases/nnbd/issue41520.dart.outline.expect
new file mode 100644
index 0000000..8a90986
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/issue41520.dart.outline.expect
@@ -0,0 +1,12 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+static method errors() → void
+ ;
+static method _takesObject(core::Object o) → void
+ ;
+static method _takesStackTrace(core::StackTrace o) → void
+ ;
+static method main() → void
+ ;
diff --git a/pkg/front_end/testcases/nnbd/issue41520.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue41520.dart.strong.expect
new file mode 100644
index 0000000..05bafe4
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/issue41520.dart.strong.expect
@@ -0,0 +1,56 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/issue41520.dart:7:11: Error: The method 'notAMethodOnObject' isn't defined for the class 'Object'.
+// - 'Object' is from 'dart:core'.
+// Try correcting the name to the name of an existing method, or defining a method named 'notAMethodOnObject'.
+// error.notAMethodOnObject();
+// ^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/issue41520.dart:12:11: Error: The method 'notAMethodOnObject' isn't defined for the class 'Object'.
+// - 'Object' is from 'dart:core'.
+// Try correcting the name to the name of an existing method, or defining a method named 'notAMethodOnObject'.
+// error.notAMethodOnObject();
+// ^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/issue41520.dart:13:16: Error: The method 'notAMethodOnStackTrace' isn't defined for the class 'StackTrace'.
+// - 'StackTrace' is from 'dart:core'.
+// Try correcting the name to the name of an existing method, or defining a method named 'notAMethodOnStackTrace'.
+// stackTrace.notAMethodOnStackTrace();
+// ^^^^^^^^^^^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+static method errors() → void {
+ try {
+ }
+ on core::Object catch(final core::Object error) {
+ invalid-expression "pkg/front_end/testcases/nnbd/issue41520.dart:7:11: Error: The method 'notAMethodOnObject' isn't defined for the class 'Object'.
+ - 'Object' is from 'dart:core'.
+Try correcting the name to the name of an existing method, or defining a method named 'notAMethodOnObject'.
+ error.notAMethodOnObject();
+ ^^^^^^^^^^^^^^^^^^";
+ self::_takesObject(error);
+ }
+ try {
+ }
+ on core::Object catch(final core::Object error, final core::StackTrace stackTrace) {
+ invalid-expression "pkg/front_end/testcases/nnbd/issue41520.dart:12:11: Error: The method 'notAMethodOnObject' isn't defined for the class 'Object'.
+ - 'Object' is from 'dart:core'.
+Try correcting the name to the name of an existing method, or defining a method named 'notAMethodOnObject'.
+ error.notAMethodOnObject();
+ ^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/issue41520.dart:13:16: Error: The method 'notAMethodOnStackTrace' isn't defined for the class 'StackTrace'.
+ - 'StackTrace' is from 'dart:core'.
+Try correcting the name to the name of an existing method, or defining a method named 'notAMethodOnStackTrace'.
+ stackTrace.notAMethodOnStackTrace();
+ ^^^^^^^^^^^^^^^^^^^^^^";
+ self::_takesObject(error);
+ self::_takesStackTrace(stackTrace);
+ }
+}
+static method _takesObject(core::Object o) → void {}
+static method _takesStackTrace(core::StackTrace o) → void {}
+static method main() → void {}
diff --git a/pkg/front_end/testcases/nnbd/issue41520.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue41520.dart.strong.transformed.expect
new file mode 100644
index 0000000..05bafe4
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/issue41520.dart.strong.transformed.expect
@@ -0,0 +1,56 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/issue41520.dart:7:11: Error: The method 'notAMethodOnObject' isn't defined for the class 'Object'.
+// - 'Object' is from 'dart:core'.
+// Try correcting the name to the name of an existing method, or defining a method named 'notAMethodOnObject'.
+// error.notAMethodOnObject();
+// ^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/issue41520.dart:12:11: Error: The method 'notAMethodOnObject' isn't defined for the class 'Object'.
+// - 'Object' is from 'dart:core'.
+// Try correcting the name to the name of an existing method, or defining a method named 'notAMethodOnObject'.
+// error.notAMethodOnObject();
+// ^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/issue41520.dart:13:16: Error: The method 'notAMethodOnStackTrace' isn't defined for the class 'StackTrace'.
+// - 'StackTrace' is from 'dart:core'.
+// Try correcting the name to the name of an existing method, or defining a method named 'notAMethodOnStackTrace'.
+// stackTrace.notAMethodOnStackTrace();
+// ^^^^^^^^^^^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+static method errors() → void {
+ try {
+ }
+ on core::Object catch(final core::Object error) {
+ invalid-expression "pkg/front_end/testcases/nnbd/issue41520.dart:7:11: Error: The method 'notAMethodOnObject' isn't defined for the class 'Object'.
+ - 'Object' is from 'dart:core'.
+Try correcting the name to the name of an existing method, or defining a method named 'notAMethodOnObject'.
+ error.notAMethodOnObject();
+ ^^^^^^^^^^^^^^^^^^";
+ self::_takesObject(error);
+ }
+ try {
+ }
+ on core::Object catch(final core::Object error, final core::StackTrace stackTrace) {
+ invalid-expression "pkg/front_end/testcases/nnbd/issue41520.dart:12:11: Error: The method 'notAMethodOnObject' isn't defined for the class 'Object'.
+ - 'Object' is from 'dart:core'.
+Try correcting the name to the name of an existing method, or defining a method named 'notAMethodOnObject'.
+ error.notAMethodOnObject();
+ ^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/issue41520.dart:13:16: Error: The method 'notAMethodOnStackTrace' isn't defined for the class 'StackTrace'.
+ - 'StackTrace' is from 'dart:core'.
+Try correcting the name to the name of an existing method, or defining a method named 'notAMethodOnStackTrace'.
+ stackTrace.notAMethodOnStackTrace();
+ ^^^^^^^^^^^^^^^^^^^^^^";
+ self::_takesObject(error);
+ self::_takesStackTrace(stackTrace);
+ }
+}
+static method _takesObject(core::Object o) → void {}
+static method _takesStackTrace(core::StackTrace o) → void {}
+static method main() → void {}
diff --git a/pkg/front_end/testcases/nnbd/issue41520.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue41520.dart.weak.expect
new file mode 100644
index 0000000..05bafe4
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/issue41520.dart.weak.expect
@@ -0,0 +1,56 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/issue41520.dart:7:11: Error: The method 'notAMethodOnObject' isn't defined for the class 'Object'.
+// - 'Object' is from 'dart:core'.
+// Try correcting the name to the name of an existing method, or defining a method named 'notAMethodOnObject'.
+// error.notAMethodOnObject();
+// ^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/issue41520.dart:12:11: Error: The method 'notAMethodOnObject' isn't defined for the class 'Object'.
+// - 'Object' is from 'dart:core'.
+// Try correcting the name to the name of an existing method, or defining a method named 'notAMethodOnObject'.
+// error.notAMethodOnObject();
+// ^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/issue41520.dart:13:16: Error: The method 'notAMethodOnStackTrace' isn't defined for the class 'StackTrace'.
+// - 'StackTrace' is from 'dart:core'.
+// Try correcting the name to the name of an existing method, or defining a method named 'notAMethodOnStackTrace'.
+// stackTrace.notAMethodOnStackTrace();
+// ^^^^^^^^^^^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+static method errors() → void {
+ try {
+ }
+ on core::Object catch(final core::Object error) {
+ invalid-expression "pkg/front_end/testcases/nnbd/issue41520.dart:7:11: Error: The method 'notAMethodOnObject' isn't defined for the class 'Object'.
+ - 'Object' is from 'dart:core'.
+Try correcting the name to the name of an existing method, or defining a method named 'notAMethodOnObject'.
+ error.notAMethodOnObject();
+ ^^^^^^^^^^^^^^^^^^";
+ self::_takesObject(error);
+ }
+ try {
+ }
+ on core::Object catch(final core::Object error, final core::StackTrace stackTrace) {
+ invalid-expression "pkg/front_end/testcases/nnbd/issue41520.dart:12:11: Error: The method 'notAMethodOnObject' isn't defined for the class 'Object'.
+ - 'Object' is from 'dart:core'.
+Try correcting the name to the name of an existing method, or defining a method named 'notAMethodOnObject'.
+ error.notAMethodOnObject();
+ ^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/issue41520.dart:13:16: Error: The method 'notAMethodOnStackTrace' isn't defined for the class 'StackTrace'.
+ - 'StackTrace' is from 'dart:core'.
+Try correcting the name to the name of an existing method, or defining a method named 'notAMethodOnStackTrace'.
+ stackTrace.notAMethodOnStackTrace();
+ ^^^^^^^^^^^^^^^^^^^^^^";
+ self::_takesObject(error);
+ self::_takesStackTrace(stackTrace);
+ }
+}
+static method _takesObject(core::Object o) → void {}
+static method _takesStackTrace(core::StackTrace o) → void {}
+static method main() → void {}
diff --git a/pkg/front_end/testcases/nnbd/issue41520.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue41520.dart.weak.transformed.expect
new file mode 100644
index 0000000..05bafe4
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/issue41520.dart.weak.transformed.expect
@@ -0,0 +1,56 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/issue41520.dart:7:11: Error: The method 'notAMethodOnObject' isn't defined for the class 'Object'.
+// - 'Object' is from 'dart:core'.
+// Try correcting the name to the name of an existing method, or defining a method named 'notAMethodOnObject'.
+// error.notAMethodOnObject();
+// ^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/issue41520.dart:12:11: Error: The method 'notAMethodOnObject' isn't defined for the class 'Object'.
+// - 'Object' is from 'dart:core'.
+// Try correcting the name to the name of an existing method, or defining a method named 'notAMethodOnObject'.
+// error.notAMethodOnObject();
+// ^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/issue41520.dart:13:16: Error: The method 'notAMethodOnStackTrace' isn't defined for the class 'StackTrace'.
+// - 'StackTrace' is from 'dart:core'.
+// Try correcting the name to the name of an existing method, or defining a method named 'notAMethodOnStackTrace'.
+// stackTrace.notAMethodOnStackTrace();
+// ^^^^^^^^^^^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+static method errors() → void {
+ try {
+ }
+ on core::Object catch(final core::Object error) {
+ invalid-expression "pkg/front_end/testcases/nnbd/issue41520.dart:7:11: Error: The method 'notAMethodOnObject' isn't defined for the class 'Object'.
+ - 'Object' is from 'dart:core'.
+Try correcting the name to the name of an existing method, or defining a method named 'notAMethodOnObject'.
+ error.notAMethodOnObject();
+ ^^^^^^^^^^^^^^^^^^";
+ self::_takesObject(error);
+ }
+ try {
+ }
+ on core::Object catch(final core::Object error, final core::StackTrace stackTrace) {
+ invalid-expression "pkg/front_end/testcases/nnbd/issue41520.dart:12:11: Error: The method 'notAMethodOnObject' isn't defined for the class 'Object'.
+ - 'Object' is from 'dart:core'.
+Try correcting the name to the name of an existing method, or defining a method named 'notAMethodOnObject'.
+ error.notAMethodOnObject();
+ ^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/issue41520.dart:13:16: Error: The method 'notAMethodOnStackTrace' isn't defined for the class 'StackTrace'.
+ - 'StackTrace' is from 'dart:core'.
+Try correcting the name to the name of an existing method, or defining a method named 'notAMethodOnStackTrace'.
+ stackTrace.notAMethodOnStackTrace();
+ ^^^^^^^^^^^^^^^^^^^^^^";
+ self::_takesObject(error);
+ self::_takesStackTrace(stackTrace);
+ }
+}
+static method _takesObject(core::Object o) → void {}
+static method _takesStackTrace(core::StackTrace o) → void {}
+static method main() → void {}
diff --git a/pkg/front_end/testcases/nnbd/issue41567.dart.outline.expect b/pkg/front_end/testcases/nnbd/issue41567.dart.outline.expect
deleted file mode 100644
index d4c4254..0000000
--- a/pkg/front_end/testcases/nnbd/issue41567.dart.outline.expect
+++ /dev/null
@@ -1,68 +0,0 @@
-//
-// Problems in component:
-//
-// pkg/front_end/testcases/nnbd/issue41567.dart:13:7: Error: 'in3' can't implement both 'A<int>' and 'A<dynamic>'
-// - 'A' is from 'pkg/front_end/testcases/nnbd/issue41567_lib.dart'.
-// class in3 extends out_int implements B {} // error
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41567.dart:15:7: Error: 'in4' can't implement both 'A<dynamic>' and 'A<int>'
-// - 'A' is from 'pkg/front_end/testcases/nnbd/issue41567_lib.dart'.
-// class in4 extends B implements out_int {} // error
-// ^
-//
-library /*isNonNullableByDefault*/;
-import self as self;
-import "issue41567_lib.dart" as iss;
-
-import "org-dartlang-testcase:///issue41567_lib.dart";
-
-class B extends iss::A<dynamic> {
- synthetic constructor •() → self::B
- ;
-}
-class in1 extends iss::out_Object implements self::B {
- synthetic constructor •() → self::in1
- ;
-}
-class in2 extends self::B implements iss::out_Object {
- synthetic constructor •() → self::in2
- ;
-}
-class in3 extends iss::out_int implements self::B {
- synthetic constructor •() → self::in3
- ;
-}
-class in4 extends self::B implements iss::out_int {
- synthetic constructor •() → self::in4
- ;
-}
-static method main() → dynamic
- ;
-
-library;
-import self as iss;
-import "dart:core" as core;
-
-class A<T extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → iss::A<iss::A::T*>*
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class out_int extends iss::A<core::int*> {
- synthetic constructor •() → iss::out_int*
- ;
-}
-class out_Object extends iss::A<core::Object*> {
- synthetic constructor •() → iss::out_Object*
- ;
-}
diff --git a/pkg/front_end/testcases/nnbd/issue41567.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue41567.dart.strong.expect
deleted file mode 100644
index 1d75a33..0000000
--- a/pkg/front_end/testcases/nnbd/issue41567.dart.strong.expect
+++ /dev/null
@@ -1,75 +0,0 @@
-//
-// Problems in component:
-//
-// pkg/front_end/testcases/nnbd/issue41567.dart:13:7: Error: 'in3' can't implement both 'A<int>' and 'A<dynamic>'
-// - 'A' is from 'pkg/front_end/testcases/nnbd/issue41567_lib.dart'.
-// class in3 extends out_int implements B {} // error
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41567.dart:15:7: Error: 'in4' can't implement both 'A<dynamic>' and 'A<int>'
-// - 'A' is from 'pkg/front_end/testcases/nnbd/issue41567_lib.dart'.
-// class in4 extends B implements out_int {} // error
-// ^
-//
-library /*isNonNullableByDefault*/;
-import self as self;
-import "issue41567_lib.dart" as iss;
-
-import "org-dartlang-testcase:///issue41567_lib.dart";
-
-class B extends iss::A<dynamic> {
- synthetic constructor •() → self::B
- : super iss::A::•()
- ;
-}
-class in1 extends iss::out_Object implements self::B {
- synthetic constructor •() → self::in1
- : super iss::out_Object::•()
- ;
-}
-class in2 extends self::B implements iss::out_Object {
- synthetic constructor •() → self::in2
- : super self::B::•()
- ;
-}
-class in3 extends iss::out_int implements self::B {
- synthetic constructor •() → self::in3
- : super iss::out_int::•()
- ;
-}
-class in4 extends self::B implements iss::out_int {
- synthetic constructor •() → self::in4
- : super self::B::•()
- ;
-}
-static method main() → dynamic {}
-
-library;
-import self as iss;
-import "dart:core" as core;
-
-class A<T extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → iss::A<iss::A::T*>*
- : super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class out_int extends iss::A<core::int*> {
- synthetic constructor •() → iss::out_int*
- : super iss::A::•()
- ;
-}
-class out_Object extends iss::A<core::Object*> {
- synthetic constructor •() → iss::out_Object*
- : super iss::A::•()
- ;
-}
diff --git a/pkg/front_end/testcases/nnbd/issue41597.dart.outline.expect b/pkg/front_end/testcases/nnbd/issue41597.dart.outline.expect
deleted file mode 100644
index 6a4719a..0000000
--- a/pkg/front_end/testcases/nnbd/issue41597.dart.outline.expect
+++ /dev/null
@@ -1,41 +0,0 @@
-library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/issue41597.dart:8:6: Error: 'x' is already declared in this scope.
-// bool x;
-// ^
-// pkg/front_end/testcases/nnbd/issue41597.dart:7:6: Context: Previous declaration of 'x'.
-// bool x;
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41597.dart:8:6: Error: Field 'x' should be initialized because its type 'bool' doesn't allow null.
-// bool x;
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41597.dart:7:6: Error: Field 'x' should be initialized because its type 'bool' doesn't allow null.
-// bool x;
-// ^
-//
-import self as self;
-import "dart:core" as core;
-
-import "org-dartlang-testcase:///issue41597_lib.dart";
-
-class C extends core::Object {
- constructor c0() → self::C
- ;
- constructor c1() → self::C
- ;
-}
-static field core::bool x;
-static method errors() → dynamic
- ;
-static method main() → dynamic
- ;
-
-library;
-import self as self2;
-
-static method errors(dynamic c) → dynamic
- ;
diff --git a/pkg/front_end/testcases/nnbd/issue41597.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue41597.dart.strong.expect
deleted file mode 100644
index e5736ef..0000000
--- a/pkg/front_end/testcases/nnbd/issue41597.dart.strong.expect
+++ /dev/null
@@ -1,120 +0,0 @@
-library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/issue41597.dart:8:6: Error: 'x' is already declared in this scope.
-// bool x;
-// ^
-// pkg/front_end/testcases/nnbd/issue41597.dart:7:6: Context: Previous declaration of 'x'.
-// bool x;
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41597.dart:8:6: Error: Field 'x' should be initialized because its type 'bool' doesn't allow null.
-// bool x;
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41597.dart:7:6: Error: Field 'x' should be initialized because its type 'bool' doesn't allow null.
-// bool x;
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41597.dart:11:9: Error: Can't use 'x' because it is declared more than once.
-// print(x);
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41597.dart:12:9: Error: Can't use 'x' because it is declared more than once.
-// print(x!);
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41597.dart:13:10: Error: Can't use 'x' because it is declared more than once.
-// print(!x);
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41597.dart:18:12: Error: Can't use 'super' as an expression.
-// To delegate a constructor to a super constructor, put the super call as an initializer.
-// C.c1() : super()!;
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41597.dart:18:19: Error: Expected an initializer.
-// C.c1() : super()!;
-// ^
-//
-import self as self;
-import "dart:core" as core;
-
-import "org-dartlang-testcase:///issue41597_lib.dart";
-
-class C extends core::Object {
- constructor c0() → self::C
- : super core::Object::•()
- ;
- constructor c1() → self::C
- : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/nnbd/issue41597.dart:18:12: Error: Can't use 'super' as an expression.
-To delegate a constructor to a super constructor, put the super call as an initializer.
- C.c1() : super()!;
- ^"!
- ;
-}
-static field core::bool x;
-static method errors() → dynamic {
- core::print(invalid-expression "pkg/front_end/testcases/nnbd/issue41597.dart:11:9: Error: Can't use 'x' because it is declared more than once.
- print(x);
- ^");
- core::print(invalid-expression "pkg/front_end/testcases/nnbd/issue41597.dart:12:9: Error: Can't use 'x' because it is declared more than once.
- print(x!);
- ^"!);
- core::print(!(invalid-expression "pkg/front_end/testcases/nnbd/issue41597.dart:13:10: Error: Can't use 'x' because it is declared more than once.
- print(!x);
- ^" as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool));
-}
-static method main() → dynamic {}
-
-library;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/issue41597_lib.dart:8:6: Error: Expected an identifier, but got '.'.
-// c?..f;
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41597_lib.dart:8:6: Error: Expected an identifier, but got ''.
-// c?..f;
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41597_lib.dart:9:7: Error: Expected an identifier, but got '.'.
-// !c?..f;
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41597_lib.dart:9:7: Error: Expected an identifier, but got ''.
-// !c?..f;
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41597_lib.dart:10:6: Error: Expected an identifier, but got '.'.
-// c?..f!;
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41597_lib.dart:10:6: Error: Expected an identifier, but got ''.
-// c?..f!;
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41597_lib.dart:10:8: Error: Null safety features are disabled for this library.
-// Try removing the `@dart=` annotation or setting the language version higher.
-// c?..f!;
-// ^
-// pkg/front_end/testcases/nnbd/issue41597_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
-// // @dart=2.6
-// ^^^^^^^^^^^^
-//
-import self as self2;
-import "dart:core" as core;
-
-static method errors(dynamic c) → dynamic {
- invalid-expression "pkg/front_end/testcases/nnbd/issue41597_lib.dart:8:6: Error: Expected an identifier, but got ''.
- c?..f;
- ^".f;
- !(invalid-expression "pkg/front_end/testcases/nnbd/issue41597_lib.dart:9:7: Error: Expected an identifier, but got ''.
- !c?..f;
- ^".f as{TypeError,ForDynamic} core::bool*);
- invalid-expression "pkg/front_end/testcases/nnbd/issue41597_lib.dart:10:6: Error: Expected an identifier, but got ''.
- c?..f!;
- ^".f!;
-}
diff --git a/pkg/front_end/testcases/nnbd/issue41597.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue41597.dart.strong.transformed.expect
deleted file mode 100644
index e5736ef..0000000
--- a/pkg/front_end/testcases/nnbd/issue41597.dart.strong.transformed.expect
+++ /dev/null
@@ -1,120 +0,0 @@
-library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/issue41597.dart:8:6: Error: 'x' is already declared in this scope.
-// bool x;
-// ^
-// pkg/front_end/testcases/nnbd/issue41597.dart:7:6: Context: Previous declaration of 'x'.
-// bool x;
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41597.dart:8:6: Error: Field 'x' should be initialized because its type 'bool' doesn't allow null.
-// bool x;
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41597.dart:7:6: Error: Field 'x' should be initialized because its type 'bool' doesn't allow null.
-// bool x;
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41597.dart:11:9: Error: Can't use 'x' because it is declared more than once.
-// print(x);
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41597.dart:12:9: Error: Can't use 'x' because it is declared more than once.
-// print(x!);
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41597.dart:13:10: Error: Can't use 'x' because it is declared more than once.
-// print(!x);
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41597.dart:18:12: Error: Can't use 'super' as an expression.
-// To delegate a constructor to a super constructor, put the super call as an initializer.
-// C.c1() : super()!;
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41597.dart:18:19: Error: Expected an initializer.
-// C.c1() : super()!;
-// ^
-//
-import self as self;
-import "dart:core" as core;
-
-import "org-dartlang-testcase:///issue41597_lib.dart";
-
-class C extends core::Object {
- constructor c0() → self::C
- : super core::Object::•()
- ;
- constructor c1() → self::C
- : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/nnbd/issue41597.dart:18:12: Error: Can't use 'super' as an expression.
-To delegate a constructor to a super constructor, put the super call as an initializer.
- C.c1() : super()!;
- ^"!
- ;
-}
-static field core::bool x;
-static method errors() → dynamic {
- core::print(invalid-expression "pkg/front_end/testcases/nnbd/issue41597.dart:11:9: Error: Can't use 'x' because it is declared more than once.
- print(x);
- ^");
- core::print(invalid-expression "pkg/front_end/testcases/nnbd/issue41597.dart:12:9: Error: Can't use 'x' because it is declared more than once.
- print(x!);
- ^"!);
- core::print(!(invalid-expression "pkg/front_end/testcases/nnbd/issue41597.dart:13:10: Error: Can't use 'x' because it is declared more than once.
- print(!x);
- ^" as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool));
-}
-static method main() → dynamic {}
-
-library;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/issue41597_lib.dart:8:6: Error: Expected an identifier, but got '.'.
-// c?..f;
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41597_lib.dart:8:6: Error: Expected an identifier, but got ''.
-// c?..f;
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41597_lib.dart:9:7: Error: Expected an identifier, but got '.'.
-// !c?..f;
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41597_lib.dart:9:7: Error: Expected an identifier, but got ''.
-// !c?..f;
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41597_lib.dart:10:6: Error: Expected an identifier, but got '.'.
-// c?..f!;
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41597_lib.dart:10:6: Error: Expected an identifier, but got ''.
-// c?..f!;
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41597_lib.dart:10:8: Error: Null safety features are disabled for this library.
-// Try removing the `@dart=` annotation or setting the language version higher.
-// c?..f!;
-// ^
-// pkg/front_end/testcases/nnbd/issue41597_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
-// // @dart=2.6
-// ^^^^^^^^^^^^
-//
-import self as self2;
-import "dart:core" as core;
-
-static method errors(dynamic c) → dynamic {
- invalid-expression "pkg/front_end/testcases/nnbd/issue41597_lib.dart:8:6: Error: Expected an identifier, but got ''.
- c?..f;
- ^".f;
- !(invalid-expression "pkg/front_end/testcases/nnbd/issue41597_lib.dart:9:7: Error: Expected an identifier, but got ''.
- !c?..f;
- ^".f as{TypeError,ForDynamic} core::bool*);
- invalid-expression "pkg/front_end/testcases/nnbd/issue41597_lib.dart:10:6: Error: Expected an identifier, but got ''.
- c?..f!;
- ^".f!;
-}
diff --git a/pkg/front_end/testcases/nnbd/issue41597.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue41597.dart.weak.expect
deleted file mode 100644
index e5736ef..0000000
--- a/pkg/front_end/testcases/nnbd/issue41597.dart.weak.expect
+++ /dev/null
@@ -1,120 +0,0 @@
-library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/issue41597.dart:8:6: Error: 'x' is already declared in this scope.
-// bool x;
-// ^
-// pkg/front_end/testcases/nnbd/issue41597.dart:7:6: Context: Previous declaration of 'x'.
-// bool x;
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41597.dart:8:6: Error: Field 'x' should be initialized because its type 'bool' doesn't allow null.
-// bool x;
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41597.dart:7:6: Error: Field 'x' should be initialized because its type 'bool' doesn't allow null.
-// bool x;
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41597.dart:11:9: Error: Can't use 'x' because it is declared more than once.
-// print(x);
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41597.dart:12:9: Error: Can't use 'x' because it is declared more than once.
-// print(x!);
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41597.dart:13:10: Error: Can't use 'x' because it is declared more than once.
-// print(!x);
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41597.dart:18:12: Error: Can't use 'super' as an expression.
-// To delegate a constructor to a super constructor, put the super call as an initializer.
-// C.c1() : super()!;
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41597.dart:18:19: Error: Expected an initializer.
-// C.c1() : super()!;
-// ^
-//
-import self as self;
-import "dart:core" as core;
-
-import "org-dartlang-testcase:///issue41597_lib.dart";
-
-class C extends core::Object {
- constructor c0() → self::C
- : super core::Object::•()
- ;
- constructor c1() → self::C
- : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/nnbd/issue41597.dart:18:12: Error: Can't use 'super' as an expression.
-To delegate a constructor to a super constructor, put the super call as an initializer.
- C.c1() : super()!;
- ^"!
- ;
-}
-static field core::bool x;
-static method errors() → dynamic {
- core::print(invalid-expression "pkg/front_end/testcases/nnbd/issue41597.dart:11:9: Error: Can't use 'x' because it is declared more than once.
- print(x);
- ^");
- core::print(invalid-expression "pkg/front_end/testcases/nnbd/issue41597.dart:12:9: Error: Can't use 'x' because it is declared more than once.
- print(x!);
- ^"!);
- core::print(!(invalid-expression "pkg/front_end/testcases/nnbd/issue41597.dart:13:10: Error: Can't use 'x' because it is declared more than once.
- print(!x);
- ^" as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool));
-}
-static method main() → dynamic {}
-
-library;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/issue41597_lib.dart:8:6: Error: Expected an identifier, but got '.'.
-// c?..f;
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41597_lib.dart:8:6: Error: Expected an identifier, but got ''.
-// c?..f;
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41597_lib.dart:9:7: Error: Expected an identifier, but got '.'.
-// !c?..f;
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41597_lib.dart:9:7: Error: Expected an identifier, but got ''.
-// !c?..f;
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41597_lib.dart:10:6: Error: Expected an identifier, but got '.'.
-// c?..f!;
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41597_lib.dart:10:6: Error: Expected an identifier, but got ''.
-// c?..f!;
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41597_lib.dart:10:8: Error: Null safety features are disabled for this library.
-// Try removing the `@dart=` annotation or setting the language version higher.
-// c?..f!;
-// ^
-// pkg/front_end/testcases/nnbd/issue41597_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
-// // @dart=2.6
-// ^^^^^^^^^^^^
-//
-import self as self2;
-import "dart:core" as core;
-
-static method errors(dynamic c) → dynamic {
- invalid-expression "pkg/front_end/testcases/nnbd/issue41597_lib.dart:8:6: Error: Expected an identifier, but got ''.
- c?..f;
- ^".f;
- !(invalid-expression "pkg/front_end/testcases/nnbd/issue41597_lib.dart:9:7: Error: Expected an identifier, but got ''.
- !c?..f;
- ^".f as{TypeError,ForDynamic} core::bool*);
- invalid-expression "pkg/front_end/testcases/nnbd/issue41597_lib.dart:10:6: Error: Expected an identifier, but got ''.
- c?..f!;
- ^".f!;
-}
diff --git a/pkg/front_end/testcases/nnbd/issue41597.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue41597.dart.weak.transformed.expect
deleted file mode 100644
index e5736ef..0000000
--- a/pkg/front_end/testcases/nnbd/issue41597.dart.weak.transformed.expect
+++ /dev/null
@@ -1,120 +0,0 @@
-library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/issue41597.dart:8:6: Error: 'x' is already declared in this scope.
-// bool x;
-// ^
-// pkg/front_end/testcases/nnbd/issue41597.dart:7:6: Context: Previous declaration of 'x'.
-// bool x;
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41597.dart:8:6: Error: Field 'x' should be initialized because its type 'bool' doesn't allow null.
-// bool x;
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41597.dart:7:6: Error: Field 'x' should be initialized because its type 'bool' doesn't allow null.
-// bool x;
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41597.dart:11:9: Error: Can't use 'x' because it is declared more than once.
-// print(x);
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41597.dart:12:9: Error: Can't use 'x' because it is declared more than once.
-// print(x!);
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41597.dart:13:10: Error: Can't use 'x' because it is declared more than once.
-// print(!x);
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41597.dart:18:12: Error: Can't use 'super' as an expression.
-// To delegate a constructor to a super constructor, put the super call as an initializer.
-// C.c1() : super()!;
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41597.dart:18:19: Error: Expected an initializer.
-// C.c1() : super()!;
-// ^
-//
-import self as self;
-import "dart:core" as core;
-
-import "org-dartlang-testcase:///issue41597_lib.dart";
-
-class C extends core::Object {
- constructor c0() → self::C
- : super core::Object::•()
- ;
- constructor c1() → self::C
- : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/nnbd/issue41597.dart:18:12: Error: Can't use 'super' as an expression.
-To delegate a constructor to a super constructor, put the super call as an initializer.
- C.c1() : super()!;
- ^"!
- ;
-}
-static field core::bool x;
-static method errors() → dynamic {
- core::print(invalid-expression "pkg/front_end/testcases/nnbd/issue41597.dart:11:9: Error: Can't use 'x' because it is declared more than once.
- print(x);
- ^");
- core::print(invalid-expression "pkg/front_end/testcases/nnbd/issue41597.dart:12:9: Error: Can't use 'x' because it is declared more than once.
- print(x!);
- ^"!);
- core::print(!(invalid-expression "pkg/front_end/testcases/nnbd/issue41597.dart:13:10: Error: Can't use 'x' because it is declared more than once.
- print(!x);
- ^" as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool));
-}
-static method main() → dynamic {}
-
-library;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/issue41597_lib.dart:8:6: Error: Expected an identifier, but got '.'.
-// c?..f;
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41597_lib.dart:8:6: Error: Expected an identifier, but got ''.
-// c?..f;
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41597_lib.dart:9:7: Error: Expected an identifier, but got '.'.
-// !c?..f;
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41597_lib.dart:9:7: Error: Expected an identifier, but got ''.
-// !c?..f;
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41597_lib.dart:10:6: Error: Expected an identifier, but got '.'.
-// c?..f!;
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41597_lib.dart:10:6: Error: Expected an identifier, but got ''.
-// c?..f!;
-// ^
-//
-// pkg/front_end/testcases/nnbd/issue41597_lib.dart:10:8: Error: Null safety features are disabled for this library.
-// Try removing the `@dart=` annotation or setting the language version higher.
-// c?..f!;
-// ^
-// pkg/front_end/testcases/nnbd/issue41597_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
-// // @dart=2.6
-// ^^^^^^^^^^^^
-//
-import self as self2;
-import "dart:core" as core;
-
-static method errors(dynamic c) → dynamic {
- invalid-expression "pkg/front_end/testcases/nnbd/issue41597_lib.dart:8:6: Error: Expected an identifier, but got ''.
- c?..f;
- ^".f;
- !(invalid-expression "pkg/front_end/testcases/nnbd/issue41597_lib.dart:9:7: Error: Expected an identifier, but got ''.
- !c?..f;
- ^".f as{TypeError,ForDynamic} core::bool*);
- invalid-expression "pkg/front_end/testcases/nnbd/issue41597_lib.dart:10:6: Error: Expected an identifier, but got ''.
- c?..f!;
- ^".f!;
-}
diff --git a/pkg/front_end/testcases/nnbd/literal_from_opt_in.dart.strong.expect b/pkg/front_end/testcases/nnbd/literal_from_opt_in.dart.strong.expect
deleted file mode 100644
index e5e0414..0000000
--- a/pkg/front_end/testcases/nnbd/literal_from_opt_in.dart.strong.expect
+++ /dev/null
@@ -1,42 +0,0 @@
-library;
-import self as self;
-import "dart:core" as core;
-import "literal_from_opt_in_lib.dart" as lit;
-
-import "org-dartlang-testcase:///literal_from_opt_in_lib.dart";
-
-static method main() → dynamic {
- core::List<lit::Const<core::int*>*>* l1 = #C3;
- core::List<lit::Const<core::int*>*>* l2 = #C5;
- core::List<lit::Const<core::int*>*>* l3 = #C8;
- core::List<lit::Const<core::int*>*>* l4 = #C3;
- core::List<lit::Const<core::int*>*>* l5 = #C9;
-}
-
-library /*isNonNullableByDefault*/;
-import self as lit;
-import "dart:core" as core;
-
-class Const<T extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/ {
- final field lit::Const::T% field;
- const constructor •(lit::Const::T% field) → lit::Const<lit::Const::T%>
- : lit::Const::field = field, super core::Object::•()
- ;
-}
-static const field lit::Const<core::int> a = #C2;
-static const field lit::Const<core::int?> b = #C4;
-static const field lit::Const<core::int?> c = #C7;
-static const field lit::Const<core::int>? d = #C2;
-static const field lit::Const<core::int>? e = #C6;
-
-constants {
- #C1 = 0
- #C2 = lit::Const<core::int> {field:#C1}
- #C3 = <lit::Const<core::int*>*>[#C2]
- #C4 = lit::Const<core::int?> {field:#C1}
- #C5 = <lit::Const<core::int*>*>[#C4]
- #C6 = null
- #C7 = lit::Const<core::int?> {field:#C6}
- #C8 = <lit::Const<core::int*>*>[#C7]
- #C9 = <lit::Const<core::int*>*>[#C6]
-}
diff --git a/pkg/front_end/testcases/nnbd/literal_from_opt_in.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/literal_from_opt_in.dart.strong.transformed.expect
deleted file mode 100644
index e5e0414..0000000
--- a/pkg/front_end/testcases/nnbd/literal_from_opt_in.dart.strong.transformed.expect
+++ /dev/null
@@ -1,42 +0,0 @@
-library;
-import self as self;
-import "dart:core" as core;
-import "literal_from_opt_in_lib.dart" as lit;
-
-import "org-dartlang-testcase:///literal_from_opt_in_lib.dart";
-
-static method main() → dynamic {
- core::List<lit::Const<core::int*>*>* l1 = #C3;
- core::List<lit::Const<core::int*>*>* l2 = #C5;
- core::List<lit::Const<core::int*>*>* l3 = #C8;
- core::List<lit::Const<core::int*>*>* l4 = #C3;
- core::List<lit::Const<core::int*>*>* l5 = #C9;
-}
-
-library /*isNonNullableByDefault*/;
-import self as lit;
-import "dart:core" as core;
-
-class Const<T extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/ {
- final field lit::Const::T% field;
- const constructor •(lit::Const::T% field) → lit::Const<lit::Const::T%>
- : lit::Const::field = field, super core::Object::•()
- ;
-}
-static const field lit::Const<core::int> a = #C2;
-static const field lit::Const<core::int?> b = #C4;
-static const field lit::Const<core::int?> c = #C7;
-static const field lit::Const<core::int>? d = #C2;
-static const field lit::Const<core::int>? e = #C6;
-
-constants {
- #C1 = 0
- #C2 = lit::Const<core::int> {field:#C1}
- #C3 = <lit::Const<core::int*>*>[#C2]
- #C4 = lit::Const<core::int?> {field:#C1}
- #C5 = <lit::Const<core::int*>*>[#C4]
- #C6 = null
- #C7 = lit::Const<core::int?> {field:#C6}
- #C8 = <lit::Const<core::int*>*>[#C7]
- #C9 = <lit::Const<core::int*>*>[#C6]
-}
diff --git a/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_in.dart.outline.expect b/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_in.dart.outline.expect
deleted file mode 100644
index 35fad80..0000000
--- a/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_in.dart.outline.expect
+++ /dev/null
@@ -1,183 +0,0 @@
-library;
-import self as self;
-import "member_inheritance_from_opt_in_lib.dart" as mem;
-import "dart:core" as core;
-
-import "org-dartlang-testcase:///member_inheritance_from_opt_in_lib.dart";
-
-class LegacyClass extends mem::Class implements mem::Interface {
- field core::int* field3;
- field core::int* field4;
- field core::int* property7;
- field core::int* property8;
- synthetic constructor •() → self::LegacyClass*
- ;
- method method3() → core::int*
- ;
- method method4() → core::int*
- ;
- method method6a(core::int* a, core::int* b) → core::int*
- ;
- method method6b(core::int* a, [core::int* b]) → core::int*
- ;
- method method6c([core::int* a, core::int* b]) → core::int*
- ;
- method method8a(core::int* a, {core::int* b = 0}) → core::int*
- ;
- method method8b({core::int* a, core::int* b = 0}) → core::int*
- ;
- method method10a(core::int* a, {core::int* b}) → core::int*
- ;
- method method10b({core::int* a, core::int* b}) → core::int*
- ;
- get getter3() → core::int*
- ;
- get getter4() → core::int*
- ;
- set setter3(core::int* value) → void
- ;
- set setter4(core::int* value) → void
- ;
- get property3() → core::int*
- ;
- set property3(core::int* value) → void
- ;
- get property4() → core::int*
- ;
- set property4(core::int* value) → void
- ;
- abstract member-signature method method1() → core::int*;
- abstract member-signature method method2() → core::int*;
- abstract member-signature method method5a(core::int* a, core::int* b) → core::int*;
- abstract member-signature method method5b(core::int* a, [core::int* b]) → core::int*;
- abstract member-signature method method5c([core::int* a, core::int* b]) → core::int*;
- abstract member-signature method method7a(core::int* a, {core::int* b}) → core::int*;
- abstract member-signature method method7b({core::int* a, core::int* b}) → core::int*;
- abstract member-signature method method9a(core::int* a, {core::int* b}) → core::int*;
- abstract member-signature method method9b({core::int* a, core::int* b}) → core::int*;
- abstract member-signature get getter1() → core::int*;
- abstract member-signature get getter2() → core::int*;
- abstract member-signature get field1() → core::int*;
- abstract member-signature set field1(core::int* _) → void;
- abstract member-signature get field2() → core::int*;
- abstract member-signature set field2(core::int* _) → void;
- abstract member-signature get property1() → core::int*;
- abstract member-signature set property1(core::int* value) → void;
- abstract member-signature get property2() → core::int*;
- abstract member-signature set property2(core::int* value) → void;
- abstract member-signature get property5() → core::int*;
- abstract member-signature set property5(core::int* _) → void;
- abstract member-signature get property6() → core::int*;
- abstract member-signature set property6(core::int* _) → void;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
- abstract member-signature set setter1(core::int* value) → void;
- abstract member-signature set setter2(core::int* value) → void;
-}
-static method main() → dynamic
- ;
-
-library /*isNonNullableByDefault*/;
-import self as mem;
-import "dart:core" as core;
-
-abstract class Interface extends core::Object {
- field core::int? field1;
- field core::int field2;
- field core::int field3;
- field core::int? field4;
- synthetic constructor •() → mem::Interface
- ;
- abstract method method1() → core::int?;
- abstract method method2() → core::int;
- abstract method method3() → core::int;
- abstract method method4() → core::int?;
- abstract method method5a(core::int a, core::int? b) → core::int;
- abstract method method5b(core::int a, [core::int? b]) → core::int;
- abstract method method5c([core::int a = 0, core::int? b]) → core::int;
- abstract method method6a(core::int? a, core::int b) → core::int?;
- abstract method method6b(core::int? a, [core::int b = 0]) → core::int?;
- abstract method method6c([core::int? a, core::int b = 0]) → core::int?;
- abstract method method7a(core::int a, {core::int? b}) → core::int;
- abstract method method7b({core::int a = 0, core::int? b}) → core::int;
- abstract method method8a(core::int? a, {core::int b = 0}) → core::int?;
- abstract method method8b({core::int? a, core::int b = 0}) → core::int?;
- abstract method method9a(core::int a, {required core::int? b}) → core::int;
- abstract method method9b({required core::int a, required core::int? b}) → core::int;
- abstract method method10a(core::int? a, {required core::int b}) → core::int?;
- abstract method method10b({required core::int? a, required core::int b}) → core::int?;
- abstract get getter1() → core::int?;
- abstract get getter2() → core::int;
- abstract get getter3() → core::int;
- abstract get getter4() → core::int?;
- abstract set setter1(core::int? value) → void;
- abstract set setter2(core::int value) → void;
- abstract set setter3(core::int value) → void;
- abstract set setter4(core::int? value) → void;
- abstract get property1() → core::int?;
- abstract set property1(core::int? value) → void;
- abstract get property2() → core::int;
- abstract set property2(core::int value) → void;
- abstract get property3() → core::int;
- abstract set property3(core::int value) → void;
- abstract get property4() → core::int?;
- abstract set property4(core::int? value) → void;
- abstract get property5() → core::int?;
- abstract set property5(core::int? value) → void;
- abstract get property6() → core::int;
- abstract set property6(core::int value) → void;
- abstract get property7() → core::int;
- abstract set property7(core::int value) → void;
- abstract get property8() → core::int?;
- abstract set property8(core::int? value) → void;
-}
-class Class extends core::Object {
- field core::int field1;
- field core::int? field2;
- field core::int property5;
- field core::int? property6;
- synthetic constructor •() → mem::Class
- ;
- method method1() → core::int
- ;
- method method2() → core::int?
- ;
- method method5a(core::int a, core::int? b) → core::int
- ;
- method method5b(core::int a, [core::int? b]) → core::int
- ;
- method method5c([core::int a = 0, core::int? b]) → core::int
- ;
- method method7a(core::int a, {core::int? b}) → core::int
- ;
- method method7b({core::int a = 0, core::int? b}) → core::int
- ;
- method method9a(core::int a, {required core::int? b}) → core::int
- ;
- method method9b({required core::int a, required core::int? b}) → core::int
- ;
- get getter1() → core::int
- ;
- get getter2() → core::int?
- ;
- set setter1(core::int value) → void
- ;
- set setter2(core::int? value) → void
- ;
- get property1() → core::int
- ;
- set property1(core::int value) → void
- ;
- get property2() → core::int?
- ;
- set property2(core::int? value) → void
- ;
-}
diff --git a/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_in.dart.strong.expect b/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_in.dart.strong.expect
deleted file mode 100644
index e078b39..0000000
--- a/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_in.dart.strong.expect
+++ /dev/null
@@ -1,182 +0,0 @@
-library;
-import self as self;
-import "member_inheritance_from_opt_in_lib.dart" as mem;
-import "dart:core" as core;
-
-import "org-dartlang-testcase:///member_inheritance_from_opt_in_lib.dart";
-
-class LegacyClass extends mem::Class implements mem::Interface {
- field core::int* field3 = null;
- field core::int* field4 = null;
- field core::int* property7 = null;
- field core::int* property8 = null;
- synthetic constructor •() → self::LegacyClass*
- : super mem::Class::•()
- ;
- method method3() → core::int*
- return 0;
- method method4() → core::int*
- return 0;
- method method6a(core::int* a, core::int* b) → core::int*
- return 0;
- method method6b(core::int* a, [core::int* b = #C1]) → core::int*
- return 0;
- method method6c([core::int* a = #C1, core::int* b = #C1]) → core::int*
- return 0;
- method method8a(core::int* a, {core::int* b = #C2}) → core::int*
- return 0;
- method method8b({core::int* a = #C1, core::int* b = #C2}) → core::int*
- return 0;
- method method10a(core::int* a, {core::int* b = #C1}) → core::int*
- return 0;
- method method10b({core::int* a = #C1, core::int* b = #C1}) → core::int*
- return 0;
- get getter3() → core::int*
- return 0;
- get getter4() → core::int*
- return 0;
- set setter3(core::int* value) → void {}
- set setter4(core::int* value) → void {}
- get property3() → core::int*
- return 0;
- set property3(core::int* value) → void {}
- get property4() → core::int*
- return 0;
- set property4(core::int* value) → void {}
- abstract member-signature method method1() → core::int*;
- abstract member-signature method method2() → core::int*;
- abstract member-signature method method5a(core::int* a, core::int* b) → core::int*;
- abstract member-signature method method5b(core::int* a, [core::int* b = #C1]) → core::int*;
- abstract member-signature method method5c([core::int* a = #C2, core::int* b = #C1]) → core::int*;
- abstract member-signature method method7a(core::int* a, {core::int* b = #C1}) → core::int*;
- abstract member-signature method method7b({core::int* a = #C2, core::int* b = #C1}) → core::int*;
- abstract member-signature method method9a(core::int* a, {core::int* b = #C1}) → core::int*;
- abstract member-signature method method9b({core::int* a = #C1, core::int* b = #C1}) → core::int*;
- abstract member-signature get getter1() → core::int*;
- abstract member-signature get getter2() → core::int*;
- abstract member-signature get field1() → core::int*;
- abstract member-signature set field1(core::int* _) → void;
- abstract member-signature get field2() → core::int*;
- abstract member-signature set field2(core::int* _) → void;
- abstract member-signature get property1() → core::int*;
- abstract member-signature set property1(core::int* value) → void;
- abstract member-signature get property2() → core::int*;
- abstract member-signature set property2(core::int* value) → void;
- abstract member-signature get property5() → core::int*;
- abstract member-signature set property5(core::int* _) → void;
- abstract member-signature get property6() → core::int*;
- abstract member-signature set property6(core::int* _) → void;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
- abstract member-signature set setter1(core::int* value) → void;
- abstract member-signature set setter2(core::int* value) → void;
-}
-static method main() → dynamic {}
-
-library /*isNonNullableByDefault*/;
-import self as mem;
-import "dart:core" as core;
-
-abstract class Interface extends core::Object {
- field core::int? field1 = null;
- field core::int field2 = 0;
- field core::int field3 = 0;
- field core::int? field4 = null;
- synthetic constructor •() → mem::Interface
- : super core::Object::•()
- ;
- abstract method method1() → core::int?;
- abstract method method2() → core::int;
- abstract method method3() → core::int;
- abstract method method4() → core::int?;
- abstract method method5a(core::int a, core::int? b) → core::int;
- abstract method method5b(core::int a, [core::int? b = #C1]) → core::int;
- abstract method method5c([core::int a = #C2, core::int? b = #C1]) → core::int;
- abstract method method6a(core::int? a, core::int b) → core::int?;
- abstract method method6b(core::int? a, [core::int b = #C2]) → core::int?;
- abstract method method6c([core::int? a = #C1, core::int b = #C2]) → core::int?;
- abstract method method7a(core::int a, {core::int? b = #C1}) → core::int;
- abstract method method7b({core::int a = #C2, core::int? b = #C1}) → core::int;
- abstract method method8a(core::int? a, {core::int b = #C2}) → core::int?;
- abstract method method8b({core::int? a = #C1, core::int b = #C2}) → core::int?;
- abstract method method9a(core::int a, {required core::int? b = #C1}) → core::int;
- abstract method method9b({required core::int a = #C1, required core::int? b = #C1}) → core::int;
- abstract method method10a(core::int? a, {required core::int b = #C1}) → core::int?;
- abstract method method10b({required core::int? a = #C1, required core::int b = #C1}) → core::int?;
- abstract get getter1() → core::int?;
- abstract get getter2() → core::int;
- abstract get getter3() → core::int;
- abstract get getter4() → core::int?;
- abstract set setter1(core::int? value) → void;
- abstract set setter2(core::int value) → void;
- abstract set setter3(core::int value) → void;
- abstract set setter4(core::int? value) → void;
- abstract get property1() → core::int?;
- abstract set property1(core::int? value) → void;
- abstract get property2() → core::int;
- abstract set property2(core::int value) → void;
- abstract get property3() → core::int;
- abstract set property3(core::int value) → void;
- abstract get property4() → core::int?;
- abstract set property4(core::int? value) → void;
- abstract get property5() → core::int?;
- abstract set property5(core::int? value) → void;
- abstract get property6() → core::int;
- abstract set property6(core::int value) → void;
- abstract get property7() → core::int;
- abstract set property7(core::int value) → void;
- abstract get property8() → core::int?;
- abstract set property8(core::int? value) → void;
-}
-class Class extends core::Object {
- field core::int field1 = 0;
- field core::int? field2 = null;
- field core::int property5 = 0;
- field core::int? property6 = null;
- synthetic constructor •() → mem::Class
- : super core::Object::•()
- ;
- method method1() → core::int
- return 0;
- method method2() → core::int?
- return 0;
- method method5a(core::int a, core::int? b) → core::int
- return 0;
- method method5b(core::int a, [core::int? b = #C1]) → core::int
- return 0;
- method method5c([core::int a = #C2, core::int? b = #C1]) → core::int
- return 0;
- method method7a(core::int a, {core::int? b = #C1}) → core::int
- return 0;
- method method7b({core::int a = #C2, core::int? b = #C1}) → core::int
- return 0;
- method method9a(core::int a, {required core::int? b = #C1}) → core::int
- return 0;
- method method9b({required core::int a = #C1, required core::int? b = #C1}) → core::int
- return 0;
- get getter1() → core::int
- return 0;
- get getter2() → core::int?
- return 0;
- set setter1(core::int value) → void {}
- set setter2(core::int? value) → void {}
- get property1() → core::int
- return 0;
- set property1(core::int value) → void {}
- get property2() → core::int?
- return 0;
- set property2(core::int? value) → void {}
-}
-
-constants {
- #C1 = null
- #C2 = 0
-}
diff --git a/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_in.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_in.dart.strong.transformed.expect
deleted file mode 100644
index e078b39..0000000
--- a/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_in.dart.strong.transformed.expect
+++ /dev/null
@@ -1,182 +0,0 @@
-library;
-import self as self;
-import "member_inheritance_from_opt_in_lib.dart" as mem;
-import "dart:core" as core;
-
-import "org-dartlang-testcase:///member_inheritance_from_opt_in_lib.dart";
-
-class LegacyClass extends mem::Class implements mem::Interface {
- field core::int* field3 = null;
- field core::int* field4 = null;
- field core::int* property7 = null;
- field core::int* property8 = null;
- synthetic constructor •() → self::LegacyClass*
- : super mem::Class::•()
- ;
- method method3() → core::int*
- return 0;
- method method4() → core::int*
- return 0;
- method method6a(core::int* a, core::int* b) → core::int*
- return 0;
- method method6b(core::int* a, [core::int* b = #C1]) → core::int*
- return 0;
- method method6c([core::int* a = #C1, core::int* b = #C1]) → core::int*
- return 0;
- method method8a(core::int* a, {core::int* b = #C2}) → core::int*
- return 0;
- method method8b({core::int* a = #C1, core::int* b = #C2}) → core::int*
- return 0;
- method method10a(core::int* a, {core::int* b = #C1}) → core::int*
- return 0;
- method method10b({core::int* a = #C1, core::int* b = #C1}) → core::int*
- return 0;
- get getter3() → core::int*
- return 0;
- get getter4() → core::int*
- return 0;
- set setter3(core::int* value) → void {}
- set setter4(core::int* value) → void {}
- get property3() → core::int*
- return 0;
- set property3(core::int* value) → void {}
- get property4() → core::int*
- return 0;
- set property4(core::int* value) → void {}
- abstract member-signature method method1() → core::int*;
- abstract member-signature method method2() → core::int*;
- abstract member-signature method method5a(core::int* a, core::int* b) → core::int*;
- abstract member-signature method method5b(core::int* a, [core::int* b = #C1]) → core::int*;
- abstract member-signature method method5c([core::int* a = #C2, core::int* b = #C1]) → core::int*;
- abstract member-signature method method7a(core::int* a, {core::int* b = #C1}) → core::int*;
- abstract member-signature method method7b({core::int* a = #C2, core::int* b = #C1}) → core::int*;
- abstract member-signature method method9a(core::int* a, {core::int* b = #C1}) → core::int*;
- abstract member-signature method method9b({core::int* a = #C1, core::int* b = #C1}) → core::int*;
- abstract member-signature get getter1() → core::int*;
- abstract member-signature get getter2() → core::int*;
- abstract member-signature get field1() → core::int*;
- abstract member-signature set field1(core::int* _) → void;
- abstract member-signature get field2() → core::int*;
- abstract member-signature set field2(core::int* _) → void;
- abstract member-signature get property1() → core::int*;
- abstract member-signature set property1(core::int* value) → void;
- abstract member-signature get property2() → core::int*;
- abstract member-signature set property2(core::int* value) → void;
- abstract member-signature get property5() → core::int*;
- abstract member-signature set property5(core::int* _) → void;
- abstract member-signature get property6() → core::int*;
- abstract member-signature set property6(core::int* _) → void;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
- abstract member-signature set setter1(core::int* value) → void;
- abstract member-signature set setter2(core::int* value) → void;
-}
-static method main() → dynamic {}
-
-library /*isNonNullableByDefault*/;
-import self as mem;
-import "dart:core" as core;
-
-abstract class Interface extends core::Object {
- field core::int? field1 = null;
- field core::int field2 = 0;
- field core::int field3 = 0;
- field core::int? field4 = null;
- synthetic constructor •() → mem::Interface
- : super core::Object::•()
- ;
- abstract method method1() → core::int?;
- abstract method method2() → core::int;
- abstract method method3() → core::int;
- abstract method method4() → core::int?;
- abstract method method5a(core::int a, core::int? b) → core::int;
- abstract method method5b(core::int a, [core::int? b = #C1]) → core::int;
- abstract method method5c([core::int a = #C2, core::int? b = #C1]) → core::int;
- abstract method method6a(core::int? a, core::int b) → core::int?;
- abstract method method6b(core::int? a, [core::int b = #C2]) → core::int?;
- abstract method method6c([core::int? a = #C1, core::int b = #C2]) → core::int?;
- abstract method method7a(core::int a, {core::int? b = #C1}) → core::int;
- abstract method method7b({core::int a = #C2, core::int? b = #C1}) → core::int;
- abstract method method8a(core::int? a, {core::int b = #C2}) → core::int?;
- abstract method method8b({core::int? a = #C1, core::int b = #C2}) → core::int?;
- abstract method method9a(core::int a, {required core::int? b = #C1}) → core::int;
- abstract method method9b({required core::int a = #C1, required core::int? b = #C1}) → core::int;
- abstract method method10a(core::int? a, {required core::int b = #C1}) → core::int?;
- abstract method method10b({required core::int? a = #C1, required core::int b = #C1}) → core::int?;
- abstract get getter1() → core::int?;
- abstract get getter2() → core::int;
- abstract get getter3() → core::int;
- abstract get getter4() → core::int?;
- abstract set setter1(core::int? value) → void;
- abstract set setter2(core::int value) → void;
- abstract set setter3(core::int value) → void;
- abstract set setter4(core::int? value) → void;
- abstract get property1() → core::int?;
- abstract set property1(core::int? value) → void;
- abstract get property2() → core::int;
- abstract set property2(core::int value) → void;
- abstract get property3() → core::int;
- abstract set property3(core::int value) → void;
- abstract get property4() → core::int?;
- abstract set property4(core::int? value) → void;
- abstract get property5() → core::int?;
- abstract set property5(core::int? value) → void;
- abstract get property6() → core::int;
- abstract set property6(core::int value) → void;
- abstract get property7() → core::int;
- abstract set property7(core::int value) → void;
- abstract get property8() → core::int?;
- abstract set property8(core::int? value) → void;
-}
-class Class extends core::Object {
- field core::int field1 = 0;
- field core::int? field2 = null;
- field core::int property5 = 0;
- field core::int? property6 = null;
- synthetic constructor •() → mem::Class
- : super core::Object::•()
- ;
- method method1() → core::int
- return 0;
- method method2() → core::int?
- return 0;
- method method5a(core::int a, core::int? b) → core::int
- return 0;
- method method5b(core::int a, [core::int? b = #C1]) → core::int
- return 0;
- method method5c([core::int a = #C2, core::int? b = #C1]) → core::int
- return 0;
- method method7a(core::int a, {core::int? b = #C1}) → core::int
- return 0;
- method method7b({core::int a = #C2, core::int? b = #C1}) → core::int
- return 0;
- method method9a(core::int a, {required core::int? b = #C1}) → core::int
- return 0;
- method method9b({required core::int a = #C1, required core::int? b = #C1}) → core::int
- return 0;
- get getter1() → core::int
- return 0;
- get getter2() → core::int?
- return 0;
- set setter1(core::int value) → void {}
- set setter2(core::int? value) → void {}
- get property1() → core::int
- return 0;
- set property1(core::int value) → void {}
- get property2() → core::int?
- return 0;
- set property2(core::int? value) → void {}
-}
-
-constants {
- #C1 = null
- #C2 = 0
-}
diff --git a/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart.outline.expect b/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart.outline.expect
deleted file mode 100644
index 86d0c80..0000000
--- a/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart.outline.expect
+++ /dev/null
@@ -1,297 +0,0 @@
-library main /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart:96:30: Error: The required named parameter 'a' in method 'Class2b.method5c' is not required in overridden method 'LegacyClass.method5c'.
-// int method5c({required int a, required int b}) => 0;
-// ^
-// pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out_lib.dart:30:7: Context: This is the overridden method ('method5c').
-// int method5c({int a, int b}) => 0;
-// ^
-//
-// pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart:96:46: Error: The required named parameter 'b' in method 'Class2b.method5c' is not required in overridden method 'LegacyClass.method5c'.
-// int method5c({required int a, required int b}) => 0;
-// ^
-// pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out_lib.dart:30:7: Context: This is the overridden method ('method5c').
-// int method5c({int a, int b}) => 0;
-// ^
-//
-// pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart:102:32: Error: The required named parameter 'a' in method 'Class2b.method6c' is not required in overridden method 'LegacyClass.method6c'.
-// int? method6c({required int? a, required int? b}) => 0;
-// ^
-// pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out_lib.dart:36:7: Context: This is the overridden method ('method6c').
-// int method6c({int a, int b}) => 0;
-// ^
-//
-// pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart:102:49: Error: The required named parameter 'b' in method 'Class2b.method6c' is not required in overridden method 'LegacyClass.method6c'.
-// int? method6c({required int? a, required int? b}) => 0;
-// ^
-// pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out_lib.dart:36:7: Context: This is the overridden method ('method6c').
-// int method6c({int a, int b}) => 0;
-// ^
-//
-import self as self;
-import "dart:core" as core;
-import "member_inheritance_from_opt_out_lib.dart" as opt;
-
-import "org-dartlang-testcase:///member_inheritance_from_opt_out_lib.dart";
-
-abstract class Interface extends core::Object {
- field core::int field1;
- field core::int? field2;
- field core::int property3;
- field core::int? property4;
- synthetic constructor •() → self::Interface
- ;
- abstract method method1() → core::int;
- abstract method method2() → core::int?;
- abstract method method3a(core::int a, core::int b) → core::int;
- abstract method method3b(core::int a, [core::int b]) → core::int;
- abstract method method3c([core::int a, core::int b]) → core::int;
- abstract method method4a(core::int? a, core::int? b) → core::int?;
- abstract method method4b(core::int? a, [core::int? b]) → core::int?;
- abstract method method4c([core::int? a, core::int? b]) → core::int?;
- abstract method method5a(core::int a, {core::int b = 0}) → core::int;
- abstract method method5b({core::int a = 0, core::int b = 0}) → core::int;
- abstract method method5c({required core::int a, required core::int b}) → core::int;
- abstract method method6a(core::int? a, {core::int? b}) → core::int?;
- abstract method method6b({core::int? a, core::int? b}) → core::int?;
- abstract method method6c({required core::int? a, required core::int? b}) → core::int?;
- abstract get getter1() → core::int;
- abstract get getter2() → core::int?;
- abstract set setter1(core::int value) → void;
- abstract set setter2(core::int? value) → void;
- abstract get field3() → core::int;
- abstract set field3(core::int value) → void;
- abstract get field4() → core::int?;
- abstract set field4(core::int? value) → void;
- abstract get property1() → core::int;
- abstract set property1(core::int value) → void;
- abstract get property2() → core::int?;
- abstract set property2(core::int? value) → void;
-}
-class Class1 extends opt::LegacyClass {
- synthetic constructor •() → self::Class1
- ;
-}
-class Class2a extends opt::LegacyClass implements self::Interface {
- synthetic constructor •() → self::Class2a
- ;
- abstract member-signature method method1() → core::int;
- abstract member-signature method method2() → core::int?;
- abstract member-signature method method3a(core::int a, core::int b) → core::int;
- abstract member-signature method method3b(core::int a, [core::int b]) → core::int;
- abstract member-signature method method3c([core::int a, core::int b]) → core::int;
- abstract member-signature method method4a(core::int? a, core::int? b) → core::int?;
- abstract member-signature method method4b(core::int? a, [core::int? b]) → core::int?;
- abstract member-signature method method4c([core::int? a, core::int? b]) → core::int?;
- abstract member-signature method method5a(core::int a, {core::int b}) → core::int;
- abstract member-signature method method5b({core::int a, core::int b}) → core::int;
- abstract member-signature method method5c({core::int a, core::int b}) → core::int;
- abstract member-signature method method6a(core::int? a, {core::int? b}) → core::int?;
- abstract member-signature method method6b({core::int? a, core::int? b}) → core::int?;
- abstract member-signature method method6c({core::int? a, core::int? b}) → core::int?;
- abstract member-signature get getter1() → core::int;
- abstract member-signature get getter2() → core::int?;
- abstract member-signature get field1() → core::int;
- abstract member-signature set field1(core::int _) → void;
- abstract member-signature get field2() → core::int?;
- abstract member-signature set field2(core::int? _) → void;
- abstract member-signature get field3() → core::int;
- abstract member-signature set field3(core::int _) → void;
- abstract member-signature get field4() → core::int?;
- abstract member-signature set field4(core::int? _) → void;
- abstract member-signature get property1() → core::int;
- abstract member-signature set property1(core::int value) → void;
- abstract member-signature get property2() → core::int?;
- abstract member-signature set property2(core::int? value) → void;
- abstract member-signature get property3() → core::int;
- abstract member-signature set property3(core::int value) → void;
- abstract member-signature get property4() → core::int?;
- abstract member-signature set property4(core::int? value) → void;
- abstract member-signature get _identityHashCode() → core::int;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
- abstract member-signature get hashCode() → core::int;
- abstract member-signature method toString() → core::String;
- abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type;
- abstract member-signature set setter1(core::int value) → void;
- abstract member-signature set setter2(core::int? value) → void;
-}
-class Class2b extends opt::LegacyClass implements self::Interface {
- field core::int field1;
- field core::int? field2;
- field core::int property3;
- field core::int? property4;
- synthetic constructor •() → self::Class2b
- ;
- method method1() → core::int
- ;
- method method2() → core::int?
- ;
- method method3a(core::int a, core::int b) → core::int
- ;
- method method3b(core::int a, [core::int b = 42]) → core::int
- ;
- method method3c([core::int a = 42, core::int b = 42]) → core::int
- ;
- method method4a(core::int? a, core::int? b) → core::int?
- ;
- method method4b(core::int? a, [core::int? b]) → core::int?
- ;
- method method4c([core::int? a, core::int? b]) → core::int?
- ;
- method method5a(core::int a, {core::int b = 0}) → core::int
- ;
- method method5b({core::int a = 0, core::int b = 0}) → core::int
- ;
- method method5c({required core::int a, required core::int b}) → core::int
- ;
- method method6a(core::int? a, {core::int? b}) → core::int?
- ;
- method method6b({core::int? a, core::int? b}) → core::int?
- ;
- method method6c({required core::int? a, required core::int? b}) → core::int?
- ;
- get getter1() → core::int
- ;
- get getter2() → core::int?
- ;
- set setter1(core::int value) → void
- ;
- set setter2(core::int? value) → void
- ;
- get field3() → core::int
- ;
- set field3(core::int value) → void
- ;
- get field4() → core::int?
- ;
- set field4(core::int? value) → void
- ;
- get property1() → core::int
- ;
- set property1(core::int value) → void
- ;
- get property2() → core::int?
- ;
- set property2(core::int? value) → void
- ;
- abstract member-signature get _identityHashCode() → core::int;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
- abstract member-signature get hashCode() → core::int;
- abstract member-signature method toString() → core::String;
- abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type;
-}
-class Class3a extends opt::GenericLegacyClass<core::int> {
- synthetic constructor •() → self::Class3a
- ;
-}
-class Class3b extends opt::GenericLegacyClass<core::int?> {
- synthetic constructor •() → self::Class3b
- ;
-}
-class Class3c<S extends core::Object? = dynamic> extends opt::GenericLegacyClass<self::Class3c::S%> {
- synthetic constructor •() → self::Class3c<self::Class3c::S%>
- ;
-}
-static method main() → dynamic
- ;
-
-library opt_out;
-import self as opt;
-import "dart:core" as core;
-
-class LegacyClass extends core::Object {
- field core::int* field1;
- field core::int* field2;
- field core::int* field3;
- field core::int* field4;
- synthetic constructor •() → opt::LegacyClass*
- ;
- method method1() → core::int*
- ;
- method method2() → core::int*
- ;
- method method3a(core::int* a, core::int* b) → core::int*
- ;
- method method3b(core::int* a, [core::int* b]) → core::int*
- ;
- method method3c([core::int* a, core::int* b]) → core::int*
- ;
- method method4a(core::int* a, core::int* b) → core::int*
- ;
- method method4b(core::int* a, [core::int* b]) → core::int*
- ;
- method method4c([core::int* a, core::int* b]) → core::int*
- ;
- method method5a(core::int* a, {core::int* b}) → core::int*
- ;
- method method5b({core::int* a, core::int* b}) → core::int*
- ;
- method method5c({core::int* a, core::int* b}) → core::int*
- ;
- method method6a(core::int* a, {core::int* b}) → core::int*
- ;
- method method6b({core::int* a, core::int* b}) → core::int*
- ;
- method method6c({core::int* a, core::int* b}) → core::int*
- ;
- get getter1() → core::int*
- ;
- get getter2() → core::int*
- ;
- set setter1(core::int* value) → void
- ;
- set setter2(core::int* value) → void
- ;
- get property1() → core::int*
- ;
- set property1(core::int* value) → void
- ;
- get property2() → core::int*
- ;
- set property2(core::int* value) → void
- ;
- get property3() → core::int*
- ;
- set property3(core::int* value) → void
- ;
- get property4() → core::int*
- ;
- set property4(core::int* value) → void
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class GenericLegacyClass<T extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → opt::GenericLegacyClass<opt::GenericLegacyClass::T*>*
- ;
- method method1() → opt::GenericLegacyClass::T*
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
diff --git a/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart.weak.expect b/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart.weak.expect
deleted file mode 100644
index 4da2cc7..0000000
--- a/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart.weak.expect
+++ /dev/null
@@ -1,299 +0,0 @@
-library main /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart:96:30: Error: The required named parameter 'a' in method 'Class2b.method5c' is not required in overridden method 'LegacyClass.method5c'.
-// int method5c({required int a, required int b}) => 0;
-// ^
-// pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out_lib.dart:30:7: Context: This is the overridden method ('method5c').
-// int method5c({int a, int b}) => 0;
-// ^
-//
-// pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart:96:46: Error: The required named parameter 'b' in method 'Class2b.method5c' is not required in overridden method 'LegacyClass.method5c'.
-// int method5c({required int a, required int b}) => 0;
-// ^
-// pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out_lib.dart:30:7: Context: This is the overridden method ('method5c').
-// int method5c({int a, int b}) => 0;
-// ^
-//
-// pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart:102:32: Error: The required named parameter 'a' in method 'Class2b.method6c' is not required in overridden method 'LegacyClass.method6c'.
-// int? method6c({required int? a, required int? b}) => 0;
-// ^
-// pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out_lib.dart:36:7: Context: This is the overridden method ('method6c').
-// int method6c({int a, int b}) => 0;
-// ^
-//
-// pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart:102:49: Error: The required named parameter 'b' in method 'Class2b.method6c' is not required in overridden method 'LegacyClass.method6c'.
-// int? method6c({required int? a, required int? b}) => 0;
-// ^
-// pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out_lib.dart:36:7: Context: This is the overridden method ('method6c').
-// int method6c({int a, int b}) => 0;
-// ^
-//
-import self as self;
-import "dart:core" as core;
-import "member_inheritance_from_opt_out_lib.dart" as opt;
-
-import "org-dartlang-testcase:///member_inheritance_from_opt_out_lib.dart";
-
-abstract class Interface extends core::Object {
- field core::int field1 = 0;
- field core::int? field2 = null;
- field core::int property3 = 0;
- field core::int? property4 = null;
- synthetic constructor •() → self::Interface
- : super core::Object::•()
- ;
- abstract method method1() → core::int;
- abstract method method2() → core::int?;
- abstract method method3a(core::int a, core::int b) → core::int;
- abstract method method3b(core::int a, [core::int b = #C1]) → core::int;
- abstract method method3c([core::int a = #C1, core::int b = #C1]) → core::int;
- abstract method method4a(core::int? a, core::int? b) → core::int?;
- abstract method method4b(core::int? a, [core::int? b = #C1]) → core::int?;
- abstract method method4c([core::int? a = #C1, core::int? b = #C1]) → core::int?;
- abstract method method5a(core::int a, {core::int b = #C2}) → core::int;
- abstract method method5b({core::int a = #C2, core::int b = #C2}) → core::int;
- abstract method method5c({required core::int a = #C1, required core::int b = #C1}) → core::int;
- abstract method method6a(core::int? a, {core::int? b = #C1}) → core::int?;
- abstract method method6b({core::int? a = #C1, core::int? b = #C1}) → core::int?;
- abstract method method6c({required core::int? a = #C1, required core::int? b = #C1}) → core::int?;
- abstract get getter1() → core::int;
- abstract get getter2() → core::int?;
- abstract set setter1(core::int value) → void;
- abstract set setter2(core::int? value) → void;
- abstract get field3() → core::int;
- abstract set field3(core::int value) → void;
- abstract get field4() → core::int?;
- abstract set field4(core::int? value) → void;
- abstract get property1() → core::int;
- abstract set property1(core::int value) → void;
- abstract get property2() → core::int?;
- abstract set property2(core::int? value) → void;
-}
-class Class1 extends opt::LegacyClass {
- synthetic constructor •() → self::Class1
- : super opt::LegacyClass::•()
- ;
-}
-class Class2a extends opt::LegacyClass implements self::Interface {
- synthetic constructor •() → self::Class2a
- : super opt::LegacyClass::•()
- ;
- abstract member-signature method method1() → core::int;
- abstract member-signature method method2() → core::int?;
- abstract member-signature method method3a(core::int a, core::int b) → core::int;
- abstract member-signature method method3b(core::int a, [core::int b = #C1]) → core::int;
- abstract member-signature method method3c([core::int a = #C1, core::int b = #C1]) → core::int;
- abstract member-signature method method4a(core::int? a, core::int? b) → core::int?;
- abstract member-signature method method4b(core::int? a, [core::int? b = #C1]) → core::int?;
- abstract member-signature method method4c([core::int? a = #C1, core::int? b = #C1]) → core::int?;
- abstract member-signature method method5a(core::int a, {core::int b = #C1}) → core::int;
- abstract member-signature method method5b({core::int a = #C1, core::int b = #C1}) → core::int;
- abstract member-signature method method5c({core::int a = #C1, core::int b = #C1}) → core::int;
- abstract member-signature method method6a(core::int? a, {core::int? b = #C1}) → core::int?;
- abstract member-signature method method6b({core::int? a = #C1, core::int? b = #C1}) → core::int?;
- abstract member-signature method method6c({core::int? a = #C1, core::int? b = #C1}) → core::int?;
- abstract member-signature get getter1() → core::int;
- abstract member-signature get getter2() → core::int?;
- abstract member-signature get field1() → core::int;
- abstract member-signature set field1(core::int _) → void;
- abstract member-signature get field2() → core::int?;
- abstract member-signature set field2(core::int? _) → void;
- abstract member-signature get field3() → core::int;
- abstract member-signature set field3(core::int _) → void;
- abstract member-signature get field4() → core::int?;
- abstract member-signature set field4(core::int? _) → void;
- abstract member-signature get property1() → core::int;
- abstract member-signature set property1(core::int value) → void;
- abstract member-signature get property2() → core::int?;
- abstract member-signature set property2(core::int? value) → void;
- abstract member-signature get property3() → core::int;
- abstract member-signature set property3(core::int value) → void;
- abstract member-signature get property4() → core::int?;
- abstract member-signature set property4(core::int? value) → void;
- abstract member-signature get _identityHashCode() → core::int;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
- abstract member-signature get hashCode() → core::int;
- abstract member-signature method toString() → core::String;
- abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type;
- abstract member-signature set setter1(core::int value) → void;
- abstract member-signature set setter2(core::int? value) → void;
-}
-class Class2b extends opt::LegacyClass implements self::Interface {
- field core::int field1 = 0;
- field core::int? field2 = null;
- field core::int property3 = 0;
- field core::int? property4 = null;
- synthetic constructor •() → self::Class2b
- : super opt::LegacyClass::•()
- ;
- method method1() → core::int
- return 0;
- method method2() → core::int?
- return 0;
- method method3a(core::int a, core::int b) → core::int
- return 0;
- method method3b(core::int a, [core::int b = #C3]) → core::int
- return 0;
- method method3c([core::int a = #C3, core::int b = #C3]) → core::int
- return 0;
- method method4a(core::int? a, core::int? b) → core::int?
- return 0;
- method method4b(core::int? a, [core::int? b = #C1]) → core::int?
- return 0;
- method method4c([core::int? a = #C1, core::int? b = #C1]) → core::int?
- return 0;
- method method5a(core::int a, {core::int b = #C2}) → core::int
- return 0;
- method method5b({core::int a = #C2, core::int b = #C2}) → core::int
- return 0;
- method method5c({required core::int a = #C1, required core::int b = #C1}) → core::int
- return 0;
- method method6a(core::int? a, {core::int? b = #C1}) → core::int?
- return 0;
- method method6b({core::int? a = #C1, core::int? b = #C1}) → core::int?
- return 0;
- method method6c({required core::int? a = #C1, required core::int? b = #C1}) → core::int?
- return 0;
- get getter1() → core::int
- return 0;
- get getter2() → core::int?
- return 0;
- set setter1(core::int value) → void {}
- set setter2(core::int? value) → void {}
- get field3() → core::int
- return 0;
- set field3(core::int value) → void {}
- get field4() → core::int?
- return 0;
- set field4(core::int? value) → void {}
- get property1() → core::int
- return 0;
- set property1(core::int value) → void {}
- get property2() → core::int?
- return 0;
- set property2(core::int? value) → void {}
- abstract member-signature get _identityHashCode() → core::int;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
- abstract member-signature get hashCode() → core::int;
- abstract member-signature method toString() → core::String;
- abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type;
-}
-class Class3a extends opt::GenericLegacyClass<core::int> {
- synthetic constructor •() → self::Class3a
- : super opt::GenericLegacyClass::•()
- ;
-}
-class Class3b extends opt::GenericLegacyClass<core::int?> {
- synthetic constructor •() → self::Class3b
- : super opt::GenericLegacyClass::•()
- ;
-}
-class Class3c<S extends core::Object? = dynamic> extends opt::GenericLegacyClass<self::Class3c::S%> {
- synthetic constructor •() → self::Class3c<self::Class3c::S%>
- : super opt::GenericLegacyClass::•()
- ;
-}
-static method main() → dynamic {}
-
-library opt_out;
-import self as opt;
-import "dart:core" as core;
-
-class LegacyClass extends core::Object {
- field core::int* field1 = null;
- field core::int* field2 = null;
- field core::int* field3 = null;
- field core::int* field4 = null;
- synthetic constructor •() → opt::LegacyClass*
- : super core::Object::•()
- ;
- method method1() → core::int*
- return 0;
- method method2() → core::int*
- return 0;
- method method3a(core::int* a, core::int* b) → core::int*
- return 0;
- method method3b(core::int* a, [core::int* b = #C1]) → core::int*
- return 0;
- method method3c([core::int* a = #C1, core::int* b = #C1]) → core::int*
- return 0;
- method method4a(core::int* a, core::int* b) → core::int*
- return 0;
- method method4b(core::int* a, [core::int* b = #C1]) → core::int*
- return 0;
- method method4c([core::int* a = #C1, core::int* b = #C1]) → core::int*
- return 0;
- method method5a(core::int* a, {core::int* b = #C1}) → core::int*
- return 0;
- method method5b({core::int* a = #C1, core::int* b = #C1}) → core::int*
- return 0;
- method method5c({core::int* a = #C1, core::int* b = #C1}) → core::int*
- return 0;
- method method6a(core::int* a, {core::int* b = #C1}) → core::int*
- return 0;
- method method6b({core::int* a = #C1, core::int* b = #C1}) → core::int*
- return 0;
- method method6c({core::int* a = #C1, core::int* b = #C1}) → core::int*
- return 0;
- get getter1() → core::int*
- return 0;
- get getter2() → core::int*
- return 0;
- set setter1(core::int* value) → void {}
- set setter2(core::int* value) → void {}
- get property1() → core::int*
- return 0;
- set property1(core::int* value) → void {}
- get property2() → core::int*
- return 0;
- set property2(core::int* value) → void {}
- get property3() → core::int*
- return 0;
- set property3(core::int* value) → void {}
- get property4() → core::int*
- return 0;
- set property4(core::int* value) → void {}
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class GenericLegacyClass<T extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → opt::GenericLegacyClass<opt::GenericLegacyClass::T*>*
- : super core::Object::•()
- ;
- method method1() → opt::GenericLegacyClass::T*
- return null;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-
-constants {
- #C1 = null
- #C2 = 0
- #C3 = 42
-}
diff --git a/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart.weak.transformed.expect
deleted file mode 100644
index 4da2cc7..0000000
--- a/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart.weak.transformed.expect
+++ /dev/null
@@ -1,299 +0,0 @@
-library main /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart:96:30: Error: The required named parameter 'a' in method 'Class2b.method5c' is not required in overridden method 'LegacyClass.method5c'.
-// int method5c({required int a, required int b}) => 0;
-// ^
-// pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out_lib.dart:30:7: Context: This is the overridden method ('method5c').
-// int method5c({int a, int b}) => 0;
-// ^
-//
-// pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart:96:46: Error: The required named parameter 'b' in method 'Class2b.method5c' is not required in overridden method 'LegacyClass.method5c'.
-// int method5c({required int a, required int b}) => 0;
-// ^
-// pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out_lib.dart:30:7: Context: This is the overridden method ('method5c').
-// int method5c({int a, int b}) => 0;
-// ^
-//
-// pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart:102:32: Error: The required named parameter 'a' in method 'Class2b.method6c' is not required in overridden method 'LegacyClass.method6c'.
-// int? method6c({required int? a, required int? b}) => 0;
-// ^
-// pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out_lib.dart:36:7: Context: This is the overridden method ('method6c').
-// int method6c({int a, int b}) => 0;
-// ^
-//
-// pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart:102:49: Error: The required named parameter 'b' in method 'Class2b.method6c' is not required in overridden method 'LegacyClass.method6c'.
-// int? method6c({required int? a, required int? b}) => 0;
-// ^
-// pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out_lib.dart:36:7: Context: This is the overridden method ('method6c').
-// int method6c({int a, int b}) => 0;
-// ^
-//
-import self as self;
-import "dart:core" as core;
-import "member_inheritance_from_opt_out_lib.dart" as opt;
-
-import "org-dartlang-testcase:///member_inheritance_from_opt_out_lib.dart";
-
-abstract class Interface extends core::Object {
- field core::int field1 = 0;
- field core::int? field2 = null;
- field core::int property3 = 0;
- field core::int? property4 = null;
- synthetic constructor •() → self::Interface
- : super core::Object::•()
- ;
- abstract method method1() → core::int;
- abstract method method2() → core::int?;
- abstract method method3a(core::int a, core::int b) → core::int;
- abstract method method3b(core::int a, [core::int b = #C1]) → core::int;
- abstract method method3c([core::int a = #C1, core::int b = #C1]) → core::int;
- abstract method method4a(core::int? a, core::int? b) → core::int?;
- abstract method method4b(core::int? a, [core::int? b = #C1]) → core::int?;
- abstract method method4c([core::int? a = #C1, core::int? b = #C1]) → core::int?;
- abstract method method5a(core::int a, {core::int b = #C2}) → core::int;
- abstract method method5b({core::int a = #C2, core::int b = #C2}) → core::int;
- abstract method method5c({required core::int a = #C1, required core::int b = #C1}) → core::int;
- abstract method method6a(core::int? a, {core::int? b = #C1}) → core::int?;
- abstract method method6b({core::int? a = #C1, core::int? b = #C1}) → core::int?;
- abstract method method6c({required core::int? a = #C1, required core::int? b = #C1}) → core::int?;
- abstract get getter1() → core::int;
- abstract get getter2() → core::int?;
- abstract set setter1(core::int value) → void;
- abstract set setter2(core::int? value) → void;
- abstract get field3() → core::int;
- abstract set field3(core::int value) → void;
- abstract get field4() → core::int?;
- abstract set field4(core::int? value) → void;
- abstract get property1() → core::int;
- abstract set property1(core::int value) → void;
- abstract get property2() → core::int?;
- abstract set property2(core::int? value) → void;
-}
-class Class1 extends opt::LegacyClass {
- synthetic constructor •() → self::Class1
- : super opt::LegacyClass::•()
- ;
-}
-class Class2a extends opt::LegacyClass implements self::Interface {
- synthetic constructor •() → self::Class2a
- : super opt::LegacyClass::•()
- ;
- abstract member-signature method method1() → core::int;
- abstract member-signature method method2() → core::int?;
- abstract member-signature method method3a(core::int a, core::int b) → core::int;
- abstract member-signature method method3b(core::int a, [core::int b = #C1]) → core::int;
- abstract member-signature method method3c([core::int a = #C1, core::int b = #C1]) → core::int;
- abstract member-signature method method4a(core::int? a, core::int? b) → core::int?;
- abstract member-signature method method4b(core::int? a, [core::int? b = #C1]) → core::int?;
- abstract member-signature method method4c([core::int? a = #C1, core::int? b = #C1]) → core::int?;
- abstract member-signature method method5a(core::int a, {core::int b = #C1}) → core::int;
- abstract member-signature method method5b({core::int a = #C1, core::int b = #C1}) → core::int;
- abstract member-signature method method5c({core::int a = #C1, core::int b = #C1}) → core::int;
- abstract member-signature method method6a(core::int? a, {core::int? b = #C1}) → core::int?;
- abstract member-signature method method6b({core::int? a = #C1, core::int? b = #C1}) → core::int?;
- abstract member-signature method method6c({core::int? a = #C1, core::int? b = #C1}) → core::int?;
- abstract member-signature get getter1() → core::int;
- abstract member-signature get getter2() → core::int?;
- abstract member-signature get field1() → core::int;
- abstract member-signature set field1(core::int _) → void;
- abstract member-signature get field2() → core::int?;
- abstract member-signature set field2(core::int? _) → void;
- abstract member-signature get field3() → core::int;
- abstract member-signature set field3(core::int _) → void;
- abstract member-signature get field4() → core::int?;
- abstract member-signature set field4(core::int? _) → void;
- abstract member-signature get property1() → core::int;
- abstract member-signature set property1(core::int value) → void;
- abstract member-signature get property2() → core::int?;
- abstract member-signature set property2(core::int? value) → void;
- abstract member-signature get property3() → core::int;
- abstract member-signature set property3(core::int value) → void;
- abstract member-signature get property4() → core::int?;
- abstract member-signature set property4(core::int? value) → void;
- abstract member-signature get _identityHashCode() → core::int;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
- abstract member-signature get hashCode() → core::int;
- abstract member-signature method toString() → core::String;
- abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type;
- abstract member-signature set setter1(core::int value) → void;
- abstract member-signature set setter2(core::int? value) → void;
-}
-class Class2b extends opt::LegacyClass implements self::Interface {
- field core::int field1 = 0;
- field core::int? field2 = null;
- field core::int property3 = 0;
- field core::int? property4 = null;
- synthetic constructor •() → self::Class2b
- : super opt::LegacyClass::•()
- ;
- method method1() → core::int
- return 0;
- method method2() → core::int?
- return 0;
- method method3a(core::int a, core::int b) → core::int
- return 0;
- method method3b(core::int a, [core::int b = #C3]) → core::int
- return 0;
- method method3c([core::int a = #C3, core::int b = #C3]) → core::int
- return 0;
- method method4a(core::int? a, core::int? b) → core::int?
- return 0;
- method method4b(core::int? a, [core::int? b = #C1]) → core::int?
- return 0;
- method method4c([core::int? a = #C1, core::int? b = #C1]) → core::int?
- return 0;
- method method5a(core::int a, {core::int b = #C2}) → core::int
- return 0;
- method method5b({core::int a = #C2, core::int b = #C2}) → core::int
- return 0;
- method method5c({required core::int a = #C1, required core::int b = #C1}) → core::int
- return 0;
- method method6a(core::int? a, {core::int? b = #C1}) → core::int?
- return 0;
- method method6b({core::int? a = #C1, core::int? b = #C1}) → core::int?
- return 0;
- method method6c({required core::int? a = #C1, required core::int? b = #C1}) → core::int?
- return 0;
- get getter1() → core::int
- return 0;
- get getter2() → core::int?
- return 0;
- set setter1(core::int value) → void {}
- set setter2(core::int? value) → void {}
- get field3() → core::int
- return 0;
- set field3(core::int value) → void {}
- get field4() → core::int?
- return 0;
- set field4(core::int? value) → void {}
- get property1() → core::int
- return 0;
- set property1(core::int value) → void {}
- get property2() → core::int?
- return 0;
- set property2(core::int? value) → void {}
- abstract member-signature get _identityHashCode() → core::int;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
- abstract member-signature get hashCode() → core::int;
- abstract member-signature method toString() → core::String;
- abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type;
-}
-class Class3a extends opt::GenericLegacyClass<core::int> {
- synthetic constructor •() → self::Class3a
- : super opt::GenericLegacyClass::•()
- ;
-}
-class Class3b extends opt::GenericLegacyClass<core::int?> {
- synthetic constructor •() → self::Class3b
- : super opt::GenericLegacyClass::•()
- ;
-}
-class Class3c<S extends core::Object? = dynamic> extends opt::GenericLegacyClass<self::Class3c::S%> {
- synthetic constructor •() → self::Class3c<self::Class3c::S%>
- : super opt::GenericLegacyClass::•()
- ;
-}
-static method main() → dynamic {}
-
-library opt_out;
-import self as opt;
-import "dart:core" as core;
-
-class LegacyClass extends core::Object {
- field core::int* field1 = null;
- field core::int* field2 = null;
- field core::int* field3 = null;
- field core::int* field4 = null;
- synthetic constructor •() → opt::LegacyClass*
- : super core::Object::•()
- ;
- method method1() → core::int*
- return 0;
- method method2() → core::int*
- return 0;
- method method3a(core::int* a, core::int* b) → core::int*
- return 0;
- method method3b(core::int* a, [core::int* b = #C1]) → core::int*
- return 0;
- method method3c([core::int* a = #C1, core::int* b = #C1]) → core::int*
- return 0;
- method method4a(core::int* a, core::int* b) → core::int*
- return 0;
- method method4b(core::int* a, [core::int* b = #C1]) → core::int*
- return 0;
- method method4c([core::int* a = #C1, core::int* b = #C1]) → core::int*
- return 0;
- method method5a(core::int* a, {core::int* b = #C1}) → core::int*
- return 0;
- method method5b({core::int* a = #C1, core::int* b = #C1}) → core::int*
- return 0;
- method method5c({core::int* a = #C1, core::int* b = #C1}) → core::int*
- return 0;
- method method6a(core::int* a, {core::int* b = #C1}) → core::int*
- return 0;
- method method6b({core::int* a = #C1, core::int* b = #C1}) → core::int*
- return 0;
- method method6c({core::int* a = #C1, core::int* b = #C1}) → core::int*
- return 0;
- get getter1() → core::int*
- return 0;
- get getter2() → core::int*
- return 0;
- set setter1(core::int* value) → void {}
- set setter2(core::int* value) → void {}
- get property1() → core::int*
- return 0;
- set property1(core::int* value) → void {}
- get property2() → core::int*
- return 0;
- set property2(core::int* value) → void {}
- get property3() → core::int*
- return 0;
- set property3(core::int* value) → void {}
- get property4() → core::int*
- return 0;
- set property4(core::int* value) → void {}
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class GenericLegacyClass<T extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → opt::GenericLegacyClass<opt::GenericLegacyClass::T*>*
- : super core::Object::•()
- ;
- method method1() → opt::GenericLegacyClass::T*
- return null;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-
-constants {
- #C1 = null
- #C2 = 0
- #C3 = 42
-}
diff --git a/pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart.outline.expect b/pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart.outline.expect
deleted file mode 100644
index ea10e49..0000000
--- a/pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart.outline.expect
+++ /dev/null
@@ -1,184 +0,0 @@
-library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:17:6: Error: The return type of the method 'SubInIn.nullableBad' is 'T?', which does not match the return type, 'int?', of the overridden method, 'SuperIn.nullableBad'.
-// Change to a subtype of 'int?'.
-// T? nullableBad<T>(T t) => null;
-// ^
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:10:8: Context: This is the overridden method ('nullableBad').
-// int? nullableBad<T>(T t) => 1;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:18:5: Error: The return type of the method 'SubInIn.nonNullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperIn.nonNullableBad'.
-// Change to a subtype of 'int'.
-// T nonNullableBad<T>(T t) => t;
-// ^
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:11:7: Context: This is the overridden method ('nonNullableBad').
-// int nonNullableBad<T>(T t) => 2;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:24:6: Error: The return type of the method 'SubOutIn.nullableBad' is 'T?', which does not match the return type, 'int', of the overridden method, 'SuperOut.nullableBad'.
-// Change to a subtype of 'int'.
-// T? nullableBad<T>(T t) => null;
-// ^
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:12:7: Context: This is the overridden method ('nullableBad').
-// int nullableBad<T>(T t) => 1;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:25:5: Error: The return type of the method 'SubOutIn.nonNullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperOut.nonNullableBad'.
-// Change to a subtype of 'int'.
-// T nonNullableBad<T>(T t) => t;
-// ^
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:13:7: Context: This is the overridden method ('nonNullableBad').
-// int nonNullableBad<T>(T t) => 2;
-// ^
-//
-import self as self;
-import "dart:core" as core;
-import "messages_with_types_opt_out.dart" as mes;
-
-import "org-dartlang-testcase:///messages_with_types_opt_out.dart";
-
-class SuperIn extends core::Object {
- synthetic constructor •() → self::SuperIn
- ;
- method nullableSame() → core::String?
- ;
- method nonNullableSame() → core::String
- ;
- method nullableBad<T extends core::Object? = dynamic>(self::SuperIn::nullableBad::T% t) → core::int?
- ;
- method nonNullableBad<T extends core::Object? = dynamic>(self::SuperIn::nonNullableBad::T% t) → core::int
- ;
-}
-class SubInIn extends self::SuperIn {
- synthetic constructor •() → self::SubInIn
- ;
- method nullableSame() → core::String?
- ;
- method nonNullableSame() → core::String
- ;
- method nullableBad<T extends core::Object? = dynamic>(self::SubInIn::nullableBad::T% t) → self::SubInIn::nullableBad::T?
- ;
- method nonNullableBad<T extends core::Object? = dynamic>(self::SubInIn::nonNullableBad::T% t) → self::SubInIn::nonNullableBad::T%
- ;
-}
-class SubOutIn extends mes::SuperOut {
- synthetic constructor •() → self::SubOutIn
- ;
- method nullableSame() → core::String?
- ;
- method nonNullableSame() → core::String
- ;
- method nullableBad<T extends core::Object? = dynamic>(self::SubOutIn::nullableBad::T% t) → self::SubOutIn::nullableBad::T?
- ;
- method nonNullableBad<T extends core::Object? = dynamic>(self::SubOutIn::nonNullableBad::T% t) → self::SubOutIn::nonNullableBad::T%
- ;
-}
-static field () →? core::int nullableVar;
-static field core::double nonNullableVar;
-static method testOptIn() → dynamic
- ;
-
-library;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:19:5: Error: The return type of the method 'SubOutOut.nullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperOut.nullableBad'.
-// Change to a subtype of 'int'.
-// T nullableBad<T>(T t) => null;
-// ^
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:12:7: Context: This is the overridden method ('nullableBad').
-// int nullableBad<T>(T t) => 1;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:20:5: Error: The return type of the method 'SubOutOut.nonNullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperOut.nonNullableBad'.
-// Change to a subtype of 'int'.
-// T nonNullableBad<T>(T t) => t;
-// ^
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:13:7: Context: This is the overridden method ('nonNullableBad').
-// int nonNullableBad<T>(T t) => 2;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:26:5: Error: The return type of the method 'SubInOut.nullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperIn.nullableBad'.
-// Change to a subtype of 'int'.
-// T nullableBad<T>(T t) => null;
-// ^
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:10:8: Context: This is the overridden method ('nullableBad').
-// int? nullableBad<T>(T t) => 1;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:27:5: Error: The return type of the method 'SubInOut.nonNullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperIn.nonNullableBad'.
-// Change to a subtype of 'int'.
-// T nonNullableBad<T>(T t) => t;
-// ^
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:11:7: Context: This is the overridden method ('nonNullableBad').
-// int nonNullableBad<T>(T t) => 2;
-// ^
-//
-import self as mes;
-import "dart:core" as core;
-import "messages_with_types_opt_in.dart" as self;
-
-import "org-dartlang-testcase:///messages_with_types_opt_in.dart";
-
-class SuperOut extends core::Object {
- synthetic constructor •() → mes::SuperOut*
- ;
- method nullableSame() → core::String*
- ;
- method nonNullableSame() → core::String*
- ;
- method nullableBad<T extends core::Object* = dynamic>(mes::SuperOut::nullableBad::T* t) → core::int*
- ;
- method nonNullableBad<T extends core::Object* = dynamic>(mes::SuperOut::nonNullableBad::T* t) → core::int*
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class SubOutOut extends mes::SuperOut {
- synthetic constructor •() → mes::SubOutOut*
- ;
- method nullableSame() → core::String*
- ;
- method nonNullableSame() → core::String*
- ;
- method nullableBad<T extends core::Object* = dynamic>(mes::SubOutOut::nullableBad::T* t) → mes::SubOutOut::nullableBad::T*
- ;
- method nonNullableBad<T extends core::Object* = dynamic>(mes::SubOutOut::nonNullableBad::T* t) → mes::SubOutOut::nonNullableBad::T*
- ;
-}
-class SubInOut extends self::SuperIn {
- synthetic constructor •() → mes::SubInOut*
- ;
- method nullableSame() → core::String*
- ;
- method nonNullableSame() → core::String*
- ;
- method nullableBad<T extends core::Object* = dynamic>(mes::SubInOut::nullableBad::T* t) → mes::SubInOut::nullableBad::T*
- ;
- method nonNullableBad<T extends core::Object* = dynamic>(mes::SubInOut::nonNullableBad::T* t) → mes::SubInOut::nonNullableBad::T*
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-static field core::String* legacyVar;
-static method testOptOut() → dynamic
- ;
diff --git a/pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart.strong.expect b/pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart.strong.expect
deleted file mode 100644
index e734e48..0000000
--- a/pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart.strong.expect
+++ /dev/null
@@ -1,274 +0,0 @@
-library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:17:6: Error: The return type of the method 'SubInIn.nullableBad' is 'T?', which does not match the return type, 'int?', of the overridden method, 'SuperIn.nullableBad'.
-// Change to a subtype of 'int?'.
-// T? nullableBad<T>(T t) => null;
-// ^
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:10:8: Context: This is the overridden method ('nullableBad').
-// int? nullableBad<T>(T t) => 1;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:18:5: Error: The return type of the method 'SubInIn.nonNullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperIn.nonNullableBad'.
-// Change to a subtype of 'int'.
-// T nonNullableBad<T>(T t) => t;
-// ^
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:11:7: Context: This is the overridden method ('nonNullableBad').
-// int nonNullableBad<T>(T t) => 2;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:24:6: Error: The return type of the method 'SubOutIn.nullableBad' is 'T?', which does not match the return type, 'int', of the overridden method, 'SuperOut.nullableBad'.
-// Change to a subtype of 'int'.
-// T? nullableBad<T>(T t) => null;
-// ^
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:12:7: Context: This is the overridden method ('nullableBad').
-// int nullableBad<T>(T t) => 1;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:25:5: Error: The return type of the method 'SubOutIn.nonNullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperOut.nonNullableBad'.
-// Change to a subtype of 'int'.
-// T nonNullableBad<T>(T t) => t;
-// ^
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:13:7: Context: This is the overridden method ('nonNullableBad').
-// int nonNullableBad<T>(T t) => 2;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:32:17: Error: A value of type 'double' can't be assigned to a variable of type 'int Function()?'.
-// nullableVar = nonNullableVar;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:33:20: Error: A value of type 'int Function()?' can't be assigned to a variable of type 'double'.
-// nonNullableVar = nullableVar;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:34:15: Error: A value of type 'int Function()?' can't be assigned to a variable of type 'String'.
-// legacyVar = nullableVar;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:35:17: Error: A value of type 'String' can't be assigned to a variable of type 'int Function()?'.
-// nullableVar = legacyVar;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:36:20: Error: A value of type 'String' can't be assigned to a variable of type 'double'.
-// nonNullableVar = legacyVar;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:37:15: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
-// legacyVar = nonNullableVar;
-// ^
-//
-import self as self;
-import "dart:core" as core;
-import "messages_with_types_opt_out.dart" as mes;
-
-import "org-dartlang-testcase:///messages_with_types_opt_out.dart";
-
-class SuperIn extends core::Object {
- synthetic constructor •() → self::SuperIn
- : super core::Object::•()
- ;
- method nullableSame() → core::String?
- return "foo";
- method nonNullableSame() → core::String
- return "bar";
- method nullableBad<T extends core::Object? = dynamic>(self::SuperIn::nullableBad::T% t) → core::int?
- return 1;
- method nonNullableBad<T extends core::Object? = dynamic>(self::SuperIn::nonNullableBad::T% t) → core::int
- return 2;
-}
-class SubInIn extends self::SuperIn {
- synthetic constructor •() → self::SubInIn
- : super self::SuperIn::•()
- ;
- method nullableSame() → core::String?
- return "foo";
- method nonNullableSame() → core::String
- return "bar";
- method nullableBad<T extends core::Object? = dynamic>(self::SubInIn::nullableBad::T% t) → self::SubInIn::nullableBad::T?
- return null;
- method nonNullableBad<T extends core::Object? = dynamic>(self::SubInIn::nonNullableBad::T% t) → self::SubInIn::nonNullableBad::T%
- return t;
-}
-class SubOutIn extends mes::SuperOut {
- synthetic constructor •() → self::SubOutIn
- : super mes::SuperOut::•()
- ;
- method nullableSame() → core::String?
- return "foo";
- method nonNullableSame() → core::String
- return "bar";
- method nullableBad<T extends core::Object? = dynamic>(self::SubOutIn::nullableBad::T% t) → self::SubOutIn::nullableBad::T?
- return null;
- method nonNullableBad<T extends core::Object? = dynamic>(self::SubOutIn::nonNullableBad::T% t) → self::SubOutIn::nonNullableBad::T%
- return t;
-}
-static field () →? core::int nullableVar = () → core::int => 3;
-static field core::double nonNullableVar = 4.0;
-static method testOptIn() → dynamic {
- self::nullableVar = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:32:17: Error: A value of type 'double' can't be assigned to a variable of type 'int Function()?'.
- nullableVar = nonNullableVar;
- ^" in self::nonNullableVar as{TypeError,ForNonNullableByDefault} () →? core::int;
- self::nonNullableVar = let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:33:20: Error: A value of type 'int Function()?' can't be assigned to a variable of type 'double'.
- nonNullableVar = nullableVar;
- ^" in self::nullableVar as{TypeError,ForNonNullableByDefault} core::double;
- mes::legacyVar = let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:34:15: Error: A value of type 'int Function()?' can't be assigned to a variable of type 'String'.
- legacyVar = nullableVar;
- ^" in self::nullableVar as{TypeError,ForNonNullableByDefault} core::String*;
- self::nullableVar = let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:35:17: Error: A value of type 'String' can't be assigned to a variable of type 'int Function()?'.
- nullableVar = legacyVar;
- ^" in mes::legacyVar as{TypeError,ForNonNullableByDefault} () →? core::int;
- self::nonNullableVar = let final<BottomType> #t5 = invalid-expression "pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:36:20: Error: A value of type 'String' can't be assigned to a variable of type 'double'.
- nonNullableVar = legacyVar;
- ^" in mes::legacyVar as{TypeError,ForNonNullableByDefault} core::double;
- mes::legacyVar = let final<BottomType> #t6 = invalid-expression "pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:37:15: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
- legacyVar = nonNullableVar;
- ^" in self::nonNullableVar as{TypeError,ForNonNullableByDefault} core::String*;
-}
-
-library;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:19:5: Error: The return type of the method 'SubOutOut.nullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperOut.nullableBad'.
-// Change to a subtype of 'int'.
-// T nullableBad<T>(T t) => null;
-// ^
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:12:7: Context: This is the overridden method ('nullableBad').
-// int nullableBad<T>(T t) => 1;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:20:5: Error: The return type of the method 'SubOutOut.nonNullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperOut.nonNullableBad'.
-// Change to a subtype of 'int'.
-// T nonNullableBad<T>(T t) => t;
-// ^
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:13:7: Context: This is the overridden method ('nonNullableBad').
-// int nonNullableBad<T>(T t) => 2;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:26:5: Error: The return type of the method 'SubInOut.nullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperIn.nullableBad'.
-// Change to a subtype of 'int'.
-// T nullableBad<T>(T t) => null;
-// ^
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:10:8: Context: This is the overridden method ('nullableBad').
-// int? nullableBad<T>(T t) => 1;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:27:5: Error: The return type of the method 'SubInOut.nonNullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperIn.nonNullableBad'.
-// Change to a subtype of 'int'.
-// T nonNullableBad<T>(T t) => t;
-// ^
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:11:7: Context: This is the overridden method ('nonNullableBad').
-// int nonNullableBad<T>(T t) => 2;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:33:17: Error: A value of type 'double' can't be assigned to a variable of type 'int Function()'.
-// nullableVar = nonNullableVar;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:34:20: Error: A value of type 'int Function()' can't be assigned to a variable of type 'double'.
-// nonNullableVar = nullableVar;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:35:15: Error: A value of type 'int Function()' can't be assigned to a variable of type 'String'.
-// legacyVar = nullableVar;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:36:17: Error: A value of type 'String' can't be assigned to a variable of type 'int Function()'.
-// nullableVar = legacyVar;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:37:20: Error: A value of type 'String' can't be assigned to a variable of type 'double'.
-// nonNullableVar = legacyVar;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:38:15: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
-// legacyVar = nonNullableVar;
-// ^
-//
-import self as mes;
-import "dart:core" as core;
-import "messages_with_types_opt_in.dart" as self;
-
-import "org-dartlang-testcase:///messages_with_types_opt_in.dart";
-
-class SuperOut extends core::Object {
- synthetic constructor •() → mes::SuperOut*
- : super core::Object::•()
- ;
- method nullableSame() → core::String*
- return "foo";
- method nonNullableSame() → core::String*
- return "bar";
- method nullableBad<T extends core::Object* = dynamic>(mes::SuperOut::nullableBad::T* t) → core::int*
- return 1;
- method nonNullableBad<T extends core::Object* = dynamic>(mes::SuperOut::nonNullableBad::T* t) → core::int*
- return 2;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class SubOutOut extends mes::SuperOut {
- synthetic constructor •() → mes::SubOutOut*
- : super mes::SuperOut::•()
- ;
- method nullableSame() → core::String*
- return "foo";
- method nonNullableSame() → core::String*
- return "bar";
- method nullableBad<T extends core::Object* = dynamic>(mes::SubOutOut::nullableBad::T* t) → mes::SubOutOut::nullableBad::T*
- return null;
- method nonNullableBad<T extends core::Object* = dynamic>(mes::SubOutOut::nonNullableBad::T* t) → mes::SubOutOut::nonNullableBad::T*
- return t;
-}
-class SubInOut extends self::SuperIn {
- synthetic constructor •() → mes::SubInOut*
- : super self::SuperIn::•()
- ;
- method nullableSame() → core::String*
- return "foo";
- method nonNullableSame() → core::String*
- return "bar";
- method nullableBad<T extends core::Object* = dynamic>(mes::SubInOut::nullableBad::T* t) → mes::SubInOut::nullableBad::T*
- return null;
- method nonNullableBad<T extends core::Object* = dynamic>(mes::SubInOut::nonNullableBad::T* t) → mes::SubInOut::nonNullableBad::T*
- return t;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-static field core::String* legacyVar = "legacy";
-static method testOptOut() → dynamic {
- self::nullableVar = let final<BottomType> #t7 = invalid-expression "pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:33:17: Error: A value of type 'double' can't be assigned to a variable of type 'int Function()'.
- nullableVar = nonNullableVar;
- ^" in self::nonNullableVar as{TypeError} () →? core::int;
- self::nonNullableVar = let final<BottomType> #t8 = invalid-expression "pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:34:20: Error: A value of type 'int Function()' can't be assigned to a variable of type 'double'.
- nonNullableVar = nullableVar;
- ^" in self::nullableVar as{TypeError} core::double;
- mes::legacyVar = let final<BottomType> #t9 = invalid-expression "pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:35:15: Error: A value of type 'int Function()' can't be assigned to a variable of type 'String'.
- legacyVar = nullableVar;
- ^" in self::nullableVar as{TypeError} core::String*;
- self::nullableVar = let final<BottomType> #t10 = invalid-expression "pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:36:17: Error: A value of type 'String' can't be assigned to a variable of type 'int Function()'.
- nullableVar = legacyVar;
- ^" in mes::legacyVar as{TypeError} () →? core::int;
- self::nonNullableVar = let final<BottomType> #t11 = invalid-expression "pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:37:20: Error: A value of type 'String' can't be assigned to a variable of type 'double'.
- nonNullableVar = legacyVar;
- ^" in mes::legacyVar as{TypeError} core::double;
- mes::legacyVar = let final<BottomType> #t12 = invalid-expression "pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:38:15: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
- legacyVar = nonNullableVar;
- ^" in self::nonNullableVar as{TypeError} core::String*;
-}
diff --git a/pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart.weak.expect b/pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart.weak.expect
deleted file mode 100644
index e734e48..0000000
--- a/pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart.weak.expect
+++ /dev/null
@@ -1,274 +0,0 @@
-library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:17:6: Error: The return type of the method 'SubInIn.nullableBad' is 'T?', which does not match the return type, 'int?', of the overridden method, 'SuperIn.nullableBad'.
-// Change to a subtype of 'int?'.
-// T? nullableBad<T>(T t) => null;
-// ^
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:10:8: Context: This is the overridden method ('nullableBad').
-// int? nullableBad<T>(T t) => 1;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:18:5: Error: The return type of the method 'SubInIn.nonNullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperIn.nonNullableBad'.
-// Change to a subtype of 'int'.
-// T nonNullableBad<T>(T t) => t;
-// ^
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:11:7: Context: This is the overridden method ('nonNullableBad').
-// int nonNullableBad<T>(T t) => 2;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:24:6: Error: The return type of the method 'SubOutIn.nullableBad' is 'T?', which does not match the return type, 'int', of the overridden method, 'SuperOut.nullableBad'.
-// Change to a subtype of 'int'.
-// T? nullableBad<T>(T t) => null;
-// ^
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:12:7: Context: This is the overridden method ('nullableBad').
-// int nullableBad<T>(T t) => 1;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:25:5: Error: The return type of the method 'SubOutIn.nonNullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperOut.nonNullableBad'.
-// Change to a subtype of 'int'.
-// T nonNullableBad<T>(T t) => t;
-// ^
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:13:7: Context: This is the overridden method ('nonNullableBad').
-// int nonNullableBad<T>(T t) => 2;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:32:17: Error: A value of type 'double' can't be assigned to a variable of type 'int Function()?'.
-// nullableVar = nonNullableVar;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:33:20: Error: A value of type 'int Function()?' can't be assigned to a variable of type 'double'.
-// nonNullableVar = nullableVar;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:34:15: Error: A value of type 'int Function()?' can't be assigned to a variable of type 'String'.
-// legacyVar = nullableVar;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:35:17: Error: A value of type 'String' can't be assigned to a variable of type 'int Function()?'.
-// nullableVar = legacyVar;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:36:20: Error: A value of type 'String' can't be assigned to a variable of type 'double'.
-// nonNullableVar = legacyVar;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:37:15: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
-// legacyVar = nonNullableVar;
-// ^
-//
-import self as self;
-import "dart:core" as core;
-import "messages_with_types_opt_out.dart" as mes;
-
-import "org-dartlang-testcase:///messages_with_types_opt_out.dart";
-
-class SuperIn extends core::Object {
- synthetic constructor •() → self::SuperIn
- : super core::Object::•()
- ;
- method nullableSame() → core::String?
- return "foo";
- method nonNullableSame() → core::String
- return "bar";
- method nullableBad<T extends core::Object? = dynamic>(self::SuperIn::nullableBad::T% t) → core::int?
- return 1;
- method nonNullableBad<T extends core::Object? = dynamic>(self::SuperIn::nonNullableBad::T% t) → core::int
- return 2;
-}
-class SubInIn extends self::SuperIn {
- synthetic constructor •() → self::SubInIn
- : super self::SuperIn::•()
- ;
- method nullableSame() → core::String?
- return "foo";
- method nonNullableSame() → core::String
- return "bar";
- method nullableBad<T extends core::Object? = dynamic>(self::SubInIn::nullableBad::T% t) → self::SubInIn::nullableBad::T?
- return null;
- method nonNullableBad<T extends core::Object? = dynamic>(self::SubInIn::nonNullableBad::T% t) → self::SubInIn::nonNullableBad::T%
- return t;
-}
-class SubOutIn extends mes::SuperOut {
- synthetic constructor •() → self::SubOutIn
- : super mes::SuperOut::•()
- ;
- method nullableSame() → core::String?
- return "foo";
- method nonNullableSame() → core::String
- return "bar";
- method nullableBad<T extends core::Object? = dynamic>(self::SubOutIn::nullableBad::T% t) → self::SubOutIn::nullableBad::T?
- return null;
- method nonNullableBad<T extends core::Object? = dynamic>(self::SubOutIn::nonNullableBad::T% t) → self::SubOutIn::nonNullableBad::T%
- return t;
-}
-static field () →? core::int nullableVar = () → core::int => 3;
-static field core::double nonNullableVar = 4.0;
-static method testOptIn() → dynamic {
- self::nullableVar = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:32:17: Error: A value of type 'double' can't be assigned to a variable of type 'int Function()?'.
- nullableVar = nonNullableVar;
- ^" in self::nonNullableVar as{TypeError,ForNonNullableByDefault} () →? core::int;
- self::nonNullableVar = let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:33:20: Error: A value of type 'int Function()?' can't be assigned to a variable of type 'double'.
- nonNullableVar = nullableVar;
- ^" in self::nullableVar as{TypeError,ForNonNullableByDefault} core::double;
- mes::legacyVar = let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:34:15: Error: A value of type 'int Function()?' can't be assigned to a variable of type 'String'.
- legacyVar = nullableVar;
- ^" in self::nullableVar as{TypeError,ForNonNullableByDefault} core::String*;
- self::nullableVar = let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:35:17: Error: A value of type 'String' can't be assigned to a variable of type 'int Function()?'.
- nullableVar = legacyVar;
- ^" in mes::legacyVar as{TypeError,ForNonNullableByDefault} () →? core::int;
- self::nonNullableVar = let final<BottomType> #t5 = invalid-expression "pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:36:20: Error: A value of type 'String' can't be assigned to a variable of type 'double'.
- nonNullableVar = legacyVar;
- ^" in mes::legacyVar as{TypeError,ForNonNullableByDefault} core::double;
- mes::legacyVar = let final<BottomType> #t6 = invalid-expression "pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:37:15: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
- legacyVar = nonNullableVar;
- ^" in self::nonNullableVar as{TypeError,ForNonNullableByDefault} core::String*;
-}
-
-library;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:19:5: Error: The return type of the method 'SubOutOut.nullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperOut.nullableBad'.
-// Change to a subtype of 'int'.
-// T nullableBad<T>(T t) => null;
-// ^
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:12:7: Context: This is the overridden method ('nullableBad').
-// int nullableBad<T>(T t) => 1;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:20:5: Error: The return type of the method 'SubOutOut.nonNullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperOut.nonNullableBad'.
-// Change to a subtype of 'int'.
-// T nonNullableBad<T>(T t) => t;
-// ^
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:13:7: Context: This is the overridden method ('nonNullableBad').
-// int nonNullableBad<T>(T t) => 2;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:26:5: Error: The return type of the method 'SubInOut.nullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperIn.nullableBad'.
-// Change to a subtype of 'int'.
-// T nullableBad<T>(T t) => null;
-// ^
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:10:8: Context: This is the overridden method ('nullableBad').
-// int? nullableBad<T>(T t) => 1;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:27:5: Error: The return type of the method 'SubInOut.nonNullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperIn.nonNullableBad'.
-// Change to a subtype of 'int'.
-// T nonNullableBad<T>(T t) => t;
-// ^
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:11:7: Context: This is the overridden method ('nonNullableBad').
-// int nonNullableBad<T>(T t) => 2;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:33:17: Error: A value of type 'double' can't be assigned to a variable of type 'int Function()'.
-// nullableVar = nonNullableVar;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:34:20: Error: A value of type 'int Function()' can't be assigned to a variable of type 'double'.
-// nonNullableVar = nullableVar;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:35:15: Error: A value of type 'int Function()' can't be assigned to a variable of type 'String'.
-// legacyVar = nullableVar;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:36:17: Error: A value of type 'String' can't be assigned to a variable of type 'int Function()'.
-// nullableVar = legacyVar;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:37:20: Error: A value of type 'String' can't be assigned to a variable of type 'double'.
-// nonNullableVar = legacyVar;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:38:15: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
-// legacyVar = nonNullableVar;
-// ^
-//
-import self as mes;
-import "dart:core" as core;
-import "messages_with_types_opt_in.dart" as self;
-
-import "org-dartlang-testcase:///messages_with_types_opt_in.dart";
-
-class SuperOut extends core::Object {
- synthetic constructor •() → mes::SuperOut*
- : super core::Object::•()
- ;
- method nullableSame() → core::String*
- return "foo";
- method nonNullableSame() → core::String*
- return "bar";
- method nullableBad<T extends core::Object* = dynamic>(mes::SuperOut::nullableBad::T* t) → core::int*
- return 1;
- method nonNullableBad<T extends core::Object* = dynamic>(mes::SuperOut::nonNullableBad::T* t) → core::int*
- return 2;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class SubOutOut extends mes::SuperOut {
- synthetic constructor •() → mes::SubOutOut*
- : super mes::SuperOut::•()
- ;
- method nullableSame() → core::String*
- return "foo";
- method nonNullableSame() → core::String*
- return "bar";
- method nullableBad<T extends core::Object* = dynamic>(mes::SubOutOut::nullableBad::T* t) → mes::SubOutOut::nullableBad::T*
- return null;
- method nonNullableBad<T extends core::Object* = dynamic>(mes::SubOutOut::nonNullableBad::T* t) → mes::SubOutOut::nonNullableBad::T*
- return t;
-}
-class SubInOut extends self::SuperIn {
- synthetic constructor •() → mes::SubInOut*
- : super self::SuperIn::•()
- ;
- method nullableSame() → core::String*
- return "foo";
- method nonNullableSame() → core::String*
- return "bar";
- method nullableBad<T extends core::Object* = dynamic>(mes::SubInOut::nullableBad::T* t) → mes::SubInOut::nullableBad::T*
- return null;
- method nonNullableBad<T extends core::Object* = dynamic>(mes::SubInOut::nonNullableBad::T* t) → mes::SubInOut::nonNullableBad::T*
- return t;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-static field core::String* legacyVar = "legacy";
-static method testOptOut() → dynamic {
- self::nullableVar = let final<BottomType> #t7 = invalid-expression "pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:33:17: Error: A value of type 'double' can't be assigned to a variable of type 'int Function()'.
- nullableVar = nonNullableVar;
- ^" in self::nonNullableVar as{TypeError} () →? core::int;
- self::nonNullableVar = let final<BottomType> #t8 = invalid-expression "pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:34:20: Error: A value of type 'int Function()' can't be assigned to a variable of type 'double'.
- nonNullableVar = nullableVar;
- ^" in self::nullableVar as{TypeError} core::double;
- mes::legacyVar = let final<BottomType> #t9 = invalid-expression "pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:35:15: Error: A value of type 'int Function()' can't be assigned to a variable of type 'String'.
- legacyVar = nullableVar;
- ^" in self::nullableVar as{TypeError} core::String*;
- self::nullableVar = let final<BottomType> #t10 = invalid-expression "pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:36:17: Error: A value of type 'String' can't be assigned to a variable of type 'int Function()'.
- nullableVar = legacyVar;
- ^" in mes::legacyVar as{TypeError} () →? core::int;
- self::nonNullableVar = let final<BottomType> #t11 = invalid-expression "pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:37:20: Error: A value of type 'String' can't be assigned to a variable of type 'double'.
- nonNullableVar = legacyVar;
- ^" in mes::legacyVar as{TypeError} core::double;
- mes::legacyVar = let final<BottomType> #t12 = invalid-expression "pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:38:15: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
- legacyVar = nonNullableVar;
- ^" in self::nonNullableVar as{TypeError} core::String*;
-}
diff --git a/pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart.outline.expect b/pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart.outline.expect
deleted file mode 100644
index 8529e4e..0000000
--- a/pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart.outline.expect
+++ /dev/null
@@ -1,184 +0,0 @@
-library;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:19:5: Error: The return type of the method 'SubOutOut.nullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperOut.nullableBad'.
-// Change to a subtype of 'int'.
-// T nullableBad<T>(T t) => null;
-// ^
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:12:7: Context: This is the overridden method ('nullableBad').
-// int nullableBad<T>(T t) => 1;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:20:5: Error: The return type of the method 'SubOutOut.nonNullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperOut.nonNullableBad'.
-// Change to a subtype of 'int'.
-// T nonNullableBad<T>(T t) => t;
-// ^
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:13:7: Context: This is the overridden method ('nonNullableBad').
-// int nonNullableBad<T>(T t) => 2;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:26:5: Error: The return type of the method 'SubInOut.nullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperIn.nullableBad'.
-// Change to a subtype of 'int'.
-// T nullableBad<T>(T t) => null;
-// ^
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:10:8: Context: This is the overridden method ('nullableBad').
-// int? nullableBad<T>(T t) => 1;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:27:5: Error: The return type of the method 'SubInOut.nonNullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperIn.nonNullableBad'.
-// Change to a subtype of 'int'.
-// T nonNullableBad<T>(T t) => t;
-// ^
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:11:7: Context: This is the overridden method ('nonNullableBad').
-// int nonNullableBad<T>(T t) => 2;
-// ^
-//
-import self as self;
-import "dart:core" as core;
-import "messages_with_types_opt_in.dart" as mes;
-
-import "org-dartlang-testcase:///messages_with_types_opt_in.dart";
-
-class SuperOut extends core::Object {
- synthetic constructor •() → self::SuperOut*
- ;
- method nullableSame() → core::String*
- ;
- method nonNullableSame() → core::String*
- ;
- method nullableBad<T extends core::Object* = dynamic>(self::SuperOut::nullableBad::T* t) → core::int*
- ;
- method nonNullableBad<T extends core::Object* = dynamic>(self::SuperOut::nonNullableBad::T* t) → core::int*
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class SubOutOut extends self::SuperOut {
- synthetic constructor •() → self::SubOutOut*
- ;
- method nullableSame() → core::String*
- ;
- method nonNullableSame() → core::String*
- ;
- method nullableBad<T extends core::Object* = dynamic>(self::SubOutOut::nullableBad::T* t) → self::SubOutOut::nullableBad::T*
- ;
- method nonNullableBad<T extends core::Object* = dynamic>(self::SubOutOut::nonNullableBad::T* t) → self::SubOutOut::nonNullableBad::T*
- ;
-}
-class SubInOut extends mes::SuperIn {
- synthetic constructor •() → self::SubInOut*
- ;
- method nullableSame() → core::String*
- ;
- method nonNullableSame() → core::String*
- ;
- method nullableBad<T extends core::Object* = dynamic>(self::SubInOut::nullableBad::T* t) → self::SubInOut::nullableBad::T*
- ;
- method nonNullableBad<T extends core::Object* = dynamic>(self::SubInOut::nonNullableBad::T* t) → self::SubInOut::nonNullableBad::T*
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-static field core::String* legacyVar;
-static method testOptOut() → dynamic
- ;
-
-library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:17:6: Error: The return type of the method 'SubInIn.nullableBad' is 'T?', which does not match the return type, 'int?', of the overridden method, 'SuperIn.nullableBad'.
-// Change to a subtype of 'int?'.
-// T? nullableBad<T>(T t) => null;
-// ^
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:10:8: Context: This is the overridden method ('nullableBad').
-// int? nullableBad<T>(T t) => 1;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:18:5: Error: The return type of the method 'SubInIn.nonNullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperIn.nonNullableBad'.
-// Change to a subtype of 'int'.
-// T nonNullableBad<T>(T t) => t;
-// ^
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:11:7: Context: This is the overridden method ('nonNullableBad').
-// int nonNullableBad<T>(T t) => 2;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:24:6: Error: The return type of the method 'SubOutIn.nullableBad' is 'T?', which does not match the return type, 'int', of the overridden method, 'SuperOut.nullableBad'.
-// Change to a subtype of 'int'.
-// T? nullableBad<T>(T t) => null;
-// ^
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:12:7: Context: This is the overridden method ('nullableBad').
-// int nullableBad<T>(T t) => 1;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:25:5: Error: The return type of the method 'SubOutIn.nonNullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperOut.nonNullableBad'.
-// Change to a subtype of 'int'.
-// T nonNullableBad<T>(T t) => t;
-// ^
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:13:7: Context: This is the overridden method ('nonNullableBad').
-// int nonNullableBad<T>(T t) => 2;
-// ^
-//
-import self as mes;
-import "dart:core" as core;
-import "messages_with_types_opt_out.dart" as self;
-
-import "org-dartlang-testcase:///messages_with_types_opt_out.dart";
-
-class SuperIn extends core::Object {
- synthetic constructor •() → mes::SuperIn
- ;
- method nullableSame() → core::String?
- ;
- method nonNullableSame() → core::String
- ;
- method nullableBad<T extends core::Object? = dynamic>(mes::SuperIn::nullableBad::T% t) → core::int?
- ;
- method nonNullableBad<T extends core::Object? = dynamic>(mes::SuperIn::nonNullableBad::T% t) → core::int
- ;
-}
-class SubInIn extends mes::SuperIn {
- synthetic constructor •() → mes::SubInIn
- ;
- method nullableSame() → core::String?
- ;
- method nonNullableSame() → core::String
- ;
- method nullableBad<T extends core::Object? = dynamic>(mes::SubInIn::nullableBad::T% t) → mes::SubInIn::nullableBad::T?
- ;
- method nonNullableBad<T extends core::Object? = dynamic>(mes::SubInIn::nonNullableBad::T% t) → mes::SubInIn::nonNullableBad::T%
- ;
-}
-class SubOutIn extends self::SuperOut {
- synthetic constructor •() → mes::SubOutIn
- ;
- method nullableSame() → core::String?
- ;
- method nonNullableSame() → core::String
- ;
- method nullableBad<T extends core::Object? = dynamic>(mes::SubOutIn::nullableBad::T% t) → mes::SubOutIn::nullableBad::T?
- ;
- method nonNullableBad<T extends core::Object? = dynamic>(mes::SubOutIn::nonNullableBad::T% t) → mes::SubOutIn::nonNullableBad::T%
- ;
-}
-static field () →? core::int nullableVar;
-static field core::double nonNullableVar;
-static method testOptIn() → dynamic
- ;
diff --git a/pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart.strong.expect b/pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart.strong.expect
deleted file mode 100644
index cea6db7..0000000
--- a/pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart.strong.expect
+++ /dev/null
@@ -1,274 +0,0 @@
-library;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:19:5: Error: The return type of the method 'SubOutOut.nullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperOut.nullableBad'.
-// Change to a subtype of 'int'.
-// T nullableBad<T>(T t) => null;
-// ^
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:12:7: Context: This is the overridden method ('nullableBad').
-// int nullableBad<T>(T t) => 1;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:20:5: Error: The return type of the method 'SubOutOut.nonNullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperOut.nonNullableBad'.
-// Change to a subtype of 'int'.
-// T nonNullableBad<T>(T t) => t;
-// ^
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:13:7: Context: This is the overridden method ('nonNullableBad').
-// int nonNullableBad<T>(T t) => 2;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:26:5: Error: The return type of the method 'SubInOut.nullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperIn.nullableBad'.
-// Change to a subtype of 'int'.
-// T nullableBad<T>(T t) => null;
-// ^
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:10:8: Context: This is the overridden method ('nullableBad').
-// int? nullableBad<T>(T t) => 1;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:27:5: Error: The return type of the method 'SubInOut.nonNullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperIn.nonNullableBad'.
-// Change to a subtype of 'int'.
-// T nonNullableBad<T>(T t) => t;
-// ^
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:11:7: Context: This is the overridden method ('nonNullableBad').
-// int nonNullableBad<T>(T t) => 2;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:33:17: Error: A value of type 'double' can't be assigned to a variable of type 'int Function()'.
-// nullableVar = nonNullableVar;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:34:20: Error: A value of type 'int Function()' can't be assigned to a variable of type 'double'.
-// nonNullableVar = nullableVar;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:35:15: Error: A value of type 'int Function()' can't be assigned to a variable of type 'String'.
-// legacyVar = nullableVar;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:36:17: Error: A value of type 'String' can't be assigned to a variable of type 'int Function()'.
-// nullableVar = legacyVar;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:37:20: Error: A value of type 'String' can't be assigned to a variable of type 'double'.
-// nonNullableVar = legacyVar;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:38:15: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
-// legacyVar = nonNullableVar;
-// ^
-//
-import self as self;
-import "dart:core" as core;
-import "messages_with_types_opt_in.dart" as mes;
-
-import "org-dartlang-testcase:///messages_with_types_opt_in.dart";
-
-class SuperOut extends core::Object {
- synthetic constructor •() → self::SuperOut*
- : super core::Object::•()
- ;
- method nullableSame() → core::String*
- return "foo";
- method nonNullableSame() → core::String*
- return "bar";
- method nullableBad<T extends core::Object* = dynamic>(self::SuperOut::nullableBad::T* t) → core::int*
- return 1;
- method nonNullableBad<T extends core::Object* = dynamic>(self::SuperOut::nonNullableBad::T* t) → core::int*
- return 2;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class SubOutOut extends self::SuperOut {
- synthetic constructor •() → self::SubOutOut*
- : super self::SuperOut::•()
- ;
- method nullableSame() → core::String*
- return "foo";
- method nonNullableSame() → core::String*
- return "bar";
- method nullableBad<T extends core::Object* = dynamic>(self::SubOutOut::nullableBad::T* t) → self::SubOutOut::nullableBad::T*
- return null;
- method nonNullableBad<T extends core::Object* = dynamic>(self::SubOutOut::nonNullableBad::T* t) → self::SubOutOut::nonNullableBad::T*
- return t;
-}
-class SubInOut extends mes::SuperIn {
- synthetic constructor •() → self::SubInOut*
- : super mes::SuperIn::•()
- ;
- method nullableSame() → core::String*
- return "foo";
- method nonNullableSame() → core::String*
- return "bar";
- method nullableBad<T extends core::Object* = dynamic>(self::SubInOut::nullableBad::T* t) → self::SubInOut::nullableBad::T*
- return null;
- method nonNullableBad<T extends core::Object* = dynamic>(self::SubInOut::nonNullableBad::T* t) → self::SubInOut::nonNullableBad::T*
- return t;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-static field core::String* legacyVar = "legacy";
-static method testOptOut() → dynamic {
- mes::nullableVar = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:33:17: Error: A value of type 'double' can't be assigned to a variable of type 'int Function()'.
- nullableVar = nonNullableVar;
- ^" in mes::nonNullableVar as{TypeError} () →? core::int;
- mes::nonNullableVar = let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:34:20: Error: A value of type 'int Function()' can't be assigned to a variable of type 'double'.
- nonNullableVar = nullableVar;
- ^" in mes::nullableVar as{TypeError} core::double;
- self::legacyVar = let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:35:15: Error: A value of type 'int Function()' can't be assigned to a variable of type 'String'.
- legacyVar = nullableVar;
- ^" in mes::nullableVar as{TypeError} core::String*;
- mes::nullableVar = let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:36:17: Error: A value of type 'String' can't be assigned to a variable of type 'int Function()'.
- nullableVar = legacyVar;
- ^" in self::legacyVar as{TypeError} () →? core::int;
- mes::nonNullableVar = let final<BottomType> #t5 = invalid-expression "pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:37:20: Error: A value of type 'String' can't be assigned to a variable of type 'double'.
- nonNullableVar = legacyVar;
- ^" in self::legacyVar as{TypeError} core::double;
- self::legacyVar = let final<BottomType> #t6 = invalid-expression "pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:38:15: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
- legacyVar = nonNullableVar;
- ^" in mes::nonNullableVar as{TypeError} core::String*;
-}
-
-library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:17:6: Error: The return type of the method 'SubInIn.nullableBad' is 'T?', which does not match the return type, 'int?', of the overridden method, 'SuperIn.nullableBad'.
-// Change to a subtype of 'int?'.
-// T? nullableBad<T>(T t) => null;
-// ^
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:10:8: Context: This is the overridden method ('nullableBad').
-// int? nullableBad<T>(T t) => 1;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:18:5: Error: The return type of the method 'SubInIn.nonNullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperIn.nonNullableBad'.
-// Change to a subtype of 'int'.
-// T nonNullableBad<T>(T t) => t;
-// ^
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:11:7: Context: This is the overridden method ('nonNullableBad').
-// int nonNullableBad<T>(T t) => 2;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:24:6: Error: The return type of the method 'SubOutIn.nullableBad' is 'T?', which does not match the return type, 'int', of the overridden method, 'SuperOut.nullableBad'.
-// Change to a subtype of 'int'.
-// T? nullableBad<T>(T t) => null;
-// ^
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:12:7: Context: This is the overridden method ('nullableBad').
-// int nullableBad<T>(T t) => 1;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:25:5: Error: The return type of the method 'SubOutIn.nonNullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperOut.nonNullableBad'.
-// Change to a subtype of 'int'.
-// T nonNullableBad<T>(T t) => t;
-// ^
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:13:7: Context: This is the overridden method ('nonNullableBad').
-// int nonNullableBad<T>(T t) => 2;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:32:17: Error: A value of type 'double' can't be assigned to a variable of type 'int Function()?'.
-// nullableVar = nonNullableVar;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:33:20: Error: A value of type 'int Function()?' can't be assigned to a variable of type 'double'.
-// nonNullableVar = nullableVar;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:34:15: Error: A value of type 'int Function()?' can't be assigned to a variable of type 'String'.
-// legacyVar = nullableVar;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:35:17: Error: A value of type 'String' can't be assigned to a variable of type 'int Function()?'.
-// nullableVar = legacyVar;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:36:20: Error: A value of type 'String' can't be assigned to a variable of type 'double'.
-// nonNullableVar = legacyVar;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:37:15: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
-// legacyVar = nonNullableVar;
-// ^
-//
-import self as mes;
-import "dart:core" as core;
-import "messages_with_types_opt_out.dart" as self;
-
-import "org-dartlang-testcase:///messages_with_types_opt_out.dart";
-
-class SuperIn extends core::Object {
- synthetic constructor •() → mes::SuperIn
- : super core::Object::•()
- ;
- method nullableSame() → core::String?
- return "foo";
- method nonNullableSame() → core::String
- return "bar";
- method nullableBad<T extends core::Object? = dynamic>(mes::SuperIn::nullableBad::T% t) → core::int?
- return 1;
- method nonNullableBad<T extends core::Object? = dynamic>(mes::SuperIn::nonNullableBad::T% t) → core::int
- return 2;
-}
-class SubInIn extends mes::SuperIn {
- synthetic constructor •() → mes::SubInIn
- : super mes::SuperIn::•()
- ;
- method nullableSame() → core::String?
- return "foo";
- method nonNullableSame() → core::String
- return "bar";
- method nullableBad<T extends core::Object? = dynamic>(mes::SubInIn::nullableBad::T% t) → mes::SubInIn::nullableBad::T?
- return null;
- method nonNullableBad<T extends core::Object? = dynamic>(mes::SubInIn::nonNullableBad::T% t) → mes::SubInIn::nonNullableBad::T%
- return t;
-}
-class SubOutIn extends self::SuperOut {
- synthetic constructor •() → mes::SubOutIn
- : super self::SuperOut::•()
- ;
- method nullableSame() → core::String?
- return "foo";
- method nonNullableSame() → core::String
- return "bar";
- method nullableBad<T extends core::Object? = dynamic>(mes::SubOutIn::nullableBad::T% t) → mes::SubOutIn::nullableBad::T?
- return null;
- method nonNullableBad<T extends core::Object? = dynamic>(mes::SubOutIn::nonNullableBad::T% t) → mes::SubOutIn::nonNullableBad::T%
- return t;
-}
-static field () →? core::int nullableVar = () → core::int => 3;
-static field core::double nonNullableVar = 4.0;
-static method testOptIn() → dynamic {
- mes::nullableVar = let final<BottomType> #t7 = invalid-expression "pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:32:17: Error: A value of type 'double' can't be assigned to a variable of type 'int Function()?'.
- nullableVar = nonNullableVar;
- ^" in mes::nonNullableVar as{TypeError,ForNonNullableByDefault} () →? core::int;
- mes::nonNullableVar = let final<BottomType> #t8 = invalid-expression "pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:33:20: Error: A value of type 'int Function()?' can't be assigned to a variable of type 'double'.
- nonNullableVar = nullableVar;
- ^" in mes::nullableVar as{TypeError,ForNonNullableByDefault} core::double;
- self::legacyVar = let final<BottomType> #t9 = invalid-expression "pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:34:15: Error: A value of type 'int Function()?' can't be assigned to a variable of type 'String'.
- legacyVar = nullableVar;
- ^" in mes::nullableVar as{TypeError,ForNonNullableByDefault} core::String*;
- mes::nullableVar = let final<BottomType> #t10 = invalid-expression "pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:35:17: Error: A value of type 'String' can't be assigned to a variable of type 'int Function()?'.
- nullableVar = legacyVar;
- ^" in self::legacyVar as{TypeError,ForNonNullableByDefault} () →? core::int;
- mes::nonNullableVar = let final<BottomType> #t11 = invalid-expression "pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:36:20: Error: A value of type 'String' can't be assigned to a variable of type 'double'.
- nonNullableVar = legacyVar;
- ^" in self::legacyVar as{TypeError,ForNonNullableByDefault} core::double;
- self::legacyVar = let final<BottomType> #t12 = invalid-expression "pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:37:15: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
- legacyVar = nonNullableVar;
- ^" in mes::nonNullableVar as{TypeError,ForNonNullableByDefault} core::String*;
-}
diff --git a/pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart.weak.expect b/pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart.weak.expect
deleted file mode 100644
index cea6db7..0000000
--- a/pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart.weak.expect
+++ /dev/null
@@ -1,274 +0,0 @@
-library;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:19:5: Error: The return type of the method 'SubOutOut.nullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperOut.nullableBad'.
-// Change to a subtype of 'int'.
-// T nullableBad<T>(T t) => null;
-// ^
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:12:7: Context: This is the overridden method ('nullableBad').
-// int nullableBad<T>(T t) => 1;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:20:5: Error: The return type of the method 'SubOutOut.nonNullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperOut.nonNullableBad'.
-// Change to a subtype of 'int'.
-// T nonNullableBad<T>(T t) => t;
-// ^
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:13:7: Context: This is the overridden method ('nonNullableBad').
-// int nonNullableBad<T>(T t) => 2;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:26:5: Error: The return type of the method 'SubInOut.nullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperIn.nullableBad'.
-// Change to a subtype of 'int'.
-// T nullableBad<T>(T t) => null;
-// ^
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:10:8: Context: This is the overridden method ('nullableBad').
-// int? nullableBad<T>(T t) => 1;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:27:5: Error: The return type of the method 'SubInOut.nonNullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperIn.nonNullableBad'.
-// Change to a subtype of 'int'.
-// T nonNullableBad<T>(T t) => t;
-// ^
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:11:7: Context: This is the overridden method ('nonNullableBad').
-// int nonNullableBad<T>(T t) => 2;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:33:17: Error: A value of type 'double' can't be assigned to a variable of type 'int Function()'.
-// nullableVar = nonNullableVar;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:34:20: Error: A value of type 'int Function()' can't be assigned to a variable of type 'double'.
-// nonNullableVar = nullableVar;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:35:15: Error: A value of type 'int Function()' can't be assigned to a variable of type 'String'.
-// legacyVar = nullableVar;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:36:17: Error: A value of type 'String' can't be assigned to a variable of type 'int Function()'.
-// nullableVar = legacyVar;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:37:20: Error: A value of type 'String' can't be assigned to a variable of type 'double'.
-// nonNullableVar = legacyVar;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:38:15: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
-// legacyVar = nonNullableVar;
-// ^
-//
-import self as self;
-import "dart:core" as core;
-import "messages_with_types_opt_in.dart" as mes;
-
-import "org-dartlang-testcase:///messages_with_types_opt_in.dart";
-
-class SuperOut extends core::Object {
- synthetic constructor •() → self::SuperOut*
- : super core::Object::•()
- ;
- method nullableSame() → core::String*
- return "foo";
- method nonNullableSame() → core::String*
- return "bar";
- method nullableBad<T extends core::Object* = dynamic>(self::SuperOut::nullableBad::T* t) → core::int*
- return 1;
- method nonNullableBad<T extends core::Object* = dynamic>(self::SuperOut::nonNullableBad::T* t) → core::int*
- return 2;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class SubOutOut extends self::SuperOut {
- synthetic constructor •() → self::SubOutOut*
- : super self::SuperOut::•()
- ;
- method nullableSame() → core::String*
- return "foo";
- method nonNullableSame() → core::String*
- return "bar";
- method nullableBad<T extends core::Object* = dynamic>(self::SubOutOut::nullableBad::T* t) → self::SubOutOut::nullableBad::T*
- return null;
- method nonNullableBad<T extends core::Object* = dynamic>(self::SubOutOut::nonNullableBad::T* t) → self::SubOutOut::nonNullableBad::T*
- return t;
-}
-class SubInOut extends mes::SuperIn {
- synthetic constructor •() → self::SubInOut*
- : super mes::SuperIn::•()
- ;
- method nullableSame() → core::String*
- return "foo";
- method nonNullableSame() → core::String*
- return "bar";
- method nullableBad<T extends core::Object* = dynamic>(self::SubInOut::nullableBad::T* t) → self::SubInOut::nullableBad::T*
- return null;
- method nonNullableBad<T extends core::Object* = dynamic>(self::SubInOut::nonNullableBad::T* t) → self::SubInOut::nonNullableBad::T*
- return t;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-static field core::String* legacyVar = "legacy";
-static method testOptOut() → dynamic {
- mes::nullableVar = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:33:17: Error: A value of type 'double' can't be assigned to a variable of type 'int Function()'.
- nullableVar = nonNullableVar;
- ^" in mes::nonNullableVar as{TypeError} () →? core::int;
- mes::nonNullableVar = let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:34:20: Error: A value of type 'int Function()' can't be assigned to a variable of type 'double'.
- nonNullableVar = nullableVar;
- ^" in mes::nullableVar as{TypeError} core::double;
- self::legacyVar = let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:35:15: Error: A value of type 'int Function()' can't be assigned to a variable of type 'String'.
- legacyVar = nullableVar;
- ^" in mes::nullableVar as{TypeError} core::String*;
- mes::nullableVar = let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:36:17: Error: A value of type 'String' can't be assigned to a variable of type 'int Function()'.
- nullableVar = legacyVar;
- ^" in self::legacyVar as{TypeError} () →? core::int;
- mes::nonNullableVar = let final<BottomType> #t5 = invalid-expression "pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:37:20: Error: A value of type 'String' can't be assigned to a variable of type 'double'.
- nonNullableVar = legacyVar;
- ^" in self::legacyVar as{TypeError} core::double;
- self::legacyVar = let final<BottomType> #t6 = invalid-expression "pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:38:15: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
- legacyVar = nonNullableVar;
- ^" in mes::nonNullableVar as{TypeError} core::String*;
-}
-
-library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:17:6: Error: The return type of the method 'SubInIn.nullableBad' is 'T?', which does not match the return type, 'int?', of the overridden method, 'SuperIn.nullableBad'.
-// Change to a subtype of 'int?'.
-// T? nullableBad<T>(T t) => null;
-// ^
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:10:8: Context: This is the overridden method ('nullableBad').
-// int? nullableBad<T>(T t) => 1;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:18:5: Error: The return type of the method 'SubInIn.nonNullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperIn.nonNullableBad'.
-// Change to a subtype of 'int'.
-// T nonNullableBad<T>(T t) => t;
-// ^
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:11:7: Context: This is the overridden method ('nonNullableBad').
-// int nonNullableBad<T>(T t) => 2;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:24:6: Error: The return type of the method 'SubOutIn.nullableBad' is 'T?', which does not match the return type, 'int', of the overridden method, 'SuperOut.nullableBad'.
-// Change to a subtype of 'int'.
-// T? nullableBad<T>(T t) => null;
-// ^
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:12:7: Context: This is the overridden method ('nullableBad').
-// int nullableBad<T>(T t) => 1;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:25:5: Error: The return type of the method 'SubOutIn.nonNullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperOut.nonNullableBad'.
-// Change to a subtype of 'int'.
-// T nonNullableBad<T>(T t) => t;
-// ^
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart:13:7: Context: This is the overridden method ('nonNullableBad').
-// int nonNullableBad<T>(T t) => 2;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:32:17: Error: A value of type 'double' can't be assigned to a variable of type 'int Function()?'.
-// nullableVar = nonNullableVar;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:33:20: Error: A value of type 'int Function()?' can't be assigned to a variable of type 'double'.
-// nonNullableVar = nullableVar;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:34:15: Error: A value of type 'int Function()?' can't be assigned to a variable of type 'String'.
-// legacyVar = nullableVar;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:35:17: Error: A value of type 'String' can't be assigned to a variable of type 'int Function()?'.
-// nullableVar = legacyVar;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:36:20: Error: A value of type 'String' can't be assigned to a variable of type 'double'.
-// nonNullableVar = legacyVar;
-// ^
-//
-// pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:37:15: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
-// legacyVar = nonNullableVar;
-// ^
-//
-import self as mes;
-import "dart:core" as core;
-import "messages_with_types_opt_out.dart" as self;
-
-import "org-dartlang-testcase:///messages_with_types_opt_out.dart";
-
-class SuperIn extends core::Object {
- synthetic constructor •() → mes::SuperIn
- : super core::Object::•()
- ;
- method nullableSame() → core::String?
- return "foo";
- method nonNullableSame() → core::String
- return "bar";
- method nullableBad<T extends core::Object? = dynamic>(mes::SuperIn::nullableBad::T% t) → core::int?
- return 1;
- method nonNullableBad<T extends core::Object? = dynamic>(mes::SuperIn::nonNullableBad::T% t) → core::int
- return 2;
-}
-class SubInIn extends mes::SuperIn {
- synthetic constructor •() → mes::SubInIn
- : super mes::SuperIn::•()
- ;
- method nullableSame() → core::String?
- return "foo";
- method nonNullableSame() → core::String
- return "bar";
- method nullableBad<T extends core::Object? = dynamic>(mes::SubInIn::nullableBad::T% t) → mes::SubInIn::nullableBad::T?
- return null;
- method nonNullableBad<T extends core::Object? = dynamic>(mes::SubInIn::nonNullableBad::T% t) → mes::SubInIn::nonNullableBad::T%
- return t;
-}
-class SubOutIn extends self::SuperOut {
- synthetic constructor •() → mes::SubOutIn
- : super self::SuperOut::•()
- ;
- method nullableSame() → core::String?
- return "foo";
- method nonNullableSame() → core::String
- return "bar";
- method nullableBad<T extends core::Object? = dynamic>(mes::SubOutIn::nullableBad::T% t) → mes::SubOutIn::nullableBad::T?
- return null;
- method nonNullableBad<T extends core::Object? = dynamic>(mes::SubOutIn::nonNullableBad::T% t) → mes::SubOutIn::nonNullableBad::T%
- return t;
-}
-static field () →? core::int nullableVar = () → core::int => 3;
-static field core::double nonNullableVar = 4.0;
-static method testOptIn() → dynamic {
- mes::nullableVar = let final<BottomType> #t7 = invalid-expression "pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:32:17: Error: A value of type 'double' can't be assigned to a variable of type 'int Function()?'.
- nullableVar = nonNullableVar;
- ^" in mes::nonNullableVar as{TypeError,ForNonNullableByDefault} () →? core::int;
- mes::nonNullableVar = let final<BottomType> #t8 = invalid-expression "pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:33:20: Error: A value of type 'int Function()?' can't be assigned to a variable of type 'double'.
- nonNullableVar = nullableVar;
- ^" in mes::nullableVar as{TypeError,ForNonNullableByDefault} core::double;
- self::legacyVar = let final<BottomType> #t9 = invalid-expression "pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:34:15: Error: A value of type 'int Function()?' can't be assigned to a variable of type 'String'.
- legacyVar = nullableVar;
- ^" in mes::nullableVar as{TypeError,ForNonNullableByDefault} core::String*;
- mes::nullableVar = let final<BottomType> #t10 = invalid-expression "pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:35:17: Error: A value of type 'String' can't be assigned to a variable of type 'int Function()?'.
- nullableVar = legacyVar;
- ^" in self::legacyVar as{TypeError,ForNonNullableByDefault} () →? core::int;
- mes::nonNullableVar = let final<BottomType> #t11 = invalid-expression "pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:36:20: Error: A value of type 'String' can't be assigned to a variable of type 'double'.
- nonNullableVar = legacyVar;
- ^" in self::legacyVar as{TypeError,ForNonNullableByDefault} core::double;
- self::legacyVar = let final<BottomType> #t12 = invalid-expression "pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart:37:15: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
- legacyVar = nonNullableVar;
- ^" in mes::nonNullableVar as{TypeError,ForNonNullableByDefault} core::String*;
-}
diff --git a/pkg/front_end/testcases/nnbd/mixed_mode_hierarchy_generic_methods.dart.outline.expect b/pkg/front_end/testcases/nnbd/mixed_mode_hierarchy_generic_methods.dart.outline.expect
deleted file mode 100644
index fabaeb8..0000000
--- a/pkg/front_end/testcases/nnbd/mixed_mode_hierarchy_generic_methods.dart.outline.expect
+++ /dev/null
@@ -1,39 +0,0 @@
-library;
-import self as self;
-import "dart:core" as core;
-import "mixed_mode_hierarchy_generic_methods_lib.dart" as mix;
-import "dart:async" as asy;
-
-import "org-dartlang-testcase:///mixed_mode_hierarchy_generic_methods_lib.dart";
-import "dart:async";
-
-class B extends core::Object implements mix::A<core::int*> {
- synthetic constructor •() → self::B*
- ;
- method then<B extends core::Object* = dynamic>() → asy::Future<self::B::then::B*>*
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-static method main() → dynamic
- ;
-
-library /*isNonNullableByDefault*/;
-import self as mix;
-import "dart:core" as core;
-import "dart:async" as asy;
-
-class A<R extends core::Object? = dynamic> extends core::Object {
- synthetic constructor •() → mix::A<mix::A::R%>
- ;
- method then<T extends core::Object? = dynamic>() → asy::Future<mix::A::then::T%>
- ;
-}
diff --git a/pkg/front_end/testcases/nnbd/mixed_mode_hierarchy_generic_methods.dart.strong.expect b/pkg/front_end/testcases/nnbd/mixed_mode_hierarchy_generic_methods.dart.strong.expect
deleted file mode 100644
index b8c94b1..0000000
--- a/pkg/front_end/testcases/nnbd/mixed_mode_hierarchy_generic_methods.dart.strong.expect
+++ /dev/null
@@ -1,40 +0,0 @@
-library;
-import self as self;
-import "dart:core" as core;
-import "mixed_mode_hierarchy_generic_methods_lib.dart" as mix;
-import "dart:async" as asy;
-
-import "org-dartlang-testcase:///mixed_mode_hierarchy_generic_methods_lib.dart";
-import "dart:async";
-
-class B extends core::Object implements mix::A<core::int*> {
- synthetic constructor •() → self::B*
- : super core::Object::•()
- ;
- method then<B extends core::Object* = dynamic>() → asy::Future<self::B::then::B*>*
- return asy::Future::value<self::B::then::B*>();
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-static method main() → dynamic {}
-
-library /*isNonNullableByDefault*/;
-import self as mix;
-import "dart:core" as core;
-import "dart:async" as asy;
-
-class A<R extends core::Object? = dynamic> extends core::Object {
- synthetic constructor •() → mix::A<mix::A::R%>
- : super core::Object::•()
- ;
- method then<T extends core::Object? = dynamic>() → asy::Future<mix::A::then::T%>
- return asy::Future::value<mix::A::then::T%>();
-}
diff --git a/pkg/front_end/testcases/nnbd/mixed_mode_hierarchy_generic_methods.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/mixed_mode_hierarchy_generic_methods.dart.strong.transformed.expect
deleted file mode 100644
index b8c94b1..0000000
--- a/pkg/front_end/testcases/nnbd/mixed_mode_hierarchy_generic_methods.dart.strong.transformed.expect
+++ /dev/null
@@ -1,40 +0,0 @@
-library;
-import self as self;
-import "dart:core" as core;
-import "mixed_mode_hierarchy_generic_methods_lib.dart" as mix;
-import "dart:async" as asy;
-
-import "org-dartlang-testcase:///mixed_mode_hierarchy_generic_methods_lib.dart";
-import "dart:async";
-
-class B extends core::Object implements mix::A<core::int*> {
- synthetic constructor •() → self::B*
- : super core::Object::•()
- ;
- method then<B extends core::Object* = dynamic>() → asy::Future<self::B::then::B*>*
- return asy::Future::value<self::B::then::B*>();
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-static method main() → dynamic {}
-
-library /*isNonNullableByDefault*/;
-import self as mix;
-import "dart:core" as core;
-import "dart:async" as asy;
-
-class A<R extends core::Object? = dynamic> extends core::Object {
- synthetic constructor •() → mix::A<mix::A::R%>
- : super core::Object::•()
- ;
- method then<T extends core::Object? = dynamic>() → asy::Future<mix::A::then::T%>
- return asy::Future::value<mix::A::then::T%>();
-}
diff --git a/pkg/front_end/testcases/nnbd/mixin_from_opt_in.dart.outline.expect b/pkg/front_end/testcases/nnbd/mixin_from_opt_in.dart.outline.expect
deleted file mode 100644
index a48d6aa..0000000
--- a/pkg/front_end/testcases/nnbd/mixin_from_opt_in.dart.outline.expect
+++ /dev/null
@@ -1,41 +0,0 @@
-library;
-import self as self;
-import "dart:core" as core;
-import "mixin_from_opt_in_lib.dart" as mix;
-
-import "org-dartlang-testcase:///mixin_from_opt_in_lib.dart";
-
-abstract class _Class&Object&Mixin = core::Object with mix::Mixin /*isAnonymousMixin,hasConstConstructor*/ {
- const synthetic constructor •() → self::_Class&Object&Mixin*
- : super core::Object::•()
- ;
- abstract member-signature method method(core::int* i) → core::int*;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class Class extends self::_Class&Object&Mixin {
- synthetic constructor •() → self::Class*
- ;
- abstract member-signature method method(core::int* i) → core::int*;
-}
-static method main() → dynamic
- ;
-
-library /*isNonNullableByDefault*/;
-import self as mix;
-import "dart:core" as core;
-
-class Mixin extends core::Object {
- synthetic constructor •() → mix::Mixin
- ;
- method method(core::int? i) → core::int
- ;
-}
diff --git a/pkg/front_end/testcases/nnbd/mixin_from_opt_in.dart.strong.expect b/pkg/front_end/testcases/nnbd/mixin_from_opt_in.dart.strong.expect
deleted file mode 100644
index c61a894..0000000
--- a/pkg/front_end/testcases/nnbd/mixin_from_opt_in.dart.strong.expect
+++ /dev/null
@@ -1,44 +0,0 @@
-library;
-import self as self;
-import "dart:core" as core;
-import "mixin_from_opt_in_lib.dart" as mix;
-
-import "org-dartlang-testcase:///mixin_from_opt_in_lib.dart";
-
-abstract class _Class&Object&Mixin = core::Object with mix::Mixin /*isAnonymousMixin,hasConstConstructor*/ {
- const synthetic constructor •() → self::_Class&Object&Mixin*
- : super core::Object::•()
- ;
- abstract member-signature method method(core::int* i) → core::int*;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class Class extends self::_Class&Object&Mixin {
- synthetic constructor •() → self::Class*
- : super self::_Class&Object&Mixin::•()
- ;
- abstract member-signature method method(core::int* i) → core::int*;
-}
-static method main() → dynamic {
- core::print(new self::Class::•().{self::Class::method}(null));
-}
-
-library /*isNonNullableByDefault*/;
-import self as mix;
-import "dart:core" as core;
-
-class Mixin extends core::Object {
- synthetic constructor •() → mix::Mixin
- : super core::Object::•()
- ;
- method method(core::int? i) → core::int
- return let final core::int? #t1 = i in #t1.{core::num::==}(null) ?{core::int} 0 : #t1{core::int};
-}
diff --git a/pkg/front_end/testcases/nnbd/mixin_from_opt_in.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/mixin_from_opt_in.dart.strong.transformed.expect
deleted file mode 100644
index 6379057..0000000
--- a/pkg/front_end/testcases/nnbd/mixin_from_opt_in.dart.strong.transformed.expect
+++ /dev/null
@@ -1,45 +0,0 @@
-library;
-import self as self;
-import "dart:core" as core;
-import "mixin_from_opt_in_lib.dart" as mix;
-
-import "org-dartlang-testcase:///mixin_from_opt_in_lib.dart";
-
-abstract class _Class&Object&Mixin extends core::Object implements mix::Mixin /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ {
- const synthetic constructor •() → self::_Class&Object&Mixin*
- : super core::Object::•()
- ;
- method /*isNonNullableByDefault, from org-dartlang-testcase:///mixin_from_opt_in_lib.dart */ method(core::int? i) → core::int
- return let final core::int? #t1 = i in #t1.{core::num::==}(null) ?{core::int} 0 : #t1{core::int};
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class Class extends self::_Class&Object&Mixin {
- synthetic constructor •() → self::Class*
- : super self::_Class&Object&Mixin::•()
- ;
- abstract member-signature method method(core::int* i) → core::int*;
-}
-static method main() → dynamic {
- core::print(new self::Class::•().{self::Class::method}(null));
-}
-
-library /*isNonNullableByDefault*/;
-import self as mix;
-import "dart:core" as core;
-
-class Mixin extends core::Object {
- synthetic constructor •() → mix::Mixin
- : super core::Object::•()
- ;
- method method(core::int? i) → core::int
- return let final core::int? #t2 = i in #t2.{core::num::==}(null) ?{core::int} 0 : #t2{core::int};
-}
diff --git a/pkg/front_end/testcases/nnbd/mixin_from_opt_in_out_in.dart.outline.expect b/pkg/front_end/testcases/nnbd/mixin_from_opt_in_out_in.dart.outline.expect
deleted file mode 100644
index edade1d..0000000
--- a/pkg/front_end/testcases/nnbd/mixin_from_opt_in_out_in.dart.outline.expect
+++ /dev/null
@@ -1,214 +0,0 @@
-library /*isNonNullableByDefault*/;
-import self as self;
-import "mixin_from_opt_in_out_in_lib1.dart" as mix;
-import "mixin_from_opt_in_out_in_lib2.dart" as mix2;
-import "dart:core" as core;
-
-import "org-dartlang-testcase:///mixin_from_opt_in_out_in_lib1.dart";
-import "org-dartlang-testcase:///mixin_from_opt_in_out_in_lib2.dart";
-
-class DiB0 extends mix::C0 implements mix2::B {
- synthetic constructor •() → self::DiB0
- ;
- abstract member-signature get a() → core::List<(core::int) → core::int>;
- abstract member-signature set a(core::List<(core::int) → core::int> _) → void;
- abstract member-signature method m((core::int) → core::int x) → (core::int) → core::int;
- abstract member-signature get _identityHashCode() → core::int;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
- abstract member-signature get hashCode() → core::int;
- abstract member-signature method toString() → core::String;
- abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type;
-}
-class DiBq0 extends mix::C0 implements mix2::Bq {
- synthetic constructor •() → self::DiBq0
- ;
- abstract member-signature get a() → core::List<(core::int?) → core::int?>;
- abstract member-signature set a(core::List<(core::int?) → core::int?> _) → void;
- abstract member-signature method m((core::int?) → core::int? x) → (core::int?) → core::int?;
- abstract member-signature get _identityHashCode() → core::int;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
- abstract member-signature get hashCode() → core::int;
- abstract member-signature method toString() → core::String;
- abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type;
-}
-abstract class _DwB0&C0&B = mix::C0 with mix2::B /*isAnonymousMixin*/ {
- synthetic constructor •() → self::_DwB0&C0&B
- : super mix::C0::•()
- ;
- abstract member-signature get _identityHashCode() → core::int;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
- abstract member-signature get hashCode() → core::int;
- abstract member-signature method toString() → core::String;
- abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type;
-}
-class DwB0 extends self::_DwB0&C0&B {
- synthetic constructor •() → self::DwB0
- ;
-}
-abstract class _DwBq0&C0&Bq = mix::C0 with mix2::Bq /*isAnonymousMixin*/ {
- synthetic constructor •() → self::_DwBq0&C0&Bq
- : super mix::C0::•()
- ;
- abstract member-signature get _identityHashCode() → core::int;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
- abstract member-signature get hashCode() → core::int;
- abstract member-signature method toString() → core::String;
- abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type;
-}
-class DwBq0 extends self::_DwBq0&C0&Bq {
- synthetic constructor •() → self::DwBq0
- ;
-}
-class DiB3 extends mix::C3 implements mix2::B {
- synthetic constructor •() → self::DiB3
- ;
- abstract member-signature get a() → core::List<(core::int) → core::int>;
- abstract member-signature set a(core::List<(core::int) → core::int> _) → void;
- abstract member-signature method m((core::int) → core::int x) → (core::int) → core::int;
- abstract member-signature get _identityHashCode() → core::int;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
- abstract member-signature get hashCode() → core::int;
- abstract member-signature method toString() → core::String;
- abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type;
-}
-class DiBq3 extends mix::C3 implements mix2::Bq {
- synthetic constructor •() → self::DiBq3
- ;
- abstract member-signature get a() → core::List<(core::int?) → core::int?>;
- abstract member-signature set a(core::List<(core::int?) → core::int?> _) → void;
- abstract member-signature method m((core::int?) → core::int? x) → (core::int?) → core::int?;
- abstract member-signature get _identityHashCode() → core::int;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
- abstract member-signature get hashCode() → core::int;
- abstract member-signature method toString() → core::String;
- abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type;
-}
-abstract class _DwB3&C3&B = mix::C3 with mix2::B /*isAnonymousMixin*/ {
- synthetic constructor •() → self::_DwB3&C3&B
- : super mix::C3::•()
- ;
- abstract member-signature get _identityHashCode() → core::int;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
- abstract member-signature get hashCode() → core::int;
- abstract member-signature method toString() → core::String;
- abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type;
-}
-class DwB3 extends self::_DwB3&C3&B {
- synthetic constructor •() → self::DwB3
- ;
-}
-abstract class _DwBq3&C3&Bq = mix::C3 with mix2::Bq /*isAnonymousMixin*/ {
- synthetic constructor •() → self::_DwBq3&C3&Bq
- : super mix::C3::•()
- ;
- abstract member-signature get _identityHashCode() → core::int;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
- abstract member-signature get hashCode() → core::int;
- abstract member-signature method toString() → core::String;
- abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type;
-}
-class DwBq3 extends self::_DwBq3&C3&Bq {
- synthetic constructor •() → self::DwBq3
- ;
-}
-static method main() → dynamic
- ;
-
-library;
-import self as mix;
-import "mixin_from_opt_in_out_in_lib2.dart" as mix2;
-import "dart:core" as core;
-
-import "org-dartlang-testcase:///mixin_from_opt_in_out_in_lib2.dart";
-
-class C0 extends mix2::B {
- synthetic constructor •() → mix::C0*
- ;
- abstract member-signature get a() → core::List<(core::int*) →* core::int*>*;
- abstract member-signature set a(core::List<(core::int*) →* core::int*>* _) → void;
- abstract member-signature method m((core::int*) →* core::int* x) → (core::int*) →* core::int*;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class C3 extends mix2::Bq {
- synthetic constructor •() → mix::C3*
- ;
- abstract member-signature get a() → core::List<(core::int*) →* core::int*>*;
- abstract member-signature set a(core::List<(core::int*) →* core::int*>* _) → void;
- abstract member-signature method m((core::int*) →* core::int* x) → (core::int*) →* core::int*;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-
-library /*isNonNullableByDefault*/;
-import self as mix2;
-import "dart:core" as core;
-
-class B extends core::Object {
- synthetic constructor •() → mix2::B
- ;
- get a() → core::List<(core::int) → core::int>
- ;
- set a(core::List<(core::int) → core::int> _) → void
- ;
- method m((core::int) → core::int x) → (core::int) → core::int
- ;
-}
-class Bq extends core::Object {
- synthetic constructor •() → mix2::Bq
- ;
- get a() → core::List<(core::int?) → core::int?>
- ;
- set a(core::List<(core::int?) → core::int?> _) → void
- ;
- method m((core::int?) → core::int? x) → (core::int?) → core::int?
- ;
-}
diff --git a/pkg/front_end/testcases/nnbd/mixin_from_opt_in_out_in.dart.strong.expect b/pkg/front_end/testcases/nnbd/mixin_from_opt_in_out_in.dart.strong.expect
deleted file mode 100644
index 22eca01..0000000
--- a/pkg/front_end/testcases/nnbd/mixin_from_opt_in_out_in.dart.strong.expect
+++ /dev/null
@@ -1,223 +0,0 @@
-library /*isNonNullableByDefault*/;
-import self as self;
-import "mixin_from_opt_in_out_in_lib1.dart" as mix;
-import "mixin_from_opt_in_out_in_lib2.dart" as mix2;
-import "dart:core" as core;
-
-import "org-dartlang-testcase:///mixin_from_opt_in_out_in_lib1.dart";
-import "org-dartlang-testcase:///mixin_from_opt_in_out_in_lib2.dart";
-
-class DiB0 extends mix::C0 implements mix2::B {
- synthetic constructor •() → self::DiB0
- : super mix::C0::•()
- ;
- abstract member-signature get a() → core::List<(core::int) → core::int>;
- abstract member-signature set a(core::List<(core::int) → core::int> _) → void;
- abstract member-signature method m((core::int) → core::int x) → (core::int) → core::int;
- abstract member-signature get _identityHashCode() → core::int;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
- abstract member-signature get hashCode() → core::int;
- abstract member-signature method toString() → core::String;
- abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type;
-}
-class DiBq0 extends mix::C0 implements mix2::Bq {
- synthetic constructor •() → self::DiBq0
- : super mix::C0::•()
- ;
- abstract member-signature get a() → core::List<(core::int?) → core::int?>;
- abstract member-signature set a(core::List<(core::int?) → core::int?> _) → void;
- abstract member-signature method m((core::int?) → core::int? x) → (core::int?) → core::int?;
- abstract member-signature get _identityHashCode() → core::int;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
- abstract member-signature get hashCode() → core::int;
- abstract member-signature method toString() → core::String;
- abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type;
-}
-abstract class _DwB0&C0&B = mix::C0 with mix2::B /*isAnonymousMixin*/ {
- synthetic constructor •() → self::_DwB0&C0&B
- : super mix::C0::•()
- ;
- abstract member-signature get _identityHashCode() → core::int;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
- abstract member-signature get hashCode() → core::int;
- abstract member-signature method toString() → core::String;
- abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type;
-}
-class DwB0 extends self::_DwB0&C0&B {
- synthetic constructor •() → self::DwB0
- : super self::_DwB0&C0&B::•()
- ;
-}
-abstract class _DwBq0&C0&Bq = mix::C0 with mix2::Bq /*isAnonymousMixin*/ {
- synthetic constructor •() → self::_DwBq0&C0&Bq
- : super mix::C0::•()
- ;
- abstract member-signature get _identityHashCode() → core::int;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
- abstract member-signature get hashCode() → core::int;
- abstract member-signature method toString() → core::String;
- abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type;
-}
-class DwBq0 extends self::_DwBq0&C0&Bq {
- synthetic constructor •() → self::DwBq0
- : super self::_DwBq0&C0&Bq::•()
- ;
-}
-class DiB3 extends mix::C3 implements mix2::B {
- synthetic constructor •() → self::DiB3
- : super mix::C3::•()
- ;
- abstract member-signature get a() → core::List<(core::int) → core::int>;
- abstract member-signature set a(core::List<(core::int) → core::int> _) → void;
- abstract member-signature method m((core::int) → core::int x) → (core::int) → core::int;
- abstract member-signature get _identityHashCode() → core::int;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
- abstract member-signature get hashCode() → core::int;
- abstract member-signature method toString() → core::String;
- abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type;
-}
-class DiBq3 extends mix::C3 implements mix2::Bq {
- synthetic constructor •() → self::DiBq3
- : super mix::C3::•()
- ;
- abstract member-signature get a() → core::List<(core::int?) → core::int?>;
- abstract member-signature set a(core::List<(core::int?) → core::int?> _) → void;
- abstract member-signature method m((core::int?) → core::int? x) → (core::int?) → core::int?;
- abstract member-signature get _identityHashCode() → core::int;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
- abstract member-signature get hashCode() → core::int;
- abstract member-signature method toString() → core::String;
- abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type;
-}
-abstract class _DwB3&C3&B = mix::C3 with mix2::B /*isAnonymousMixin*/ {
- synthetic constructor •() → self::_DwB3&C3&B
- : super mix::C3::•()
- ;
- abstract member-signature get _identityHashCode() → core::int;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
- abstract member-signature get hashCode() → core::int;
- abstract member-signature method toString() → core::String;
- abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type;
-}
-class DwB3 extends self::_DwB3&C3&B {
- synthetic constructor •() → self::DwB3
- : super self::_DwB3&C3&B::•()
- ;
-}
-abstract class _DwBq3&C3&Bq = mix::C3 with mix2::Bq /*isAnonymousMixin*/ {
- synthetic constructor •() → self::_DwBq3&C3&Bq
- : super mix::C3::•()
- ;
- abstract member-signature get _identityHashCode() → core::int;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
- abstract member-signature get hashCode() → core::int;
- abstract member-signature method toString() → core::String;
- abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type;
-}
-class DwBq3 extends self::_DwBq3&C3&Bq {
- synthetic constructor •() → self::DwBq3
- : super self::_DwBq3&C3&Bq::•()
- ;
-}
-static method main() → dynamic {}
-
-library;
-import self as mix;
-import "mixin_from_opt_in_out_in_lib2.dart" as mix2;
-import "dart:core" as core;
-
-import "org-dartlang-testcase:///mixin_from_opt_in_out_in_lib2.dart";
-
-class C0 extends mix2::B {
- synthetic constructor •() → mix::C0*
- : super mix2::B::•()
- ;
- abstract member-signature get a() → core::List<(core::int*) →* core::int*>*;
- abstract member-signature set a(core::List<(core::int*) →* core::int*>* _) → void;
- abstract member-signature method m((core::int*) →* core::int* x) → (core::int*) →* core::int*;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class C3 extends mix2::Bq {
- synthetic constructor •() → mix::C3*
- : super mix2::Bq::•()
- ;
- abstract member-signature get a() → core::List<(core::int*) →* core::int*>*;
- abstract member-signature set a(core::List<(core::int*) →* core::int*>* _) → void;
- abstract member-signature method m((core::int*) →* core::int* x) → (core::int*) →* core::int*;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-
-library /*isNonNullableByDefault*/;
-import self as mix2;
-import "dart:core" as core;
-
-class B extends core::Object {
- synthetic constructor •() → mix2::B
- : super core::Object::•()
- ;
- get a() → core::List<(core::int) → core::int>
- return <(core::int) → core::int>[];
- set a(core::List<(core::int) → core::int> _) → void {}
- method m((core::int) → core::int x) → (core::int) → core::int
- return x;
-}
-class Bq extends core::Object {
- synthetic constructor •() → mix2::Bq
- : super core::Object::•()
- ;
- get a() → core::List<(core::int?) → core::int?>
- return <(core::int?) → core::int?>[];
- set a(core::List<(core::int?) → core::int?> _) → void {}
- method m((core::int?) → core::int? x) → (core::int?) → core::int?
- return x;
-}
diff --git a/pkg/front_end/testcases/nnbd/mixin_from_opt_in_out_in.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/mixin_from_opt_in_out_in.dart.strong.transformed.expect
deleted file mode 100644
index 81c6715..0000000
--- a/pkg/front_end/testcases/nnbd/mixin_from_opt_in_out_in.dart.strong.transformed.expect
+++ /dev/null
@@ -1,243 +0,0 @@
-library /*isNonNullableByDefault*/;
-import self as self;
-import "mixin_from_opt_in_out_in_lib1.dart" as mix;
-import "mixin_from_opt_in_out_in_lib2.dart" as mix2;
-import "dart:core" as core;
-
-import "org-dartlang-testcase:///mixin_from_opt_in_out_in_lib1.dart";
-import "org-dartlang-testcase:///mixin_from_opt_in_out_in_lib2.dart";
-
-class DiB0 extends mix::C0 implements mix2::B {
- synthetic constructor •() → self::DiB0
- : super mix::C0::•()
- ;
- abstract member-signature get a() → core::List<(core::int) → core::int>;
- abstract member-signature set a(core::List<(core::int) → core::int> _) → void;
- abstract member-signature method m((core::int) → core::int x) → (core::int) → core::int;
- abstract member-signature get _identityHashCode() → core::int;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
- abstract member-signature get hashCode() → core::int;
- abstract member-signature method toString() → core::String;
- abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type;
-}
-class DiBq0 extends mix::C0 implements mix2::Bq {
- synthetic constructor •() → self::DiBq0
- : super mix::C0::•()
- ;
- abstract member-signature get a() → core::List<(core::int?) → core::int?>;
- abstract member-signature set a(core::List<(core::int?) → core::int?> _) → void;
- abstract member-signature method m((core::int?) → core::int? x) → (core::int?) → core::int?;
- abstract member-signature get _identityHashCode() → core::int;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
- abstract member-signature get hashCode() → core::int;
- abstract member-signature method toString() → core::String;
- abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type;
-}
-abstract class _DwB0&C0&B extends mix::C0 implements mix2::B /*isAnonymousMixin,isEliminatedMixin*/ {
- synthetic constructor •() → self::_DwB0&C0&B
- : super mix::C0::•()
- ;
- abstract member-signature get _identityHashCode() → core::int;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
- abstract member-signature get hashCode() → core::int;
- abstract member-signature method toString() → core::String;
- abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type;
- get /* from org-dartlang-testcase:///mixin_from_opt_in_out_in_lib2.dart */ a() → core::List<(core::int) → core::int>
- return <(core::int) → core::int>[];
- set /* from org-dartlang-testcase:///mixin_from_opt_in_out_in_lib2.dart */ a(core::List<(core::int) → core::int> _) → void {}
- method /* from org-dartlang-testcase:///mixin_from_opt_in_out_in_lib2.dart */ m((core::int) → core::int x) → (core::int) → core::int
- return x;
-}
-class DwB0 extends self::_DwB0&C0&B {
- synthetic constructor •() → self::DwB0
- : super self::_DwB0&C0&B::•()
- ;
-}
-abstract class _DwBq0&C0&Bq extends mix::C0 implements mix2::Bq /*isAnonymousMixin,isEliminatedMixin*/ {
- synthetic constructor •() → self::_DwBq0&C0&Bq
- : super mix::C0::•()
- ;
- abstract member-signature get _identityHashCode() → core::int;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
- abstract member-signature get hashCode() → core::int;
- abstract member-signature method toString() → core::String;
- abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type;
- get /* from org-dartlang-testcase:///mixin_from_opt_in_out_in_lib2.dart */ a() → core::List<(core::int?) → core::int?>
- return <(core::int?) → core::int?>[];
- set /* from org-dartlang-testcase:///mixin_from_opt_in_out_in_lib2.dart */ a(core::List<(core::int?) → core::int?> _) → void {}
- method /* from org-dartlang-testcase:///mixin_from_opt_in_out_in_lib2.dart */ m((core::int?) → core::int? x) → (core::int?) → core::int?
- return x;
-}
-class DwBq0 extends self::_DwBq0&C0&Bq {
- synthetic constructor •() → self::DwBq0
- : super self::_DwBq0&C0&Bq::•()
- ;
-}
-class DiB3 extends mix::C3 implements mix2::B {
- synthetic constructor •() → self::DiB3
- : super mix::C3::•()
- ;
- abstract member-signature get a() → core::List<(core::int) → core::int>;
- abstract member-signature set a(core::List<(core::int) → core::int> _) → void;
- abstract member-signature method m((core::int) → core::int x) → (core::int) → core::int;
- abstract member-signature get _identityHashCode() → core::int;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
- abstract member-signature get hashCode() → core::int;
- abstract member-signature method toString() → core::String;
- abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type;
-}
-class DiBq3 extends mix::C3 implements mix2::Bq {
- synthetic constructor •() → self::DiBq3
- : super mix::C3::•()
- ;
- abstract member-signature get a() → core::List<(core::int?) → core::int?>;
- abstract member-signature set a(core::List<(core::int?) → core::int?> _) → void;
- abstract member-signature method m((core::int?) → core::int? x) → (core::int?) → core::int?;
- abstract member-signature get _identityHashCode() → core::int;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
- abstract member-signature get hashCode() → core::int;
- abstract member-signature method toString() → core::String;
- abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type;
-}
-abstract class _DwB3&C3&B extends mix::C3 implements mix2::B /*isAnonymousMixin,isEliminatedMixin*/ {
- synthetic constructor •() → self::_DwB3&C3&B
- : super mix::C3::•()
- ;
- abstract member-signature get _identityHashCode() → core::int;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
- abstract member-signature get hashCode() → core::int;
- abstract member-signature method toString() → core::String;
- abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type;
- get /* from org-dartlang-testcase:///mixin_from_opt_in_out_in_lib2.dart */ a() → core::List<(core::int) → core::int>
- return <(core::int) → core::int>[];
- set /* from org-dartlang-testcase:///mixin_from_opt_in_out_in_lib2.dart */ a(core::List<(core::int) → core::int> _) → void {}
- method /* from org-dartlang-testcase:///mixin_from_opt_in_out_in_lib2.dart */ m((core::int) → core::int x) → (core::int) → core::int
- return x;
-}
-class DwB3 extends self::_DwB3&C3&B {
- synthetic constructor •() → self::DwB3
- : super self::_DwB3&C3&B::•()
- ;
-}
-abstract class _DwBq3&C3&Bq extends mix::C3 implements mix2::Bq /*isAnonymousMixin,isEliminatedMixin*/ {
- synthetic constructor •() → self::_DwBq3&C3&Bq
- : super mix::C3::•()
- ;
- abstract member-signature get _identityHashCode() → core::int;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
- abstract member-signature get hashCode() → core::int;
- abstract member-signature method toString() → core::String;
- abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type;
- get /* from org-dartlang-testcase:///mixin_from_opt_in_out_in_lib2.dart */ a() → core::List<(core::int?) → core::int?>
- return <(core::int?) → core::int?>[];
- set /* from org-dartlang-testcase:///mixin_from_opt_in_out_in_lib2.dart */ a(core::List<(core::int?) → core::int?> _) → void {}
- method /* from org-dartlang-testcase:///mixin_from_opt_in_out_in_lib2.dart */ m((core::int?) → core::int? x) → (core::int?) → core::int?
- return x;
-}
-class DwBq3 extends self::_DwBq3&C3&Bq {
- synthetic constructor •() → self::DwBq3
- : super self::_DwBq3&C3&Bq::•()
- ;
-}
-static method main() → dynamic {}
-
-library;
-import self as mix;
-import "mixin_from_opt_in_out_in_lib2.dart" as mix2;
-import "dart:core" as core;
-
-import "org-dartlang-testcase:///mixin_from_opt_in_out_in_lib2.dart";
-
-class C0 extends mix2::B {
- synthetic constructor •() → mix::C0*
- : super mix2::B::•()
- ;
- abstract member-signature get a() → core::List<(core::int*) →* core::int*>*;
- abstract member-signature set a(core::List<(core::int*) →* core::int*>* _) → void;
- abstract member-signature method m((core::int*) →* core::int* x) → (core::int*) →* core::int*;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class C3 extends mix2::Bq {
- synthetic constructor •() → mix::C3*
- : super mix2::Bq::•()
- ;
- abstract member-signature get a() → core::List<(core::int*) →* core::int*>*;
- abstract member-signature set a(core::List<(core::int*) →* core::int*>* _) → void;
- abstract member-signature method m((core::int*) →* core::int* x) → (core::int*) →* core::int*;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-
-library /*isNonNullableByDefault*/;
-import self as mix2;
-import "dart:core" as core;
-
-class B extends core::Object {
- synthetic constructor •() → mix2::B
- : super core::Object::•()
- ;
- get a() → core::List<(core::int) → core::int>
- return <(core::int) → core::int>[];
- set a(core::List<(core::int) → core::int> _) → void {}
- method m((core::int) → core::int x) → (core::int) → core::int
- return x;
-}
-class Bq extends core::Object {
- synthetic constructor •() → mix2::Bq
- : super core::Object::•()
- ;
- get a() → core::List<(core::int?) → core::int?>
- return <(core::int?) → core::int?>[];
- set a(core::List<(core::int?) → core::int?> _) → void {}
- method m((core::int?) → core::int? x) → (core::int?) → core::int?
- return x;
-}
diff --git a/pkg/front_end/testcases/nnbd/mixin_from_opt_out.dart.outline.expect b/pkg/front_end/testcases/nnbd/mixin_from_opt_out.dart.outline.expect
deleted file mode 100644
index 757fb8c..0000000
--- a/pkg/front_end/testcases/nnbd/mixin_from_opt_out.dart.outline.expect
+++ /dev/null
@@ -1,41 +0,0 @@
-library /*isNonNullableByDefault*/;
-import self as self;
-import "dart:core" as core;
-import "mixin_from_opt_out_lib.dart" as mix;
-
-import "org-dartlang-testcase:///mixin_from_opt_out_lib.dart";
-
-abstract class _Class&Object&Mixin = core::Object with mix::Mixin /*isAnonymousMixin,hasConstConstructor*/ {
- const synthetic constructor •() → self::_Class&Object&Mixin
- : super core::Object::•()
- ;
- abstract forwarding-stub operator ==(dynamic other) → core::bool*;
-}
-class Class extends self::_Class&Object&Mixin {
- synthetic constructor •() → self::Class
- ;
- abstract forwarding-stub operator ==(dynamic other) → core::bool*;
-}
-static method main() → dynamic
- ;
-
-library;
-import self as mix;
-import "dart:core" as core;
-
-class Mixin extends core::Object {
- synthetic constructor •() → mix::Mixin*
- ;
- method method(core::int* i) → core::int*
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
diff --git a/pkg/front_end/testcases/nnbd/mixin_from_opt_out.dart.strong.expect b/pkg/front_end/testcases/nnbd/mixin_from_opt_out.dart.strong.expect
deleted file mode 100644
index cf985f7..0000000
--- a/pkg/front_end/testcases/nnbd/mixin_from_opt_out.dart.strong.expect
+++ /dev/null
@@ -1,44 +0,0 @@
-library /*isNonNullableByDefault*/;
-import self as self;
-import "dart:core" as core;
-import "mixin_from_opt_out_lib.dart" as mix;
-
-import "org-dartlang-testcase:///mixin_from_opt_out_lib.dart";
-
-abstract class _Class&Object&Mixin = core::Object with mix::Mixin /*isAnonymousMixin,hasConstConstructor*/ {
- const synthetic constructor •() → self::_Class&Object&Mixin
- : super core::Object::•()
- ;
- abstract forwarding-stub operator ==(dynamic other) → core::bool*;
-}
-class Class extends self::_Class&Object&Mixin {
- synthetic constructor •() → self::Class
- : super self::_Class&Object&Mixin::•()
- ;
- abstract forwarding-stub operator ==(dynamic other) → core::bool*;
-}
-static method main() → dynamic {
- core::print(new self::Class::•().{mix::Mixin::method}(null));
-}
-
-library;
-import self as mix;
-import "dart:core" as core;
-
-class Mixin extends core::Object {
- synthetic constructor •() → mix::Mixin*
- : super core::Object::•()
- ;
- method method(core::int* i) → core::int*
- return let final core::int* #t1 = i in #t1.{core::num::==}(null) ?{core::int*} 0 : #t1;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
diff --git a/pkg/front_end/testcases/nnbd/mixin_from_opt_out.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/mixin_from_opt_out.dart.strong.transformed.expect
deleted file mode 100644
index 1cfd5c0..0000000
--- a/pkg/front_end/testcases/nnbd/mixin_from_opt_out.dart.strong.transformed.expect
+++ /dev/null
@@ -1,55 +0,0 @@
-library /*isNonNullableByDefault*/;
-import self as self;
-import "dart:core" as core;
-import "mixin_from_opt_out_lib.dart" as mix;
-
-import "org-dartlang-testcase:///mixin_from_opt_out_lib.dart";
-
-abstract class _Class&Object&Mixin extends core::Object implements mix::Mixin /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ {
- const synthetic constructor •() → self::_Class&Object&Mixin
- : super core::Object::•()
- ;
- abstract member-signature operator /*isNullableByDefault, from org-dartlang-testcase:///mixin_from_opt_out_lib.dart */ ==(dynamic other) → core::bool*;
- method /*isNullableByDefault, from org-dartlang-testcase:///mixin_from_opt_out_lib.dart */ method(core::int* i) → core::int*
- return let final core::int* #t1 = i in #t1.{core::num::==}(null) ?{core::int*} 0 : #t1;
- abstract member-signature get /*isNullableByDefault, from org-dartlang-testcase:///mixin_from_opt_out_lib.dart */ _identityHashCode() → core::int*;
- abstract member-signature method /*isNullableByDefault, from org-dartlang-testcase:///mixin_from_opt_out_lib.dart */ _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method /*isNullableByDefault, from org-dartlang-testcase:///mixin_from_opt_out_lib.dart */ _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method /*isNullableByDefault, from org-dartlang-testcase:///mixin_from_opt_out_lib.dart */ _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method /*isNullableByDefault, from org-dartlang-testcase:///mixin_from_opt_out_lib.dart */ _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature get /*isNullableByDefault, from org-dartlang-testcase:///mixin_from_opt_out_lib.dart */ hashCode() → core::int*;
- abstract member-signature method /*isNullableByDefault, from org-dartlang-testcase:///mixin_from_opt_out_lib.dart */ toString() → core::String*;
- abstract member-signature method /*isNullableByDefault, from org-dartlang-testcase:///mixin_from_opt_out_lib.dart */ noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get /*isNullableByDefault, from org-dartlang-testcase:///mixin_from_opt_out_lib.dart */ runtimeType() → core::Type*;
-}
-class Class extends self::_Class&Object&Mixin {
- synthetic constructor •() → self::Class
- : super self::_Class&Object&Mixin::•()
- ;
- abstract forwarding-stub operator ==(dynamic other) → core::bool*;
-}
-static method main() → dynamic {
- core::print(new self::Class::•().{mix::Mixin::method}(null));
-}
-
-library;
-import self as mix;
-import "dart:core" as core;
-
-class Mixin extends core::Object {
- synthetic constructor •() → mix::Mixin*
- : super core::Object::•()
- ;
- method method(core::int* i) → core::int*
- return let final core::int* #t2 = i in #t2.{core::num::==}(null) ?{core::int*} 0 : #t2;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
diff --git a/pkg/front_end/testcases/nnbd/never_opt_out.dart.outline.expect b/pkg/front_end/testcases/nnbd/never_opt_out.dart.outline.expect
deleted file mode 100644
index 1ff275c..0000000
--- a/pkg/front_end/testcases/nnbd/never_opt_out.dart.outline.expect
+++ /dev/null
@@ -1,97 +0,0 @@
-library;
-import self as self;
-import "never_opt_out_lib.dart" as nev;
-import "dart:core" as core;
-
-import "org-dartlang-testcase:///never_opt_out_lib.dart";
-
-class B extends nev::A {
- field core::Null? neverField;
- field core::Null? nullField;
- synthetic constructor •() → self::B*
- ;
- method neverMethod(core::Null? value) → core::Null?
- ;
- get neverProperty() → core::Null?
- ;
- set neverProperty(core::Null? value) → void
- ;
- method nullMethod(core::Null? value) → core::Null?
- ;
- get nullProperty() → core::Null?
- ;
- set nullProperty(core::Null? value) → void
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class C extends nev::A {
- field Never* neverField;
- field Never* nullField;
- synthetic constructor •() → self::C*
- ;
- method neverMethod(Never* value) → Never*
- ;
- get neverProperty() → Never*
- ;
- set neverProperty(Never* value) → void
- ;
- method nullMethod(Never* value) → Never*
- ;
- get nullProperty() → Never*
- ;
- set nullProperty(Never* value) → void
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-static field Never* optOutNever;
-static field core::Null? inferredOptOutNever;
-static method main() → dynamic
- ;
-static method throws(() →* void f) → dynamic
- ;
-
-library /*isNonNullableByDefault*/;
-import self as nev;
-import "dart:core" as core;
-
-import "org-dartlang-testcase:///never_opt_out.dart";
-
-class A extends core::Object {
- field Never neverField;
- field core::Null? nullField;
- synthetic constructor •() → nev::A
- ;
- method neverMethod(Never value) → Never
- ;
- get neverProperty() → Never
- ;
- set neverProperty(Never value) → void
- ;
- method nullMethod(core::Null? value) → core::Null?
- ;
- get nullProperty() → core::Null?
- ;
- set nullProperty(core::Null? value) → void
- ;
-}
-static field Never optInNever;
-static method throwing() → Never
- ;
diff --git a/pkg/front_end/testcases/nnbd/never_opt_out.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/never_opt_out.dart.strong.transformed.expect
deleted file mode 100644
index bf726fb..0000000
--- a/pkg/front_end/testcases/nnbd/never_opt_out.dart.strong.transformed.expect
+++ /dev/null
@@ -1,75 +0,0 @@
-library;
-import self as self;
-import "dart:core" as core;
-import "never_opt_out_lib.dart" as nev;
-
-import "org-dartlang-testcase:///never_opt_out_lib.dart";
-
-static field Never* optOutNever;
-static field core::Null? inferredOptOutNever = nev::optInNever;
-static method main() → dynamic {
- Never* localNever = null;
- core::Null? localNull = null;
- Never inferredLocalNever = nev::optInNever;
- localNever = localNever;
- self::optOutNever = localNever;
- nev::optInNever = localNever;
- localNull = localNever;
- self::inferredOptOutNever = localNever;
- inferredLocalNever = localNever;
- localNever = self::optOutNever;
- self::optOutNever = self::optOutNever;
- nev::optInNever = self::optOutNever;
- localNull = self::optOutNever;
- self::inferredOptOutNever = self::optOutNever;
- inferredLocalNever = self::optOutNever;
- localNever = nev::optInNever;
- self::optOutNever = nev::optInNever;
- nev::optInNever = nev::optInNever;
- localNull = nev::optInNever;
- self::inferredOptOutNever = nev::optInNever;
- inferredLocalNever = nev::optInNever;
- localNever = localNull;
- self::optOutNever = localNull;
- nev::optInNever = localNull as{TypeError} Never;
- localNull = localNull;
- self::inferredOptOutNever = localNull;
- inferredLocalNever = localNull as{TypeError} Never;
- localNever = self::inferredOptOutNever;
- self::optOutNever = self::inferredOptOutNever;
- nev::optInNever = self::inferredOptOutNever as{TypeError} Never;
- localNull = self::inferredOptOutNever;
- self::inferredOptOutNever = self::inferredOptOutNever;
- inferredLocalNever = self::inferredOptOutNever as{TypeError} Never;
- localNever = inferredLocalNever;
- self::optOutNever = inferredLocalNever;
- nev::optInNever = inferredLocalNever;
- localNull = inferredLocalNever;
- self::inferredOptOutNever = inferredLocalNever;
- inferredLocalNever = inferredLocalNever;
- self::throws(() → Never => self::optOutNever = nev::throwing());
- self::throws(() → Never => localNever = nev::throwing());
- self::throws(() → Never => self::optOutNever = nev::throwing());
- self::throws(() → Never => nev::optInNever = nev::throwing());
- self::throws(() → Never => self::inferredOptOutNever = nev::throwing());
- self::throws(() → Never => inferredLocalNever = nev::throwing());
-}
-static method throws(() →* void f) → dynamic {
- try {
- f.call();
- }
- on dynamic catch(final dynamic _) {
- return;
- }
- throw "Expected exception";
-}
-
-library /*isNonNullableByDefault*/;
-import self as nev;
-import "never_opt_out.dart" as self;
-
-import "org-dartlang-testcase:///never_opt_out.dart";
-
-static field Never optInNever = self::optOutNever;
-static method throwing() → Never
- return throw "Never!";
diff --git a/pkg/front_end/testcases/nnbd/never_opt_out.dart.weak.expect b/pkg/front_end/testcases/nnbd/never_opt_out.dart.weak.expect
deleted file mode 100644
index 2072456..0000000
--- a/pkg/front_end/testcases/nnbd/never_opt_out.dart.weak.expect
+++ /dev/null
@@ -1,158 +0,0 @@
-library;
-import self as self;
-import "never_opt_out_lib.dart" as nev;
-import "dart:core" as core;
-
-import "org-dartlang-testcase:///never_opt_out_lib.dart";
-
-class B extends nev::A {
- field core::Null? neverField = null;
- field core::Null? nullField = null;
- synthetic constructor •() → self::B*
- : super nev::A::•()
- ;
- method neverMethod(core::Null? value) → core::Null?
- return value;
- get neverProperty() → core::Null?
- return null;
- set neverProperty(core::Null? value) → void {}
- method nullMethod(core::Null? value) → core::Null?
- return value;
- get nullProperty() → core::Null?
- return null;
- set nullProperty(core::Null? value) → void {}
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class C extends nev::A {
- field Never* neverField = null;
- field Never* nullField = null;
- synthetic constructor •() → self::C*
- : super nev::A::•()
- ;
- method neverMethod(Never* value) → Never*
- return value;
- get neverProperty() → Never*
- return null;
- set neverProperty(Never* value) → void {}
- method nullMethod(Never* value) → Never*
- return value;
- get nullProperty() → Never*
- return null;
- set nullProperty(Never* value) → void {}
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-static field Never* optOutNever;
-static field core::Null? inferredOptOutNever = nev::optInNever;
-static method main() → dynamic {
- Never* localNever = null;
- core::Null? localNull = null;
- Never* inferredLocalNever = nev::optInNever;
- localNever = localNever;
- self::optOutNever = localNever;
- nev::optInNever = localNever;
- localNull = localNever;
- self::inferredOptOutNever = localNever;
- inferredLocalNever = localNever;
- localNever = self::optOutNever;
- self::optOutNever = self::optOutNever;
- nev::optInNever = self::optOutNever;
- localNull = self::optOutNever;
- self::inferredOptOutNever = self::optOutNever;
- inferredLocalNever = self::optOutNever;
- localNever = nev::optInNever;
- self::optOutNever = nev::optInNever;
- nev::optInNever = nev::optInNever;
- localNull = nev::optInNever;
- self::inferredOptOutNever = nev::optInNever;
- inferredLocalNever = nev::optInNever;
- localNever = localNull;
- self::optOutNever = localNull;
- nev::optInNever = localNull as{TypeError} Never;
- localNull = localNull;
- self::inferredOptOutNever = localNull;
- inferredLocalNever = localNull;
- localNever = self::inferredOptOutNever;
- self::optOutNever = self::inferredOptOutNever;
- nev::optInNever = self::inferredOptOutNever as{TypeError} Never;
- localNull = self::inferredOptOutNever;
- self::inferredOptOutNever = self::inferredOptOutNever;
- inferredLocalNever = self::inferredOptOutNever;
- localNever = inferredLocalNever;
- self::optOutNever = inferredLocalNever;
- nev::optInNever = inferredLocalNever;
- localNull = inferredLocalNever;
- self::inferredOptOutNever = inferredLocalNever;
- inferredLocalNever = inferredLocalNever;
- self::throws(() → Never* => self::optOutNever = nev::throwing());
- self::throws(() → Never* => localNever = nev::throwing());
- self::throws(() → Never* => self::optOutNever = nev::throwing());
- self::throws(() → Never* => nev::optInNever = nev::throwing());
- self::throws(() → Never* => self::inferredOptOutNever = nev::throwing());
- self::throws(() → Never* => inferredLocalNever = nev::throwing());
-}
-static method throws(() →* void f) → dynamic {
- try {
- f.call();
- }
- on dynamic catch(final dynamic _) {
- return;
- }
- throw "Expected exception";
-}
-
-library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/never_opt_out_lib.dart:19:28: Error: A value of type 'Type' can't be assigned to a variable of type 'Null'.
-// - 'Type' is from 'dart:core'.
-// Null get nullProperty => Null;
-// ^
-//
-import self as nev;
-import "dart:core" as core;
-import "never_opt_out.dart" as self;
-
-import "org-dartlang-testcase:///never_opt_out.dart";
-
-class A extends core::Object {
- field Never neverField = throw "Should not reach here";
- field core::Null? nullField = null;
- synthetic constructor •() → nev::A
- : super core::Object::•()
- ;
- method neverMethod(Never value) → Never
- return value;
- get neverProperty() → Never
- return throw "Should not reach here";
- set neverProperty(Never value) → void {}
- method nullMethod(core::Null? value) → core::Null?
- return value;
- get nullProperty() → core::Null?
- return let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/nnbd/never_opt_out_lib.dart:19:28: Error: A value of type 'Type' can't be assigned to a variable of type 'Null'.
- - 'Type' is from 'dart:core'.
- Null get nullProperty => Null;
- ^" in core::Null? as{TypeError,ForNonNullableByDefault} core::Null?;
- set nullProperty(core::Null? value) → void {}
-}
-static field Never optInNever = self::optOutNever;
-static method throwing() → Never
- return throw "Never!";
diff --git a/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version.dart.outline.expect b/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version.dart.outline.expect
deleted file mode 100644
index 3442a2d..0000000
--- a/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version.dart.outline.expect
+++ /dev/null
@@ -1,54 +0,0 @@
-library;
-import self as self;
-import "dart:core" as core;
-
-class late extends core::Object {
- synthetic constructor •() → self::late*
- ;
- get g() → core::int*
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class required extends core::Object {
- synthetic constructor •() → self::required*
- ;
- get g() → core::int*
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class C extends core::Object {
- field self::late* l;
- field self::required* r;
- synthetic constructor •() → self::C*
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-static method main() → dynamic
- ;
diff --git a/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version.dart.strong.expect b/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version.dart.strong.expect
deleted file mode 100644
index 34b7b6f..0000000
--- a/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version.dart.strong.expect
+++ /dev/null
@@ -1,61 +0,0 @@
-library;
-import self as self;
-import "dart:core" as core;
-
-class late extends core::Object {
- synthetic constructor •() → self::late*
- : super core::Object::•()
- ;
- get g() → core::int*
- return 1;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class required extends core::Object {
- synthetic constructor •() → self::required*
- : super core::Object::•()
- ;
- get g() → core::int*
- return 2;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class C extends core::Object {
- field self::late* l = new self::late::•();
- field self::required* r = new self::required::•();
- synthetic constructor •() → self::C*
- : super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-static method main() → dynamic {
- if(!new self::C::•().{self::C::l}.{self::late::g}.{core::num::==}(1))
- throw "Expected 1";
- if(!new self::C::•().{self::C::r}.{self::required::g}.{core::num::==}(2))
- throw "Expected 2";
-}
diff --git a/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version.dart.strong.transformed.expect
deleted file mode 100644
index 34b7b6f..0000000
--- a/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version.dart.strong.transformed.expect
+++ /dev/null
@@ -1,61 +0,0 @@
-library;
-import self as self;
-import "dart:core" as core;
-
-class late extends core::Object {
- synthetic constructor •() → self::late*
- : super core::Object::•()
- ;
- get g() → core::int*
- return 1;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class required extends core::Object {
- synthetic constructor •() → self::required*
- : super core::Object::•()
- ;
- get g() → core::int*
- return 2;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class C extends core::Object {
- field self::late* l = new self::late::•();
- field self::required* r = new self::required::•();
- synthetic constructor •() → self::C*
- : super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-static method main() → dynamic {
- if(!new self::C::•().{self::C::l}.{self::late::g}.{core::num::==}(1))
- throw "Expected 1";
- if(!new self::C::•().{self::C::r}.{self::required::g}.{core::num::==}(2))
- throw "Expected 2";
-}
diff --git a/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version_try_to_trick.dart.outline.expect b/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version_try_to_trick.dart.outline.expect
deleted file mode 100644
index 3442a2d..0000000
--- a/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version_try_to_trick.dart.outline.expect
+++ /dev/null
@@ -1,54 +0,0 @@
-library;
-import self as self;
-import "dart:core" as core;
-
-class late extends core::Object {
- synthetic constructor •() → self::late*
- ;
- get g() → core::int*
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class required extends core::Object {
- synthetic constructor •() → self::required*
- ;
- get g() → core::int*
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class C extends core::Object {
- field self::late* l;
- field self::required* r;
- synthetic constructor •() → self::C*
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-static method main() → dynamic
- ;
diff --git a/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version_try_to_trick.dart.strong.expect b/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version_try_to_trick.dart.strong.expect
deleted file mode 100644
index 34b7b6f..0000000
--- a/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version_try_to_trick.dart.strong.expect
+++ /dev/null
@@ -1,61 +0,0 @@
-library;
-import self as self;
-import "dart:core" as core;
-
-class late extends core::Object {
- synthetic constructor •() → self::late*
- : super core::Object::•()
- ;
- get g() → core::int*
- return 1;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class required extends core::Object {
- synthetic constructor •() → self::required*
- : super core::Object::•()
- ;
- get g() → core::int*
- return 2;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class C extends core::Object {
- field self::late* l = new self::late::•();
- field self::required* r = new self::required::•();
- synthetic constructor •() → self::C*
- : super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-static method main() → dynamic {
- if(!new self::C::•().{self::C::l}.{self::late::g}.{core::num::==}(1))
- throw "Expected 1";
- if(!new self::C::•().{self::C::r}.{self::required::g}.{core::num::==}(2))
- throw "Expected 2";
-}
diff --git a/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version_try_to_trick.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version_try_to_trick.dart.strong.transformed.expect
deleted file mode 100644
index 34b7b6f..0000000
--- a/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version_try_to_trick.dart.strong.transformed.expect
+++ /dev/null
@@ -1,61 +0,0 @@
-library;
-import self as self;
-import "dart:core" as core;
-
-class late extends core::Object {
- synthetic constructor •() → self::late*
- : super core::Object::•()
- ;
- get g() → core::int*
- return 1;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class required extends core::Object {
- synthetic constructor •() → self::required*
- : super core::Object::•()
- ;
- get g() → core::int*
- return 2;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class C extends core::Object {
- field self::late* l = new self::late::•();
- field self::required* r = new self::required::•();
- synthetic constructor •() → self::C*
- : super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-static method main() → dynamic {
- if(!new self::C::•().{self::C::l}.{self::late::g}.{core::num::==}(1))
- throw "Expected 1";
- if(!new self::C::•().{self::C::r}.{self::required::g}.{core::num::==}(2))
- throw "Expected 2";
-}
diff --git a/pkg/front_end/testcases/nnbd/no_null_shorting.dart.outline.expect b/pkg/front_end/testcases/nnbd/no_null_shorting.dart.outline.expect
deleted file mode 100644
index 100f3e0..0000000
--- a/pkg/front_end/testcases/nnbd/no_null_shorting.dart.outline.expect
+++ /dev/null
@@ -1,41 +0,0 @@
-library;
-import self as self;
-import "dart:core" as core;
-
-class Class extends core::Object {
- field self::Class* field;
- synthetic constructor •() → self::Class*
- ;
- method method() → self::Class*
- ;
- operator [](self::Class* key) → self::Class*
- ;
- operator []=(self::Class* key, self::Class* value) → void
- ;
- operator +(core::int* value) → self::Class*
- ;
- operator unary-() → self::Class*
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-static method main() → dynamic
- ;
-static method propertyAccess(self::Class* c) → void
- ;
-static method indexAccess(self::Class* c) → void
- ;
-static method operatorAccess(self::Class* c) → void
- ;
-static method ifNull(self::Class* c) → void
- ;
-static method throws(() →* void f) → void
- ;
diff --git a/pkg/front_end/testcases/nnbd/no_null_shorting.dart.strong.expect b/pkg/front_end/testcases/nnbd/no_null_shorting.dart.strong.expect
deleted file mode 100644
index 36152d8..0000000
--- a/pkg/front_end/testcases/nnbd/no_null_shorting.dart.strong.expect
+++ /dev/null
@@ -1,161 +0,0 @@
-library;
-import self as self;
-import "dart:core" as core;
-
-class Class extends core::Object {
- field self::Class* field = null;
- synthetic constructor •() → self::Class*
- : super core::Object::•()
- ;
- method method() → self::Class*
- return this.{self::Class::field};
- operator [](self::Class* key) → self::Class*
- return this.{self::Class::field};
- operator []=(self::Class* key, self::Class* value) → void {
- this.{self::Class::field} = value;
- }
- operator +(core::int* value) → self::Class*
- return this.{self::Class::field};
- operator unary-() → self::Class*
- return this.{self::Class::field};
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-static method main() → dynamic {
- self::propertyAccess(null);
- self::indexAccess(null);
- self::operatorAccess(null);
- self::ifNull(null);
-}
-static method propertyAccess(self::Class* c) → void {
- let final self::Class* #t1 = c in #t1.{self::Class::==}(null) ?{self::Class*} null : #t1.{self::Class::field};
- let final self::Class* #t2 = c in #t2.{self::Class::==}(null) ?{self::Class*} null : #t2.{self::Class::field} = new self::Class::•();
- c = let final self::Class* #t3 = c in #t3.{self::Class::==}(null) ?{self::Class*} null : #t3.{self::Class::field} = new self::Class::•();
- let final self::Class* #t4 = c in #t4.{self::Class::==}(null) ?{self::Class*} null : #t4.{self::Class::method}();
- self::throws(() → self::Class* => (let final self::Class* #t5 = c in #t5.{self::Class::==}(null) ?{self::Class*} null : #t5.{self::Class::field}).{self::Class::field});
- let final self::Class* #t6 = let final self::Class* #t7 = c in #t7.{self::Class::==}(null) ?{self::Class*} null : #t7.{self::Class::field} in #t6.{self::Class::==}(null) ?{self::Class*} null : #t6.{self::Class::field};
- self::throws(() → self::Class* => let final self::Class* #t8 = (let final self::Class* #t9 = c in #t9.{self::Class::==}(null) ?{self::Class*} null : #t9.{self::Class::field}).{self::Class::field} in #t8.{self::Class::==}(null) ?{self::Class*} null : #t8.{self::Class::field});
- self::throws(() → self::Class* => (let final self::Class* #t10 = c in #t10.{self::Class::==}(null) ?{self::Class*} null : #t10.{self::Class::field}).{self::Class::field} = new self::Class::•());
- let final self::Class* #t11 = let final self::Class* #t12 = c in #t12.{self::Class::==}(null) ?{self::Class*} null : #t12.{self::Class::field} in #t11.{self::Class::==}(null) ?{self::Class*} null : #t11.{self::Class::field} = new self::Class::•();
- self::throws(() → self::Class* => let final self::Class* #t13 = (let final self::Class* #t14 = c in #t14.{self::Class::==}(null) ?{self::Class*} null : #t14.{self::Class::field}).{self::Class::field} in #t13.{self::Class::==}(null) ?{self::Class*} null : #t13.{self::Class::field} = new self::Class::•());
- self::throws(() → self::Class* => (let final self::Class* #t15 = c in #t15.{self::Class::==}(null) ?{self::Class*} null : #t15.{self::Class::field}).{self::Class::field});
- self::throws(() → self::Class* => (let final self::Class* #t16 = c in #t16.{self::Class::==}(null) ?{self::Class*} null : #t16.{self::Class::field} = new self::Class::•()).{self::Class::field});
- self::throws(() → self::Class* => (let final self::Class* #t17 = c in #t17.{self::Class::==}(null) ?{self::Class*} null : #t17.{self::Class::method}()).{self::Class::field});
- self::throws(() → self::Class* => c = (let final self::Class* #t18 = c in #t18.{self::Class::==}(null) ?{self::Class*} null : #t18.{self::Class::field}).{self::Class::field} = new self::Class::•());
- c = let final self::Class* #t19 = let final self::Class* #t20 = c in #t20.{self::Class::==}(null) ?{self::Class*} null : #t20.{self::Class::field} in #t19.{self::Class::==}(null) ?{self::Class*} null : #t19.{self::Class::field} = new self::Class::•();
- self::throws(() → self::Class* => c = let final self::Class* #t21 = (let final self::Class* #t22 = c in #t22.{self::Class::==}(null) ?{self::Class*} null : #t22.{self::Class::field}).{self::Class::field} in #t21.{self::Class::==}(null) ?{self::Class*} null : #t21.{self::Class::field} = new self::Class::•());
- self::throws(() → self::Class* => (let final self::Class* #t23 = c in #t23.{self::Class::==}(null) ?{self::Class*} null : #t23.{self::Class::field}).{self::Class::method}());
- let final self::Class* #t24 = c in #t24.{self::Class::==}(null) ?{self::Class*} null : #t24.{self::Class::field} = new self::Class::•().{self::Class::field};
- c = let final self::Class* #t25 = c in #t25.{self::Class::==}(null) ?{self::Class*} null : #t25.{self::Class::field} = new self::Class::•().{self::Class::field};
- let final self::Class* #t26 = c in #t26.{self::Class::==}(null) ?{self::Class*} null : #t26.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
- c = let final self::Class* #t27 = c in #t27.{self::Class::==}(null) ?{self::Class*} null : #t27.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
- let final self::Class* #t28 = c in #t28.{self::Class::==}(null) ?{self::Class*} null : #t28.{self::Class::field} = new self::Class::•().{self::Class::method}();
- c = let final self::Class* #t29 = c in #t29.{self::Class::==}(null) ?{self::Class*} null : #t29.{self::Class::field} = new self::Class::•().{self::Class::method}();
- self::throws(() → self::Class* => (let final self::Class* #t30 = c in #t30.{self::Class::==}(null) ?{self::Class*} null : #t30.{self::Class::method}()).{self::Class::field});
- self::throws(() → self::Class* => (let final self::Class* #t31 = c in #t31.{self::Class::==}(null) ?{self::Class*} null : #t31.{self::Class::method}()).{self::Class::field} = new self::Class::•());
- self::throws(() → self::Class* => (let final self::Class* #t32 = c in #t32.{self::Class::==}(null) ?{self::Class*} null : #t32.{self::Class::method}()).{self::Class::method}());
- self::throws(() → self::Class* => (let final self::Class* #t33 = c in #t33.{self::Class::==}(null) ?{self::Class*} null : #t33.{self::Class::field}).{self::Class::field}.{self::Class::field});
- self::throws(() → self::Class* => (let final self::Class* #t34 = c in #t34.{self::Class::==}(null) ?{self::Class*} null : #t34.{self::Class::field}).{self::Class::field}.{self::Class::field} = new self::Class::•());
- self::throws(() → self::Class* => c = (let final self::Class* #t35 = c in #t35.{self::Class::==}(null) ?{self::Class*} null : #t35.{self::Class::field}).{self::Class::field}.{self::Class::field} = new self::Class::•());
- self::throws(() → self::Class* => (let final self::Class* #t36 = c in #t36.{self::Class::==}(null) ?{self::Class*} null : #t36.{self::Class::field}).{self::Class::field}.{self::Class::method}());
- let final self::Class* #t37 = c in #t37.{self::Class::==}(null) ?{self::Class*} null : #t37.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::field};
- c = let final self::Class* #t38 = c in #t38.{self::Class::==}(null) ?{self::Class*} null : #t38.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::field};
- let final self::Class* #t39 = c in #t39.{self::Class::==}(null) ?{self::Class*} null : #t39.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::field} = new self::Class::•();
- c = let final self::Class* #t40 = c in #t40.{self::Class::==}(null) ?{self::Class*} null : #t40.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::field} = new self::Class::•();
- let final self::Class* #t41 = c in #t41.{self::Class::==}(null) ?{self::Class*} null : #t41.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::method}();
- c = let final self::Class* #t42 = c in #t42.{self::Class::==}(null) ?{self::Class*} null : #t42.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::method}();
- self::throws(() → self::Class* => (let final self::Class* #t43 = c in #t43.{self::Class::==}(null) ?{self::Class*} null : #t43.{self::Class::method}()).{self::Class::field}.{self::Class::field});
- self::throws(() → self::Class* => (let final self::Class* #t44 = c in #t44.{self::Class::==}(null) ?{self::Class*} null : #t44.{self::Class::method}()).{self::Class::field}.{self::Class::field} = new self::Class::•());
- self::throws(() → self::Class* => (let final self::Class* #t45 = c in #t45.{self::Class::==}(null) ?{self::Class*} null : #t45.{self::Class::method}()).{self::Class::field}.{self::Class::method}());
- self::throws(() → self::Class* => (let final self::Class* #t46 = c in #t46.{self::Class::==}(null) ?{self::Class*} null : #t46.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::field});
- self::throws(() → self::Class* => c = (let final self::Class* #t47 = c in #t47.{self::Class::==}(null) ?{self::Class*} null : #t47.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::field});
- self::throws(() → self::Class* => (let final self::Class* #t48 = c in #t48.{self::Class::==}(null) ?{self::Class*} null : #t48.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
- self::throws(() → self::Class* => c = (let final self::Class* #t49 = c in #t49.{self::Class::==}(null) ?{self::Class*} null : #t49.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
- self::throws(() → self::Class* => (let final self::Class* #t50 = c in #t50.{self::Class::==}(null) ?{self::Class*} null : #t50.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::method}());
- self::throws(() → self::Class* => c = (let final self::Class* #t51 = c in #t51.{self::Class::==}(null) ?{self::Class*} null : #t51.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::method}());
- let final self::Class* #t52 = c in #t52.{self::Class::==}(null) ?{self::Class*} null : #t52.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field};
- c = let final self::Class* #t53 = c in #t53.{self::Class::==}(null) ?{self::Class*} null : #t53.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field};
- let final self::Class* #t54 = c in #t54.{self::Class::==}(null) ?{self::Class*} null : #t54.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
- c = let final self::Class* #t55 = c in #t55.{self::Class::==}(null) ?{self::Class*} null : #t55.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
- let final self::Class* #t56 = c in #t56.{self::Class::==}(null) ?{self::Class*} null : #t56.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::method}();
- c = let final self::Class* #t57 = c in #t57.{self::Class::==}(null) ?{self::Class*} null : #t57.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::method}();
- self::throws(() → self::Class* => (let final self::Class* #t58 = c in #t58.{self::Class::==}(null) ?{self::Class*} null : #t58.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::field});
- self::throws(() → self::Class* => c = (let final self::Class* #t59 = c in #t59.{self::Class::==}(null) ?{self::Class*} null : #t59.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::field});
- self::throws(() → self::Class* => (let final self::Class* #t60 = c in #t60.{self::Class::==}(null) ?{self::Class*} null : #t60.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
- self::throws(() → self::Class* => c = (let final self::Class* #t61 = c in #t61.{self::Class::==}(null) ?{self::Class*} null : #t61.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
- self::throws(() → self::Class* => (let final self::Class* #t62 = c in #t62.{self::Class::==}(null) ?{self::Class*} null : #t62.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::method}());
- self::throws(() → self::Class* => c = (let final self::Class* #t63 = c in #t63.{self::Class::==}(null) ?{self::Class*} null : #t63.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::method}());
- self::throws(() → self::Class* => (let final self::Class* #t64 = c in #t64.{self::Class::==}(null) ?{self::Class*} null : #t64.{self::Class::field}).{self::Class::method}().{self::Class::field});
- self::throws(() → self::Class* => (let final self::Class* #t65 = c in #t65.{self::Class::==}(null) ?{self::Class*} null : #t65.{self::Class::field}).{self::Class::method}().{self::Class::field} = new self::Class::•());
- self::throws(() → self::Class* => c = (let final self::Class* #t66 = c in #t66.{self::Class::==}(null) ?{self::Class*} null : #t66.{self::Class::field}).{self::Class::method}().{self::Class::field} = new self::Class::•());
- self::throws(() → self::Class* => (let final self::Class* #t67 = c in #t67.{self::Class::==}(null) ?{self::Class*} null : #t67.{self::Class::field}).{self::Class::method}().{self::Class::method}());
- let final self::Class* #t68 = c in #t68.{self::Class::==}(null) ?{self::Class*} null : #t68.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::field};
- c = let final self::Class* #t69 = c in #t69.{self::Class::==}(null) ?{self::Class*} null : #t69.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::field};
- let final self::Class* #t70 = c in #t70.{self::Class::==}(null) ?{self::Class*} null : #t70.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::field} = new self::Class::•();
- c = let final self::Class* #t71 = c in #t71.{self::Class::==}(null) ?{self::Class*} null : #t71.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::field} = new self::Class::•();
- let final self::Class* #t72 = c in #t72.{self::Class::==}(null) ?{self::Class*} null : #t72.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::method}();
- c = let final self::Class* #t73 = c in #t73.{self::Class::==}(null) ?{self::Class*} null : #t73.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::method}();
- self::throws(() → self::Class* => (let final self::Class* #t74 = c in #t74.{self::Class::==}(null) ?{self::Class*} null : #t74.{self::Class::method}()).{self::Class::method}().{self::Class::field});
- self::throws(() → self::Class* => (let final self::Class* #t75 = c in #t75.{self::Class::==}(null) ?{self::Class*} null : #t75.{self::Class::method}()).{self::Class::method}().{self::Class::field} = new self::Class::•());
- self::throws(() → self::Class* => (let final self::Class* #t76 = c in #t76.{self::Class::==}(null) ?{self::Class*} null : #t76.{self::Class::method}()).{self::Class::method}().{self::Class::method}());
- let final self::Class* #t77 = let final self::Class* #t78 = c in #t78.{self::Class::==}(null) ?{self::Class*} null : #t78.{self::Class::method}() in #t77.{self::Class::==}(null) ?{self::Class*} null : #t77.{self::Class::method}();
-}
-static method indexAccess(self::Class* c) → void {
- self::throws(() → self::Class* => (let final self::Class* #t79 = c in #t79.{self::Class::==}(null) ?{self::Class*} null : #t79.{self::Class::field}).{self::Class::[]}(c));
- self::throws(() → self::Class* => let final self::Class* #t80 = let final self::Class* #t81 = c in #t81.{self::Class::==}(null) ?{self::Class*} null : #t81.{self::Class::field} in let final self::Class* #t82 = c in let final self::Class* #t83 = new self::Class::•() in let final void #t84 = #t80.{self::Class::[]=}(#t82, #t83) in #t83);
- self::throws(() → self::Class* => c = let final self::Class* #t85 = let final self::Class* #t86 = c in #t86.{self::Class::==}(null) ?{self::Class*} null : #t86.{self::Class::field} in let final self::Class* #t87 = c in let final self::Class* #t88 = new self::Class::•() in let final void #t89 = #t85.{self::Class::[]=}(#t87, #t88) in #t88);
- self::throws(() → self::Class* => (let final self::Class* #t90 = c in #t90.{self::Class::==}(null) ?{self::Class*} null : #t90.{self::Class::field}).{self::Class::[]}(c).{self::Class::method}());
- self::throws(() → self::Class* => let final self::Class* #t91 = let final self::Class* #t92 = c in #t92.{self::Class::==}(null) ?{self::Class*} null : #t92.{self::Class::field} in let final self::Class* #t93 = c in let final self::Class* #t94 = #t91.{self::Class::[]}(#t93).{self::Class::+}(0) in let final void #t95 = #t91.{self::Class::[]=}(#t93, #t94) in #t94);
- self::throws(() → self::Class* => c = let final self::Class* #t96 = let final self::Class* #t97 = c in #t97.{self::Class::==}(null) ?{self::Class*} null : #t97.{self::Class::field} in let final self::Class* #t98 = c in let final self::Class* #t99 = #t96.{self::Class::[]}(#t98).{self::Class::+}(0) in let final void #t100 = #t96.{self::Class::[]=}(#t98, #t99) in #t99);
- self::throws(() → self::Class* => let final self::Class* #t101 = let final self::Class* #t102 = c in #t102.{self::Class::==}(null) ?{self::Class*} null : #t102.{self::Class::field} in let final self::Class* #t103 = c in let final self::Class* #t104 = #t101.{self::Class::[]}(#t103) in let final void #t105 = #t101.{self::Class::[]=}(#t103, #t104.{self::Class::+}(1)) in #t104);
- self::throws(() → self::Class* => c = let final self::Class* #t106 = let final self::Class* #t107 = c in #t107.{self::Class::==}(null) ?{self::Class*} null : #t107.{self::Class::field} in let final self::Class* #t108 = c in let final self::Class* #t109 = #t106.{self::Class::[]}(#t108) in let final void #t110 = #t106.{self::Class::[]=}(#t108, #t109.{self::Class::+}(1)) in #t109);
- self::throws(() → self::Class* => let final self::Class* #t111 = let final self::Class* #t112 = c in #t112.{self::Class::==}(null) ?{self::Class*} null : #t112.{self::Class::field} in let final self::Class* #t113 = c in let final self::Class* #t114 = #t111.{self::Class::[]}(#t113).{self::Class::+}(1) in let final void #t115 = #t111.{self::Class::[]=}(#t113, #t114) in #t114);
- self::throws(() → self::Class* => c = let final self::Class* #t116 = let final self::Class* #t117 = c in #t117.{self::Class::==}(null) ?{self::Class*} null : #t117.{self::Class::field} in let final self::Class* #t118 = c in let final self::Class* #t119 = #t116.{self::Class::[]}(#t118).{self::Class::+}(1) in let final void #t120 = #t116.{self::Class::[]=}(#t118, #t119) in #t119);
- self::throws(() → self::Class* => (let final self::Class* #t121 = c in #t121.{self::Class::==}(null) ?{self::Class*} null : #t121.{self::Class::field}).{self::Class::[]}(c).{self::Class::[]}(c));
- self::throws(() → self::Class* => let final self::Class* #t122 = (let final self::Class* #t123 = c in #t123.{self::Class::==}(null) ?{self::Class*} null : #t123.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t124 = c in let final self::Class* #t125 = new self::Class::•() in let final void #t126 = #t122.{self::Class::[]=}(#t124, #t125) in #t125);
- self::throws(() → self::Class* => c = let final self::Class* #t127 = (let final self::Class* #t128 = c in #t128.{self::Class::==}(null) ?{self::Class*} null : #t128.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t129 = c in let final self::Class* #t130 = new self::Class::•() in let final void #t131 = #t127.{self::Class::[]=}(#t129, #t130) in #t130);
- self::throws(() → self::Class* => (let final self::Class* #t132 = c in #t132.{self::Class::==}(null) ?{self::Class*} null : #t132.{self::Class::field}).{self::Class::[]}(c).{self::Class::[]}(c).{self::Class::method}());
- self::throws(() → self::Class* => let final self::Class* #t133 = (let final self::Class* #t134 = c in #t134.{self::Class::==}(null) ?{self::Class*} null : #t134.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t135 = c in let final self::Class* #t136 = #t133.{self::Class::[]}(#t135).{self::Class::+}(0) in let final void #t137 = #t133.{self::Class::[]=}(#t135, #t136) in #t136);
- self::throws(() → self::Class* => c = let final self::Class* #t138 = (let final self::Class* #t139 = c in #t139.{self::Class::==}(null) ?{self::Class*} null : #t139.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t140 = c in let final self::Class* #t141 = #t138.{self::Class::[]}(#t140).{self::Class::+}(0) in let final void #t142 = #t138.{self::Class::[]=}(#t140, #t141) in #t141);
- self::throws(() → self::Class* => let final self::Class* #t143 = (let final self::Class* #t144 = c in #t144.{self::Class::==}(null) ?{self::Class*} null : #t144.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t145 = c in let final self::Class* #t146 = #t143.{self::Class::[]}(#t145) in let final void #t147 = #t143.{self::Class::[]=}(#t145, #t146.{self::Class::+}(1)) in #t146);
- self::throws(() → self::Class* => c = let final self::Class* #t148 = (let final self::Class* #t149 = c in #t149.{self::Class::==}(null) ?{self::Class*} null : #t149.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t150 = c in let final self::Class* #t151 = #t148.{self::Class::[]}(#t150) in let final void #t152 = #t148.{self::Class::[]=}(#t150, #t151.{self::Class::+}(1)) in #t151);
- self::throws(() → self::Class* => let final self::Class* #t153 = (let final self::Class* #t154 = c in #t154.{self::Class::==}(null) ?{self::Class*} null : #t154.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t155 = c in let final self::Class* #t156 = #t153.{self::Class::[]}(#t155).{self::Class::+}(1) in let final void #t157 = #t153.{self::Class::[]=}(#t155, #t156) in #t156);
- self::throws(() → self::Class* => c = let final self::Class* #t158 = (let final self::Class* #t159 = c in #t159.{self::Class::==}(null) ?{self::Class*} null : #t159.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t160 = c in let final self::Class* #t161 = #t158.{self::Class::[]}(#t160).{self::Class::+}(1) in let final void #t162 = #t158.{self::Class::[]=}(#t160, #t161) in #t161);
-}
-static method operatorAccess(self::Class* c) → void {
- self::throws(() → self::Class* => (let final self::Class* #t163 = c in #t163.{self::Class::==}(null) ?{self::Class*} null : #t163.{self::Class::field}).{self::Class::+}(0));
- self::throws(() → self::Class* => (let final self::Class* #t164 = c in #t164.{self::Class::==}(null) ?{self::Class*} null : #t164.{self::Class::field}).{self::Class::unary-}());
- let final self::Class* #t165 = c in #t165.{self::Class::==}(null) ?{self::Class*} null : #t165.{self::Class::field} = #t165.{self::Class::field}.{self::Class::+}(0);
- c = let final self::Class* #t166 = c in #t166.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t167 = #t166.{self::Class::field}.{self::Class::+}(0) in let final void #t168 = #t166.{self::Class::field} = #t167 in #t167;
- self::throws(() → self::Class* => let final self::Class* #t169 = let final self::Class* #t170 = c in #t170.{self::Class::==}(null) ?{self::Class*} null : #t170.{self::Class::field} in #t169.{self::Class::field} = #t169.{self::Class::field}.{self::Class::+}(0));
- self::throws(() → self::Class* => c = let final self::Class* #t171 = let final self::Class* #t172 = c in #t172.{self::Class::==}(null) ?{self::Class*} null : #t172.{self::Class::field} in #t171.{self::Class::field} = #t171.{self::Class::field}.{self::Class::+}(0));
- let final self::Class* #t173 = c in #t173.{self::Class::==}(null) ?{self::Class*} null : #t173.{self::Class::field} = #t173.{self::Class::field}.{self::Class::+}(1);
- c = let final self::Class* #t174 = c in #t174.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t175 = #t174.{self::Class::field} in let final void #t176 = #t174.{self::Class::field} = #t175.{self::Class::+}(1) in #t175;
- let final self::Class* #t177 = c in #t177.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t178 = #t177.{self::Class::field}.{self::Class::+}(1) in let final void #t179 = #t177.{self::Class::field} = #t178 in #t178;
- c = let final self::Class* #t180 = c in #t180.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t181 = #t180.{self::Class::field}.{self::Class::+}(1) in let final void #t182 = #t180.{self::Class::field} = #t181 in #t181;
-}
-static method ifNull(self::Class* c) → void {
- let final self::Class* #t183 = c in #t183.{self::Class::==}(null) ?{self::Class*} null : #t183.{self::Class::field}.{self::Class::==}(null) ?{self::Class*} #t183.{self::Class::field} = c : null;
- c = let final self::Class* #t184 = c in #t184.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t185 = #t184.{self::Class::field} in #t185.{self::Class::==}(null) ?{self::Class*} #t184.{self::Class::field} = c : #t185;
- self::throws(() → self::Class* => let final self::Class* #t186 = let final self::Class* #t187 = c in #t187.{self::Class::==}(null) ?{self::Class*} null : #t187.{self::Class::field} in let final self::Class* #t188 = #t186.{self::Class::field} in #t188.{self::Class::==}(null) ?{self::Class*} #t186.{self::Class::field} = c : #t188);
- self::throws(() → self::Class* => c = let final self::Class* #t189 = let final self::Class* #t190 = c in #t190.{self::Class::==}(null) ?{self::Class*} null : #t190.{self::Class::field} in let final self::Class* #t191 = #t189.{self::Class::field} in #t191.{self::Class::==}(null) ?{self::Class*} #t189.{self::Class::field} = c : #t191);
- self::throws(() → self::Class* => let final self::Class* #t192 = let final self::Class* #t193 = c in #t193.{self::Class::==}(null) ?{self::Class*} null : #t193.{self::Class::field} in let final self::Class* #t194 = c in let final self::Class* #t195 = #t192.{self::Class::[]}(#t194) in #t195.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t196 = c in let final void #t197 = #t192.{self::Class::[]=}(#t194, #t196) in #t196 : #t195);
- self::throws(() → self::Class* => c = let final self::Class* #t198 = let final self::Class* #t199 = c in #t199.{self::Class::==}(null) ?{self::Class*} null : #t199.{self::Class::field} in let final self::Class* #t200 = c in let final self::Class* #t201 = #t198.{self::Class::[]}(#t200) in #t201.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t202 = c in let final void #t203 = #t198.{self::Class::[]=}(#t200, #t202) in #t202 : #t201);
-}
-static method throws(() →* void f) → void {
- try {
- f.call();
- }
- on dynamic catch(final dynamic _) {
- return;
- }
- throw "Expected exception.";
-}
diff --git a/pkg/front_end/testcases/nnbd/no_null_shorting.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/no_null_shorting.dart.strong.transformed.expect
deleted file mode 100644
index 36152d8..0000000
--- a/pkg/front_end/testcases/nnbd/no_null_shorting.dart.strong.transformed.expect
+++ /dev/null
@@ -1,161 +0,0 @@
-library;
-import self as self;
-import "dart:core" as core;
-
-class Class extends core::Object {
- field self::Class* field = null;
- synthetic constructor •() → self::Class*
- : super core::Object::•()
- ;
- method method() → self::Class*
- return this.{self::Class::field};
- operator [](self::Class* key) → self::Class*
- return this.{self::Class::field};
- operator []=(self::Class* key, self::Class* value) → void {
- this.{self::Class::field} = value;
- }
- operator +(core::int* value) → self::Class*
- return this.{self::Class::field};
- operator unary-() → self::Class*
- return this.{self::Class::field};
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-static method main() → dynamic {
- self::propertyAccess(null);
- self::indexAccess(null);
- self::operatorAccess(null);
- self::ifNull(null);
-}
-static method propertyAccess(self::Class* c) → void {
- let final self::Class* #t1 = c in #t1.{self::Class::==}(null) ?{self::Class*} null : #t1.{self::Class::field};
- let final self::Class* #t2 = c in #t2.{self::Class::==}(null) ?{self::Class*} null : #t2.{self::Class::field} = new self::Class::•();
- c = let final self::Class* #t3 = c in #t3.{self::Class::==}(null) ?{self::Class*} null : #t3.{self::Class::field} = new self::Class::•();
- let final self::Class* #t4 = c in #t4.{self::Class::==}(null) ?{self::Class*} null : #t4.{self::Class::method}();
- self::throws(() → self::Class* => (let final self::Class* #t5 = c in #t5.{self::Class::==}(null) ?{self::Class*} null : #t5.{self::Class::field}).{self::Class::field});
- let final self::Class* #t6 = let final self::Class* #t7 = c in #t7.{self::Class::==}(null) ?{self::Class*} null : #t7.{self::Class::field} in #t6.{self::Class::==}(null) ?{self::Class*} null : #t6.{self::Class::field};
- self::throws(() → self::Class* => let final self::Class* #t8 = (let final self::Class* #t9 = c in #t9.{self::Class::==}(null) ?{self::Class*} null : #t9.{self::Class::field}).{self::Class::field} in #t8.{self::Class::==}(null) ?{self::Class*} null : #t8.{self::Class::field});
- self::throws(() → self::Class* => (let final self::Class* #t10 = c in #t10.{self::Class::==}(null) ?{self::Class*} null : #t10.{self::Class::field}).{self::Class::field} = new self::Class::•());
- let final self::Class* #t11 = let final self::Class* #t12 = c in #t12.{self::Class::==}(null) ?{self::Class*} null : #t12.{self::Class::field} in #t11.{self::Class::==}(null) ?{self::Class*} null : #t11.{self::Class::field} = new self::Class::•();
- self::throws(() → self::Class* => let final self::Class* #t13 = (let final self::Class* #t14 = c in #t14.{self::Class::==}(null) ?{self::Class*} null : #t14.{self::Class::field}).{self::Class::field} in #t13.{self::Class::==}(null) ?{self::Class*} null : #t13.{self::Class::field} = new self::Class::•());
- self::throws(() → self::Class* => (let final self::Class* #t15 = c in #t15.{self::Class::==}(null) ?{self::Class*} null : #t15.{self::Class::field}).{self::Class::field});
- self::throws(() → self::Class* => (let final self::Class* #t16 = c in #t16.{self::Class::==}(null) ?{self::Class*} null : #t16.{self::Class::field} = new self::Class::•()).{self::Class::field});
- self::throws(() → self::Class* => (let final self::Class* #t17 = c in #t17.{self::Class::==}(null) ?{self::Class*} null : #t17.{self::Class::method}()).{self::Class::field});
- self::throws(() → self::Class* => c = (let final self::Class* #t18 = c in #t18.{self::Class::==}(null) ?{self::Class*} null : #t18.{self::Class::field}).{self::Class::field} = new self::Class::•());
- c = let final self::Class* #t19 = let final self::Class* #t20 = c in #t20.{self::Class::==}(null) ?{self::Class*} null : #t20.{self::Class::field} in #t19.{self::Class::==}(null) ?{self::Class*} null : #t19.{self::Class::field} = new self::Class::•();
- self::throws(() → self::Class* => c = let final self::Class* #t21 = (let final self::Class* #t22 = c in #t22.{self::Class::==}(null) ?{self::Class*} null : #t22.{self::Class::field}).{self::Class::field} in #t21.{self::Class::==}(null) ?{self::Class*} null : #t21.{self::Class::field} = new self::Class::•());
- self::throws(() → self::Class* => (let final self::Class* #t23 = c in #t23.{self::Class::==}(null) ?{self::Class*} null : #t23.{self::Class::field}).{self::Class::method}());
- let final self::Class* #t24 = c in #t24.{self::Class::==}(null) ?{self::Class*} null : #t24.{self::Class::field} = new self::Class::•().{self::Class::field};
- c = let final self::Class* #t25 = c in #t25.{self::Class::==}(null) ?{self::Class*} null : #t25.{self::Class::field} = new self::Class::•().{self::Class::field};
- let final self::Class* #t26 = c in #t26.{self::Class::==}(null) ?{self::Class*} null : #t26.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
- c = let final self::Class* #t27 = c in #t27.{self::Class::==}(null) ?{self::Class*} null : #t27.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
- let final self::Class* #t28 = c in #t28.{self::Class::==}(null) ?{self::Class*} null : #t28.{self::Class::field} = new self::Class::•().{self::Class::method}();
- c = let final self::Class* #t29 = c in #t29.{self::Class::==}(null) ?{self::Class*} null : #t29.{self::Class::field} = new self::Class::•().{self::Class::method}();
- self::throws(() → self::Class* => (let final self::Class* #t30 = c in #t30.{self::Class::==}(null) ?{self::Class*} null : #t30.{self::Class::method}()).{self::Class::field});
- self::throws(() → self::Class* => (let final self::Class* #t31 = c in #t31.{self::Class::==}(null) ?{self::Class*} null : #t31.{self::Class::method}()).{self::Class::field} = new self::Class::•());
- self::throws(() → self::Class* => (let final self::Class* #t32 = c in #t32.{self::Class::==}(null) ?{self::Class*} null : #t32.{self::Class::method}()).{self::Class::method}());
- self::throws(() → self::Class* => (let final self::Class* #t33 = c in #t33.{self::Class::==}(null) ?{self::Class*} null : #t33.{self::Class::field}).{self::Class::field}.{self::Class::field});
- self::throws(() → self::Class* => (let final self::Class* #t34 = c in #t34.{self::Class::==}(null) ?{self::Class*} null : #t34.{self::Class::field}).{self::Class::field}.{self::Class::field} = new self::Class::•());
- self::throws(() → self::Class* => c = (let final self::Class* #t35 = c in #t35.{self::Class::==}(null) ?{self::Class*} null : #t35.{self::Class::field}).{self::Class::field}.{self::Class::field} = new self::Class::•());
- self::throws(() → self::Class* => (let final self::Class* #t36 = c in #t36.{self::Class::==}(null) ?{self::Class*} null : #t36.{self::Class::field}).{self::Class::field}.{self::Class::method}());
- let final self::Class* #t37 = c in #t37.{self::Class::==}(null) ?{self::Class*} null : #t37.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::field};
- c = let final self::Class* #t38 = c in #t38.{self::Class::==}(null) ?{self::Class*} null : #t38.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::field};
- let final self::Class* #t39 = c in #t39.{self::Class::==}(null) ?{self::Class*} null : #t39.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::field} = new self::Class::•();
- c = let final self::Class* #t40 = c in #t40.{self::Class::==}(null) ?{self::Class*} null : #t40.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::field} = new self::Class::•();
- let final self::Class* #t41 = c in #t41.{self::Class::==}(null) ?{self::Class*} null : #t41.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::method}();
- c = let final self::Class* #t42 = c in #t42.{self::Class::==}(null) ?{self::Class*} null : #t42.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::method}();
- self::throws(() → self::Class* => (let final self::Class* #t43 = c in #t43.{self::Class::==}(null) ?{self::Class*} null : #t43.{self::Class::method}()).{self::Class::field}.{self::Class::field});
- self::throws(() → self::Class* => (let final self::Class* #t44 = c in #t44.{self::Class::==}(null) ?{self::Class*} null : #t44.{self::Class::method}()).{self::Class::field}.{self::Class::field} = new self::Class::•());
- self::throws(() → self::Class* => (let final self::Class* #t45 = c in #t45.{self::Class::==}(null) ?{self::Class*} null : #t45.{self::Class::method}()).{self::Class::field}.{self::Class::method}());
- self::throws(() → self::Class* => (let final self::Class* #t46 = c in #t46.{self::Class::==}(null) ?{self::Class*} null : #t46.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::field});
- self::throws(() → self::Class* => c = (let final self::Class* #t47 = c in #t47.{self::Class::==}(null) ?{self::Class*} null : #t47.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::field});
- self::throws(() → self::Class* => (let final self::Class* #t48 = c in #t48.{self::Class::==}(null) ?{self::Class*} null : #t48.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
- self::throws(() → self::Class* => c = (let final self::Class* #t49 = c in #t49.{self::Class::==}(null) ?{self::Class*} null : #t49.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
- self::throws(() → self::Class* => (let final self::Class* #t50 = c in #t50.{self::Class::==}(null) ?{self::Class*} null : #t50.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::method}());
- self::throws(() → self::Class* => c = (let final self::Class* #t51 = c in #t51.{self::Class::==}(null) ?{self::Class*} null : #t51.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::method}());
- let final self::Class* #t52 = c in #t52.{self::Class::==}(null) ?{self::Class*} null : #t52.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field};
- c = let final self::Class* #t53 = c in #t53.{self::Class::==}(null) ?{self::Class*} null : #t53.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field};
- let final self::Class* #t54 = c in #t54.{self::Class::==}(null) ?{self::Class*} null : #t54.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
- c = let final self::Class* #t55 = c in #t55.{self::Class::==}(null) ?{self::Class*} null : #t55.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
- let final self::Class* #t56 = c in #t56.{self::Class::==}(null) ?{self::Class*} null : #t56.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::method}();
- c = let final self::Class* #t57 = c in #t57.{self::Class::==}(null) ?{self::Class*} null : #t57.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::method}();
- self::throws(() → self::Class* => (let final self::Class* #t58 = c in #t58.{self::Class::==}(null) ?{self::Class*} null : #t58.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::field});
- self::throws(() → self::Class* => c = (let final self::Class* #t59 = c in #t59.{self::Class::==}(null) ?{self::Class*} null : #t59.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::field});
- self::throws(() → self::Class* => (let final self::Class* #t60 = c in #t60.{self::Class::==}(null) ?{self::Class*} null : #t60.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
- self::throws(() → self::Class* => c = (let final self::Class* #t61 = c in #t61.{self::Class::==}(null) ?{self::Class*} null : #t61.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
- self::throws(() → self::Class* => (let final self::Class* #t62 = c in #t62.{self::Class::==}(null) ?{self::Class*} null : #t62.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::method}());
- self::throws(() → self::Class* => c = (let final self::Class* #t63 = c in #t63.{self::Class::==}(null) ?{self::Class*} null : #t63.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::method}());
- self::throws(() → self::Class* => (let final self::Class* #t64 = c in #t64.{self::Class::==}(null) ?{self::Class*} null : #t64.{self::Class::field}).{self::Class::method}().{self::Class::field});
- self::throws(() → self::Class* => (let final self::Class* #t65 = c in #t65.{self::Class::==}(null) ?{self::Class*} null : #t65.{self::Class::field}).{self::Class::method}().{self::Class::field} = new self::Class::•());
- self::throws(() → self::Class* => c = (let final self::Class* #t66 = c in #t66.{self::Class::==}(null) ?{self::Class*} null : #t66.{self::Class::field}).{self::Class::method}().{self::Class::field} = new self::Class::•());
- self::throws(() → self::Class* => (let final self::Class* #t67 = c in #t67.{self::Class::==}(null) ?{self::Class*} null : #t67.{self::Class::field}).{self::Class::method}().{self::Class::method}());
- let final self::Class* #t68 = c in #t68.{self::Class::==}(null) ?{self::Class*} null : #t68.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::field};
- c = let final self::Class* #t69 = c in #t69.{self::Class::==}(null) ?{self::Class*} null : #t69.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::field};
- let final self::Class* #t70 = c in #t70.{self::Class::==}(null) ?{self::Class*} null : #t70.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::field} = new self::Class::•();
- c = let final self::Class* #t71 = c in #t71.{self::Class::==}(null) ?{self::Class*} null : #t71.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::field} = new self::Class::•();
- let final self::Class* #t72 = c in #t72.{self::Class::==}(null) ?{self::Class*} null : #t72.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::method}();
- c = let final self::Class* #t73 = c in #t73.{self::Class::==}(null) ?{self::Class*} null : #t73.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::method}();
- self::throws(() → self::Class* => (let final self::Class* #t74 = c in #t74.{self::Class::==}(null) ?{self::Class*} null : #t74.{self::Class::method}()).{self::Class::method}().{self::Class::field});
- self::throws(() → self::Class* => (let final self::Class* #t75 = c in #t75.{self::Class::==}(null) ?{self::Class*} null : #t75.{self::Class::method}()).{self::Class::method}().{self::Class::field} = new self::Class::•());
- self::throws(() → self::Class* => (let final self::Class* #t76 = c in #t76.{self::Class::==}(null) ?{self::Class*} null : #t76.{self::Class::method}()).{self::Class::method}().{self::Class::method}());
- let final self::Class* #t77 = let final self::Class* #t78 = c in #t78.{self::Class::==}(null) ?{self::Class*} null : #t78.{self::Class::method}() in #t77.{self::Class::==}(null) ?{self::Class*} null : #t77.{self::Class::method}();
-}
-static method indexAccess(self::Class* c) → void {
- self::throws(() → self::Class* => (let final self::Class* #t79 = c in #t79.{self::Class::==}(null) ?{self::Class*} null : #t79.{self::Class::field}).{self::Class::[]}(c));
- self::throws(() → self::Class* => let final self::Class* #t80 = let final self::Class* #t81 = c in #t81.{self::Class::==}(null) ?{self::Class*} null : #t81.{self::Class::field} in let final self::Class* #t82 = c in let final self::Class* #t83 = new self::Class::•() in let final void #t84 = #t80.{self::Class::[]=}(#t82, #t83) in #t83);
- self::throws(() → self::Class* => c = let final self::Class* #t85 = let final self::Class* #t86 = c in #t86.{self::Class::==}(null) ?{self::Class*} null : #t86.{self::Class::field} in let final self::Class* #t87 = c in let final self::Class* #t88 = new self::Class::•() in let final void #t89 = #t85.{self::Class::[]=}(#t87, #t88) in #t88);
- self::throws(() → self::Class* => (let final self::Class* #t90 = c in #t90.{self::Class::==}(null) ?{self::Class*} null : #t90.{self::Class::field}).{self::Class::[]}(c).{self::Class::method}());
- self::throws(() → self::Class* => let final self::Class* #t91 = let final self::Class* #t92 = c in #t92.{self::Class::==}(null) ?{self::Class*} null : #t92.{self::Class::field} in let final self::Class* #t93 = c in let final self::Class* #t94 = #t91.{self::Class::[]}(#t93).{self::Class::+}(0) in let final void #t95 = #t91.{self::Class::[]=}(#t93, #t94) in #t94);
- self::throws(() → self::Class* => c = let final self::Class* #t96 = let final self::Class* #t97 = c in #t97.{self::Class::==}(null) ?{self::Class*} null : #t97.{self::Class::field} in let final self::Class* #t98 = c in let final self::Class* #t99 = #t96.{self::Class::[]}(#t98).{self::Class::+}(0) in let final void #t100 = #t96.{self::Class::[]=}(#t98, #t99) in #t99);
- self::throws(() → self::Class* => let final self::Class* #t101 = let final self::Class* #t102 = c in #t102.{self::Class::==}(null) ?{self::Class*} null : #t102.{self::Class::field} in let final self::Class* #t103 = c in let final self::Class* #t104 = #t101.{self::Class::[]}(#t103) in let final void #t105 = #t101.{self::Class::[]=}(#t103, #t104.{self::Class::+}(1)) in #t104);
- self::throws(() → self::Class* => c = let final self::Class* #t106 = let final self::Class* #t107 = c in #t107.{self::Class::==}(null) ?{self::Class*} null : #t107.{self::Class::field} in let final self::Class* #t108 = c in let final self::Class* #t109 = #t106.{self::Class::[]}(#t108) in let final void #t110 = #t106.{self::Class::[]=}(#t108, #t109.{self::Class::+}(1)) in #t109);
- self::throws(() → self::Class* => let final self::Class* #t111 = let final self::Class* #t112 = c in #t112.{self::Class::==}(null) ?{self::Class*} null : #t112.{self::Class::field} in let final self::Class* #t113 = c in let final self::Class* #t114 = #t111.{self::Class::[]}(#t113).{self::Class::+}(1) in let final void #t115 = #t111.{self::Class::[]=}(#t113, #t114) in #t114);
- self::throws(() → self::Class* => c = let final self::Class* #t116 = let final self::Class* #t117 = c in #t117.{self::Class::==}(null) ?{self::Class*} null : #t117.{self::Class::field} in let final self::Class* #t118 = c in let final self::Class* #t119 = #t116.{self::Class::[]}(#t118).{self::Class::+}(1) in let final void #t120 = #t116.{self::Class::[]=}(#t118, #t119) in #t119);
- self::throws(() → self::Class* => (let final self::Class* #t121 = c in #t121.{self::Class::==}(null) ?{self::Class*} null : #t121.{self::Class::field}).{self::Class::[]}(c).{self::Class::[]}(c));
- self::throws(() → self::Class* => let final self::Class* #t122 = (let final self::Class* #t123 = c in #t123.{self::Class::==}(null) ?{self::Class*} null : #t123.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t124 = c in let final self::Class* #t125 = new self::Class::•() in let final void #t126 = #t122.{self::Class::[]=}(#t124, #t125) in #t125);
- self::throws(() → self::Class* => c = let final self::Class* #t127 = (let final self::Class* #t128 = c in #t128.{self::Class::==}(null) ?{self::Class*} null : #t128.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t129 = c in let final self::Class* #t130 = new self::Class::•() in let final void #t131 = #t127.{self::Class::[]=}(#t129, #t130) in #t130);
- self::throws(() → self::Class* => (let final self::Class* #t132 = c in #t132.{self::Class::==}(null) ?{self::Class*} null : #t132.{self::Class::field}).{self::Class::[]}(c).{self::Class::[]}(c).{self::Class::method}());
- self::throws(() → self::Class* => let final self::Class* #t133 = (let final self::Class* #t134 = c in #t134.{self::Class::==}(null) ?{self::Class*} null : #t134.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t135 = c in let final self::Class* #t136 = #t133.{self::Class::[]}(#t135).{self::Class::+}(0) in let final void #t137 = #t133.{self::Class::[]=}(#t135, #t136) in #t136);
- self::throws(() → self::Class* => c = let final self::Class* #t138 = (let final self::Class* #t139 = c in #t139.{self::Class::==}(null) ?{self::Class*} null : #t139.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t140 = c in let final self::Class* #t141 = #t138.{self::Class::[]}(#t140).{self::Class::+}(0) in let final void #t142 = #t138.{self::Class::[]=}(#t140, #t141) in #t141);
- self::throws(() → self::Class* => let final self::Class* #t143 = (let final self::Class* #t144 = c in #t144.{self::Class::==}(null) ?{self::Class*} null : #t144.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t145 = c in let final self::Class* #t146 = #t143.{self::Class::[]}(#t145) in let final void #t147 = #t143.{self::Class::[]=}(#t145, #t146.{self::Class::+}(1)) in #t146);
- self::throws(() → self::Class* => c = let final self::Class* #t148 = (let final self::Class* #t149 = c in #t149.{self::Class::==}(null) ?{self::Class*} null : #t149.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t150 = c in let final self::Class* #t151 = #t148.{self::Class::[]}(#t150) in let final void #t152 = #t148.{self::Class::[]=}(#t150, #t151.{self::Class::+}(1)) in #t151);
- self::throws(() → self::Class* => let final self::Class* #t153 = (let final self::Class* #t154 = c in #t154.{self::Class::==}(null) ?{self::Class*} null : #t154.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t155 = c in let final self::Class* #t156 = #t153.{self::Class::[]}(#t155).{self::Class::+}(1) in let final void #t157 = #t153.{self::Class::[]=}(#t155, #t156) in #t156);
- self::throws(() → self::Class* => c = let final self::Class* #t158 = (let final self::Class* #t159 = c in #t159.{self::Class::==}(null) ?{self::Class*} null : #t159.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t160 = c in let final self::Class* #t161 = #t158.{self::Class::[]}(#t160).{self::Class::+}(1) in let final void #t162 = #t158.{self::Class::[]=}(#t160, #t161) in #t161);
-}
-static method operatorAccess(self::Class* c) → void {
- self::throws(() → self::Class* => (let final self::Class* #t163 = c in #t163.{self::Class::==}(null) ?{self::Class*} null : #t163.{self::Class::field}).{self::Class::+}(0));
- self::throws(() → self::Class* => (let final self::Class* #t164 = c in #t164.{self::Class::==}(null) ?{self::Class*} null : #t164.{self::Class::field}).{self::Class::unary-}());
- let final self::Class* #t165 = c in #t165.{self::Class::==}(null) ?{self::Class*} null : #t165.{self::Class::field} = #t165.{self::Class::field}.{self::Class::+}(0);
- c = let final self::Class* #t166 = c in #t166.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t167 = #t166.{self::Class::field}.{self::Class::+}(0) in let final void #t168 = #t166.{self::Class::field} = #t167 in #t167;
- self::throws(() → self::Class* => let final self::Class* #t169 = let final self::Class* #t170 = c in #t170.{self::Class::==}(null) ?{self::Class*} null : #t170.{self::Class::field} in #t169.{self::Class::field} = #t169.{self::Class::field}.{self::Class::+}(0));
- self::throws(() → self::Class* => c = let final self::Class* #t171 = let final self::Class* #t172 = c in #t172.{self::Class::==}(null) ?{self::Class*} null : #t172.{self::Class::field} in #t171.{self::Class::field} = #t171.{self::Class::field}.{self::Class::+}(0));
- let final self::Class* #t173 = c in #t173.{self::Class::==}(null) ?{self::Class*} null : #t173.{self::Class::field} = #t173.{self::Class::field}.{self::Class::+}(1);
- c = let final self::Class* #t174 = c in #t174.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t175 = #t174.{self::Class::field} in let final void #t176 = #t174.{self::Class::field} = #t175.{self::Class::+}(1) in #t175;
- let final self::Class* #t177 = c in #t177.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t178 = #t177.{self::Class::field}.{self::Class::+}(1) in let final void #t179 = #t177.{self::Class::field} = #t178 in #t178;
- c = let final self::Class* #t180 = c in #t180.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t181 = #t180.{self::Class::field}.{self::Class::+}(1) in let final void #t182 = #t180.{self::Class::field} = #t181 in #t181;
-}
-static method ifNull(self::Class* c) → void {
- let final self::Class* #t183 = c in #t183.{self::Class::==}(null) ?{self::Class*} null : #t183.{self::Class::field}.{self::Class::==}(null) ?{self::Class*} #t183.{self::Class::field} = c : null;
- c = let final self::Class* #t184 = c in #t184.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t185 = #t184.{self::Class::field} in #t185.{self::Class::==}(null) ?{self::Class*} #t184.{self::Class::field} = c : #t185;
- self::throws(() → self::Class* => let final self::Class* #t186 = let final self::Class* #t187 = c in #t187.{self::Class::==}(null) ?{self::Class*} null : #t187.{self::Class::field} in let final self::Class* #t188 = #t186.{self::Class::field} in #t188.{self::Class::==}(null) ?{self::Class*} #t186.{self::Class::field} = c : #t188);
- self::throws(() → self::Class* => c = let final self::Class* #t189 = let final self::Class* #t190 = c in #t190.{self::Class::==}(null) ?{self::Class*} null : #t190.{self::Class::field} in let final self::Class* #t191 = #t189.{self::Class::field} in #t191.{self::Class::==}(null) ?{self::Class*} #t189.{self::Class::field} = c : #t191);
- self::throws(() → self::Class* => let final self::Class* #t192 = let final self::Class* #t193 = c in #t193.{self::Class::==}(null) ?{self::Class*} null : #t193.{self::Class::field} in let final self::Class* #t194 = c in let final self::Class* #t195 = #t192.{self::Class::[]}(#t194) in #t195.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t196 = c in let final void #t197 = #t192.{self::Class::[]=}(#t194, #t196) in #t196 : #t195);
- self::throws(() → self::Class* => c = let final self::Class* #t198 = let final self::Class* #t199 = c in #t199.{self::Class::==}(null) ?{self::Class*} null : #t199.{self::Class::field} in let final self::Class* #t200 = c in let final self::Class* #t201 = #t198.{self::Class::[]}(#t200) in #t201.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t202 = c in let final void #t203 = #t198.{self::Class::[]=}(#t200, #t202) in #t202 : #t201);
-}
-static method throws(() →* void f) → void {
- try {
- f.call();
- }
- on dynamic catch(final dynamic _) {
- return;
- }
- throw "Expected exception.";
-}
diff --git a/pkg/front_end/testcases/nnbd/no_null_shorting_explicit_extension.dart.outline.expect b/pkg/front_end/testcases/nnbd/no_null_shorting_explicit_extension.dart.outline.expect
deleted file mode 100644
index 05e1cb9..0000000
--- a/pkg/front_end/testcases/nnbd/no_null_shorting_explicit_extension.dart.outline.expect
+++ /dev/null
@@ -1,57 +0,0 @@
-library;
-import self as self;
-import "dart:core" as core;
-
-class Class extends core::Object {
- field self::Class* _field;
- synthetic constructor •() → self::Class*
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-extension Extension on self::Class* {
- get field = self::Extension|get#field;
- method method = self::Extension|method;
- tearoff method = self::Extension|get#method;
- operator [] = self::Extension|[];
- operator []= = self::Extension|[]=;
- operator + = self::Extension|+;
- operator unary- = self::Extension|unary-;
- set field = self::Extension|set#field;
-}
-static method Extension|get#field(final self::Class* #this) → self::Class*
- ;
-static method Extension|set#field(final self::Class* #this, self::Class* value) → void
- ;
-static method Extension|method(final self::Class* #this) → self::Class*
- ;
-static method Extension|get#method(final self::Class* #this) → () →* self::Class*
- return () → self::Class* => self::Extension|method(#this);
-static method Extension|[](final self::Class* #this, self::Class* key) → self::Class*
- ;
-static method Extension|[]=(final self::Class* #this, self::Class* key, self::Class* value) → void
- ;
-static method Extension|+(final self::Class* #this, core::int* value) → self::Class*
- ;
-static method Extension|unary-(final self::Class* #this) → self::Class*
- ;
-static method main() → dynamic
- ;
-static method propertyAccess(self::Class* c) → void
- ;
-static method indexAccess(self::Class* c) → void
- ;
-static method operatorAccess(self::Class* c) → void
- ;
-static method ifNull(self::Class* c) → void
- ;
-static method throws(() →* void f) → void
- ;
diff --git a/pkg/front_end/testcases/nnbd/no_null_shorting_explicit_extension.dart.strong.expect b/pkg/front_end/testcases/nnbd/no_null_shorting_explicit_extension.dart.strong.expect
deleted file mode 100644
index 1792025..0000000
--- a/pkg/front_end/testcases/nnbd/no_null_shorting_explicit_extension.dart.strong.expect
+++ /dev/null
@@ -1,180 +0,0 @@
-library;
-import self as self;
-import "dart:core" as core;
-
-class Class extends core::Object {
- field self::Class* _field = null;
- synthetic constructor •() → self::Class*
- : super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-extension Extension on self::Class* {
- get field = self::Extension|get#field;
- method method = self::Extension|method;
- tearoff method = self::Extension|get#method;
- operator [] = self::Extension|[];
- operator []= = self::Extension|[]=;
- operator + = self::Extension|+;
- operator unary- = self::Extension|unary-;
- set field = self::Extension|set#field;
-}
-static method Extension|get#field(final self::Class* #this) → self::Class*
- return #this.{self::Class::_field};
-static method Extension|set#field(final self::Class* #this, self::Class* value) → void {
- #this.{self::Class::_field} = value;
-}
-static method Extension|method(final self::Class* #this) → self::Class*
- return self::Extension|get#field(#this);
-static method Extension|get#method(final self::Class* #this) → () →* self::Class*
- return () → self::Class* => self::Extension|method(#this);
-static method Extension|[](final self::Class* #this, self::Class* key) → self::Class*
- return self::Extension|get#field(#this);
-static method Extension|[]=(final self::Class* #this, self::Class* key, self::Class* value) → void {
- self::Extension|set#field(#this, value);
-}
-static method Extension|+(final self::Class* #this, core::int* value) → self::Class*
- return self::Extension|get#field(#this);
-static method Extension|unary-(final self::Class* #this) → self::Class*
- return self::Extension|get#field(#this);
-static method main() → dynamic {
- self::propertyAccess(null);
- self::indexAccess(null);
- self::operatorAccess(null);
- self::ifNull(null);
-}
-static method propertyAccess(self::Class* c) → void {
- let final self::Class* #t1 = c in #t1.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t1);
- let final self::Class* #t2 = c in #t2.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t2, new self::Class::•());
- c = let final self::Class* #t3 = c in #t3.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t4 = new self::Class::•() in let final void #t5 = self::Extension|set#field(#t3, #t4) in #t4;
- let final self::Class* #t6 = c in #t6.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t6);
- self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t7 = c in #t7.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t7)));
- let final self::Class* #t8 = let final self::Class* #t9 = c in #t9.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t9) in #t8.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t8);
- self::throws(() → self::Class* => let final self::Class* #t10 = self::Extension|get#field(let final self::Class* #t11 = c in #t11.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t11)) in #t10.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t10));
- self::throws(() → self::Class* => let final self::Class* #t12 = new self::Class::•() in let final void #t13 = self::Extension|set#field(let final self::Class* #t14 = c in #t14.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t14), #t12) in #t12);
- let final self::Class* #t15 = let final self::Class* #t16 = c in #t16.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t16) in #t15.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t15, new self::Class::•());
- self::throws(() → self::Class* => let final self::Class* #t17 = self::Extension|get#field(let final self::Class* #t18 = c in #t18.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t18)) in #t17.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t19 = new self::Class::•() in let final void #t20 = self::Extension|set#field(#t17, #t19) in #t19);
- self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t21 = c in #t21.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t21)));
- self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t22 = c in #t22.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t23 = new self::Class::•() in let final void #t24 = self::Extension|set#field(#t22, #t23) in #t23));
- self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t25 = c in #t25.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t25)));
- self::throws(() → self::Class* => c = let final self::Class* #t26 = new self::Class::•() in let final void #t27 = self::Extension|set#field(let final self::Class* #t28 = c in #t28.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t28), #t26) in #t26);
- c = let final self::Class* #t29 = let final self::Class* #t30 = c in #t30.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t30) in #t29.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t31 = new self::Class::•() in let final void #t32 = self::Extension|set#field(#t29, #t31) in #t31;
- self::throws(() → self::Class* => c = let final self::Class* #t33 = self::Extension|get#field(let final self::Class* #t34 = c in #t34.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t34)) in #t33.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t35 = new self::Class::•() in let final void #t36 = self::Extension|set#field(#t33, #t35) in #t35);
- self::throws(() → self::Class* => self::Extension|method(let final self::Class* #t37 = c in #t37.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t37)));
- let final self::Class* #t38 = c in #t38.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t38, self::Extension|get#field(new self::Class::•()));
- c = let final self::Class* #t39 = c in #t39.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t40 = self::Extension|get#field(new self::Class::•()) in let final void #t41 = self::Extension|set#field(#t39, #t40) in #t40;
- let final self::Class* #t42 = c in #t42.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t42, let final self::Class* #t43 = new self::Class::•() in let final void #t44 = self::Extension|set#field(new self::Class::•(), #t43) in #t43);
- c = let final self::Class* #t45 = c in #t45.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t46 = let final self::Class* #t47 = new self::Class::•() in let final void #t48 = self::Extension|set#field(new self::Class::•(), #t47) in #t47 in let final void #t49 = self::Extension|set#field(#t45, #t46) in #t46;
- let final self::Class* #t50 = c in #t50.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t50, self::Extension|method(new self::Class::•()));
- c = let final self::Class* #t51 = c in #t51.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t52 = self::Extension|method(new self::Class::•()) in let final void #t53 = self::Extension|set#field(#t51, #t52) in #t52;
- self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t54 = c in #t54.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t54)));
- self::throws(() → self::Class* => let final self::Class* #t55 = new self::Class::•() in let final void #t56 = self::Extension|set#field(let final self::Class* #t57 = c in #t57.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t57), #t55) in #t55);
- self::throws(() → self::Class* => self::Extension|method(let final self::Class* #t58 = c in #t58.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t58)));
- self::throws(() → self::Class* => self::Extension|get#field(self::Extension|get#field(let final self::Class* #t59 = c in #t59.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t59))));
- self::throws(() → self::Class* => let final self::Class* #t60 = new self::Class::•() in let final void #t61 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t62 = c in #t62.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t62)), #t60) in #t60);
- self::throws(() → self::Class* => c = let final self::Class* #t63 = new self::Class::•() in let final void #t64 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t65 = c in #t65.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t65)), #t63) in #t63);
- self::throws(() → self::Class* => self::Extension|method(self::Extension|get#field(let final self::Class* #t66 = c in #t66.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t66))));
- let final self::Class* #t67 = c in #t67.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t67, self::Extension|get#field(self::Extension|get#field(new self::Class::•())));
- c = let final self::Class* #t68 = c in #t68.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t69 = self::Extension|get#field(self::Extension|get#field(new self::Class::•())) in let final void #t70 = self::Extension|set#field(#t68, #t69) in #t69;
- let final self::Class* #t71 = c in #t71.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t71, let final self::Class* #t72 = new self::Class::•() in let final void #t73 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t72) in #t72);
- c = let final self::Class* #t74 = c in #t74.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t75 = let final self::Class* #t76 = new self::Class::•() in let final void #t77 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t76) in #t76 in let final void #t78 = self::Extension|set#field(#t74, #t75) in #t75;
- let final self::Class* #t79 = c in #t79.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t79, self::Extension|method(self::Extension|get#field(new self::Class::•())));
- c = let final self::Class* #t80 = c in #t80.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t81 = self::Extension|method(self::Extension|get#field(new self::Class::•())) in let final void #t82 = self::Extension|set#field(#t80, #t81) in #t81;
- self::throws(() → self::Class* => self::Extension|get#field(self::Extension|get#field(let final self::Class* #t83 = c in #t83.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t83))));
- self::throws(() → self::Class* => let final self::Class* #t84 = new self::Class::•() in let final void #t85 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t86 = c in #t86.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t86)), #t84) in #t84);
- self::throws(() → self::Class* => self::Extension|method(self::Extension|get#field(let final self::Class* #t87 = c in #t87.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t87))));
- self::throws(() → self::Class* => let final self::Class* #t88 = self::Extension|get#field(new self::Class::•()) in let final void #t89 = self::Extension|set#field(let final self::Class* #t90 = c in #t90.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t90), #t88) in #t88);
- self::throws(() → self::Class* => c = let final self::Class* #t91 = self::Extension|get#field(new self::Class::•()) in let final void #t92 = self::Extension|set#field(let final self::Class* #t93 = c in #t93.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t93), #t91) in #t91);
- self::throws(() → self::Class* => let final self::Class* #t94 = let final self::Class* #t95 = new self::Class::•() in let final void #t96 = self::Extension|set#field(new self::Class::•(), #t95) in #t95 in let final void #t97 = self::Extension|set#field(let final self::Class* #t98 = c in #t98.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t98), #t94) in #t94);
- self::throws(() → self::Class* => c = let final self::Class* #t99 = let final self::Class* #t100 = new self::Class::•() in let final void #t101 = self::Extension|set#field(new self::Class::•(), #t100) in #t100 in let final void #t102 = self::Extension|set#field(let final self::Class* #t103 = c in #t103.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t103), #t99) in #t99);
- self::throws(() → self::Class* => let final self::Class* #t104 = self::Extension|method(new self::Class::•()) in let final void #t105 = self::Extension|set#field(let final self::Class* #t106 = c in #t106.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t106), #t104) in #t104);
- self::throws(() → self::Class* => c = let final self::Class* #t107 = self::Extension|method(new self::Class::•()) in let final void #t108 = self::Extension|set#field(let final self::Class* #t109 = c in #t109.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t109), #t107) in #t107);
- let final self::Class* #t110 = c in #t110.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t110, let final self::Class* #t111 = self::Extension|get#field(new self::Class::•()) in let final void #t112 = self::Extension|set#field(new self::Class::•(), #t111) in #t111);
- c = let final self::Class* #t113 = c in #t113.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t114 = let final self::Class* #t115 = self::Extension|get#field(new self::Class::•()) in let final void #t116 = self::Extension|set#field(new self::Class::•(), #t115) in #t115 in let final void #t117 = self::Extension|set#field(#t113, #t114) in #t114;
- let final self::Class* #t118 = c in #t118.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t118, let final self::Class* #t119 = let final self::Class* #t120 = new self::Class::•() in let final void #t121 = self::Extension|set#field(new self::Class::•(), #t120) in #t120 in let final void #t122 = self::Extension|set#field(new self::Class::•(), #t119) in #t119);
- c = let final self::Class* #t123 = c in #t123.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t124 = let final self::Class* #t125 = let final self::Class* #t126 = new self::Class::•() in let final void #t127 = self::Extension|set#field(new self::Class::•(), #t126) in #t126 in let final void #t128 = self::Extension|set#field(new self::Class::•(), #t125) in #t125 in let final void #t129 = self::Extension|set#field(#t123, #t124) in #t124;
- let final self::Class* #t130 = c in #t130.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t130, let final self::Class* #t131 = self::Extension|method(new self::Class::•()) in let final void #t132 = self::Extension|set#field(new self::Class::•(), #t131) in #t131);
- c = let final self::Class* #t133 = c in #t133.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t134 = let final self::Class* #t135 = self::Extension|method(new self::Class::•()) in let final void #t136 = self::Extension|set#field(new self::Class::•(), #t135) in #t135 in let final void #t137 = self::Extension|set#field(#t133, #t134) in #t134;
- self::throws(() → self::Class* => let final self::Class* #t138 = self::Extension|get#field(new self::Class::•()) in let final void #t139 = self::Extension|set#field(let final self::Class* #t140 = c in #t140.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t140), #t138) in #t138);
- self::throws(() → self::Class* => c = let final self::Class* #t141 = self::Extension|get#field(new self::Class::•()) in let final void #t142 = self::Extension|set#field(let final self::Class* #t143 = c in #t143.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t143), #t141) in #t141);
- self::throws(() → self::Class* => let final self::Class* #t144 = let final self::Class* #t145 = new self::Class::•() in let final void #t146 = self::Extension|set#field(new self::Class::•(), #t145) in #t145 in let final void #t147 = self::Extension|set#field(let final self::Class* #t148 = c in #t148.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t148), #t144) in #t144);
- self::throws(() → self::Class* => c = let final self::Class* #t149 = let final self::Class* #t150 = new self::Class::•() in let final void #t151 = self::Extension|set#field(new self::Class::•(), #t150) in #t150 in let final void #t152 = self::Extension|set#field(let final self::Class* #t153 = c in #t153.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t153), #t149) in #t149);
- self::throws(() → self::Class* => let final self::Class* #t154 = self::Extension|method(new self::Class::•()) in let final void #t155 = self::Extension|set#field(let final self::Class* #t156 = c in #t156.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t156), #t154) in #t154);
- self::throws(() → self::Class* => c = let final self::Class* #t157 = self::Extension|method(new self::Class::•()) in let final void #t158 = self::Extension|set#field(let final self::Class* #t159 = c in #t159.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t159), #t157) in #t157);
- self::throws(() → self::Class* => self::Extension|get#field(self::Extension|method(let final self::Class* #t160 = c in #t160.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t160))));
- self::throws(() → self::Class* => let final self::Class* #t161 = new self::Class::•() in let final void #t162 = self::Extension|set#field(self::Extension|method(let final self::Class* #t163 = c in #t163.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t163)), #t161) in #t161);
- self::throws(() → self::Class* => c = let final self::Class* #t164 = new self::Class::•() in let final void #t165 = self::Extension|set#field(self::Extension|method(let final self::Class* #t166 = c in #t166.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t166)), #t164) in #t164);
- self::throws(() → self::Class* => self::Extension|method(self::Extension|method(let final self::Class* #t167 = c in #t167.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t167))));
- let final self::Class* #t168 = c in #t168.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t168, self::Extension|get#field(self::Extension|method(new self::Class::•())));
- c = let final self::Class* #t169 = c in #t169.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t170 = self::Extension|get#field(self::Extension|method(new self::Class::•())) in let final void #t171 = self::Extension|set#field(#t169, #t170) in #t170;
- let final self::Class* #t172 = c in #t172.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t172, let final self::Class* #t173 = new self::Class::•() in let final void #t174 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t173) in #t173);
- c = let final self::Class* #t175 = c in #t175.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t176 = let final self::Class* #t177 = new self::Class::•() in let final void #t178 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t177) in #t177 in let final void #t179 = self::Extension|set#field(#t175, #t176) in #t176;
- let final self::Class* #t180 = c in #t180.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t180, self::Extension|method(self::Extension|method(new self::Class::•())));
- c = let final self::Class* #t181 = c in #t181.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t182 = self::Extension|method(self::Extension|method(new self::Class::•())) in let final void #t183 = self::Extension|set#field(#t181, #t182) in #t182;
- self::throws(() → self::Class* => self::Extension|get#field(self::Extension|method(let final self::Class* #t184 = c in #t184.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t184))));
- self::throws(() → self::Class* => let final self::Class* #t185 = new self::Class::•() in let final void #t186 = self::Extension|set#field(self::Extension|method(let final self::Class* #t187 = c in #t187.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t187)), #t185) in #t185);
- self::throws(() → self::Class* => self::Extension|method(self::Extension|method(let final self::Class* #t188 = c in #t188.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t188))));
- let final self::Class* #t189 = let final self::Class* #t190 = c in #t190.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t190) in #t189.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t189);
- self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t191 = c in #t191.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t191)));
- let final self::Class* #t192 = let final self::Class* #t193 = c in #t193.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t193) in #t192.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t192);
-}
-static method indexAccess(self::Class* c) → void {
- self::throws(() → self::Class* => self::Extension|[](let final self::Class* #t194 = c in #t194.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t194), c));
- self::throws(() → self::Class* => let final self::Class* #t195 = let final self::Class* #t196 = c in #t196.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t196) in let final self::Class* #t197 = c in let final self::Class* #t198 = new self::Class::•() in let final void #t199 = self::Extension|[]=(#t195, #t197, #t198) in #t198);
- self::throws(() → self::Class* => c = let final self::Class* #t200 = let final self::Class* #t201 = c in #t201.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t201) in let final self::Class* #t202 = c in let final self::Class* #t203 = new self::Class::•() in let final void #t204 = self::Extension|[]=(#t200, #t202, #t203) in #t203);
- self::throws(() → self::Class* => self::Extension|method(self::Extension|[](let final self::Class* #t205 = c in #t205.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t205), c)));
- self::throws(() → self::Class* => let final self::Class* #t206 = let final self::Class* #t207 = c in #t207.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t207) in let final self::Class* #t208 = c in let final self::Class* #t209 = self::Extension|+(self::Extension|[](#t206, #t208), 0) in let final void #t210 = self::Extension|[]=(#t206, #t208, #t209) in #t209);
- self::throws(() → self::Class* => c = let final self::Class* #t211 = let final self::Class* #t212 = c in #t212.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t212) in let final self::Class* #t213 = c in let final self::Class* #t214 = self::Extension|+(self::Extension|[](#t211, #t213), 0) in let final void #t215 = self::Extension|[]=(#t211, #t213, #t214) in #t214);
- self::throws(() → self::Class* => let final self::Class* #t216 = let final self::Class* #t217 = c in #t217.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t217) in let final self::Class* #t218 = c in let final self::Class* #t219 = self::Extension|[](#t216, #t218) in let final void #t220 = self::Extension|[]=(#t216, #t218, self::Extension|+(#t219, 1)) in #t219);
- self::throws(() → self::Class* => c = let final self::Class* #t221 = let final self::Class* #t222 = c in #t222.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t222) in let final self::Class* #t223 = c in let final self::Class* #t224 = self::Extension|[](#t221, #t223) in let final void #t225 = self::Extension|[]=(#t221, #t223, self::Extension|+(#t224, 1)) in #t224);
- self::throws(() → self::Class* => let final self::Class* #t226 = let final self::Class* #t227 = c in #t227.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t227) in let final self::Class* #t228 = c in let final self::Class* #t229 = self::Extension|+(self::Extension|[](#t226, #t228), 1) in let final void #t230 = self::Extension|[]=(#t226, #t228, #t229) in #t229);
- self::throws(() → self::Class* => c = let final self::Class* #t231 = let final self::Class* #t232 = c in #t232.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t232) in let final self::Class* #t233 = c in let final self::Class* #t234 = self::Extension|+(self::Extension|[](#t231, #t233), 1) in let final void #t235 = self::Extension|[]=(#t231, #t233, #t234) in #t234);
- self::throws(() → self::Class* => self::Extension|[](self::Extension|[](let final self::Class* #t236 = c in #t236.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t236), c), c));
- self::throws(() → self::Class* => let final self::Class* #t237 = self::Extension|[](let final self::Class* #t238 = c in #t238.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t238), c) in let final self::Class* #t239 = c in let final self::Class* #t240 = new self::Class::•() in let final void #t241 = self::Extension|[]=(#t237, #t239, #t240) in #t240);
- self::throws(() → self::Class* => c = let final self::Class* #t242 = self::Extension|[](let final self::Class* #t243 = c in #t243.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t243), c) in let final self::Class* #t244 = c in let final self::Class* #t245 = new self::Class::•() in let final void #t246 = self::Extension|[]=(#t242, #t244, #t245) in #t245);
- self::throws(() → self::Class* => self::Extension|method(self::Extension|[](self::Extension|[](let final self::Class* #t247 = c in #t247.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t247), c), c)));
- self::throws(() → self::Class* => let final self::Class* #t248 = self::Extension|[](let final self::Class* #t249 = c in #t249.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t249), c) in let final self::Class* #t250 = c in let final self::Class* #t251 = self::Extension|+(self::Extension|[](#t248, #t250), 0) in let final void #t252 = self::Extension|[]=(#t248, #t250, #t251) in #t251);
- self::throws(() → self::Class* => c = let final self::Class* #t253 = self::Extension|[](let final self::Class* #t254 = c in #t254.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t254), c) in let final self::Class* #t255 = c in let final self::Class* #t256 = self::Extension|+(self::Extension|[](#t253, #t255), 0) in let final void #t257 = self::Extension|[]=(#t253, #t255, #t256) in #t256);
- self::throws(() → self::Class* => let final self::Class* #t258 = self::Extension|[](let final self::Class* #t259 = c in #t259.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t259), c) in let final self::Class* #t260 = c in let final self::Class* #t261 = self::Extension|[](#t258, #t260) in let final void #t262 = self::Extension|[]=(#t258, #t260, self::Extension|+(#t261, 1)) in #t261);
- self::throws(() → self::Class* => c = let final self::Class* #t263 = self::Extension|[](let final self::Class* #t264 = c in #t264.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t264), c) in let final self::Class* #t265 = c in let final self::Class* #t266 = self::Extension|[](#t263, #t265) in let final void #t267 = self::Extension|[]=(#t263, #t265, self::Extension|+(#t266, 1)) in #t266);
- self::throws(() → self::Class* => let final self::Class* #t268 = self::Extension|[](let final self::Class* #t269 = c in #t269.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t269), c) in let final self::Class* #t270 = c in let final self::Class* #t271 = self::Extension|+(self::Extension|[](#t268, #t270), 1) in let final void #t272 = self::Extension|[]=(#t268, #t270, #t271) in #t271);
- self::throws(() → self::Class* => c = let final self::Class* #t273 = self::Extension|[](let final self::Class* #t274 = c in #t274.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t274), c) in let final self::Class* #t275 = c in let final self::Class* #t276 = self::Extension|+(self::Extension|[](#t273, #t275), 1) in let final void #t277 = self::Extension|[]=(#t273, #t275, #t276) in #t276);
-}
-static method operatorAccess(self::Class* c) → void {
- self::throws(() → self::Class* => self::Extension|+(let final self::Class* #t278 = c in #t278.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t278), 0));
- self::throws(() → self::Class* => self::Extension|unary-(let final self::Class* #t279 = c in #t279.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t279)));
- let final self::Class* #t280 = c in #t280.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t280, self::Extension|+(self::Extension|get#field(#t280), 0));
- c = let final self::Class* #t281 = c in #t281.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t282 = self::Extension|+(self::Extension|get#field(#t281), 0) in let final void #t283 = self::Extension|set#field(#t281, #t282) in #t282;
- self::throws(() → self::Class* => let final self::Class* #t284 = let final self::Class* #t285 = c in #t285.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t285) in let final self::Class* #t286 = self::Extension|+(self::Extension|get#field(#t284), 0) in let final void #t287 = self::Extension|set#field(#t284, #t286) in #t286);
- self::throws(() → self::Class* => c = let final self::Class* #t288 = let final self::Class* #t289 = c in #t289.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t289) in let final self::Class* #t290 = self::Extension|+(self::Extension|get#field(#t288), 0) in let final void #t291 = self::Extension|set#field(#t288, #t290) in #t290);
- let final self::Class* #t292 = c in #t292.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t292, self::Extension|+(self::Extension|get#field(#t292), 1));
- c = let final self::Class* #t293 = c in #t293.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t294 = self::Extension|get#field(#t293) in let final self::Class* #t295 = let final self::Class* #t296 = self::Extension|+(#t294, 1) in let final void #t297 = self::Extension|set#field(#t293, #t296) in #t296 in #t294;
- let final self::Class* #t298 = c in #t298.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t299 = self::Extension|+(self::Extension|get#field(#t298), 1) in let final void #t300 = self::Extension|set#field(#t298, #t299) in #t299;
- c = let final self::Class* #t301 = c in #t301.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t302 = self::Extension|+(self::Extension|get#field(#t301), 1) in let final void #t303 = self::Extension|set#field(#t301, #t302) in #t302;
-}
-static method ifNull(self::Class* c) → void {
- let final self::Class* #t304 = c in #t304.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t304).{self::Class::==}(null) ?{self::Class*} self::Extension|set#field(#t304, c) : null;
- c = let final self::Class* #t305 = c in #t305.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t306 = self::Extension|get#field(#t305) in #t306.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t307 = c in let final void #t308 = self::Extension|set#field(#t305, #t307) in #t307 : #t306;
- self::throws(() → self::Class* => let final self::Class* #t309 = let final self::Class* #t310 = c in #t310.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t310) in let final self::Class* #t311 = self::Extension|get#field(#t309) in #t311.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t312 = c in let final void #t313 = self::Extension|set#field(#t309, #t312) in #t312 : #t311);
- self::throws(() → self::Class* => c = let final self::Class* #t314 = let final self::Class* #t315 = c in #t315.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t315) in let final self::Class* #t316 = self::Extension|get#field(#t314) in #t316.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t317 = c in let final void #t318 = self::Extension|set#field(#t314, #t317) in #t317 : #t316);
- self::throws(() → self::Class* => let final self::Class* #t319 = let final self::Class* #t320 = c in #t320.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t320) in let final self::Class* #t321 = c in let final self::Class* #t322 = self::Extension|[](#t319, #t321) in #t322.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t323 = c in let final void #t324 = self::Extension|[]=(#t319, #t321, #t323) in #t323 : #t322);
- self::throws(() → self::Class* => c = let final self::Class* #t325 = let final self::Class* #t326 = c in #t326.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t326) in let final self::Class* #t327 = c in let final self::Class* #t328 = self::Extension|[](#t325, #t327) in #t328.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t329 = c in let final void #t330 = self::Extension|[]=(#t325, #t327, #t329) in #t329 : #t328);
-}
-static method throws(() →* void f) → void {
- try {
- f.call();
- }
- on dynamic catch(final dynamic _) {
- return;
- }
- throw "Expected exception.";
-}
diff --git a/pkg/front_end/testcases/nnbd/no_null_shorting_explicit_extension.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/no_null_shorting_explicit_extension.dart.strong.transformed.expect
deleted file mode 100644
index 1792025..0000000
--- a/pkg/front_end/testcases/nnbd/no_null_shorting_explicit_extension.dart.strong.transformed.expect
+++ /dev/null
@@ -1,180 +0,0 @@
-library;
-import self as self;
-import "dart:core" as core;
-
-class Class extends core::Object {
- field self::Class* _field = null;
- synthetic constructor •() → self::Class*
- : super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-extension Extension on self::Class* {
- get field = self::Extension|get#field;
- method method = self::Extension|method;
- tearoff method = self::Extension|get#method;
- operator [] = self::Extension|[];
- operator []= = self::Extension|[]=;
- operator + = self::Extension|+;
- operator unary- = self::Extension|unary-;
- set field = self::Extension|set#field;
-}
-static method Extension|get#field(final self::Class* #this) → self::Class*
- return #this.{self::Class::_field};
-static method Extension|set#field(final self::Class* #this, self::Class* value) → void {
- #this.{self::Class::_field} = value;
-}
-static method Extension|method(final self::Class* #this) → self::Class*
- return self::Extension|get#field(#this);
-static method Extension|get#method(final self::Class* #this) → () →* self::Class*
- return () → self::Class* => self::Extension|method(#this);
-static method Extension|[](final self::Class* #this, self::Class* key) → self::Class*
- return self::Extension|get#field(#this);
-static method Extension|[]=(final self::Class* #this, self::Class* key, self::Class* value) → void {
- self::Extension|set#field(#this, value);
-}
-static method Extension|+(final self::Class* #this, core::int* value) → self::Class*
- return self::Extension|get#field(#this);
-static method Extension|unary-(final self::Class* #this) → self::Class*
- return self::Extension|get#field(#this);
-static method main() → dynamic {
- self::propertyAccess(null);
- self::indexAccess(null);
- self::operatorAccess(null);
- self::ifNull(null);
-}
-static method propertyAccess(self::Class* c) → void {
- let final self::Class* #t1 = c in #t1.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t1);
- let final self::Class* #t2 = c in #t2.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t2, new self::Class::•());
- c = let final self::Class* #t3 = c in #t3.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t4 = new self::Class::•() in let final void #t5 = self::Extension|set#field(#t3, #t4) in #t4;
- let final self::Class* #t6 = c in #t6.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t6);
- self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t7 = c in #t7.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t7)));
- let final self::Class* #t8 = let final self::Class* #t9 = c in #t9.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t9) in #t8.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t8);
- self::throws(() → self::Class* => let final self::Class* #t10 = self::Extension|get#field(let final self::Class* #t11 = c in #t11.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t11)) in #t10.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t10));
- self::throws(() → self::Class* => let final self::Class* #t12 = new self::Class::•() in let final void #t13 = self::Extension|set#field(let final self::Class* #t14 = c in #t14.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t14), #t12) in #t12);
- let final self::Class* #t15 = let final self::Class* #t16 = c in #t16.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t16) in #t15.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t15, new self::Class::•());
- self::throws(() → self::Class* => let final self::Class* #t17 = self::Extension|get#field(let final self::Class* #t18 = c in #t18.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t18)) in #t17.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t19 = new self::Class::•() in let final void #t20 = self::Extension|set#field(#t17, #t19) in #t19);
- self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t21 = c in #t21.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t21)));
- self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t22 = c in #t22.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t23 = new self::Class::•() in let final void #t24 = self::Extension|set#field(#t22, #t23) in #t23));
- self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t25 = c in #t25.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t25)));
- self::throws(() → self::Class* => c = let final self::Class* #t26 = new self::Class::•() in let final void #t27 = self::Extension|set#field(let final self::Class* #t28 = c in #t28.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t28), #t26) in #t26);
- c = let final self::Class* #t29 = let final self::Class* #t30 = c in #t30.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t30) in #t29.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t31 = new self::Class::•() in let final void #t32 = self::Extension|set#field(#t29, #t31) in #t31;
- self::throws(() → self::Class* => c = let final self::Class* #t33 = self::Extension|get#field(let final self::Class* #t34 = c in #t34.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t34)) in #t33.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t35 = new self::Class::•() in let final void #t36 = self::Extension|set#field(#t33, #t35) in #t35);
- self::throws(() → self::Class* => self::Extension|method(let final self::Class* #t37 = c in #t37.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t37)));
- let final self::Class* #t38 = c in #t38.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t38, self::Extension|get#field(new self::Class::•()));
- c = let final self::Class* #t39 = c in #t39.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t40 = self::Extension|get#field(new self::Class::•()) in let final void #t41 = self::Extension|set#field(#t39, #t40) in #t40;
- let final self::Class* #t42 = c in #t42.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t42, let final self::Class* #t43 = new self::Class::•() in let final void #t44 = self::Extension|set#field(new self::Class::•(), #t43) in #t43);
- c = let final self::Class* #t45 = c in #t45.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t46 = let final self::Class* #t47 = new self::Class::•() in let final void #t48 = self::Extension|set#field(new self::Class::•(), #t47) in #t47 in let final void #t49 = self::Extension|set#field(#t45, #t46) in #t46;
- let final self::Class* #t50 = c in #t50.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t50, self::Extension|method(new self::Class::•()));
- c = let final self::Class* #t51 = c in #t51.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t52 = self::Extension|method(new self::Class::•()) in let final void #t53 = self::Extension|set#field(#t51, #t52) in #t52;
- self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t54 = c in #t54.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t54)));
- self::throws(() → self::Class* => let final self::Class* #t55 = new self::Class::•() in let final void #t56 = self::Extension|set#field(let final self::Class* #t57 = c in #t57.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t57), #t55) in #t55);
- self::throws(() → self::Class* => self::Extension|method(let final self::Class* #t58 = c in #t58.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t58)));
- self::throws(() → self::Class* => self::Extension|get#field(self::Extension|get#field(let final self::Class* #t59 = c in #t59.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t59))));
- self::throws(() → self::Class* => let final self::Class* #t60 = new self::Class::•() in let final void #t61 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t62 = c in #t62.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t62)), #t60) in #t60);
- self::throws(() → self::Class* => c = let final self::Class* #t63 = new self::Class::•() in let final void #t64 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t65 = c in #t65.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t65)), #t63) in #t63);
- self::throws(() → self::Class* => self::Extension|method(self::Extension|get#field(let final self::Class* #t66 = c in #t66.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t66))));
- let final self::Class* #t67 = c in #t67.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t67, self::Extension|get#field(self::Extension|get#field(new self::Class::•())));
- c = let final self::Class* #t68 = c in #t68.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t69 = self::Extension|get#field(self::Extension|get#field(new self::Class::•())) in let final void #t70 = self::Extension|set#field(#t68, #t69) in #t69;
- let final self::Class* #t71 = c in #t71.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t71, let final self::Class* #t72 = new self::Class::•() in let final void #t73 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t72) in #t72);
- c = let final self::Class* #t74 = c in #t74.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t75 = let final self::Class* #t76 = new self::Class::•() in let final void #t77 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t76) in #t76 in let final void #t78 = self::Extension|set#field(#t74, #t75) in #t75;
- let final self::Class* #t79 = c in #t79.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t79, self::Extension|method(self::Extension|get#field(new self::Class::•())));
- c = let final self::Class* #t80 = c in #t80.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t81 = self::Extension|method(self::Extension|get#field(new self::Class::•())) in let final void #t82 = self::Extension|set#field(#t80, #t81) in #t81;
- self::throws(() → self::Class* => self::Extension|get#field(self::Extension|get#field(let final self::Class* #t83 = c in #t83.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t83))));
- self::throws(() → self::Class* => let final self::Class* #t84 = new self::Class::•() in let final void #t85 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t86 = c in #t86.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t86)), #t84) in #t84);
- self::throws(() → self::Class* => self::Extension|method(self::Extension|get#field(let final self::Class* #t87 = c in #t87.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t87))));
- self::throws(() → self::Class* => let final self::Class* #t88 = self::Extension|get#field(new self::Class::•()) in let final void #t89 = self::Extension|set#field(let final self::Class* #t90 = c in #t90.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t90), #t88) in #t88);
- self::throws(() → self::Class* => c = let final self::Class* #t91 = self::Extension|get#field(new self::Class::•()) in let final void #t92 = self::Extension|set#field(let final self::Class* #t93 = c in #t93.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t93), #t91) in #t91);
- self::throws(() → self::Class* => let final self::Class* #t94 = let final self::Class* #t95 = new self::Class::•() in let final void #t96 = self::Extension|set#field(new self::Class::•(), #t95) in #t95 in let final void #t97 = self::Extension|set#field(let final self::Class* #t98 = c in #t98.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t98), #t94) in #t94);
- self::throws(() → self::Class* => c = let final self::Class* #t99 = let final self::Class* #t100 = new self::Class::•() in let final void #t101 = self::Extension|set#field(new self::Class::•(), #t100) in #t100 in let final void #t102 = self::Extension|set#field(let final self::Class* #t103 = c in #t103.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t103), #t99) in #t99);
- self::throws(() → self::Class* => let final self::Class* #t104 = self::Extension|method(new self::Class::•()) in let final void #t105 = self::Extension|set#field(let final self::Class* #t106 = c in #t106.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t106), #t104) in #t104);
- self::throws(() → self::Class* => c = let final self::Class* #t107 = self::Extension|method(new self::Class::•()) in let final void #t108 = self::Extension|set#field(let final self::Class* #t109 = c in #t109.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t109), #t107) in #t107);
- let final self::Class* #t110 = c in #t110.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t110, let final self::Class* #t111 = self::Extension|get#field(new self::Class::•()) in let final void #t112 = self::Extension|set#field(new self::Class::•(), #t111) in #t111);
- c = let final self::Class* #t113 = c in #t113.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t114 = let final self::Class* #t115 = self::Extension|get#field(new self::Class::•()) in let final void #t116 = self::Extension|set#field(new self::Class::•(), #t115) in #t115 in let final void #t117 = self::Extension|set#field(#t113, #t114) in #t114;
- let final self::Class* #t118 = c in #t118.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t118, let final self::Class* #t119 = let final self::Class* #t120 = new self::Class::•() in let final void #t121 = self::Extension|set#field(new self::Class::•(), #t120) in #t120 in let final void #t122 = self::Extension|set#field(new self::Class::•(), #t119) in #t119);
- c = let final self::Class* #t123 = c in #t123.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t124 = let final self::Class* #t125 = let final self::Class* #t126 = new self::Class::•() in let final void #t127 = self::Extension|set#field(new self::Class::•(), #t126) in #t126 in let final void #t128 = self::Extension|set#field(new self::Class::•(), #t125) in #t125 in let final void #t129 = self::Extension|set#field(#t123, #t124) in #t124;
- let final self::Class* #t130 = c in #t130.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t130, let final self::Class* #t131 = self::Extension|method(new self::Class::•()) in let final void #t132 = self::Extension|set#field(new self::Class::•(), #t131) in #t131);
- c = let final self::Class* #t133 = c in #t133.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t134 = let final self::Class* #t135 = self::Extension|method(new self::Class::•()) in let final void #t136 = self::Extension|set#field(new self::Class::•(), #t135) in #t135 in let final void #t137 = self::Extension|set#field(#t133, #t134) in #t134;
- self::throws(() → self::Class* => let final self::Class* #t138 = self::Extension|get#field(new self::Class::•()) in let final void #t139 = self::Extension|set#field(let final self::Class* #t140 = c in #t140.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t140), #t138) in #t138);
- self::throws(() → self::Class* => c = let final self::Class* #t141 = self::Extension|get#field(new self::Class::•()) in let final void #t142 = self::Extension|set#field(let final self::Class* #t143 = c in #t143.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t143), #t141) in #t141);
- self::throws(() → self::Class* => let final self::Class* #t144 = let final self::Class* #t145 = new self::Class::•() in let final void #t146 = self::Extension|set#field(new self::Class::•(), #t145) in #t145 in let final void #t147 = self::Extension|set#field(let final self::Class* #t148 = c in #t148.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t148), #t144) in #t144);
- self::throws(() → self::Class* => c = let final self::Class* #t149 = let final self::Class* #t150 = new self::Class::•() in let final void #t151 = self::Extension|set#field(new self::Class::•(), #t150) in #t150 in let final void #t152 = self::Extension|set#field(let final self::Class* #t153 = c in #t153.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t153), #t149) in #t149);
- self::throws(() → self::Class* => let final self::Class* #t154 = self::Extension|method(new self::Class::•()) in let final void #t155 = self::Extension|set#field(let final self::Class* #t156 = c in #t156.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t156), #t154) in #t154);
- self::throws(() → self::Class* => c = let final self::Class* #t157 = self::Extension|method(new self::Class::•()) in let final void #t158 = self::Extension|set#field(let final self::Class* #t159 = c in #t159.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t159), #t157) in #t157);
- self::throws(() → self::Class* => self::Extension|get#field(self::Extension|method(let final self::Class* #t160 = c in #t160.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t160))));
- self::throws(() → self::Class* => let final self::Class* #t161 = new self::Class::•() in let final void #t162 = self::Extension|set#field(self::Extension|method(let final self::Class* #t163 = c in #t163.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t163)), #t161) in #t161);
- self::throws(() → self::Class* => c = let final self::Class* #t164 = new self::Class::•() in let final void #t165 = self::Extension|set#field(self::Extension|method(let final self::Class* #t166 = c in #t166.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t166)), #t164) in #t164);
- self::throws(() → self::Class* => self::Extension|method(self::Extension|method(let final self::Class* #t167 = c in #t167.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t167))));
- let final self::Class* #t168 = c in #t168.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t168, self::Extension|get#field(self::Extension|method(new self::Class::•())));
- c = let final self::Class* #t169 = c in #t169.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t170 = self::Extension|get#field(self::Extension|method(new self::Class::•())) in let final void #t171 = self::Extension|set#field(#t169, #t170) in #t170;
- let final self::Class* #t172 = c in #t172.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t172, let final self::Class* #t173 = new self::Class::•() in let final void #t174 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t173) in #t173);
- c = let final self::Class* #t175 = c in #t175.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t176 = let final self::Class* #t177 = new self::Class::•() in let final void #t178 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t177) in #t177 in let final void #t179 = self::Extension|set#field(#t175, #t176) in #t176;
- let final self::Class* #t180 = c in #t180.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t180, self::Extension|method(self::Extension|method(new self::Class::•())));
- c = let final self::Class* #t181 = c in #t181.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t182 = self::Extension|method(self::Extension|method(new self::Class::•())) in let final void #t183 = self::Extension|set#field(#t181, #t182) in #t182;
- self::throws(() → self::Class* => self::Extension|get#field(self::Extension|method(let final self::Class* #t184 = c in #t184.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t184))));
- self::throws(() → self::Class* => let final self::Class* #t185 = new self::Class::•() in let final void #t186 = self::Extension|set#field(self::Extension|method(let final self::Class* #t187 = c in #t187.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t187)), #t185) in #t185);
- self::throws(() → self::Class* => self::Extension|method(self::Extension|method(let final self::Class* #t188 = c in #t188.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t188))));
- let final self::Class* #t189 = let final self::Class* #t190 = c in #t190.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t190) in #t189.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t189);
- self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t191 = c in #t191.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t191)));
- let final self::Class* #t192 = let final self::Class* #t193 = c in #t193.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t193) in #t192.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t192);
-}
-static method indexAccess(self::Class* c) → void {
- self::throws(() → self::Class* => self::Extension|[](let final self::Class* #t194 = c in #t194.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t194), c));
- self::throws(() → self::Class* => let final self::Class* #t195 = let final self::Class* #t196 = c in #t196.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t196) in let final self::Class* #t197 = c in let final self::Class* #t198 = new self::Class::•() in let final void #t199 = self::Extension|[]=(#t195, #t197, #t198) in #t198);
- self::throws(() → self::Class* => c = let final self::Class* #t200 = let final self::Class* #t201 = c in #t201.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t201) in let final self::Class* #t202 = c in let final self::Class* #t203 = new self::Class::•() in let final void #t204 = self::Extension|[]=(#t200, #t202, #t203) in #t203);
- self::throws(() → self::Class* => self::Extension|method(self::Extension|[](let final self::Class* #t205 = c in #t205.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t205), c)));
- self::throws(() → self::Class* => let final self::Class* #t206 = let final self::Class* #t207 = c in #t207.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t207) in let final self::Class* #t208 = c in let final self::Class* #t209 = self::Extension|+(self::Extension|[](#t206, #t208), 0) in let final void #t210 = self::Extension|[]=(#t206, #t208, #t209) in #t209);
- self::throws(() → self::Class* => c = let final self::Class* #t211 = let final self::Class* #t212 = c in #t212.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t212) in let final self::Class* #t213 = c in let final self::Class* #t214 = self::Extension|+(self::Extension|[](#t211, #t213), 0) in let final void #t215 = self::Extension|[]=(#t211, #t213, #t214) in #t214);
- self::throws(() → self::Class* => let final self::Class* #t216 = let final self::Class* #t217 = c in #t217.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t217) in let final self::Class* #t218 = c in let final self::Class* #t219 = self::Extension|[](#t216, #t218) in let final void #t220 = self::Extension|[]=(#t216, #t218, self::Extension|+(#t219, 1)) in #t219);
- self::throws(() → self::Class* => c = let final self::Class* #t221 = let final self::Class* #t222 = c in #t222.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t222) in let final self::Class* #t223 = c in let final self::Class* #t224 = self::Extension|[](#t221, #t223) in let final void #t225 = self::Extension|[]=(#t221, #t223, self::Extension|+(#t224, 1)) in #t224);
- self::throws(() → self::Class* => let final self::Class* #t226 = let final self::Class* #t227 = c in #t227.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t227) in let final self::Class* #t228 = c in let final self::Class* #t229 = self::Extension|+(self::Extension|[](#t226, #t228), 1) in let final void #t230 = self::Extension|[]=(#t226, #t228, #t229) in #t229);
- self::throws(() → self::Class* => c = let final self::Class* #t231 = let final self::Class* #t232 = c in #t232.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t232) in let final self::Class* #t233 = c in let final self::Class* #t234 = self::Extension|+(self::Extension|[](#t231, #t233), 1) in let final void #t235 = self::Extension|[]=(#t231, #t233, #t234) in #t234);
- self::throws(() → self::Class* => self::Extension|[](self::Extension|[](let final self::Class* #t236 = c in #t236.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t236), c), c));
- self::throws(() → self::Class* => let final self::Class* #t237 = self::Extension|[](let final self::Class* #t238 = c in #t238.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t238), c) in let final self::Class* #t239 = c in let final self::Class* #t240 = new self::Class::•() in let final void #t241 = self::Extension|[]=(#t237, #t239, #t240) in #t240);
- self::throws(() → self::Class* => c = let final self::Class* #t242 = self::Extension|[](let final self::Class* #t243 = c in #t243.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t243), c) in let final self::Class* #t244 = c in let final self::Class* #t245 = new self::Class::•() in let final void #t246 = self::Extension|[]=(#t242, #t244, #t245) in #t245);
- self::throws(() → self::Class* => self::Extension|method(self::Extension|[](self::Extension|[](let final self::Class* #t247 = c in #t247.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t247), c), c)));
- self::throws(() → self::Class* => let final self::Class* #t248 = self::Extension|[](let final self::Class* #t249 = c in #t249.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t249), c) in let final self::Class* #t250 = c in let final self::Class* #t251 = self::Extension|+(self::Extension|[](#t248, #t250), 0) in let final void #t252 = self::Extension|[]=(#t248, #t250, #t251) in #t251);
- self::throws(() → self::Class* => c = let final self::Class* #t253 = self::Extension|[](let final self::Class* #t254 = c in #t254.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t254), c) in let final self::Class* #t255 = c in let final self::Class* #t256 = self::Extension|+(self::Extension|[](#t253, #t255), 0) in let final void #t257 = self::Extension|[]=(#t253, #t255, #t256) in #t256);
- self::throws(() → self::Class* => let final self::Class* #t258 = self::Extension|[](let final self::Class* #t259 = c in #t259.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t259), c) in let final self::Class* #t260 = c in let final self::Class* #t261 = self::Extension|[](#t258, #t260) in let final void #t262 = self::Extension|[]=(#t258, #t260, self::Extension|+(#t261, 1)) in #t261);
- self::throws(() → self::Class* => c = let final self::Class* #t263 = self::Extension|[](let final self::Class* #t264 = c in #t264.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t264), c) in let final self::Class* #t265 = c in let final self::Class* #t266 = self::Extension|[](#t263, #t265) in let final void #t267 = self::Extension|[]=(#t263, #t265, self::Extension|+(#t266, 1)) in #t266);
- self::throws(() → self::Class* => let final self::Class* #t268 = self::Extension|[](let final self::Class* #t269 = c in #t269.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t269), c) in let final self::Class* #t270 = c in let final self::Class* #t271 = self::Extension|+(self::Extension|[](#t268, #t270), 1) in let final void #t272 = self::Extension|[]=(#t268, #t270, #t271) in #t271);
- self::throws(() → self::Class* => c = let final self::Class* #t273 = self::Extension|[](let final self::Class* #t274 = c in #t274.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t274), c) in let final self::Class* #t275 = c in let final self::Class* #t276 = self::Extension|+(self::Extension|[](#t273, #t275), 1) in let final void #t277 = self::Extension|[]=(#t273, #t275, #t276) in #t276);
-}
-static method operatorAccess(self::Class* c) → void {
- self::throws(() → self::Class* => self::Extension|+(let final self::Class* #t278 = c in #t278.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t278), 0));
- self::throws(() → self::Class* => self::Extension|unary-(let final self::Class* #t279 = c in #t279.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t279)));
- let final self::Class* #t280 = c in #t280.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t280, self::Extension|+(self::Extension|get#field(#t280), 0));
- c = let final self::Class* #t281 = c in #t281.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t282 = self::Extension|+(self::Extension|get#field(#t281), 0) in let final void #t283 = self::Extension|set#field(#t281, #t282) in #t282;
- self::throws(() → self::Class* => let final self::Class* #t284 = let final self::Class* #t285 = c in #t285.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t285) in let final self::Class* #t286 = self::Extension|+(self::Extension|get#field(#t284), 0) in let final void #t287 = self::Extension|set#field(#t284, #t286) in #t286);
- self::throws(() → self::Class* => c = let final self::Class* #t288 = let final self::Class* #t289 = c in #t289.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t289) in let final self::Class* #t290 = self::Extension|+(self::Extension|get#field(#t288), 0) in let final void #t291 = self::Extension|set#field(#t288, #t290) in #t290);
- let final self::Class* #t292 = c in #t292.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t292, self::Extension|+(self::Extension|get#field(#t292), 1));
- c = let final self::Class* #t293 = c in #t293.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t294 = self::Extension|get#field(#t293) in let final self::Class* #t295 = let final self::Class* #t296 = self::Extension|+(#t294, 1) in let final void #t297 = self::Extension|set#field(#t293, #t296) in #t296 in #t294;
- let final self::Class* #t298 = c in #t298.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t299 = self::Extension|+(self::Extension|get#field(#t298), 1) in let final void #t300 = self::Extension|set#field(#t298, #t299) in #t299;
- c = let final self::Class* #t301 = c in #t301.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t302 = self::Extension|+(self::Extension|get#field(#t301), 1) in let final void #t303 = self::Extension|set#field(#t301, #t302) in #t302;
-}
-static method ifNull(self::Class* c) → void {
- let final self::Class* #t304 = c in #t304.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t304).{self::Class::==}(null) ?{self::Class*} self::Extension|set#field(#t304, c) : null;
- c = let final self::Class* #t305 = c in #t305.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t306 = self::Extension|get#field(#t305) in #t306.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t307 = c in let final void #t308 = self::Extension|set#field(#t305, #t307) in #t307 : #t306;
- self::throws(() → self::Class* => let final self::Class* #t309 = let final self::Class* #t310 = c in #t310.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t310) in let final self::Class* #t311 = self::Extension|get#field(#t309) in #t311.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t312 = c in let final void #t313 = self::Extension|set#field(#t309, #t312) in #t312 : #t311);
- self::throws(() → self::Class* => c = let final self::Class* #t314 = let final self::Class* #t315 = c in #t315.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t315) in let final self::Class* #t316 = self::Extension|get#field(#t314) in #t316.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t317 = c in let final void #t318 = self::Extension|set#field(#t314, #t317) in #t317 : #t316);
- self::throws(() → self::Class* => let final self::Class* #t319 = let final self::Class* #t320 = c in #t320.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t320) in let final self::Class* #t321 = c in let final self::Class* #t322 = self::Extension|[](#t319, #t321) in #t322.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t323 = c in let final void #t324 = self::Extension|[]=(#t319, #t321, #t323) in #t323 : #t322);
- self::throws(() → self::Class* => c = let final self::Class* #t325 = let final self::Class* #t326 = c in #t326.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t326) in let final self::Class* #t327 = c in let final self::Class* #t328 = self::Extension|[](#t325, #t327) in #t328.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t329 = c in let final void #t330 = self::Extension|[]=(#t325, #t327, #t329) in #t329 : #t328);
-}
-static method throws(() →* void f) → void {
- try {
- f.call();
- }
- on dynamic catch(final dynamic _) {
- return;
- }
- throw "Expected exception.";
-}
diff --git a/pkg/front_end/testcases/nnbd/no_null_shorting_extension.dart.outline.expect b/pkg/front_end/testcases/nnbd/no_null_shorting_extension.dart.outline.expect
deleted file mode 100644
index 05e1cb9..0000000
--- a/pkg/front_end/testcases/nnbd/no_null_shorting_extension.dart.outline.expect
+++ /dev/null
@@ -1,57 +0,0 @@
-library;
-import self as self;
-import "dart:core" as core;
-
-class Class extends core::Object {
- field self::Class* _field;
- synthetic constructor •() → self::Class*
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-extension Extension on self::Class* {
- get field = self::Extension|get#field;
- method method = self::Extension|method;
- tearoff method = self::Extension|get#method;
- operator [] = self::Extension|[];
- operator []= = self::Extension|[]=;
- operator + = self::Extension|+;
- operator unary- = self::Extension|unary-;
- set field = self::Extension|set#field;
-}
-static method Extension|get#field(final self::Class* #this) → self::Class*
- ;
-static method Extension|set#field(final self::Class* #this, self::Class* value) → void
- ;
-static method Extension|method(final self::Class* #this) → self::Class*
- ;
-static method Extension|get#method(final self::Class* #this) → () →* self::Class*
- return () → self::Class* => self::Extension|method(#this);
-static method Extension|[](final self::Class* #this, self::Class* key) → self::Class*
- ;
-static method Extension|[]=(final self::Class* #this, self::Class* key, self::Class* value) → void
- ;
-static method Extension|+(final self::Class* #this, core::int* value) → self::Class*
- ;
-static method Extension|unary-(final self::Class* #this) → self::Class*
- ;
-static method main() → dynamic
- ;
-static method propertyAccess(self::Class* c) → void
- ;
-static method indexAccess(self::Class* c) → void
- ;
-static method operatorAccess(self::Class* c) → void
- ;
-static method ifNull(self::Class* c) → void
- ;
-static method throws(() →* void f) → void
- ;
diff --git a/pkg/front_end/testcases/nnbd/no_null_shorting_extension.dart.strong.expect b/pkg/front_end/testcases/nnbd/no_null_shorting_extension.dart.strong.expect
deleted file mode 100644
index 0e1daa3..0000000
--- a/pkg/front_end/testcases/nnbd/no_null_shorting_extension.dart.strong.expect
+++ /dev/null
@@ -1,178 +0,0 @@
-library;
-import self as self;
-import "dart:core" as core;
-
-class Class extends core::Object {
- field self::Class* _field = null;
- synthetic constructor •() → self::Class*
- : super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-extension Extension on self::Class* {
- get field = self::Extension|get#field;
- method method = self::Extension|method;
- tearoff method = self::Extension|get#method;
- operator [] = self::Extension|[];
- operator []= = self::Extension|[]=;
- operator + = self::Extension|+;
- operator unary- = self::Extension|unary-;
- set field = self::Extension|set#field;
-}
-static method Extension|get#field(final self::Class* #this) → self::Class*
- return #this.{self::Class::_field};
-static method Extension|set#field(final self::Class* #this, self::Class* value) → void {
- #this.{self::Class::_field} = value;
-}
-static method Extension|method(final self::Class* #this) → self::Class*
- return self::Extension|get#field(#this);
-static method Extension|get#method(final self::Class* #this) → () →* self::Class*
- return () → self::Class* => self::Extension|method(#this);
-static method Extension|[](final self::Class* #this, self::Class* key) → self::Class*
- return self::Extension|get#field(#this);
-static method Extension|[]=(final self::Class* #this, self::Class* key, self::Class* value) → void {
- self::Extension|set#field(#this, value);
-}
-static method Extension|+(final self::Class* #this, core::int* value) → self::Class*
- return self::Extension|get#field(#this);
-static method Extension|unary-(final self::Class* #this) → self::Class*
- return self::Extension|get#field(#this);
-static method main() → dynamic {
- self::propertyAccess(null);
- self::indexAccess(null);
- self::operatorAccess(null);
- self::ifNull(null);
-}
-static method propertyAccess(self::Class* c) → void {
- let final self::Class* #t1 = c in #t1.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t1);
- let final self::Class* #t2 = c in #t2.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t2, new self::Class::•());
- c = let final self::Class* #t3 = c in #t3.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t4 = new self::Class::•() in let final void #t5 = self::Extension|set#field(#t3, #t4) in #t4;
- let final self::Class* #t6 = c in #t6.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t6);
- self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t7 = c in #t7.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t7)));
- let final self::Class* #t8 = let final self::Class* #t9 = c in #t9.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t9) in #t8.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t8);
- self::throws(() → self::Class* => let final self::Class* #t10 = self::Extension|get#field(let final self::Class* #t11 = c in #t11.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t11)) in #t10.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t10));
- self::throws(() → self::Class* => let final self::Class* #t12 = new self::Class::•() in let final void #t13 = self::Extension|set#field(let final self::Class* #t14 = c in #t14.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t14), #t12) in #t12);
- let final self::Class* #t15 = let final self::Class* #t16 = c in #t16.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t16) in #t15.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t15, new self::Class::•());
- self::throws(() → self::Class* => let final self::Class* #t17 = self::Extension|get#field(let final self::Class* #t18 = c in #t18.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t18)) in #t17.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t19 = new self::Class::•() in let final void #t20 = self::Extension|set#field(#t17, #t19) in #t19);
- self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t21 = c in #t21.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t21)));
- self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t22 = c in #t22.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t23 = new self::Class::•() in let final void #t24 = self::Extension|set#field(#t22, #t23) in #t23));
- self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t25 = c in #t25.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t25)));
- self::throws(() → self::Class* => c = let final self::Class* #t26 = new self::Class::•() in let final void #t27 = self::Extension|set#field(let final self::Class* #t28 = c in #t28.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t28), #t26) in #t26);
- c = let final self::Class* #t29 = let final self::Class* #t30 = c in #t30.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t30) in #t29.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t31 = new self::Class::•() in let final void #t32 = self::Extension|set#field(#t29, #t31) in #t31;
- self::throws(() → self::Class* => c = let final self::Class* #t33 = self::Extension|get#field(let final self::Class* #t34 = c in #t34.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t34)) in #t33.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t35 = new self::Class::•() in let final void #t36 = self::Extension|set#field(#t33, #t35) in #t35);
- self::throws(() → self::Class* => self::Extension|method(let final self::Class* #t37 = c in #t37.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t37)));
- let final self::Class* #t38 = c in #t38.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t38, self::Extension|get#field(new self::Class::•()));
- c = let final self::Class* #t39 = c in #t39.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t40 = self::Extension|get#field(new self::Class::•()) in let final void #t41 = self::Extension|set#field(#t39, #t40) in #t40;
- let final self::Class* #t42 = c in #t42.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t42, let final self::Class* #t43 = new self::Class::•() in let final void #t44 = self::Extension|set#field(new self::Class::•(), #t43) in #t43);
- c = let final self::Class* #t45 = c in #t45.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t46 = let final self::Class* #t47 = new self::Class::•() in let final void #t48 = self::Extension|set#field(new self::Class::•(), #t47) in #t47 in let final void #t49 = self::Extension|set#field(#t45, #t46) in #t46;
- let final self::Class* #t50 = c in #t50.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t50, self::Extension|method(new self::Class::•()));
- c = let final self::Class* #t51 = c in #t51.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t52 = self::Extension|method(new self::Class::•()) in let final void #t53 = self::Extension|set#field(#t51, #t52) in #t52;
- self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t54 = c in #t54.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t54)));
- self::throws(() → self::Class* => let final self::Class* #t55 = new self::Class::•() in let final void #t56 = self::Extension|set#field(let final self::Class* #t57 = c in #t57.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t57), #t55) in #t55);
- self::throws(() → self::Class* => self::Extension|method(let final self::Class* #t58 = c in #t58.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t58)));
- self::throws(() → self::Class* => self::Extension|get#field(self::Extension|get#field(let final self::Class* #t59 = c in #t59.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t59))));
- self::throws(() → self::Class* => let final self::Class* #t60 = new self::Class::•() in let final void #t61 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t62 = c in #t62.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t62)), #t60) in #t60);
- self::throws(() → self::Class* => c = let final self::Class* #t63 = new self::Class::•() in let final void #t64 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t65 = c in #t65.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t65)), #t63) in #t63);
- self::throws(() → self::Class* => self::Extension|method(self::Extension|get#field(let final self::Class* #t66 = c in #t66.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t66))));
- let final self::Class* #t67 = c in #t67.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t67, self::Extension|get#field(self::Extension|get#field(new self::Class::•())));
- c = let final self::Class* #t68 = c in #t68.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t69 = self::Extension|get#field(self::Extension|get#field(new self::Class::•())) in let final void #t70 = self::Extension|set#field(#t68, #t69) in #t69;
- let final self::Class* #t71 = c in #t71.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t71, let final self::Class* #t72 = new self::Class::•() in let final void #t73 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t72) in #t72);
- c = let final self::Class* #t74 = c in #t74.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t75 = let final self::Class* #t76 = new self::Class::•() in let final void #t77 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t76) in #t76 in let final void #t78 = self::Extension|set#field(#t74, #t75) in #t75;
- let final self::Class* #t79 = c in #t79.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t79, self::Extension|method(self::Extension|get#field(new self::Class::•())));
- c = let final self::Class* #t80 = c in #t80.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t81 = self::Extension|method(self::Extension|get#field(new self::Class::•())) in let final void #t82 = self::Extension|set#field(#t80, #t81) in #t81;
- self::throws(() → self::Class* => self::Extension|get#field(self::Extension|get#field(let final self::Class* #t83 = c in #t83.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t83))));
- self::throws(() → self::Class* => let final self::Class* #t84 = new self::Class::•() in let final void #t85 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t86 = c in #t86.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t86)), #t84) in #t84);
- self::throws(() → self::Class* => self::Extension|method(self::Extension|get#field(let final self::Class* #t87 = c in #t87.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t87))));
- self::throws(() → self::Class* => let final self::Class* #t88 = self::Extension|get#field(new self::Class::•()) in let final void #t89 = self::Extension|set#field(let final self::Class* #t90 = c in #t90.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t90), #t88) in #t88);
- self::throws(() → self::Class* => c = let final self::Class* #t91 = self::Extension|get#field(new self::Class::•()) in let final void #t92 = self::Extension|set#field(let final self::Class* #t93 = c in #t93.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t93), #t91) in #t91);
- self::throws(() → self::Class* => let final self::Class* #t94 = let final self::Class* #t95 = new self::Class::•() in let final void #t96 = self::Extension|set#field(new self::Class::•(), #t95) in #t95 in let final void #t97 = self::Extension|set#field(let final self::Class* #t98 = c in #t98.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t98), #t94) in #t94);
- self::throws(() → self::Class* => c = let final self::Class* #t99 = let final self::Class* #t100 = new self::Class::•() in let final void #t101 = self::Extension|set#field(new self::Class::•(), #t100) in #t100 in let final void #t102 = self::Extension|set#field(let final self::Class* #t103 = c in #t103.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t103), #t99) in #t99);
- self::throws(() → self::Class* => let final self::Class* #t104 = self::Extension|method(new self::Class::•()) in let final void #t105 = self::Extension|set#field(let final self::Class* #t106 = c in #t106.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t106), #t104) in #t104);
- self::throws(() → self::Class* => c = let final self::Class* #t107 = self::Extension|method(new self::Class::•()) in let final void #t108 = self::Extension|set#field(let final self::Class* #t109 = c in #t109.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t109), #t107) in #t107);
- let final self::Class* #t110 = c in #t110.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t110, let final self::Class* #t111 = self::Extension|get#field(new self::Class::•()) in let final void #t112 = self::Extension|set#field(new self::Class::•(), #t111) in #t111);
- c = let final self::Class* #t113 = c in #t113.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t114 = let final self::Class* #t115 = self::Extension|get#field(new self::Class::•()) in let final void #t116 = self::Extension|set#field(new self::Class::•(), #t115) in #t115 in let final void #t117 = self::Extension|set#field(#t113, #t114) in #t114;
- let final self::Class* #t118 = c in #t118.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t118, let final self::Class* #t119 = let final self::Class* #t120 = new self::Class::•() in let final void #t121 = self::Extension|set#field(new self::Class::•(), #t120) in #t120 in let final void #t122 = self::Extension|set#field(new self::Class::•(), #t119) in #t119);
- c = let final self::Class* #t123 = c in #t123.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t124 = let final self::Class* #t125 = let final self::Class* #t126 = new self::Class::•() in let final void #t127 = self::Extension|set#field(new self::Class::•(), #t126) in #t126 in let final void #t128 = self::Extension|set#field(new self::Class::•(), #t125) in #t125 in let final void #t129 = self::Extension|set#field(#t123, #t124) in #t124;
- let final self::Class* #t130 = c in #t130.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t130, let final self::Class* #t131 = self::Extension|method(new self::Class::•()) in let final void #t132 = self::Extension|set#field(new self::Class::•(), #t131) in #t131);
- c = let final self::Class* #t133 = c in #t133.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t134 = let final self::Class* #t135 = self::Extension|method(new self::Class::•()) in let final void #t136 = self::Extension|set#field(new self::Class::•(), #t135) in #t135 in let final void #t137 = self::Extension|set#field(#t133, #t134) in #t134;
- self::throws(() → self::Class* => let final self::Class* #t138 = self::Extension|get#field(new self::Class::•()) in let final void #t139 = self::Extension|set#field(let final self::Class* #t140 = c in #t140.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t140), #t138) in #t138);
- self::throws(() → self::Class* => c = let final self::Class* #t141 = self::Extension|get#field(new self::Class::•()) in let final void #t142 = self::Extension|set#field(let final self::Class* #t143 = c in #t143.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t143), #t141) in #t141);
- self::throws(() → self::Class* => let final self::Class* #t144 = let final self::Class* #t145 = new self::Class::•() in let final void #t146 = self::Extension|set#field(new self::Class::•(), #t145) in #t145 in let final void #t147 = self::Extension|set#field(let final self::Class* #t148 = c in #t148.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t148), #t144) in #t144);
- self::throws(() → self::Class* => c = let final self::Class* #t149 = let final self::Class* #t150 = new self::Class::•() in let final void #t151 = self::Extension|set#field(new self::Class::•(), #t150) in #t150 in let final void #t152 = self::Extension|set#field(let final self::Class* #t153 = c in #t153.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t153), #t149) in #t149);
- self::throws(() → self::Class* => let final self::Class* #t154 = self::Extension|method(new self::Class::•()) in let final void #t155 = self::Extension|set#field(let final self::Class* #t156 = c in #t156.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t156), #t154) in #t154);
- self::throws(() → self::Class* => c = let final self::Class* #t157 = self::Extension|method(new self::Class::•()) in let final void #t158 = self::Extension|set#field(let final self::Class* #t159 = c in #t159.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t159), #t157) in #t157);
- self::throws(() → self::Class* => self::Extension|get#field(self::Extension|method(let final self::Class* #t160 = c in #t160.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t160))));
- self::throws(() → self::Class* => let final self::Class* #t161 = new self::Class::•() in let final void #t162 = self::Extension|set#field(self::Extension|method(let final self::Class* #t163 = c in #t163.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t163)), #t161) in #t161);
- self::throws(() → self::Class* => c = let final self::Class* #t164 = new self::Class::•() in let final void #t165 = self::Extension|set#field(self::Extension|method(let final self::Class* #t166 = c in #t166.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t166)), #t164) in #t164);
- self::throws(() → self::Class* => self::Extension|method(self::Extension|method(let final self::Class* #t167 = c in #t167.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t167))));
- let final self::Class* #t168 = c in #t168.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t168, self::Extension|get#field(self::Extension|method(new self::Class::•())));
- c = let final self::Class* #t169 = c in #t169.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t170 = self::Extension|get#field(self::Extension|method(new self::Class::•())) in let final void #t171 = self::Extension|set#field(#t169, #t170) in #t170;
- let final self::Class* #t172 = c in #t172.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t172, let final self::Class* #t173 = new self::Class::•() in let final void #t174 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t173) in #t173);
- c = let final self::Class* #t175 = c in #t175.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t176 = let final self::Class* #t177 = new self::Class::•() in let final void #t178 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t177) in #t177 in let final void #t179 = self::Extension|set#field(#t175, #t176) in #t176;
- let final self::Class* #t180 = c in #t180.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t180, self::Extension|method(self::Extension|method(new self::Class::•())));
- c = let final self::Class* #t181 = c in #t181.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t182 = self::Extension|method(self::Extension|method(new self::Class::•())) in let final void #t183 = self::Extension|set#field(#t181, #t182) in #t182;
- self::throws(() → self::Class* => self::Extension|get#field(self::Extension|method(let final self::Class* #t184 = c in #t184.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t184))));
- self::throws(() → self::Class* => let final self::Class* #t185 = new self::Class::•() in let final void #t186 = self::Extension|set#field(self::Extension|method(let final self::Class* #t187 = c in #t187.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t187)), #t185) in #t185);
- self::throws(() → self::Class* => self::Extension|method(self::Extension|method(let final self::Class* #t188 = c in #t188.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t188))));
- let final self::Class* #t189 = let final self::Class* #t190 = c in #t190.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t190) in #t189.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t189);
-}
-static method indexAccess(self::Class* c) → void {
- self::throws(() → self::Class* => self::Extension|[](let final self::Class* #t191 = c in #t191.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t191), c));
- self::throws(() → self::Class* => let final self::Class* #t192 = let final self::Class* #t193 = c in #t193.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t193) in let final self::Class* #t194 = c in let final self::Class* #t195 = new self::Class::•() in let final void #t196 = self::Extension|[]=(#t192, #t194, #t195) in #t195);
- self::throws(() → self::Class* => c = let final self::Class* #t197 = let final self::Class* #t198 = c in #t198.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t198) in let final self::Class* #t199 = c in let final self::Class* #t200 = new self::Class::•() in let final void #t201 = self::Extension|[]=(#t197, #t199, #t200) in #t200);
- self::throws(() → self::Class* => self::Extension|method(self::Extension|[](let final self::Class* #t202 = c in #t202.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t202), c)));
- self::throws(() → self::Class* => let final self::Class* #t203 = let final self::Class* #t204 = c in #t204.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t204) in let final self::Class* #t205 = c in let final self::Class* #t206 = self::Extension|+(self::Extension|[](#t203, #t205), 0) in let final void #t207 = self::Extension|[]=(#t203, #t205, #t206) in #t206);
- self::throws(() → self::Class* => c = let final self::Class* #t208 = let final self::Class* #t209 = c in #t209.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t209) in let final self::Class* #t210 = c in let final self::Class* #t211 = self::Extension|+(self::Extension|[](#t208, #t210), 0) in let final void #t212 = self::Extension|[]=(#t208, #t210, #t211) in #t211);
- self::throws(() → self::Class* => let final self::Class* #t213 = let final self::Class* #t214 = c in #t214.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t214) in let final self::Class* #t215 = c in let final self::Class* #t216 = self::Extension|[](#t213, #t215) in let final void #t217 = self::Extension|[]=(#t213, #t215, self::Extension|+(#t216, 1)) in #t216);
- self::throws(() → self::Class* => c = let final self::Class* #t218 = let final self::Class* #t219 = c in #t219.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t219) in let final self::Class* #t220 = c in let final self::Class* #t221 = self::Extension|[](#t218, #t220) in let final void #t222 = self::Extension|[]=(#t218, #t220, self::Extension|+(#t221, 1)) in #t221);
- self::throws(() → self::Class* => let final self::Class* #t223 = let final self::Class* #t224 = c in #t224.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t224) in let final self::Class* #t225 = c in let final self::Class* #t226 = self::Extension|+(self::Extension|[](#t223, #t225), 1) in let final void #t227 = self::Extension|[]=(#t223, #t225, #t226) in #t226);
- self::throws(() → self::Class* => c = let final self::Class* #t228 = let final self::Class* #t229 = c in #t229.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t229) in let final self::Class* #t230 = c in let final self::Class* #t231 = self::Extension|+(self::Extension|[](#t228, #t230), 1) in let final void #t232 = self::Extension|[]=(#t228, #t230, #t231) in #t231);
- self::throws(() → self::Class* => self::Extension|[](self::Extension|[](let final self::Class* #t233 = c in #t233.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t233), c), c));
- self::throws(() → self::Class* => let final self::Class* #t234 = self::Extension|[](let final self::Class* #t235 = c in #t235.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t235), c) in let final self::Class* #t236 = c in let final self::Class* #t237 = new self::Class::•() in let final void #t238 = self::Extension|[]=(#t234, #t236, #t237) in #t237);
- self::throws(() → self::Class* => c = let final self::Class* #t239 = self::Extension|[](let final self::Class* #t240 = c in #t240.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t240), c) in let final self::Class* #t241 = c in let final self::Class* #t242 = new self::Class::•() in let final void #t243 = self::Extension|[]=(#t239, #t241, #t242) in #t242);
- self::throws(() → self::Class* => self::Extension|method(self::Extension|[](self::Extension|[](let final self::Class* #t244 = c in #t244.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t244), c), c)));
- self::throws(() → self::Class* => let final self::Class* #t245 = self::Extension|[](let final self::Class* #t246 = c in #t246.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t246), c) in let final self::Class* #t247 = c in let final self::Class* #t248 = self::Extension|+(self::Extension|[](#t245, #t247), 0) in let final void #t249 = self::Extension|[]=(#t245, #t247, #t248) in #t248);
- self::throws(() → self::Class* => c = let final self::Class* #t250 = self::Extension|[](let final self::Class* #t251 = c in #t251.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t251), c) in let final self::Class* #t252 = c in let final self::Class* #t253 = self::Extension|+(self::Extension|[](#t250, #t252), 0) in let final void #t254 = self::Extension|[]=(#t250, #t252, #t253) in #t253);
- self::throws(() → self::Class* => let final self::Class* #t255 = self::Extension|[](let final self::Class* #t256 = c in #t256.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t256), c) in let final self::Class* #t257 = c in let final self::Class* #t258 = self::Extension|[](#t255, #t257) in let final void #t259 = self::Extension|[]=(#t255, #t257, self::Extension|+(#t258, 1)) in #t258);
- self::throws(() → self::Class* => c = let final self::Class* #t260 = self::Extension|[](let final self::Class* #t261 = c in #t261.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t261), c) in let final self::Class* #t262 = c in let final self::Class* #t263 = self::Extension|[](#t260, #t262) in let final void #t264 = self::Extension|[]=(#t260, #t262, self::Extension|+(#t263, 1)) in #t263);
- self::throws(() → self::Class* => let final self::Class* #t265 = self::Extension|[](let final self::Class* #t266 = c in #t266.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t266), c) in let final self::Class* #t267 = c in let final self::Class* #t268 = self::Extension|+(self::Extension|[](#t265, #t267), 1) in let final void #t269 = self::Extension|[]=(#t265, #t267, #t268) in #t268);
- self::throws(() → self::Class* => c = let final self::Class* #t270 = self::Extension|[](let final self::Class* #t271 = c in #t271.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t271), c) in let final self::Class* #t272 = c in let final self::Class* #t273 = self::Extension|+(self::Extension|[](#t270, #t272), 1) in let final void #t274 = self::Extension|[]=(#t270, #t272, #t273) in #t273);
-}
-static method operatorAccess(self::Class* c) → void {
- self::throws(() → self::Class* => self::Extension|+(let final self::Class* #t275 = c in #t275.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t275), 0));
- self::throws(() → self::Class* => self::Extension|unary-(let final self::Class* #t276 = c in #t276.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t276)));
- let final self::Class* #t277 = c in #t277.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t277, self::Extension|+(self::Extension|get#field(#t277), 0));
- c = let final self::Class* #t278 = c in #t278.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t279 = self::Extension|+(self::Extension|get#field(#t278), 0) in let final void #t280 = self::Extension|set#field(#t278, #t279) in #t279;
- self::throws(() → self::Class* => let final self::Class* #t281 = let final self::Class* #t282 = c in #t282.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t282) in let final self::Class* #t283 = self::Extension|+(self::Extension|get#field(#t281), 0) in let final void #t284 = self::Extension|set#field(#t281, #t283) in #t283);
- self::throws(() → self::Class* => c = let final self::Class* #t285 = let final self::Class* #t286 = c in #t286.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t286) in let final self::Class* #t287 = self::Extension|+(self::Extension|get#field(#t285), 0) in let final void #t288 = self::Extension|set#field(#t285, #t287) in #t287);
- let final self::Class* #t289 = c in #t289.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t289, self::Extension|+(self::Extension|get#field(#t289), 1));
- c = let final self::Class* #t290 = c in #t290.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t291 = self::Extension|get#field(#t290) in let final void #t292 = self::Extension|set#field(#t290, self::Extension|+(#t291, 1)) in #t291;
- let final self::Class* #t293 = c in #t293.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t294 = self::Extension|+(self::Extension|get#field(#t293), 1) in let final void #t295 = self::Extension|set#field(#t293, #t294) in #t294;
- c = let final self::Class* #t296 = c in #t296.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t297 = self::Extension|+(self::Extension|get#field(#t296), 1) in let final void #t298 = self::Extension|set#field(#t296, #t297) in #t297;
-}
-static method ifNull(self::Class* c) → void {
- let final self::Class* #t299 = c in #t299.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t299).{self::Class::==}(null) ?{self::Class*} self::Extension|set#field(#t299, c) : null;
- c = let final self::Class* #t300 = c in #t300.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t301 = self::Extension|get#field(#t300) in #t301.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t302 = c in let final void #t303 = self::Extension|set#field(#t300, #t302) in #t302 : #t301;
- self::throws(() → self::Class* => let final self::Class* #t304 = let final self::Class* #t305 = c in #t305.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t305) in let final self::Class* #t306 = self::Extension|get#field(#t304) in #t306.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t307 = c in let final void #t308 = self::Extension|set#field(#t304, #t307) in #t307 : #t306);
- self::throws(() → self::Class* => c = let final self::Class* #t309 = let final self::Class* #t310 = c in #t310.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t310) in let final self::Class* #t311 = self::Extension|get#field(#t309) in #t311.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t312 = c in let final void #t313 = self::Extension|set#field(#t309, #t312) in #t312 : #t311);
- self::throws(() → self::Class* => let final self::Class* #t314 = let final self::Class* #t315 = c in #t315.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t315) in let final self::Class* #t316 = c in let final self::Class* #t317 = self::Extension|[](#t314, #t316) in #t317.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t318 = c in let final void #t319 = self::Extension|[]=(#t314, #t316, #t318) in #t318 : #t317);
- self::throws(() → self::Class* => c = let final self::Class* #t320 = let final self::Class* #t321 = c in #t321.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t321) in let final self::Class* #t322 = c in let final self::Class* #t323 = self::Extension|[](#t320, #t322) in #t323.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t324 = c in let final void #t325 = self::Extension|[]=(#t320, #t322, #t324) in #t324 : #t323);
-}
-static method throws(() →* void f) → void {
- try {
- f.call();
- }
- on dynamic catch(final dynamic _) {
- return;
- }
- throw "Expected exception.";
-}
diff --git a/pkg/front_end/testcases/nnbd/no_null_shorting_extension.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/no_null_shorting_extension.dart.strong.transformed.expect
deleted file mode 100644
index 0e1daa3..0000000
--- a/pkg/front_end/testcases/nnbd/no_null_shorting_extension.dart.strong.transformed.expect
+++ /dev/null
@@ -1,178 +0,0 @@
-library;
-import self as self;
-import "dart:core" as core;
-
-class Class extends core::Object {
- field self::Class* _field = null;
- synthetic constructor •() → self::Class*
- : super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-extension Extension on self::Class* {
- get field = self::Extension|get#field;
- method method = self::Extension|method;
- tearoff method = self::Extension|get#method;
- operator [] = self::Extension|[];
- operator []= = self::Extension|[]=;
- operator + = self::Extension|+;
- operator unary- = self::Extension|unary-;
- set field = self::Extension|set#field;
-}
-static method Extension|get#field(final self::Class* #this) → self::Class*
- return #this.{self::Class::_field};
-static method Extension|set#field(final self::Class* #this, self::Class* value) → void {
- #this.{self::Class::_field} = value;
-}
-static method Extension|method(final self::Class* #this) → self::Class*
- return self::Extension|get#field(#this);
-static method Extension|get#method(final self::Class* #this) → () →* self::Class*
- return () → self::Class* => self::Extension|method(#this);
-static method Extension|[](final self::Class* #this, self::Class* key) → self::Class*
- return self::Extension|get#field(#this);
-static method Extension|[]=(final self::Class* #this, self::Class* key, self::Class* value) → void {
- self::Extension|set#field(#this, value);
-}
-static method Extension|+(final self::Class* #this, core::int* value) → self::Class*
- return self::Extension|get#field(#this);
-static method Extension|unary-(final self::Class* #this) → self::Class*
- return self::Extension|get#field(#this);
-static method main() → dynamic {
- self::propertyAccess(null);
- self::indexAccess(null);
- self::operatorAccess(null);
- self::ifNull(null);
-}
-static method propertyAccess(self::Class* c) → void {
- let final self::Class* #t1 = c in #t1.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t1);
- let final self::Class* #t2 = c in #t2.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t2, new self::Class::•());
- c = let final self::Class* #t3 = c in #t3.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t4 = new self::Class::•() in let final void #t5 = self::Extension|set#field(#t3, #t4) in #t4;
- let final self::Class* #t6 = c in #t6.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t6);
- self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t7 = c in #t7.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t7)));
- let final self::Class* #t8 = let final self::Class* #t9 = c in #t9.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t9) in #t8.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t8);
- self::throws(() → self::Class* => let final self::Class* #t10 = self::Extension|get#field(let final self::Class* #t11 = c in #t11.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t11)) in #t10.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t10));
- self::throws(() → self::Class* => let final self::Class* #t12 = new self::Class::•() in let final void #t13 = self::Extension|set#field(let final self::Class* #t14 = c in #t14.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t14), #t12) in #t12);
- let final self::Class* #t15 = let final self::Class* #t16 = c in #t16.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t16) in #t15.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t15, new self::Class::•());
- self::throws(() → self::Class* => let final self::Class* #t17 = self::Extension|get#field(let final self::Class* #t18 = c in #t18.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t18)) in #t17.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t19 = new self::Class::•() in let final void #t20 = self::Extension|set#field(#t17, #t19) in #t19);
- self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t21 = c in #t21.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t21)));
- self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t22 = c in #t22.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t23 = new self::Class::•() in let final void #t24 = self::Extension|set#field(#t22, #t23) in #t23));
- self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t25 = c in #t25.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t25)));
- self::throws(() → self::Class* => c = let final self::Class* #t26 = new self::Class::•() in let final void #t27 = self::Extension|set#field(let final self::Class* #t28 = c in #t28.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t28), #t26) in #t26);
- c = let final self::Class* #t29 = let final self::Class* #t30 = c in #t30.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t30) in #t29.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t31 = new self::Class::•() in let final void #t32 = self::Extension|set#field(#t29, #t31) in #t31;
- self::throws(() → self::Class* => c = let final self::Class* #t33 = self::Extension|get#field(let final self::Class* #t34 = c in #t34.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t34)) in #t33.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t35 = new self::Class::•() in let final void #t36 = self::Extension|set#field(#t33, #t35) in #t35);
- self::throws(() → self::Class* => self::Extension|method(let final self::Class* #t37 = c in #t37.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t37)));
- let final self::Class* #t38 = c in #t38.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t38, self::Extension|get#field(new self::Class::•()));
- c = let final self::Class* #t39 = c in #t39.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t40 = self::Extension|get#field(new self::Class::•()) in let final void #t41 = self::Extension|set#field(#t39, #t40) in #t40;
- let final self::Class* #t42 = c in #t42.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t42, let final self::Class* #t43 = new self::Class::•() in let final void #t44 = self::Extension|set#field(new self::Class::•(), #t43) in #t43);
- c = let final self::Class* #t45 = c in #t45.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t46 = let final self::Class* #t47 = new self::Class::•() in let final void #t48 = self::Extension|set#field(new self::Class::•(), #t47) in #t47 in let final void #t49 = self::Extension|set#field(#t45, #t46) in #t46;
- let final self::Class* #t50 = c in #t50.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t50, self::Extension|method(new self::Class::•()));
- c = let final self::Class* #t51 = c in #t51.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t52 = self::Extension|method(new self::Class::•()) in let final void #t53 = self::Extension|set#field(#t51, #t52) in #t52;
- self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t54 = c in #t54.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t54)));
- self::throws(() → self::Class* => let final self::Class* #t55 = new self::Class::•() in let final void #t56 = self::Extension|set#field(let final self::Class* #t57 = c in #t57.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t57), #t55) in #t55);
- self::throws(() → self::Class* => self::Extension|method(let final self::Class* #t58 = c in #t58.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t58)));
- self::throws(() → self::Class* => self::Extension|get#field(self::Extension|get#field(let final self::Class* #t59 = c in #t59.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t59))));
- self::throws(() → self::Class* => let final self::Class* #t60 = new self::Class::•() in let final void #t61 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t62 = c in #t62.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t62)), #t60) in #t60);
- self::throws(() → self::Class* => c = let final self::Class* #t63 = new self::Class::•() in let final void #t64 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t65 = c in #t65.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t65)), #t63) in #t63);
- self::throws(() → self::Class* => self::Extension|method(self::Extension|get#field(let final self::Class* #t66 = c in #t66.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t66))));
- let final self::Class* #t67 = c in #t67.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t67, self::Extension|get#field(self::Extension|get#field(new self::Class::•())));
- c = let final self::Class* #t68 = c in #t68.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t69 = self::Extension|get#field(self::Extension|get#field(new self::Class::•())) in let final void #t70 = self::Extension|set#field(#t68, #t69) in #t69;
- let final self::Class* #t71 = c in #t71.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t71, let final self::Class* #t72 = new self::Class::•() in let final void #t73 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t72) in #t72);
- c = let final self::Class* #t74 = c in #t74.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t75 = let final self::Class* #t76 = new self::Class::•() in let final void #t77 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t76) in #t76 in let final void #t78 = self::Extension|set#field(#t74, #t75) in #t75;
- let final self::Class* #t79 = c in #t79.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t79, self::Extension|method(self::Extension|get#field(new self::Class::•())));
- c = let final self::Class* #t80 = c in #t80.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t81 = self::Extension|method(self::Extension|get#field(new self::Class::•())) in let final void #t82 = self::Extension|set#field(#t80, #t81) in #t81;
- self::throws(() → self::Class* => self::Extension|get#field(self::Extension|get#field(let final self::Class* #t83 = c in #t83.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t83))));
- self::throws(() → self::Class* => let final self::Class* #t84 = new self::Class::•() in let final void #t85 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t86 = c in #t86.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t86)), #t84) in #t84);
- self::throws(() → self::Class* => self::Extension|method(self::Extension|get#field(let final self::Class* #t87 = c in #t87.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t87))));
- self::throws(() → self::Class* => let final self::Class* #t88 = self::Extension|get#field(new self::Class::•()) in let final void #t89 = self::Extension|set#field(let final self::Class* #t90 = c in #t90.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t90), #t88) in #t88);
- self::throws(() → self::Class* => c = let final self::Class* #t91 = self::Extension|get#field(new self::Class::•()) in let final void #t92 = self::Extension|set#field(let final self::Class* #t93 = c in #t93.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t93), #t91) in #t91);
- self::throws(() → self::Class* => let final self::Class* #t94 = let final self::Class* #t95 = new self::Class::•() in let final void #t96 = self::Extension|set#field(new self::Class::•(), #t95) in #t95 in let final void #t97 = self::Extension|set#field(let final self::Class* #t98 = c in #t98.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t98), #t94) in #t94);
- self::throws(() → self::Class* => c = let final self::Class* #t99 = let final self::Class* #t100 = new self::Class::•() in let final void #t101 = self::Extension|set#field(new self::Class::•(), #t100) in #t100 in let final void #t102 = self::Extension|set#field(let final self::Class* #t103 = c in #t103.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t103), #t99) in #t99);
- self::throws(() → self::Class* => let final self::Class* #t104 = self::Extension|method(new self::Class::•()) in let final void #t105 = self::Extension|set#field(let final self::Class* #t106 = c in #t106.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t106), #t104) in #t104);
- self::throws(() → self::Class* => c = let final self::Class* #t107 = self::Extension|method(new self::Class::•()) in let final void #t108 = self::Extension|set#field(let final self::Class* #t109 = c in #t109.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t109), #t107) in #t107);
- let final self::Class* #t110 = c in #t110.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t110, let final self::Class* #t111 = self::Extension|get#field(new self::Class::•()) in let final void #t112 = self::Extension|set#field(new self::Class::•(), #t111) in #t111);
- c = let final self::Class* #t113 = c in #t113.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t114 = let final self::Class* #t115 = self::Extension|get#field(new self::Class::•()) in let final void #t116 = self::Extension|set#field(new self::Class::•(), #t115) in #t115 in let final void #t117 = self::Extension|set#field(#t113, #t114) in #t114;
- let final self::Class* #t118 = c in #t118.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t118, let final self::Class* #t119 = let final self::Class* #t120 = new self::Class::•() in let final void #t121 = self::Extension|set#field(new self::Class::•(), #t120) in #t120 in let final void #t122 = self::Extension|set#field(new self::Class::•(), #t119) in #t119);
- c = let final self::Class* #t123 = c in #t123.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t124 = let final self::Class* #t125 = let final self::Class* #t126 = new self::Class::•() in let final void #t127 = self::Extension|set#field(new self::Class::•(), #t126) in #t126 in let final void #t128 = self::Extension|set#field(new self::Class::•(), #t125) in #t125 in let final void #t129 = self::Extension|set#field(#t123, #t124) in #t124;
- let final self::Class* #t130 = c in #t130.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t130, let final self::Class* #t131 = self::Extension|method(new self::Class::•()) in let final void #t132 = self::Extension|set#field(new self::Class::•(), #t131) in #t131);
- c = let final self::Class* #t133 = c in #t133.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t134 = let final self::Class* #t135 = self::Extension|method(new self::Class::•()) in let final void #t136 = self::Extension|set#field(new self::Class::•(), #t135) in #t135 in let final void #t137 = self::Extension|set#field(#t133, #t134) in #t134;
- self::throws(() → self::Class* => let final self::Class* #t138 = self::Extension|get#field(new self::Class::•()) in let final void #t139 = self::Extension|set#field(let final self::Class* #t140 = c in #t140.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t140), #t138) in #t138);
- self::throws(() → self::Class* => c = let final self::Class* #t141 = self::Extension|get#field(new self::Class::•()) in let final void #t142 = self::Extension|set#field(let final self::Class* #t143 = c in #t143.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t143), #t141) in #t141);
- self::throws(() → self::Class* => let final self::Class* #t144 = let final self::Class* #t145 = new self::Class::•() in let final void #t146 = self::Extension|set#field(new self::Class::•(), #t145) in #t145 in let final void #t147 = self::Extension|set#field(let final self::Class* #t148 = c in #t148.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t148), #t144) in #t144);
- self::throws(() → self::Class* => c = let final self::Class* #t149 = let final self::Class* #t150 = new self::Class::•() in let final void #t151 = self::Extension|set#field(new self::Class::•(), #t150) in #t150 in let final void #t152 = self::Extension|set#field(let final self::Class* #t153 = c in #t153.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t153), #t149) in #t149);
- self::throws(() → self::Class* => let final self::Class* #t154 = self::Extension|method(new self::Class::•()) in let final void #t155 = self::Extension|set#field(let final self::Class* #t156 = c in #t156.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t156), #t154) in #t154);
- self::throws(() → self::Class* => c = let final self::Class* #t157 = self::Extension|method(new self::Class::•()) in let final void #t158 = self::Extension|set#field(let final self::Class* #t159 = c in #t159.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t159), #t157) in #t157);
- self::throws(() → self::Class* => self::Extension|get#field(self::Extension|method(let final self::Class* #t160 = c in #t160.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t160))));
- self::throws(() → self::Class* => let final self::Class* #t161 = new self::Class::•() in let final void #t162 = self::Extension|set#field(self::Extension|method(let final self::Class* #t163 = c in #t163.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t163)), #t161) in #t161);
- self::throws(() → self::Class* => c = let final self::Class* #t164 = new self::Class::•() in let final void #t165 = self::Extension|set#field(self::Extension|method(let final self::Class* #t166 = c in #t166.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t166)), #t164) in #t164);
- self::throws(() → self::Class* => self::Extension|method(self::Extension|method(let final self::Class* #t167 = c in #t167.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t167))));
- let final self::Class* #t168 = c in #t168.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t168, self::Extension|get#field(self::Extension|method(new self::Class::•())));
- c = let final self::Class* #t169 = c in #t169.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t170 = self::Extension|get#field(self::Extension|method(new self::Class::•())) in let final void #t171 = self::Extension|set#field(#t169, #t170) in #t170;
- let final self::Class* #t172 = c in #t172.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t172, let final self::Class* #t173 = new self::Class::•() in let final void #t174 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t173) in #t173);
- c = let final self::Class* #t175 = c in #t175.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t176 = let final self::Class* #t177 = new self::Class::•() in let final void #t178 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t177) in #t177 in let final void #t179 = self::Extension|set#field(#t175, #t176) in #t176;
- let final self::Class* #t180 = c in #t180.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t180, self::Extension|method(self::Extension|method(new self::Class::•())));
- c = let final self::Class* #t181 = c in #t181.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t182 = self::Extension|method(self::Extension|method(new self::Class::•())) in let final void #t183 = self::Extension|set#field(#t181, #t182) in #t182;
- self::throws(() → self::Class* => self::Extension|get#field(self::Extension|method(let final self::Class* #t184 = c in #t184.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t184))));
- self::throws(() → self::Class* => let final self::Class* #t185 = new self::Class::•() in let final void #t186 = self::Extension|set#field(self::Extension|method(let final self::Class* #t187 = c in #t187.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t187)), #t185) in #t185);
- self::throws(() → self::Class* => self::Extension|method(self::Extension|method(let final self::Class* #t188 = c in #t188.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t188))));
- let final self::Class* #t189 = let final self::Class* #t190 = c in #t190.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t190) in #t189.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t189);
-}
-static method indexAccess(self::Class* c) → void {
- self::throws(() → self::Class* => self::Extension|[](let final self::Class* #t191 = c in #t191.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t191), c));
- self::throws(() → self::Class* => let final self::Class* #t192 = let final self::Class* #t193 = c in #t193.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t193) in let final self::Class* #t194 = c in let final self::Class* #t195 = new self::Class::•() in let final void #t196 = self::Extension|[]=(#t192, #t194, #t195) in #t195);
- self::throws(() → self::Class* => c = let final self::Class* #t197 = let final self::Class* #t198 = c in #t198.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t198) in let final self::Class* #t199 = c in let final self::Class* #t200 = new self::Class::•() in let final void #t201 = self::Extension|[]=(#t197, #t199, #t200) in #t200);
- self::throws(() → self::Class* => self::Extension|method(self::Extension|[](let final self::Class* #t202 = c in #t202.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t202), c)));
- self::throws(() → self::Class* => let final self::Class* #t203 = let final self::Class* #t204 = c in #t204.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t204) in let final self::Class* #t205 = c in let final self::Class* #t206 = self::Extension|+(self::Extension|[](#t203, #t205), 0) in let final void #t207 = self::Extension|[]=(#t203, #t205, #t206) in #t206);
- self::throws(() → self::Class* => c = let final self::Class* #t208 = let final self::Class* #t209 = c in #t209.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t209) in let final self::Class* #t210 = c in let final self::Class* #t211 = self::Extension|+(self::Extension|[](#t208, #t210), 0) in let final void #t212 = self::Extension|[]=(#t208, #t210, #t211) in #t211);
- self::throws(() → self::Class* => let final self::Class* #t213 = let final self::Class* #t214 = c in #t214.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t214) in let final self::Class* #t215 = c in let final self::Class* #t216 = self::Extension|[](#t213, #t215) in let final void #t217 = self::Extension|[]=(#t213, #t215, self::Extension|+(#t216, 1)) in #t216);
- self::throws(() → self::Class* => c = let final self::Class* #t218 = let final self::Class* #t219 = c in #t219.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t219) in let final self::Class* #t220 = c in let final self::Class* #t221 = self::Extension|[](#t218, #t220) in let final void #t222 = self::Extension|[]=(#t218, #t220, self::Extension|+(#t221, 1)) in #t221);
- self::throws(() → self::Class* => let final self::Class* #t223 = let final self::Class* #t224 = c in #t224.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t224) in let final self::Class* #t225 = c in let final self::Class* #t226 = self::Extension|+(self::Extension|[](#t223, #t225), 1) in let final void #t227 = self::Extension|[]=(#t223, #t225, #t226) in #t226);
- self::throws(() → self::Class* => c = let final self::Class* #t228 = let final self::Class* #t229 = c in #t229.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t229) in let final self::Class* #t230 = c in let final self::Class* #t231 = self::Extension|+(self::Extension|[](#t228, #t230), 1) in let final void #t232 = self::Extension|[]=(#t228, #t230, #t231) in #t231);
- self::throws(() → self::Class* => self::Extension|[](self::Extension|[](let final self::Class* #t233 = c in #t233.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t233), c), c));
- self::throws(() → self::Class* => let final self::Class* #t234 = self::Extension|[](let final self::Class* #t235 = c in #t235.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t235), c) in let final self::Class* #t236 = c in let final self::Class* #t237 = new self::Class::•() in let final void #t238 = self::Extension|[]=(#t234, #t236, #t237) in #t237);
- self::throws(() → self::Class* => c = let final self::Class* #t239 = self::Extension|[](let final self::Class* #t240 = c in #t240.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t240), c) in let final self::Class* #t241 = c in let final self::Class* #t242 = new self::Class::•() in let final void #t243 = self::Extension|[]=(#t239, #t241, #t242) in #t242);
- self::throws(() → self::Class* => self::Extension|method(self::Extension|[](self::Extension|[](let final self::Class* #t244 = c in #t244.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t244), c), c)));
- self::throws(() → self::Class* => let final self::Class* #t245 = self::Extension|[](let final self::Class* #t246 = c in #t246.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t246), c) in let final self::Class* #t247 = c in let final self::Class* #t248 = self::Extension|+(self::Extension|[](#t245, #t247), 0) in let final void #t249 = self::Extension|[]=(#t245, #t247, #t248) in #t248);
- self::throws(() → self::Class* => c = let final self::Class* #t250 = self::Extension|[](let final self::Class* #t251 = c in #t251.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t251), c) in let final self::Class* #t252 = c in let final self::Class* #t253 = self::Extension|+(self::Extension|[](#t250, #t252), 0) in let final void #t254 = self::Extension|[]=(#t250, #t252, #t253) in #t253);
- self::throws(() → self::Class* => let final self::Class* #t255 = self::Extension|[](let final self::Class* #t256 = c in #t256.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t256), c) in let final self::Class* #t257 = c in let final self::Class* #t258 = self::Extension|[](#t255, #t257) in let final void #t259 = self::Extension|[]=(#t255, #t257, self::Extension|+(#t258, 1)) in #t258);
- self::throws(() → self::Class* => c = let final self::Class* #t260 = self::Extension|[](let final self::Class* #t261 = c in #t261.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t261), c) in let final self::Class* #t262 = c in let final self::Class* #t263 = self::Extension|[](#t260, #t262) in let final void #t264 = self::Extension|[]=(#t260, #t262, self::Extension|+(#t263, 1)) in #t263);
- self::throws(() → self::Class* => let final self::Class* #t265 = self::Extension|[](let final self::Class* #t266 = c in #t266.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t266), c) in let final self::Class* #t267 = c in let final self::Class* #t268 = self::Extension|+(self::Extension|[](#t265, #t267), 1) in let final void #t269 = self::Extension|[]=(#t265, #t267, #t268) in #t268);
- self::throws(() → self::Class* => c = let final self::Class* #t270 = self::Extension|[](let final self::Class* #t271 = c in #t271.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t271), c) in let final self::Class* #t272 = c in let final self::Class* #t273 = self::Extension|+(self::Extension|[](#t270, #t272), 1) in let final void #t274 = self::Extension|[]=(#t270, #t272, #t273) in #t273);
-}
-static method operatorAccess(self::Class* c) → void {
- self::throws(() → self::Class* => self::Extension|+(let final self::Class* #t275 = c in #t275.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t275), 0));
- self::throws(() → self::Class* => self::Extension|unary-(let final self::Class* #t276 = c in #t276.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t276)));
- let final self::Class* #t277 = c in #t277.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t277, self::Extension|+(self::Extension|get#field(#t277), 0));
- c = let final self::Class* #t278 = c in #t278.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t279 = self::Extension|+(self::Extension|get#field(#t278), 0) in let final void #t280 = self::Extension|set#field(#t278, #t279) in #t279;
- self::throws(() → self::Class* => let final self::Class* #t281 = let final self::Class* #t282 = c in #t282.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t282) in let final self::Class* #t283 = self::Extension|+(self::Extension|get#field(#t281), 0) in let final void #t284 = self::Extension|set#field(#t281, #t283) in #t283);
- self::throws(() → self::Class* => c = let final self::Class* #t285 = let final self::Class* #t286 = c in #t286.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t286) in let final self::Class* #t287 = self::Extension|+(self::Extension|get#field(#t285), 0) in let final void #t288 = self::Extension|set#field(#t285, #t287) in #t287);
- let final self::Class* #t289 = c in #t289.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t289, self::Extension|+(self::Extension|get#field(#t289), 1));
- c = let final self::Class* #t290 = c in #t290.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t291 = self::Extension|get#field(#t290) in let final void #t292 = self::Extension|set#field(#t290, self::Extension|+(#t291, 1)) in #t291;
- let final self::Class* #t293 = c in #t293.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t294 = self::Extension|+(self::Extension|get#field(#t293), 1) in let final void #t295 = self::Extension|set#field(#t293, #t294) in #t294;
- c = let final self::Class* #t296 = c in #t296.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t297 = self::Extension|+(self::Extension|get#field(#t296), 1) in let final void #t298 = self::Extension|set#field(#t296, #t297) in #t297;
-}
-static method ifNull(self::Class* c) → void {
- let final self::Class* #t299 = c in #t299.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t299).{self::Class::==}(null) ?{self::Class*} self::Extension|set#field(#t299, c) : null;
- c = let final self::Class* #t300 = c in #t300.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t301 = self::Extension|get#field(#t300) in #t301.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t302 = c in let final void #t303 = self::Extension|set#field(#t300, #t302) in #t302 : #t301;
- self::throws(() → self::Class* => let final self::Class* #t304 = let final self::Class* #t305 = c in #t305.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t305) in let final self::Class* #t306 = self::Extension|get#field(#t304) in #t306.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t307 = c in let final void #t308 = self::Extension|set#field(#t304, #t307) in #t307 : #t306);
- self::throws(() → self::Class* => c = let final self::Class* #t309 = let final self::Class* #t310 = c in #t310.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t310) in let final self::Class* #t311 = self::Extension|get#field(#t309) in #t311.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t312 = c in let final void #t313 = self::Extension|set#field(#t309, #t312) in #t312 : #t311);
- self::throws(() → self::Class* => let final self::Class* #t314 = let final self::Class* #t315 = c in #t315.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t315) in let final self::Class* #t316 = c in let final self::Class* #t317 = self::Extension|[](#t314, #t316) in #t317.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t318 = c in let final void #t319 = self::Extension|[]=(#t314, #t316, #t318) in #t318 : #t317);
- self::throws(() → self::Class* => c = let final self::Class* #t320 = let final self::Class* #t321 = c in #t321.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t321) in let final self::Class* #t322 = c in let final self::Class* #t323 = self::Extension|[](#t320, #t322) in #t323.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t324 = c in let final void #t325 = self::Extension|[]=(#t320, #t322, #t324) in #t324 : #t323);
-}
-static method throws(() →* void f) → void {
- try {
- f.call();
- }
- on dynamic catch(final dynamic _) {
- return;
- }
- throw "Expected exception.";
-}
diff --git a/pkg/front_end/testcases/nnbd/nsm_from_opt_in.dart.outline.expect b/pkg/front_end/testcases/nnbd/nsm_from_opt_in.dart.outline.expect
deleted file mode 100644
index b1de82c..0000000
--- a/pkg/front_end/testcases/nnbd/nsm_from_opt_in.dart.outline.expect
+++ /dev/null
@@ -1,100 +0,0 @@
-library;
-import self as self;
-import "dart:core" as core;
-import "nsm_from_opt_in_lib.dart" as nsm;
-
-import "org-dartlang-testcase:///nsm_from_opt_in_lib.dart";
-
-abstract class A2 extends core::Object implements nsm::A {
- synthetic constructor •() → self::A2*
- ;
- @core::override
- method noSuchMethod(core::Invocation* invocation) → dynamic
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature get runtimeType() → core::Type*;
- abstract member-signature method method(core::int* i) → core::int*;
- abstract member-signature method genericMethod1<T extends core::Object* = dynamic>(self::A2::genericMethod1::T* t) → self::A2::genericMethod1::T*;
- abstract member-signature method genericMethod2<T extends core::Object* = core::Object*>(self::A2::genericMethod2::T* t) → self::A2::genericMethod2::T*;
- abstract member-signature method genericMethod3<T extends core::Object* = core::Object*>(self::A2::genericMethod3::T* t) → self::A2::genericMethod3::T*;
-}
-abstract class B2 extends nsm::A implements self::C2 {
- synthetic constructor •() → self::B2*
- ;
- @core::override
- method noSuchMethod(core::Invocation* invocation) → dynamic
- ;
- abstract forwarding-stub method method(core::int* i, {dynamic optional}) → core::int*;
- abstract member-signature method genericMethod1<T extends core::Object* = dynamic>(self::B2::genericMethod1::T* t) → self::B2::genericMethod1::T*;
- abstract member-signature method genericMethod2<T extends core::Object* = core::Object*>(self::B2::genericMethod2::T* t) → self::B2::genericMethod2::T*;
- abstract member-signature method genericMethod3<T extends core::Object* = core::Object*>(self::B2::genericMethod3::T* t) → self::B2::genericMethod3::T*;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature get runtimeType() → core::Type*;
-}
-abstract class C2 extends core::Object {
- synthetic constructor •() → self::C2*
- ;
- abstract method method(core::int* i, {dynamic optional}) → core::int*;
- abstract method genericMethod1<T extends core::Object* = dynamic>(self::C2::genericMethod1::T* t) → self::C2::genericMethod1::T*;
- abstract method genericMethod2<T extends core::Object* = core::Object*>(self::C2::genericMethod2::T* t) → self::C2::genericMethod2::T*;
- abstract method genericMethod3<T extends core::Object* = core::Object*>(self::C2::genericMethod3::T* t) → self::C2::genericMethod3::T*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature get runtimeType() → core::Type*;
-}
-static method main() → dynamic
- ;
-
-library /*isNonNullableByDefault*/;
-import self as nsm;
-import "dart:core" as core;
-
-class A extends core::Object {
- synthetic constructor •() → nsm::A
- ;
- method method(core::int? i) → core::int
- ;
- method genericMethod1<T extends core::Object? = dynamic>(nsm::A::genericMethod1::T% t) → nsm::A::genericMethod1::T%
- ;
- method genericMethod2<T extends core::Object? = core::Object?>(nsm::A::genericMethod2::T% t) → nsm::A::genericMethod2::T%
- ;
- method genericMethod3<T extends core::Object = core::Object>(nsm::A::genericMethod3::T t) → nsm::A::genericMethod3::T
- ;
-}
-abstract class B1 extends nsm::A implements nsm::C1 {
- synthetic constructor •() → nsm::B1
- ;
- @core::override
- method noSuchMethod(core::Invocation invocation) → dynamic
- ;
- abstract forwarding-stub method method(core::int? i, {dynamic optional}) → core::int;
-}
-abstract class C1 extends core::Object {
- synthetic constructor •() → nsm::C1
- ;
- abstract method method(core::int? i, {dynamic optional}) → core::int;
- abstract method genericMethod1<T extends core::Object? = dynamic>(nsm::C1::genericMethod1::T% t) → nsm::C1::genericMethod1::T%;
- abstract method genericMethod2<T extends core::Object? = core::Object?>(nsm::C1::genericMethod2::T% t) → nsm::C1::genericMethod2::T%;
- abstract method genericMethod3<T extends core::Object = core::Object>(nsm::C1::genericMethod3::T t) → nsm::C1::genericMethod3::T;
-}
diff --git a/pkg/front_end/testcases/nnbd/nsm_from_opt_in.dart.strong.expect b/pkg/front_end/testcases/nnbd/nsm_from_opt_in.dart.strong.expect
deleted file mode 100644
index 298b93f..0000000
--- a/pkg/front_end/testcases/nnbd/nsm_from_opt_in.dart.strong.expect
+++ /dev/null
@@ -1,113 +0,0 @@
-library;
-import self as self;
-import "dart:core" as core;
-import "nsm_from_opt_in_lib.dart" as nsm;
-
-import "org-dartlang-testcase:///nsm_from_opt_in_lib.dart";
-
-abstract class A2 extends core::Object implements nsm::A {
- synthetic constructor •() → self::A2*
- : super core::Object::•()
- ;
- @#C1
- method noSuchMethod(core::Invocation* invocation) → dynamic {
- return super.{core::Object::noSuchMethod}(invocation);
- }
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature get runtimeType() → core::Type*;
- abstract member-signature method method(core::int* i) → core::int*;
- abstract member-signature method genericMethod1<T extends core::Object* = dynamic>(self::A2::genericMethod1::T* t) → self::A2::genericMethod1::T*;
- abstract member-signature method genericMethod2<T extends core::Object* = core::Object*>(self::A2::genericMethod2::T* t) → self::A2::genericMethod2::T*;
- abstract member-signature method genericMethod3<T extends core::Object* = core::Object*>(self::A2::genericMethod3::T* t) → self::A2::genericMethod3::T*;
-}
-abstract class B2 extends nsm::A implements self::C2 {
- synthetic constructor •() → self::B2*
- : super nsm::A::•()
- ;
- @#C1
- method noSuchMethod(core::Invocation* invocation) → dynamic {
- return super.{core::Object::noSuchMethod}(invocation);
- }
- abstract forwarding-stub method method(core::int* i, {dynamic optional = #C2}) → core::int*;
- abstract member-signature method genericMethod1<T extends core::Object* = dynamic>(self::B2::genericMethod1::T* t) → self::B2::genericMethod1::T*;
- abstract member-signature method genericMethod2<T extends core::Object* = core::Object*>(self::B2::genericMethod2::T* t) → self::B2::genericMethod2::T*;
- abstract member-signature method genericMethod3<T extends core::Object* = core::Object*>(self::B2::genericMethod3::T* t) → self::B2::genericMethod3::T*;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature get runtimeType() → core::Type*;
-}
-abstract class C2 extends core::Object {
- synthetic constructor •() → self::C2*
- : super core::Object::•()
- ;
- abstract method method(core::int* i, {dynamic optional = #C2}) → core::int*;
- abstract method genericMethod1<T extends core::Object* = dynamic>(self::C2::genericMethod1::T* t) → self::C2::genericMethod1::T*;
- abstract method genericMethod2<T extends core::Object* = core::Object*>(self::C2::genericMethod2::T* t) → self::C2::genericMethod2::T*;
- abstract method genericMethod3<T extends core::Object* = core::Object*>(self::C2::genericMethod3::T* t) → self::C2::genericMethod3::T*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature get runtimeType() → core::Type*;
-}
-static method main() → dynamic {}
-
-library /*isNonNullableByDefault*/;
-import self as nsm;
-import "dart:core" as core;
-
-class A extends core::Object {
- synthetic constructor •() → nsm::A
- : super core::Object::•()
- ;
- method method(core::int? i) → core::int
- return let final core::int? #t1 = i in #t1.{core::num::==}(null) ?{core::int} 0 : #t1{core::int};
- method genericMethod1<T extends core::Object? = dynamic>(nsm::A::genericMethod1::T% t) → nsm::A::genericMethod1::T%
- return t;
- method genericMethod2<T extends core::Object? = core::Object?>(nsm::A::genericMethod2::T% t) → nsm::A::genericMethod2::T%
- return t;
- method genericMethod3<T extends core::Object = core::Object>(nsm::A::genericMethod3::T t) → nsm::A::genericMethod3::T
- return t;
-}
-abstract class B1 extends nsm::A implements nsm::C1 {
- synthetic constructor •() → nsm::B1
- : super nsm::A::•()
- ;
- @#C1
- method noSuchMethod(core::Invocation invocation) → dynamic {
- return super.{core::Object::noSuchMethod}(invocation);
- }
- abstract forwarding-stub method method(core::int? i, {dynamic optional = #C2}) → core::int;
-}
-abstract class C1 extends core::Object {
- synthetic constructor •() → nsm::C1
- : super core::Object::•()
- ;
- abstract method method(core::int? i, {dynamic optional = #C2}) → core::int;
- abstract method genericMethod1<T extends core::Object? = dynamic>(nsm::C1::genericMethod1::T% t) → nsm::C1::genericMethod1::T%;
- abstract method genericMethod2<T extends core::Object? = core::Object?>(nsm::C1::genericMethod2::T% t) → nsm::C1::genericMethod2::T%;
- abstract method genericMethod3<T extends core::Object = core::Object>(nsm::C1::genericMethod3::T t) → nsm::C1::genericMethod3::T;
-}
-
-constants {
- #C1 = core::_Override {}
- #C2 = null
-}
diff --git a/pkg/front_end/testcases/nnbd/nsm_from_opt_in.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/nsm_from_opt_in.dart.strong.transformed.expect
deleted file mode 100644
index 298b93f..0000000
--- a/pkg/front_end/testcases/nnbd/nsm_from_opt_in.dart.strong.transformed.expect
+++ /dev/null
@@ -1,113 +0,0 @@
-library;
-import self as self;
-import "dart:core" as core;
-import "nsm_from_opt_in_lib.dart" as nsm;
-
-import "org-dartlang-testcase:///nsm_from_opt_in_lib.dart";
-
-abstract class A2 extends core::Object implements nsm::A {
- synthetic constructor •() → self::A2*
- : super core::Object::•()
- ;
- @#C1
- method noSuchMethod(core::Invocation* invocation) → dynamic {
- return super.{core::Object::noSuchMethod}(invocation);
- }
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature get runtimeType() → core::Type*;
- abstract member-signature method method(core::int* i) → core::int*;
- abstract member-signature method genericMethod1<T extends core::Object* = dynamic>(self::A2::genericMethod1::T* t) → self::A2::genericMethod1::T*;
- abstract member-signature method genericMethod2<T extends core::Object* = core::Object*>(self::A2::genericMethod2::T* t) → self::A2::genericMethod2::T*;
- abstract member-signature method genericMethod3<T extends core::Object* = core::Object*>(self::A2::genericMethod3::T* t) → self::A2::genericMethod3::T*;
-}
-abstract class B2 extends nsm::A implements self::C2 {
- synthetic constructor •() → self::B2*
- : super nsm::A::•()
- ;
- @#C1
- method noSuchMethod(core::Invocation* invocation) → dynamic {
- return super.{core::Object::noSuchMethod}(invocation);
- }
- abstract forwarding-stub method method(core::int* i, {dynamic optional = #C2}) → core::int*;
- abstract member-signature method genericMethod1<T extends core::Object* = dynamic>(self::B2::genericMethod1::T* t) → self::B2::genericMethod1::T*;
- abstract member-signature method genericMethod2<T extends core::Object* = core::Object*>(self::B2::genericMethod2::T* t) → self::B2::genericMethod2::T*;
- abstract member-signature method genericMethod3<T extends core::Object* = core::Object*>(self::B2::genericMethod3::T* t) → self::B2::genericMethod3::T*;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature get runtimeType() → core::Type*;
-}
-abstract class C2 extends core::Object {
- synthetic constructor •() → self::C2*
- : super core::Object::•()
- ;
- abstract method method(core::int* i, {dynamic optional = #C2}) → core::int*;
- abstract method genericMethod1<T extends core::Object* = dynamic>(self::C2::genericMethod1::T* t) → self::C2::genericMethod1::T*;
- abstract method genericMethod2<T extends core::Object* = core::Object*>(self::C2::genericMethod2::T* t) → self::C2::genericMethod2::T*;
- abstract method genericMethod3<T extends core::Object* = core::Object*>(self::C2::genericMethod3::T* t) → self::C2::genericMethod3::T*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature get runtimeType() → core::Type*;
-}
-static method main() → dynamic {}
-
-library /*isNonNullableByDefault*/;
-import self as nsm;
-import "dart:core" as core;
-
-class A extends core::Object {
- synthetic constructor •() → nsm::A
- : super core::Object::•()
- ;
- method method(core::int? i) → core::int
- return let final core::int? #t1 = i in #t1.{core::num::==}(null) ?{core::int} 0 : #t1{core::int};
- method genericMethod1<T extends core::Object? = dynamic>(nsm::A::genericMethod1::T% t) → nsm::A::genericMethod1::T%
- return t;
- method genericMethod2<T extends core::Object? = core::Object?>(nsm::A::genericMethod2::T% t) → nsm::A::genericMethod2::T%
- return t;
- method genericMethod3<T extends core::Object = core::Object>(nsm::A::genericMethod3::T t) → nsm::A::genericMethod3::T
- return t;
-}
-abstract class B1 extends nsm::A implements nsm::C1 {
- synthetic constructor •() → nsm::B1
- : super nsm::A::•()
- ;
- @#C1
- method noSuchMethod(core::Invocation invocation) → dynamic {
- return super.{core::Object::noSuchMethod}(invocation);
- }
- abstract forwarding-stub method method(core::int? i, {dynamic optional = #C2}) → core::int;
-}
-abstract class C1 extends core::Object {
- synthetic constructor •() → nsm::C1
- : super core::Object::•()
- ;
- abstract method method(core::int? i, {dynamic optional = #C2}) → core::int;
- abstract method genericMethod1<T extends core::Object? = dynamic>(nsm::C1::genericMethod1::T% t) → nsm::C1::genericMethod1::T%;
- abstract method genericMethod2<T extends core::Object? = core::Object?>(nsm::C1::genericMethod2::T% t) → nsm::C1::genericMethod2::T%;
- abstract method genericMethod3<T extends core::Object = core::Object>(nsm::C1::genericMethod3::T t) → nsm::C1::genericMethod3::T;
-}
-
-constants {
- #C1 = core::_Override {}
- #C2 = null
-}
diff --git a/pkg/front_end/testcases/nnbd/null_shorting.dart.strong.expect b/pkg/front_end/testcases/nnbd/null_shorting.dart.strong.expect
index 4b8eb0a..8f95eca 100644
--- a/pkg/front_end/testcases/nnbd/null_shorting.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/null_shorting.dart.strong.expect
@@ -262,7 +262,7 @@
try {
f.call();
}
- on dynamic catch(final dynamic _) {
+ on core::Object catch(final core::Object _) {
return;
}
throw "Expected exception.";
diff --git a/pkg/front_end/testcases/nnbd/null_shorting.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/null_shorting.dart.strong.transformed.expect
index 4b8eb0a..8f95eca 100644
--- a/pkg/front_end/testcases/nnbd/null_shorting.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/null_shorting.dart.strong.transformed.expect
@@ -262,7 +262,7 @@
try {
f.call();
}
- on dynamic catch(final dynamic _) {
+ on core::Object catch(final core::Object _) {
return;
}
throw "Expected exception.";
diff --git a/pkg/front_end/testcases/nnbd/null_shorting.dart.weak.expect b/pkg/front_end/testcases/nnbd/null_shorting.dart.weak.expect
index 4b8eb0a..8f95eca 100644
--- a/pkg/front_end/testcases/nnbd/null_shorting.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/null_shorting.dart.weak.expect
@@ -262,7 +262,7 @@
try {
f.call();
}
- on dynamic catch(final dynamic _) {
+ on core::Object catch(final core::Object _) {
return;
}
throw "Expected exception.";
diff --git a/pkg/front_end/testcases/nnbd/null_shorting.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/null_shorting.dart.weak.transformed.expect
index 4b8eb0a..8f95eca 100644
--- a/pkg/front_end/testcases/nnbd/null_shorting.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/null_shorting.dart.weak.transformed.expect
@@ -262,7 +262,7 @@
try {
f.call();
}
- on dynamic catch(final dynamic _) {
+ on core::Object catch(final core::Object _) {
return;
}
throw "Expected exception.";
diff --git a/pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart.strong.expect b/pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart.strong.expect
index ad010f7..7dffc16 100644
--- a/pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart.strong.expect
@@ -291,7 +291,7 @@
try {
f.call();
}
- on dynamic catch(final dynamic _) {
+ on core::Object catch(final core::Object _) {
return;
}
throw "Expected exception.";
diff --git a/pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart.strong.transformed.expect
index ad010f7..7dffc16 100644
--- a/pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart.strong.transformed.expect
@@ -291,7 +291,7 @@
try {
f.call();
}
- on dynamic catch(final dynamic _) {
+ on core::Object catch(final core::Object _) {
return;
}
throw "Expected exception.";
diff --git a/pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart.weak.expect b/pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart.weak.expect
index ad010f7..7dffc16 100644
--- a/pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart.weak.expect
@@ -291,7 +291,7 @@
try {
f.call();
}
- on dynamic catch(final dynamic _) {
+ on core::Object catch(final core::Object _) {
return;
}
throw "Expected exception.";
diff --git a/pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart.weak.transformed.expect
index ad010f7..7dffc16 100644
--- a/pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart.weak.transformed.expect
@@ -291,7 +291,7 @@
try {
f.call();
}
- on dynamic catch(final dynamic _) {
+ on core::Object catch(final core::Object _) {
return;
}
throw "Expected exception.";
diff --git a/pkg/front_end/testcases/nnbd/null_shorting_extension.dart.strong.expect b/pkg/front_end/testcases/nnbd/null_shorting_extension.dart.strong.expect
index 51808db..f93ce59 100644
--- a/pkg/front_end/testcases/nnbd/null_shorting_extension.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/null_shorting_extension.dart.strong.expect
@@ -291,7 +291,7 @@
try {
f.call();
}
- on dynamic catch(final dynamic _) {
+ on core::Object catch(final core::Object _) {
return;
}
throw "Expected exception.";
diff --git a/pkg/front_end/testcases/nnbd/null_shorting_extension.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/null_shorting_extension.dart.strong.transformed.expect
index 51808db..f93ce59 100644
--- a/pkg/front_end/testcases/nnbd/null_shorting_extension.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/null_shorting_extension.dart.strong.transformed.expect
@@ -291,7 +291,7 @@
try {
f.call();
}
- on dynamic catch(final dynamic _) {
+ on core::Object catch(final core::Object _) {
return;
}
throw "Expected exception.";
diff --git a/pkg/front_end/testcases/nnbd/null_shorting_extension.dart.weak.expect b/pkg/front_end/testcases/nnbd/null_shorting_extension.dart.weak.expect
index 51808db..f93ce59 100644
--- a/pkg/front_end/testcases/nnbd/null_shorting_extension.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/null_shorting_extension.dart.weak.expect
@@ -291,7 +291,7 @@
try {
f.call();
}
- on dynamic catch(final dynamic _) {
+ on core::Object catch(final core::Object _) {
return;
}
throw "Expected exception.";
diff --git a/pkg/front_end/testcases/nnbd/null_shorting_extension.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/null_shorting_extension.dart.weak.transformed.expect
index 51808db..f93ce59 100644
--- a/pkg/front_end/testcases/nnbd/null_shorting_extension.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/null_shorting_extension.dart.weak.transformed.expect
@@ -291,7 +291,7 @@
try {
f.call();
}
- on dynamic catch(final dynamic _) {
+ on core::Object catch(final core::Object _) {
return;
}
throw "Expected exception.";
diff --git a/pkg/front_end/testcases/nnbd/nullable_access.dart.strong.expect b/pkg/front_end/testcases/nnbd/nullable_access.dart.strong.expect
index 9699336..5609034 100644
--- a/pkg/front_end/testcases/nnbd/nullable_access.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/nullable_access.dart.strong.expect
@@ -49,7 +49,7 @@
try {
f.call();
}
- on dynamic catch(final dynamic e) {
+ on core::Object catch(final core::Object e) {
return;
}
throw "Expected throws.";
diff --git a/pkg/front_end/testcases/nnbd/nullable_access.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/nullable_access.dart.strong.transformed.expect
index 9699336..5609034 100644
--- a/pkg/front_end/testcases/nnbd/nullable_access.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/nullable_access.dart.strong.transformed.expect
@@ -49,7 +49,7 @@
try {
f.call();
}
- on dynamic catch(final dynamic e) {
+ on core::Object catch(final core::Object e) {
return;
}
throw "Expected throws.";
diff --git a/pkg/front_end/testcases/nnbd/nullable_access.dart.weak.expect b/pkg/front_end/testcases/nnbd/nullable_access.dart.weak.expect
index 9699336..5609034 100644
--- a/pkg/front_end/testcases/nnbd/nullable_access.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/nullable_access.dart.weak.expect
@@ -49,7 +49,7 @@
try {
f.call();
}
- on dynamic catch(final dynamic e) {
+ on core::Object catch(final core::Object e) {
return;
}
throw "Expected throws.";
diff --git a/pkg/front_end/testcases/nnbd/nullable_access.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/nullable_access.dart.weak.transformed.expect
index 9699336..5609034 100644
--- a/pkg/front_end/testcases/nnbd/nullable_access.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/nullable_access.dart.weak.transformed.expect
@@ -49,7 +49,7 @@
try {
f.call();
}
- on dynamic catch(final dynamic e) {
+ on core::Object catch(final core::Object e) {
return;
}
throw "Expected throws.";
diff --git a/pkg/front_end/testcases/nnbd/nullable_receiver.dart.strong.expect b/pkg/front_end/testcases/nnbd/nullable_receiver.dart.strong.expect
index b4de6e7..cbe04ef 100644
--- a/pkg/front_end/testcases/nnbd/nullable_receiver.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/nullable_receiver.dart.strong.expect
@@ -132,22 +132,22 @@
try {
s.{core::Object::noSuchMethod}(i);
}
- on dynamic catch(final dynamic e, final core::StackTrace t) {
+ on core::Object catch(final core::Object e, final core::StackTrace t) {
}
try {
a.{core::Object::noSuchMethod}(i);
}
- on dynamic catch(final dynamic e, final core::StackTrace t) {
+ on core::Object catch(final core::Object e, final core::StackTrace t) {
}
try {
t.{core::Object::noSuchMethod}(i);
}
- on dynamic catch(final dynamic e, final core::StackTrace t) {
+ on core::Object catch(final core::Object e, final core::StackTrace t) {
}
try {
b.{core::Object::noSuchMethod}(i);
}
- on dynamic catch(final dynamic e, final core::StackTrace t) {
+ on core::Object catch(final core::Object e, final core::StackTrace t) {
}
s.{core::Object::runtimeType};
a.{core::Object::runtimeType};
diff --git a/pkg/front_end/testcases/nnbd/nullable_receiver.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/nullable_receiver.dart.strong.transformed.expect
index 380d689..3b658a9 100644
--- a/pkg/front_end/testcases/nnbd/nullable_receiver.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/nullable_receiver.dart.strong.transformed.expect
@@ -134,22 +134,22 @@
try {
s.{core::Object::noSuchMethod}(i);
}
- on dynamic catch(final dynamic e, final core::StackTrace t) {
+ on core::Object catch(final core::Object e, final core::StackTrace t) {
}
try {
a.{core::Object::noSuchMethod}(i);
}
- on dynamic catch(final dynamic e, final core::StackTrace t) {
+ on core::Object catch(final core::Object e, final core::StackTrace t) {
}
try {
t.{core::Object::noSuchMethod}(i);
}
- on dynamic catch(final dynamic e, final core::StackTrace t) {
+ on core::Object catch(final core::Object e, final core::StackTrace t) {
}
try {
b.{core::Object::noSuchMethod}(i);
}
- on dynamic catch(final dynamic e, final core::StackTrace t) {
+ on core::Object catch(final core::Object e, final core::StackTrace t) {
}
s.{core::Object::runtimeType};
a.{core::Object::runtimeType};
diff --git a/pkg/front_end/testcases/nnbd/nullable_receiver.dart.weak.expect b/pkg/front_end/testcases/nnbd/nullable_receiver.dart.weak.expect
index b4de6e7..cbe04ef 100644
--- a/pkg/front_end/testcases/nnbd/nullable_receiver.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/nullable_receiver.dart.weak.expect
@@ -132,22 +132,22 @@
try {
s.{core::Object::noSuchMethod}(i);
}
- on dynamic catch(final dynamic e, final core::StackTrace t) {
+ on core::Object catch(final core::Object e, final core::StackTrace t) {
}
try {
a.{core::Object::noSuchMethod}(i);
}
- on dynamic catch(final dynamic e, final core::StackTrace t) {
+ on core::Object catch(final core::Object e, final core::StackTrace t) {
}
try {
t.{core::Object::noSuchMethod}(i);
}
- on dynamic catch(final dynamic e, final core::StackTrace t) {
+ on core::Object catch(final core::Object e, final core::StackTrace t) {
}
try {
b.{core::Object::noSuchMethod}(i);
}
- on dynamic catch(final dynamic e, final core::StackTrace t) {
+ on core::Object catch(final core::Object e, final core::StackTrace t) {
}
s.{core::Object::runtimeType};
a.{core::Object::runtimeType};
diff --git a/pkg/front_end/testcases/nnbd/nullable_receiver.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/nullable_receiver.dart.weak.transformed.expect
index 380d689..3b658a9 100644
--- a/pkg/front_end/testcases/nnbd/nullable_receiver.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/nullable_receiver.dart.weak.transformed.expect
@@ -134,22 +134,22 @@
try {
s.{core::Object::noSuchMethod}(i);
}
- on dynamic catch(final dynamic e, final core::StackTrace t) {
+ on core::Object catch(final core::Object e, final core::StackTrace t) {
}
try {
a.{core::Object::noSuchMethod}(i);
}
- on dynamic catch(final dynamic e, final core::StackTrace t) {
+ on core::Object catch(final core::Object e, final core::StackTrace t) {
}
try {
t.{core::Object::noSuchMethod}(i);
}
- on dynamic catch(final dynamic e, final core::StackTrace t) {
+ on core::Object catch(final core::Object e, final core::StackTrace t) {
}
try {
b.{core::Object::noSuchMethod}(i);
}
- on dynamic catch(final dynamic e, final core::StackTrace t) {
+ on core::Object catch(final core::Object e, final core::StackTrace t) {
}
s.{core::Object::runtimeType};
a.{core::Object::runtimeType};
diff --git a/pkg/front_end/testcases/nnbd/opt_out.dart.outline.expect b/pkg/front_end/testcases/nnbd/opt_out.dart.outline.expect
deleted file mode 100644
index 44ffbeb..0000000
--- a/pkg/front_end/testcases/nnbd/opt_out.dart.outline.expect
+++ /dev/null
@@ -1,121 +0,0 @@
-library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/opt_out.dart:16:11: Error: Can't create typedef from nullable type.
-// typedef F = void Function()?;
-// ^
-//
-import self as self;
-import "dart:core" as core;
-
-import "org-dartlang-testcase:///opt_out_lib.dart";
-
-typedef F = invalid-type;
-class A<T extends core::Object? = dynamic> extends core::Object {
- late field core::int field;
- synthetic constructor •() → self::A<self::A::T%>
- ;
-}
-class B extends self::A<core::String?> {
- synthetic constructor •() → self::B
- ;
-}
-static field core::List<core::String?> l;
-static field core::String? s;
-static field core::String t;
-late static field core::int field;
-static method method(() →? void f, {required core::int a}) → void
- ;
-static method main() → dynamic
- ;
-static method noErrors() → dynamic
- ;
-
-library;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:18:25: Error: Null safety features are disabled for this library.
-// Try removing the `@dart=` annotation or setting the language version higher.
-// class B extends A<String?> {}
-// ^
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
-// // @dart=2.5
-// ^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:20:28: Error: Null safety features are disabled for this library.
-// Try removing the `@dart=` annotation or setting the language version higher.
-// typedef F = void Function()?;
-// ^
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
-// // @dart=2.5
-// ^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:20:11: Error: Can't create typedef from nullable type.
-// typedef F = void Function()?;
-// ^
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:22:12: Error: Null safety features are disabled for this library.
-// Try removing the `@dart=` annotation or setting the language version higher.
-// List<String?> l = [];
-// ^
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
-// // @dart=2.5
-// ^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:23:7: Error: Null safety features are disabled for this library.
-// Try removing the `@dart=` annotation or setting the language version higher.
-// String? s = null;
-// ^
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
-// // @dart=2.5
-// ^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:28:21: Error: Null safety features are disabled for this library.
-// Try removing the `@dart=` annotation or setting the language version higher.
-// void method(void f()?, {int a}) {}
-// ^
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
-// // @dart=2.5
-// ^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:24:10: Error: Null safety features are disabled for this library.
-// Try removing the `@dart=` annotation or setting the language version higher.
-// var t = s!;
-// ^
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
-// // @dart=2.5
-// ^^^^^^^^^^^^
-//
-import self as self2;
-import "dart:core" as core;
-
-typedef F = invalid-type;
-class A<T extends core::Object* = dynamic> extends core::Object {
- field core::int* field;
- synthetic constructor •() → self2::A<self2::A::T*>*
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class B extends self2::A<core::String?> {
- synthetic constructor •() → self2::B*
- ;
-}
-static field core::List<core::String?>* l;
-static field core::String? s;
-static field core::String* t;
-static field core::int* field;
-static method method(() →? void f, {core::int* a}) → void
- ;
-static method errors() → dynamic
- ;
diff --git a/pkg/front_end/testcases/nnbd/opt_out.dart.strong.expect b/pkg/front_end/testcases/nnbd/opt_out.dart.strong.expect
deleted file mode 100644
index 1421750..0000000
--- a/pkg/front_end/testcases/nnbd/opt_out.dart.strong.expect
+++ /dev/null
@@ -1,178 +0,0 @@
-library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/opt_out.dart:16:11: Error: Can't create typedef from nullable type.
-// typedef F = void Function()?;
-// ^
-//
-import self as self;
-import "dart:core" as core;
-
-import "org-dartlang-testcase:///opt_out_lib.dart";
-
-typedef F = invalid-type;
-class A<T extends core::Object? = dynamic> extends core::Object {
- late field core::int field = 42;
- synthetic constructor •() → self::A<self::A::T%>
- : super core::Object::•()
- ;
-}
-class B extends self::A<core::String?> {
- synthetic constructor •() → self::B
- : super self::A::•()
- ;
-}
-static field core::List<core::String?> l = <core::String?>[];
-static field core::String? s = null;
-static field core::String t = self::s!;
-late static field core::int field = 42;
-static method method(() →? void f, {required core::int a = #C1}) → void {}
-static method main() → dynamic {}
-static method noErrors() → dynamic {
- late core::int local = 42;
- core::String? s = null;
- dynamic c;
- let final dynamic #t1 = c in #t1.{core::Object::==}(null) ?{dynamic} null : let final void #t2 = #t1.f in #t1;
- let final dynamic #t3 = c in #t3.{core::Object::==}(null) ?{dynamic} null : #t3.[](0);
-}
-
-library;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:18:25: Error: Null safety features are disabled for this library.
-// Try removing the `@dart=` annotation or setting the language version higher.
-// class B extends A<String?> {}
-// ^
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
-// // @dart=2.5
-// ^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:20:28: Error: Null safety features are disabled for this library.
-// Try removing the `@dart=` annotation or setting the language version higher.
-// typedef F = void Function()?;
-// ^
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
-// // @dart=2.5
-// ^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:20:11: Error: Can't create typedef from nullable type.
-// typedef F = void Function()?;
-// ^
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:22:12: Error: Null safety features are disabled for this library.
-// Try removing the `@dart=` annotation or setting the language version higher.
-// List<String?> l = [];
-// ^
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
-// // @dart=2.5
-// ^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:23:7: Error: Null safety features are disabled for this library.
-// Try removing the `@dart=` annotation or setting the language version higher.
-// String? s = null;
-// ^
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
-// // @dart=2.5
-// ^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:28:21: Error: Null safety features are disabled for this library.
-// Try removing the `@dart=` annotation or setting the language version higher.
-// void method(void f()?, {int a}) {}
-// ^
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
-// // @dart=2.5
-// ^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:24:10: Error: Null safety features are disabled for this library.
-// Try removing the `@dart=` annotation or setting the language version higher.
-// var t = s!;
-// ^
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
-// // @dart=2.5
-// ^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:32:14: Error: Null safety features are disabled for this library.
-// Try removing the `@dart=` annotation or setting the language version higher.
-// List<String?> l = null;
-// ^
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
-// // @dart=2.5
-// ^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:33:9: Error: Null safety features are disabled for this library.
-// Try removing the `@dart=` annotation or setting the language version higher.
-// String? s = null;
-// ^
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
-// // @dart=2.5
-// ^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:34:12: Error: Null safety features are disabled for this library.
-// Try removing the `@dart=` annotation or setting the language version higher.
-// var t = s!;
-// ^
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
-// // @dart=2.5
-// ^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:36:6: Error: Expected an identifier, but got '.'.
-// c?..f;
-// ^
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:36:6: Error: Expected an identifier, but got ''.
-// c?..f;
-// ^
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:37:6: Error: Expected an identifier, but got '['.
-// c?.[0];
-// ^
-//
-import self as self2;
-import "dart:core" as core;
-
-typedef F = invalid-type;
-class A<T extends core::Object* = dynamic> extends core::Object {
- field core::int* field = 42;
- synthetic constructor •() → self2::A<self2::A::T*>*
- : super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class B extends self2::A<core::String?> {
- synthetic constructor •() → self2::B*
- : super self2::A::•()
- ;
-}
-static field core::List<core::String?>* l = <core::String*>[];
-static field core::String? s = null;
-static field core::String* t = self2::s!;
-static field core::int* field = 42;
-static method method(() →? void f, {core::int* a = #C1}) → void {}
-static method errors() → dynamic {
- core::int* local = 42;
- core::List<core::String?>* l = null;
- core::String? s = null;
- core::String* t = s!;
- dynamic c;
- invalid-expression "pkg/front_end/testcases/nnbd/opt_out_lib.dart:36:6: Error: Expected an identifier, but got ''.
- c?..f;
- ^".f;
- invalid-expression "pkg/front_end/testcases/nnbd/opt_out_lib.dart:37:6: Error: Expected an identifier, but got '['.
- c?.[0];
- ^";
-}
-
-constants {
- #C1 = null
-}
diff --git a/pkg/front_end/testcases/nnbd/opt_out.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/opt_out.dart.strong.transformed.expect
deleted file mode 100644
index 1421750..0000000
--- a/pkg/front_end/testcases/nnbd/opt_out.dart.strong.transformed.expect
+++ /dev/null
@@ -1,178 +0,0 @@
-library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/opt_out.dart:16:11: Error: Can't create typedef from nullable type.
-// typedef F = void Function()?;
-// ^
-//
-import self as self;
-import "dart:core" as core;
-
-import "org-dartlang-testcase:///opt_out_lib.dart";
-
-typedef F = invalid-type;
-class A<T extends core::Object? = dynamic> extends core::Object {
- late field core::int field = 42;
- synthetic constructor •() → self::A<self::A::T%>
- : super core::Object::•()
- ;
-}
-class B extends self::A<core::String?> {
- synthetic constructor •() → self::B
- : super self::A::•()
- ;
-}
-static field core::List<core::String?> l = <core::String?>[];
-static field core::String? s = null;
-static field core::String t = self::s!;
-late static field core::int field = 42;
-static method method(() →? void f, {required core::int a = #C1}) → void {}
-static method main() → dynamic {}
-static method noErrors() → dynamic {
- late core::int local = 42;
- core::String? s = null;
- dynamic c;
- let final dynamic #t1 = c in #t1.{core::Object::==}(null) ?{dynamic} null : let final void #t2 = #t1.f in #t1;
- let final dynamic #t3 = c in #t3.{core::Object::==}(null) ?{dynamic} null : #t3.[](0);
-}
-
-library;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:18:25: Error: Null safety features are disabled for this library.
-// Try removing the `@dart=` annotation or setting the language version higher.
-// class B extends A<String?> {}
-// ^
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
-// // @dart=2.5
-// ^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:20:28: Error: Null safety features are disabled for this library.
-// Try removing the `@dart=` annotation or setting the language version higher.
-// typedef F = void Function()?;
-// ^
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
-// // @dart=2.5
-// ^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:20:11: Error: Can't create typedef from nullable type.
-// typedef F = void Function()?;
-// ^
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:22:12: Error: Null safety features are disabled for this library.
-// Try removing the `@dart=` annotation or setting the language version higher.
-// List<String?> l = [];
-// ^
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
-// // @dart=2.5
-// ^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:23:7: Error: Null safety features are disabled for this library.
-// Try removing the `@dart=` annotation or setting the language version higher.
-// String? s = null;
-// ^
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
-// // @dart=2.5
-// ^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:28:21: Error: Null safety features are disabled for this library.
-// Try removing the `@dart=` annotation or setting the language version higher.
-// void method(void f()?, {int a}) {}
-// ^
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
-// // @dart=2.5
-// ^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:24:10: Error: Null safety features are disabled for this library.
-// Try removing the `@dart=` annotation or setting the language version higher.
-// var t = s!;
-// ^
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
-// // @dart=2.5
-// ^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:32:14: Error: Null safety features are disabled for this library.
-// Try removing the `@dart=` annotation or setting the language version higher.
-// List<String?> l = null;
-// ^
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
-// // @dart=2.5
-// ^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:33:9: Error: Null safety features are disabled for this library.
-// Try removing the `@dart=` annotation or setting the language version higher.
-// String? s = null;
-// ^
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
-// // @dart=2.5
-// ^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:34:12: Error: Null safety features are disabled for this library.
-// Try removing the `@dart=` annotation or setting the language version higher.
-// var t = s!;
-// ^
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
-// // @dart=2.5
-// ^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:36:6: Error: Expected an identifier, but got '.'.
-// c?..f;
-// ^
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:36:6: Error: Expected an identifier, but got ''.
-// c?..f;
-// ^
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:37:6: Error: Expected an identifier, but got '['.
-// c?.[0];
-// ^
-//
-import self as self2;
-import "dart:core" as core;
-
-typedef F = invalid-type;
-class A<T extends core::Object* = dynamic> extends core::Object {
- field core::int* field = 42;
- synthetic constructor •() → self2::A<self2::A::T*>*
- : super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class B extends self2::A<core::String?> {
- synthetic constructor •() → self2::B*
- : super self2::A::•()
- ;
-}
-static field core::List<core::String?>* l = <core::String*>[];
-static field core::String? s = null;
-static field core::String* t = self2::s!;
-static field core::int* field = 42;
-static method method(() →? void f, {core::int* a = #C1}) → void {}
-static method errors() → dynamic {
- core::int* local = 42;
- core::List<core::String?>* l = null;
- core::String? s = null;
- core::String* t = s!;
- dynamic c;
- invalid-expression "pkg/front_end/testcases/nnbd/opt_out_lib.dart:36:6: Error: Expected an identifier, but got ''.
- c?..f;
- ^".f;
- invalid-expression "pkg/front_end/testcases/nnbd/opt_out_lib.dart:37:6: Error: Expected an identifier, but got '['.
- c?.[0];
- ^";
-}
-
-constants {
- #C1 = null
-}
diff --git a/pkg/front_end/testcases/nnbd/opt_out.dart.weak.expect b/pkg/front_end/testcases/nnbd/opt_out.dart.weak.expect
deleted file mode 100644
index 1421750..0000000
--- a/pkg/front_end/testcases/nnbd/opt_out.dart.weak.expect
+++ /dev/null
@@ -1,178 +0,0 @@
-library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/opt_out.dart:16:11: Error: Can't create typedef from nullable type.
-// typedef F = void Function()?;
-// ^
-//
-import self as self;
-import "dart:core" as core;
-
-import "org-dartlang-testcase:///opt_out_lib.dart";
-
-typedef F = invalid-type;
-class A<T extends core::Object? = dynamic> extends core::Object {
- late field core::int field = 42;
- synthetic constructor •() → self::A<self::A::T%>
- : super core::Object::•()
- ;
-}
-class B extends self::A<core::String?> {
- synthetic constructor •() → self::B
- : super self::A::•()
- ;
-}
-static field core::List<core::String?> l = <core::String?>[];
-static field core::String? s = null;
-static field core::String t = self::s!;
-late static field core::int field = 42;
-static method method(() →? void f, {required core::int a = #C1}) → void {}
-static method main() → dynamic {}
-static method noErrors() → dynamic {
- late core::int local = 42;
- core::String? s = null;
- dynamic c;
- let final dynamic #t1 = c in #t1.{core::Object::==}(null) ?{dynamic} null : let final void #t2 = #t1.f in #t1;
- let final dynamic #t3 = c in #t3.{core::Object::==}(null) ?{dynamic} null : #t3.[](0);
-}
-
-library;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:18:25: Error: Null safety features are disabled for this library.
-// Try removing the `@dart=` annotation or setting the language version higher.
-// class B extends A<String?> {}
-// ^
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
-// // @dart=2.5
-// ^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:20:28: Error: Null safety features are disabled for this library.
-// Try removing the `@dart=` annotation or setting the language version higher.
-// typedef F = void Function()?;
-// ^
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
-// // @dart=2.5
-// ^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:20:11: Error: Can't create typedef from nullable type.
-// typedef F = void Function()?;
-// ^
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:22:12: Error: Null safety features are disabled for this library.
-// Try removing the `@dart=` annotation or setting the language version higher.
-// List<String?> l = [];
-// ^
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
-// // @dart=2.5
-// ^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:23:7: Error: Null safety features are disabled for this library.
-// Try removing the `@dart=` annotation or setting the language version higher.
-// String? s = null;
-// ^
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
-// // @dart=2.5
-// ^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:28:21: Error: Null safety features are disabled for this library.
-// Try removing the `@dart=` annotation or setting the language version higher.
-// void method(void f()?, {int a}) {}
-// ^
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
-// // @dart=2.5
-// ^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:24:10: Error: Null safety features are disabled for this library.
-// Try removing the `@dart=` annotation or setting the language version higher.
-// var t = s!;
-// ^
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
-// // @dart=2.5
-// ^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:32:14: Error: Null safety features are disabled for this library.
-// Try removing the `@dart=` annotation or setting the language version higher.
-// List<String?> l = null;
-// ^
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
-// // @dart=2.5
-// ^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:33:9: Error: Null safety features are disabled for this library.
-// Try removing the `@dart=` annotation or setting the language version higher.
-// String? s = null;
-// ^
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
-// // @dart=2.5
-// ^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:34:12: Error: Null safety features are disabled for this library.
-// Try removing the `@dart=` annotation or setting the language version higher.
-// var t = s!;
-// ^
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
-// // @dart=2.5
-// ^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:36:6: Error: Expected an identifier, but got '.'.
-// c?..f;
-// ^
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:36:6: Error: Expected an identifier, but got ''.
-// c?..f;
-// ^
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:37:6: Error: Expected an identifier, but got '['.
-// c?.[0];
-// ^
-//
-import self as self2;
-import "dart:core" as core;
-
-typedef F = invalid-type;
-class A<T extends core::Object* = dynamic> extends core::Object {
- field core::int* field = 42;
- synthetic constructor •() → self2::A<self2::A::T*>*
- : super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class B extends self2::A<core::String?> {
- synthetic constructor •() → self2::B*
- : super self2::A::•()
- ;
-}
-static field core::List<core::String?>* l = <core::String*>[];
-static field core::String? s = null;
-static field core::String* t = self2::s!;
-static field core::int* field = 42;
-static method method(() →? void f, {core::int* a = #C1}) → void {}
-static method errors() → dynamic {
- core::int* local = 42;
- core::List<core::String?>* l = null;
- core::String? s = null;
- core::String* t = s!;
- dynamic c;
- invalid-expression "pkg/front_end/testcases/nnbd/opt_out_lib.dart:36:6: Error: Expected an identifier, but got ''.
- c?..f;
- ^".f;
- invalid-expression "pkg/front_end/testcases/nnbd/opt_out_lib.dart:37:6: Error: Expected an identifier, but got '['.
- c?.[0];
- ^";
-}
-
-constants {
- #C1 = null
-}
diff --git a/pkg/front_end/testcases/nnbd/opt_out.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/opt_out.dart.weak.transformed.expect
deleted file mode 100644
index 1421750..0000000
--- a/pkg/front_end/testcases/nnbd/opt_out.dart.weak.transformed.expect
+++ /dev/null
@@ -1,178 +0,0 @@
-library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/opt_out.dart:16:11: Error: Can't create typedef from nullable type.
-// typedef F = void Function()?;
-// ^
-//
-import self as self;
-import "dart:core" as core;
-
-import "org-dartlang-testcase:///opt_out_lib.dart";
-
-typedef F = invalid-type;
-class A<T extends core::Object? = dynamic> extends core::Object {
- late field core::int field = 42;
- synthetic constructor •() → self::A<self::A::T%>
- : super core::Object::•()
- ;
-}
-class B extends self::A<core::String?> {
- synthetic constructor •() → self::B
- : super self::A::•()
- ;
-}
-static field core::List<core::String?> l = <core::String?>[];
-static field core::String? s = null;
-static field core::String t = self::s!;
-late static field core::int field = 42;
-static method method(() →? void f, {required core::int a = #C1}) → void {}
-static method main() → dynamic {}
-static method noErrors() → dynamic {
- late core::int local = 42;
- core::String? s = null;
- dynamic c;
- let final dynamic #t1 = c in #t1.{core::Object::==}(null) ?{dynamic} null : let final void #t2 = #t1.f in #t1;
- let final dynamic #t3 = c in #t3.{core::Object::==}(null) ?{dynamic} null : #t3.[](0);
-}
-
-library;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:18:25: Error: Null safety features are disabled for this library.
-// Try removing the `@dart=` annotation or setting the language version higher.
-// class B extends A<String?> {}
-// ^
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
-// // @dart=2.5
-// ^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:20:28: Error: Null safety features are disabled for this library.
-// Try removing the `@dart=` annotation or setting the language version higher.
-// typedef F = void Function()?;
-// ^
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
-// // @dart=2.5
-// ^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:20:11: Error: Can't create typedef from nullable type.
-// typedef F = void Function()?;
-// ^
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:22:12: Error: Null safety features are disabled for this library.
-// Try removing the `@dart=` annotation or setting the language version higher.
-// List<String?> l = [];
-// ^
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
-// // @dart=2.5
-// ^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:23:7: Error: Null safety features are disabled for this library.
-// Try removing the `@dart=` annotation or setting the language version higher.
-// String? s = null;
-// ^
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
-// // @dart=2.5
-// ^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:28:21: Error: Null safety features are disabled for this library.
-// Try removing the `@dart=` annotation or setting the language version higher.
-// void method(void f()?, {int a}) {}
-// ^
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
-// // @dart=2.5
-// ^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:24:10: Error: Null safety features are disabled for this library.
-// Try removing the `@dart=` annotation or setting the language version higher.
-// var t = s!;
-// ^
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
-// // @dart=2.5
-// ^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:32:14: Error: Null safety features are disabled for this library.
-// Try removing the `@dart=` annotation or setting the language version higher.
-// List<String?> l = null;
-// ^
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
-// // @dart=2.5
-// ^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:33:9: Error: Null safety features are disabled for this library.
-// Try removing the `@dart=` annotation or setting the language version higher.
-// String? s = null;
-// ^
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
-// // @dart=2.5
-// ^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:34:12: Error: Null safety features are disabled for this library.
-// Try removing the `@dart=` annotation or setting the language version higher.
-// var t = s!;
-// ^
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
-// // @dart=2.5
-// ^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:36:6: Error: Expected an identifier, but got '.'.
-// c?..f;
-// ^
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:36:6: Error: Expected an identifier, but got ''.
-// c?..f;
-// ^
-//
-// pkg/front_end/testcases/nnbd/opt_out_lib.dart:37:6: Error: Expected an identifier, but got '['.
-// c?.[0];
-// ^
-//
-import self as self2;
-import "dart:core" as core;
-
-typedef F = invalid-type;
-class A<T extends core::Object* = dynamic> extends core::Object {
- field core::int* field = 42;
- synthetic constructor •() → self2::A<self2::A::T*>*
- : super core::Object::•()
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-class B extends self2::A<core::String?> {
- synthetic constructor •() → self2::B*
- : super self2::A::•()
- ;
-}
-static field core::List<core::String?>* l = <core::String*>[];
-static field core::String? s = null;
-static field core::String* t = self2::s!;
-static field core::int* field = 42;
-static method method(() →? void f, {core::int* a = #C1}) → void {}
-static method errors() → dynamic {
- core::int* local = 42;
- core::List<core::String?>* l = null;
- core::String? s = null;
- core::String* t = s!;
- dynamic c;
- invalid-expression "pkg/front_end/testcases/nnbd/opt_out_lib.dart:36:6: Error: Expected an identifier, but got ''.
- c?..f;
- ^".f;
- invalid-expression "pkg/front_end/testcases/nnbd/opt_out_lib.dart:37:6: Error: Expected an identifier, but got '['.
- c?.[0];
- ^";
-}
-
-constants {
- #C1 = null
-}
diff --git a/pkg/front_end/testcases/nnbd/regress_null_aware.dart.outline.expect b/pkg/front_end/testcases/nnbd/regress_null_aware.dart.outline.expect
deleted file mode 100644
index c0ac075..0000000
--- a/pkg/front_end/testcases/nnbd/regress_null_aware.dart.outline.expect
+++ /dev/null
@@ -1,23 +0,0 @@
-library;
-import self as self;
-import "dart:core" as core;
-
-class Class extends core::Object {
- field core::Map<core::String*, core::Set<core::String*>*>* map;
- synthetic constructor •() → self::Class*
- ;
- method method(core::String* node, core::Set<core::String*>* set) → core::List<core::String*>*
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-static method main(dynamic args) → dynamic
- ;
diff --git a/pkg/front_end/testcases/nnbd/regress_null_aware.dart.strong.expect b/pkg/front_end/testcases/nnbd/regress_null_aware.dart.strong.expect
deleted file mode 100644
index 4d750fa..0000000
--- a/pkg/front_end/testcases/nnbd/regress_null_aware.dart.strong.expect
+++ /dev/null
@@ -1,34 +0,0 @@
-library;
-import self as self;
-import "dart:core" as core;
-import "dart:collection" as col;
-
-class Class extends core::Object {
- field core::Map<core::String*, core::Set<core::String*>*>* map = null;
- synthetic constructor •() → self::Class*
- : super core::Object::•()
- ;
- method method(core::String* node, core::Set<core::String*>* set) → core::List<core::String*>*
- return set.{core::Set::add}(node) ?{core::List<core::String*>*} block {
- final core::List<core::String*>* #t1 = <core::String*>[];
- #t1.{core::List::add}(node);
- final core::Iterable<core::String*>* #t2 = let final core::Iterable<core::String*>* #t3 = let final core::Set<core::String*>* #t4 = this.{self::Class::map}.{core::Map::[]}(node) in #t4.{core::Object::==}(null) ?{core::Iterable<core::String*>*} null : #t4.{core::Iterable::expand}<core::String*>((core::String* node) → core::List<core::String*>* => this.{self::Class::method}(node, set)) in #t3.{core::Object::==}(null) ?{core::List<core::String*>*} null : #t3.{core::Iterable::toList}();
- if(!#t2.{core::Object::==}(null))
- for (final core::String* #t5 in #t2)
- #t1.{core::List::add}(#t5);
- } =>#t1 : <core::String*>[];
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-static method main(dynamic args) → dynamic {
- if(false)
- new self::Class::•().{self::Class::method}("", let final core::Set<core::String*>* #t6 = col::LinkedHashSet::•<core::String*>() in #t6);
-}
diff --git a/pkg/front_end/testcases/nnbd/regress_null_aware.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/regress_null_aware.dart.strong.transformed.expect
deleted file mode 100644
index 8546029..0000000
--- a/pkg/front_end/testcases/nnbd/regress_null_aware.dart.strong.transformed.expect
+++ /dev/null
@@ -1,38 +0,0 @@
-library;
-import self as self;
-import "dart:core" as core;
-import "dart:collection" as col;
-
-class Class extends core::Object {
- field core::Map<core::String*, core::Set<core::String*>*>* map = null;
- synthetic constructor •() → self::Class*
- : super core::Object::•()
- ;
- method method(core::String* node, core::Set<core::String*>* set) → core::List<core::String*>*
- return set.{core::Set::add}(node) ?{core::List<core::String*>*} block {
- final core::List<core::String*>* #t1 = <core::String*>[];
- #t1.{core::List::add}(node);
- final core::Iterable<core::String*>* #t2 = let final core::Iterable<core::String*>* #t3 = let final core::Set<core::String*>* #t4 = this.{self::Class::map}.{core::Map::[]}(node) in #t4.{core::Object::==}(null) ?{core::Iterable<core::String*>*} null : #t4.{core::Iterable::expand}<core::String*>((core::String* node) → core::List<core::String*>* => this.{self::Class::method}(node, set)) in #t3.{core::Object::==}(null) ?{core::List<core::String*>*} null : #t3.{core::Iterable::toList}();
- if(!#t2.{core::Object::==}(null)) {
- core::Iterator<core::String*>* :sync-for-iterator = #t2.{core::Iterable::iterator};
- for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
- final core::String* #t5 = :sync-for-iterator.{core::Iterator::current};
- #t1.{core::List::add}(#t5);
- }
- }
- } =>#t1 : <core::String*>[];
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-static method main(dynamic args) → dynamic {
- if(false)
- new self::Class::•().{self::Class::method}("", let final core::Set<core::String*>* #t6 = col::LinkedHashSet::•<core::String*>() in #t6);
-}
diff --git a/pkg/front_end/testcases/nnbd/required_name_override.dart.outline.expect b/pkg/front_end/testcases/nnbd/required_name_override.dart.outline.expect
deleted file mode 100644
index e73639b..0000000
--- a/pkg/front_end/testcases/nnbd/required_name_override.dart.outline.expect
+++ /dev/null
@@ -1,73 +0,0 @@
-library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/required_name_override.dart:13:36: Error: The required named parameter 'i' in method 'A.test_default' is not required in overridden method 'B.test_default'.
-// void test_default({required int? i}) {}
-// ^
-// pkg/front_end/testcases/nnbd/required_name_override.dart:8:8: Context: This is the overridden method ('test_default').
-// void test_default({int? i}) {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/required_name_override.dart:14:39: Error: The required named parameter 'i' in method 'A.test_nondefault' is not required in overridden method 'B.test_nondefault'.
-// void test_nondefault({required int? i}) {}
-// ^
-// pkg/front_end/testcases/nnbd/required_name_override.dart:9:8: Context: This is the overridden method ('test_nondefault').
-// void test_nondefault({int? i = 1}) {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/required_name_override.dart:15:35: Error: The required named parameter 'i' in method 'A.test_legacy' is not required in overridden method 'C.test_legacy'.
-// void test_legacy({required int? i}) {}
-// ^
-// pkg/front_end/testcases/nnbd/required_name_override_lib.dart:8:8: Context: This is the overridden method ('test_legacy').
-// void test_legacy({int i}) {}
-// ^
-//
-import self as self;
-import "dart:core" as core;
-import "required_name_override_lib.dart" as req;
-
-import "org-dartlang-testcase:///required_name_override_lib.dart";
-
-class B extends core::Object {
- synthetic constructor •() → self::B
- ;
- method test_default({core::int? i}) → void
- ;
- method test_nondefault({core::int? i = 1}) → void
- ;
-}
-class A extends self::B implements req::C {
- synthetic constructor •() → self::A
- ;
- method test_default({required core::int? i}) → void
- ;
- method test_nondefault({required core::int? i}) → void
- ;
- method test_legacy({required core::int? i}) → void
- ;
- abstract forwarding-stub operator ==(dynamic other) → core::bool*;
-}
-static method main() → dynamic
- ;
-
-library;
-import self as req;
-import "dart:core" as core;
-
-class C extends core::Object {
- synthetic constructor •() → req::C*
- ;
- method test_legacy({core::int* i}) → void
- ;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
diff --git a/pkg/front_end/testcases/nnbd/required_name_override.dart.strong.expect b/pkg/front_end/testcases/nnbd/required_name_override.dart.strong.expect
deleted file mode 100644
index 047c406..0000000
--- a/pkg/front_end/testcases/nnbd/required_name_override.dart.strong.expect
+++ /dev/null
@@ -1,78 +0,0 @@
-library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/required_name_override.dart:13:36: Error: The required named parameter 'i' in method 'A.test_default' is not required in overridden method 'B.test_default'.
-// void test_default({required int? i}) {}
-// ^
-// pkg/front_end/testcases/nnbd/required_name_override.dart:8:8: Context: This is the overridden method ('test_default').
-// void test_default({int? i}) {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/required_name_override.dart:14:39: Error: The required named parameter 'i' in method 'A.test_nondefault' is not required in overridden method 'B.test_nondefault'.
-// void test_nondefault({required int? i}) {}
-// ^
-// pkg/front_end/testcases/nnbd/required_name_override.dart:9:8: Context: This is the overridden method ('test_nondefault').
-// void test_nondefault({int? i = 1}) {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/required_name_override.dart:15:35: Error: The required named parameter 'i' in method 'A.test_legacy' is not required in overridden method 'C.test_legacy'.
-// void test_legacy({required int? i}) {}
-// ^
-// pkg/front_end/testcases/nnbd/required_name_override_lib.dart:8:8: Context: This is the overridden method ('test_legacy').
-// void test_legacy({int i}) {}
-// ^
-//
-import self as self;
-import "dart:core" as core;
-import "required_name_override_lib.dart" as req;
-
-import "org-dartlang-testcase:///required_name_override_lib.dart";
-
-class B extends core::Object {
- synthetic constructor •() → self::B
- : super core::Object::•()
- ;
- method test_default({core::int? i = #C1}) → void {}
- method test_nondefault({core::int? i = #C2}) → void {}
-}
-class A extends self::B implements req::C {
- synthetic constructor •() → self::A
- : super self::B::•()
- ;
- method test_default({required core::int? i = #C1}) → void {}
- method test_nondefault({required core::int? i = #C1}) → void {}
- method test_legacy({required core::int? i = #C1}) → void {}
- abstract forwarding-stub operator ==(dynamic other) → core::bool*;
-}
-static method main() → dynamic {
- new self::A::•().{self::A::test_default}(i: 1);
- new self::A::•().{self::A::test_nondefault}(i: 1);
- new self::A::•().{self::A::test_legacy}(i: 1);
-}
-
-library;
-import self as req;
-import "dart:core" as core;
-
-class C extends core::Object {
- synthetic constructor •() → req::C*
- : super core::Object::•()
- ;
- method test_legacy({core::int* i = #C1}) → void {}
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-
-constants {
- #C1 = null
- #C2 = 1
-}
diff --git a/pkg/front_end/testcases/nnbd/required_name_override.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/required_name_override.dart.weak.transformed.expect
deleted file mode 100644
index 047c406..0000000
--- a/pkg/front_end/testcases/nnbd/required_name_override.dart.weak.transformed.expect
+++ /dev/null
@@ -1,78 +0,0 @@
-library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd/required_name_override.dart:13:36: Error: The required named parameter 'i' in method 'A.test_default' is not required in overridden method 'B.test_default'.
-// void test_default({required int? i}) {}
-// ^
-// pkg/front_end/testcases/nnbd/required_name_override.dart:8:8: Context: This is the overridden method ('test_default').
-// void test_default({int? i}) {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/required_name_override.dart:14:39: Error: The required named parameter 'i' in method 'A.test_nondefault' is not required in overridden method 'B.test_nondefault'.
-// void test_nondefault({required int? i}) {}
-// ^
-// pkg/front_end/testcases/nnbd/required_name_override.dart:9:8: Context: This is the overridden method ('test_nondefault').
-// void test_nondefault({int? i = 1}) {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/required_name_override.dart:15:35: Error: The required named parameter 'i' in method 'A.test_legacy' is not required in overridden method 'C.test_legacy'.
-// void test_legacy({required int? i}) {}
-// ^
-// pkg/front_end/testcases/nnbd/required_name_override_lib.dart:8:8: Context: This is the overridden method ('test_legacy').
-// void test_legacy({int i}) {}
-// ^
-//
-import self as self;
-import "dart:core" as core;
-import "required_name_override_lib.dart" as req;
-
-import "org-dartlang-testcase:///required_name_override_lib.dart";
-
-class B extends core::Object {
- synthetic constructor •() → self::B
- : super core::Object::•()
- ;
- method test_default({core::int? i = #C1}) → void {}
- method test_nondefault({core::int? i = #C2}) → void {}
-}
-class A extends self::B implements req::C {
- synthetic constructor •() → self::A
- : super self::B::•()
- ;
- method test_default({required core::int? i = #C1}) → void {}
- method test_nondefault({required core::int? i = #C1}) → void {}
- method test_legacy({required core::int? i = #C1}) → void {}
- abstract forwarding-stub operator ==(dynamic other) → core::bool*;
-}
-static method main() → dynamic {
- new self::A::•().{self::A::test_default}(i: 1);
- new self::A::•().{self::A::test_nondefault}(i: 1);
- new self::A::•().{self::A::test_legacy}(i: 1);
-}
-
-library;
-import self as req;
-import "dart:core" as core;
-
-class C extends core::Object {
- synthetic constructor •() → req::C*
- : super core::Object::•()
- ;
- method test_legacy({core::int* i = #C1}) → void {}
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-
-constants {
- #C1 = null
- #C2 = 1
-}
diff --git a/pkg/front_end/testcases/nnbd/shorting_stop.dart.strong.expect b/pkg/front_end/testcases/nnbd/shorting_stop.dart.strong.expect
index 9ddd160..fffeeb8 100644
--- a/pkg/front_end/testcases/nnbd/shorting_stop.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/shorting_stop.dart.strong.expect
@@ -91,7 +91,7 @@
try {
f.call("foo");
}
- on dynamic catch(final dynamic e) {
+ on core::Object catch(final core::Object e) {
return true;
}
return false;
@@ -101,7 +101,7 @@
try {
f.call();
}
- on dynamic catch(final dynamic e) {
+ on core::Object catch(final core::Object e) {
core::print(e);
return;
}
diff --git a/pkg/front_end/testcases/nnbd/shorting_stop.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/shorting_stop.dart.strong.transformed.expect
index 9ddd160..fffeeb8 100644
--- a/pkg/front_end/testcases/nnbd/shorting_stop.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/shorting_stop.dart.strong.transformed.expect
@@ -91,7 +91,7 @@
try {
f.call("foo");
}
- on dynamic catch(final dynamic e) {
+ on core::Object catch(final core::Object e) {
return true;
}
return false;
@@ -101,7 +101,7 @@
try {
f.call();
}
- on dynamic catch(final dynamic e) {
+ on core::Object catch(final core::Object e) {
core::print(e);
return;
}
diff --git a/pkg/front_end/testcases/nnbd/shorting_stop.dart.weak.expect b/pkg/front_end/testcases/nnbd/shorting_stop.dart.weak.expect
index 9ddd160..fffeeb8 100644
--- a/pkg/front_end/testcases/nnbd/shorting_stop.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/shorting_stop.dart.weak.expect
@@ -91,7 +91,7 @@
try {
f.call("foo");
}
- on dynamic catch(final dynamic e) {
+ on core::Object catch(final core::Object e) {
return true;
}
return false;
@@ -101,7 +101,7 @@
try {
f.call();
}
- on dynamic catch(final dynamic e) {
+ on core::Object catch(final core::Object e) {
core::print(e);
return;
}
diff --git a/pkg/front_end/testcases/nnbd/shorting_stop.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/shorting_stop.dart.weak.transformed.expect
index 9ddd160..fffeeb8 100644
--- a/pkg/front_end/testcases/nnbd/shorting_stop.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/shorting_stop.dart.weak.transformed.expect
@@ -91,7 +91,7 @@
try {
f.call("foo");
}
- on dynamic catch(final dynamic e) {
+ on core::Object catch(final core::Object e) {
return true;
}
return false;
@@ -101,7 +101,7 @@
try {
f.call();
}
- on dynamic catch(final dynamic e) {
+ on core::Object catch(final core::Object e) {
core::print(e);
return;
}
diff --git a/pkg/front_end/testcases/nnbd/sink_hierarchy.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/sink_hierarchy.dart.strong.transformed.expect
deleted file mode 100644
index 8ff1525..0000000
--- a/pkg/front_end/testcases/nnbd/sink_hierarchy.dart.strong.transformed.expect
+++ /dev/null
@@ -1,70 +0,0 @@
-library;
-import self as self;
-import "dart:core" as core;
-import "dart:async" as asy;
-
-abstract class Sink<T extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → self::Sink<self::Sink::T*>*
- : super core::Object::•()
- ;
- abstract method close() → void;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-abstract class EventSink<T extends core::Object* = dynamic> extends core::Object implements self::Sink<self::EventSink::T*> {
- synthetic constructor •() → self::EventSink<self::EventSink::T*>*
- : super core::Object::•()
- ;
- abstract method close() → void;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-abstract class StreamConsumer<S extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → self::StreamConsumer<self::StreamConsumer::S*>*
- : super core::Object::•()
- ;
- abstract method close() → asy::Future<dynamic>*;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-abstract class StreamSink<S extends core::Object* = dynamic> extends core::Object implements self::EventSink<self::StreamSink::S*>, self::StreamConsumer<self::StreamSink::S*> {
- synthetic constructor •() → self::StreamSink<self::StreamSink::S*>*
- : super core::Object::•()
- ;
- abstract method close() → asy::Future<dynamic>*;
- abstract member-signature get _identityHashCode() → core::int*;
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
- abstract member-signature operator ==(dynamic other) → core::bool*;
- abstract member-signature get hashCode() → core::int*;
- abstract member-signature method toString() → core::String*;
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
- abstract member-signature get runtimeType() → core::Type*;
-}
-static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_dill/link.options b/pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_dill/link.options
new file mode 100644
index 0000000..1883904
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_dill/link.options
@@ -0,0 +1,2 @@
+strong_lib.dart
+--nnbd-weak
\ No newline at end of file
diff --git a/pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_dill/strong.dart b/pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_dill/strong.dart
new file mode 100644
index 0000000..2bae522
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_dill/strong.dart
@@ -0,0 +1,5 @@
+import "strong_lib.dart";
+
+main() {
+ foo();
+}
diff --git a/pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_dill/strong.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_dill/strong.dart.textual_outline.expect
new file mode 100644
index 0000000..3bb0a74
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_dill/strong.dart.textual_outline.expect
@@ -0,0 +1,3 @@
+import "strong_lib.dart";
+
+main() {}
diff --git a/pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_dill/strong.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_dill/strong.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..3bb0a74
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_dill/strong.dart.textual_outline_modelled.expect
@@ -0,0 +1,3 @@
+import "strong_lib.dart";
+
+main() {}
diff --git a/pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_dill/strong_lib.dart b/pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_dill/strong_lib.dart
new file mode 100644
index 0000000..930d387
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_dill/strong_lib.dart
@@ -0,0 +1,5 @@
+// @dart = 2.7
+
+void foo() {
+ print("hello");
+}
diff --git a/pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_dill/strong_lib.dart.outline.expect b/pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_dill/strong_lib.dart.outline.expect
new file mode 100644
index 0000000..ad01661
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_dill/strong_lib.dart.outline.expect
@@ -0,0 +1,18 @@
+//
+// Problems in component:
+//
+// pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_dill/strong_lib.dart: Error: A library can't opt out of non-nullable by default, when in nnbd-strong mode.
+//
+library /*isNonNullableByDefault*/;
+import self as self;
+
+import "org-dartlang-testcase:///strong_lib.dart";
+
+static method main() → dynamic
+ ;
+
+library;
+import self as self2;
+
+static method foo() → void
+ ;
diff --git a/pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_dill/strong_lib.dart.strong.expect b/pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_dill/strong_lib.dart.strong.expect
new file mode 100644
index 0000000..fb76c00
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_dill/strong_lib.dart.strong.expect
@@ -0,0 +1,22 @@
+//
+// Problems in component:
+//
+// pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_dill/strong_lib.dart: Error: A library can't opt out of non-nullable by default, when in nnbd-strong mode.
+//
+library /*isNonNullableByDefault*/;
+import self as self;
+import "strong_lib.dart" as str;
+
+import "org-dartlang-testcase:///strong_lib.dart";
+
+static method main() → dynamic {
+ str::foo();
+}
+
+library;
+import self as str;
+import "dart:core" as core;
+
+static method foo() → void {
+ core::print("hello");
+}
diff --git a/pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_dill/strong_lib.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_dill/strong_lib.dart.strong.transformed.expect
new file mode 100644
index 0000000..fb76c00
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_dill/strong_lib.dart.strong.transformed.expect
@@ -0,0 +1,22 @@
+//
+// Problems in component:
+//
+// pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_dill/strong_lib.dart: Error: A library can't opt out of non-nullable by default, when in nnbd-strong mode.
+//
+library /*isNonNullableByDefault*/;
+import self as self;
+import "strong_lib.dart" as str;
+
+import "org-dartlang-testcase:///strong_lib.dart";
+
+static method main() → dynamic {
+ str::foo();
+}
+
+library;
+import self as str;
+import "dart:core" as core;
+
+static method foo() → void {
+ core::print("hello");
+}
diff --git a/pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_dill/strong_lib.dart.weak.expect b/pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_dill/strong_lib.dart.weak.expect
new file mode 100644
index 0000000..dfa3681
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_dill/strong_lib.dart.weak.expect
@@ -0,0 +1,17 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "strong_lib.dart" as str;
+
+import "org-dartlang-testcase:///strong_lib.dart";
+
+static method main() → dynamic {
+ str::foo();
+}
+
+library;
+import self as str;
+import "dart:core" as core;
+
+static method foo() → void {
+ core::print("hello");
+}
diff --git a/pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_dill/strong_lib.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_dill/strong_lib.dart.weak.transformed.expect
new file mode 100644
index 0000000..dfa3681
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_dill/strong_lib.dart.weak.transformed.expect
@@ -0,0 +1,17 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "strong_lib.dart" as str;
+
+import "org-dartlang-testcase:///strong_lib.dart";
+
+static method main() → dynamic {
+ str::foo();
+}
+
+library;
+import self as str;
+import "dart:core" as core;
+
+static method foo() → void {
+ core::print("hello");
+}
diff --git a/pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_source/strong.dart b/pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_source/strong.dart
new file mode 100644
index 0000000..2bae522
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_source/strong.dart
@@ -0,0 +1,5 @@
+import "strong_lib.dart";
+
+main() {
+ foo();
+}
diff --git a/pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_source/strong.dart.outline.expect b/pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_source/strong.dart.outline.expect
new file mode 100644
index 0000000..9399c70
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_source/strong.dart.outline.expect
@@ -0,0 +1,20 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+
+import "org-dartlang-testcase:///strong_lib.dart";
+
+static method main() → dynamic
+ ;
+
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_source/strong_lib.dart:1:1: Error: A library can't opt out of non-nullable by default, when in nnbd-strong mode.
+// // @dart = 2.7
+// ^^^^^^^^^^^^^^
+//
+import self as self2;
+
+static method foo() → void
+ ;
diff --git a/pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_source/strong.dart.strong.expect b/pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_source/strong.dart.strong.expect
new file mode 100644
index 0000000..7fe6157
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_source/strong.dart.strong.expect
@@ -0,0 +1,24 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "strong_lib.dart" as str;
+
+import "org-dartlang-testcase:///strong_lib.dart";
+
+static method main() → dynamic {
+ str::foo();
+}
+
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_source/strong_lib.dart:1:1: Error: A library can't opt out of non-nullable by default, when in nnbd-strong mode.
+// // @dart = 2.7
+// ^^^^^^^^^^^^^^
+//
+import self as str;
+import "dart:core" as core;
+
+static method foo() → void {
+ core::print("hello");
+}
diff --git a/pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_source/strong.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_source/strong.dart.strong.transformed.expect
new file mode 100644
index 0000000..7fe6157
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_source/strong.dart.strong.transformed.expect
@@ -0,0 +1,24 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "strong_lib.dart" as str;
+
+import "org-dartlang-testcase:///strong_lib.dart";
+
+static method main() → dynamic {
+ str::foo();
+}
+
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_source/strong_lib.dart:1:1: Error: A library can't opt out of non-nullable by default, when in nnbd-strong mode.
+// // @dart = 2.7
+// ^^^^^^^^^^^^^^
+//
+import self as str;
+import "dart:core" as core;
+
+static method foo() → void {
+ core::print("hello");
+}
diff --git a/pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_source/strong.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_source/strong.dart.textual_outline.expect
new file mode 100644
index 0000000..3bb0a74
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_source/strong.dart.textual_outline.expect
@@ -0,0 +1,3 @@
+import "strong_lib.dart";
+
+main() {}
diff --git a/pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_source/strong.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_source/strong.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..3bb0a74
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_source/strong.dart.textual_outline_modelled.expect
@@ -0,0 +1,3 @@
+import "strong_lib.dart";
+
+main() {}
diff --git a/pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_source/strong.dart.weak.expect b/pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_source/strong.dart.weak.expect
new file mode 100644
index 0000000..dfa3681
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_source/strong.dart.weak.expect
@@ -0,0 +1,17 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "strong_lib.dart" as str;
+
+import "org-dartlang-testcase:///strong_lib.dart";
+
+static method main() → dynamic {
+ str::foo();
+}
+
+library;
+import self as str;
+import "dart:core" as core;
+
+static method foo() → void {
+ core::print("hello");
+}
diff --git a/pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_source/strong.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_source/strong.dart.weak.transformed.expect
new file mode 100644
index 0000000..dfa3681
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_source/strong.dart.weak.transformed.expect
@@ -0,0 +1,17 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "strong_lib.dart" as str;
+
+import "org-dartlang-testcase:///strong_lib.dart";
+
+static method main() → dynamic {
+ str::foo();
+}
+
+library;
+import self as str;
+import "dart:core" as core;
+
+static method foo() → void {
+ core::print("hello");
+}
diff --git a/pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_source/strong_lib.dart b/pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_source/strong_lib.dart
new file mode 100644
index 0000000..930d387
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/strong_lib_not_ok_from_source/strong_lib.dart
@@ -0,0 +1,5 @@
+// @dart = 2.7
+
+void foo() {
+ print("hello");
+}
diff --git a/pkg/front_end/testcases/nnbd/strong_ok_from_dill/link.options b/pkg/front_end/testcases/nnbd/strong_ok_from_dill/link.options
new file mode 100644
index 0000000..a4d1d03
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/strong_ok_from_dill/link.options
@@ -0,0 +1 @@
+strong_lib.dart
\ No newline at end of file
diff --git a/pkg/front_end/testcases/nnbd/strong_ok_from_dill/strong.dart b/pkg/front_end/testcases/nnbd/strong_ok_from_dill/strong.dart
new file mode 100644
index 0000000..2bae522
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/strong_ok_from_dill/strong.dart
@@ -0,0 +1,5 @@
+import "strong_lib.dart";
+
+main() {
+ foo();
+}
diff --git a/pkg/front_end/testcases/nnbd/strong_ok_from_dill/strong.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd/strong_ok_from_dill/strong.dart.textual_outline.expect
new file mode 100644
index 0000000..3bb0a74
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/strong_ok_from_dill/strong.dart.textual_outline.expect
@@ -0,0 +1,3 @@
+import "strong_lib.dart";
+
+main() {}
diff --git a/pkg/front_end/testcases/nnbd/strong_ok_from_dill/strong.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd/strong_ok_from_dill/strong.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..3bb0a74
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/strong_ok_from_dill/strong.dart.textual_outline_modelled.expect
@@ -0,0 +1,3 @@
+import "strong_lib.dart";
+
+main() {}
diff --git a/pkg/front_end/testcases/nnbd/strong_ok_from_dill/strong_lib.dart b/pkg/front_end/testcases/nnbd/strong_ok_from_dill/strong_lib.dart
new file mode 100644
index 0000000..4a13ac6
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/strong_ok_from_dill/strong_lib.dart
@@ -0,0 +1,3 @@
+void foo() {
+ print("hello");
+}
diff --git a/pkg/front_end/testcases/nnbd/strong_ok_from_dill/strong_lib.dart.outline.expect b/pkg/front_end/testcases/nnbd/strong_ok_from_dill/strong_lib.dart.outline.expect
new file mode 100644
index 0000000..30de80f
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/strong_ok_from_dill/strong_lib.dart.outline.expect
@@ -0,0 +1,13 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+
+import "org-dartlang-testcase:///strong_lib.dart";
+
+static method main() → dynamic
+ ;
+
+library /*isNonNullableByDefault*/;
+import self as self2;
+
+static method foo() → void
+ ;
diff --git a/pkg/front_end/testcases/nnbd/strong_ok_from_dill/strong_lib.dart.strong.expect b/pkg/front_end/testcases/nnbd/strong_ok_from_dill/strong_lib.dart.strong.expect
new file mode 100644
index 0000000..385858b
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/strong_ok_from_dill/strong_lib.dart.strong.expect
@@ -0,0 +1,17 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "strong_lib.dart" as str;
+
+import "org-dartlang-testcase:///strong_lib.dart";
+
+static method main() → dynamic {
+ str::foo();
+}
+
+library /*isNonNullableByDefault*/;
+import self as str;
+import "dart:core" as core;
+
+static method foo() → void {
+ core::print("hello");
+}
diff --git a/pkg/front_end/testcases/nnbd/strong_ok_from_dill/strong_lib.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/strong_ok_from_dill/strong_lib.dart.strong.transformed.expect
new file mode 100644
index 0000000..385858b
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/strong_ok_from_dill/strong_lib.dart.strong.transformed.expect
@@ -0,0 +1,17 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "strong_lib.dart" as str;
+
+import "org-dartlang-testcase:///strong_lib.dart";
+
+static method main() → dynamic {
+ str::foo();
+}
+
+library /*isNonNullableByDefault*/;
+import self as str;
+import "dart:core" as core;
+
+static method foo() → void {
+ core::print("hello");
+}
diff --git a/pkg/front_end/testcases/nnbd/strong_ok_from_dill/strong_lib.dart.weak.expect b/pkg/front_end/testcases/nnbd/strong_ok_from_dill/strong_lib.dart.weak.expect
new file mode 100644
index 0000000..385858b
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/strong_ok_from_dill/strong_lib.dart.weak.expect
@@ -0,0 +1,17 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "strong_lib.dart" as str;
+
+import "org-dartlang-testcase:///strong_lib.dart";
+
+static method main() → dynamic {
+ str::foo();
+}
+
+library /*isNonNullableByDefault*/;
+import self as str;
+import "dart:core" as core;
+
+static method foo() → void {
+ core::print("hello");
+}
diff --git a/pkg/front_end/testcases/nnbd/strong_ok_from_dill/strong_lib.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/strong_ok_from_dill/strong_lib.dart.weak.transformed.expect
new file mode 100644
index 0000000..385858b
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/strong_ok_from_dill/strong_lib.dart.weak.transformed.expect
@@ -0,0 +1,17 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "strong_lib.dart" as str;
+
+import "org-dartlang-testcase:///strong_lib.dart";
+
+static method main() → dynamic {
+ str::foo();
+}
+
+library /*isNonNullableByDefault*/;
+import self as str;
+import "dart:core" as core;
+
+static method foo() → void {
+ core::print("hello");
+}
diff --git a/pkg/front_end/testcases/nnbd/strong_ok_from_source/strong.dart b/pkg/front_end/testcases/nnbd/strong_ok_from_source/strong.dart
new file mode 100644
index 0000000..2bae522
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/strong_ok_from_source/strong.dart
@@ -0,0 +1,5 @@
+import "strong_lib.dart";
+
+main() {
+ foo();
+}
diff --git a/pkg/front_end/testcases/nnbd/strong_ok_from_source/strong.dart.outline.expect b/pkg/front_end/testcases/nnbd/strong_ok_from_source/strong.dart.outline.expect
new file mode 100644
index 0000000..30de80f
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/strong_ok_from_source/strong.dart.outline.expect
@@ -0,0 +1,13 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+
+import "org-dartlang-testcase:///strong_lib.dart";
+
+static method main() → dynamic
+ ;
+
+library /*isNonNullableByDefault*/;
+import self as self2;
+
+static method foo() → void
+ ;
diff --git a/pkg/front_end/testcases/nnbd/strong_ok_from_source/strong.dart.strong.expect b/pkg/front_end/testcases/nnbd/strong_ok_from_source/strong.dart.strong.expect
new file mode 100644
index 0000000..385858b
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/strong_ok_from_source/strong.dart.strong.expect
@@ -0,0 +1,17 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "strong_lib.dart" as str;
+
+import "org-dartlang-testcase:///strong_lib.dart";
+
+static method main() → dynamic {
+ str::foo();
+}
+
+library /*isNonNullableByDefault*/;
+import self as str;
+import "dart:core" as core;
+
+static method foo() → void {
+ core::print("hello");
+}
diff --git a/pkg/front_end/testcases/nnbd/strong_ok_from_source/strong.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/strong_ok_from_source/strong.dart.strong.transformed.expect
new file mode 100644
index 0000000..385858b
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/strong_ok_from_source/strong.dart.strong.transformed.expect
@@ -0,0 +1,17 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "strong_lib.dart" as str;
+
+import "org-dartlang-testcase:///strong_lib.dart";
+
+static method main() → dynamic {
+ str::foo();
+}
+
+library /*isNonNullableByDefault*/;
+import self as str;
+import "dart:core" as core;
+
+static method foo() → void {
+ core::print("hello");
+}
diff --git a/pkg/front_end/testcases/nnbd/strong_ok_from_source/strong.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd/strong_ok_from_source/strong.dart.textual_outline.expect
new file mode 100644
index 0000000..3bb0a74
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/strong_ok_from_source/strong.dart.textual_outline.expect
@@ -0,0 +1,3 @@
+import "strong_lib.dart";
+
+main() {}
diff --git a/pkg/front_end/testcases/nnbd/strong_ok_from_source/strong.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd/strong_ok_from_source/strong.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..3bb0a74
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/strong_ok_from_source/strong.dart.textual_outline_modelled.expect
@@ -0,0 +1,3 @@
+import "strong_lib.dart";
+
+main() {}
diff --git a/pkg/front_end/testcases/nnbd/strong_ok_from_source/strong.dart.weak.expect b/pkg/front_end/testcases/nnbd/strong_ok_from_source/strong.dart.weak.expect
new file mode 100644
index 0000000..385858b
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/strong_ok_from_source/strong.dart.weak.expect
@@ -0,0 +1,17 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "strong_lib.dart" as str;
+
+import "org-dartlang-testcase:///strong_lib.dart";
+
+static method main() → dynamic {
+ str::foo();
+}
+
+library /*isNonNullableByDefault*/;
+import self as str;
+import "dart:core" as core;
+
+static method foo() → void {
+ core::print("hello");
+}
diff --git a/pkg/front_end/testcases/nnbd/strong_ok_from_source/strong.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/strong_ok_from_source/strong.dart.weak.transformed.expect
new file mode 100644
index 0000000..385858b
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/strong_ok_from_source/strong.dart.weak.transformed.expect
@@ -0,0 +1,17 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "strong_lib.dart" as str;
+
+import "org-dartlang-testcase:///strong_lib.dart";
+
+static method main() → dynamic {
+ str::foo();
+}
+
+library /*isNonNullableByDefault*/;
+import self as str;
+import "dart:core" as core;
+
+static method foo() → void {
+ core::print("hello");
+}
diff --git a/pkg/front_end/testcases/nnbd/strong_ok_from_source/strong_lib.dart b/pkg/front_end/testcases/nnbd/strong_ok_from_source/strong_lib.dart
new file mode 100644
index 0000000..4a13ac6
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/strong_ok_from_source/strong_lib.dart
@@ -0,0 +1,3 @@
+void foo() {
+ print("hello");
+}
diff --git a/pkg/front_end/testcases/nnbd/bounds_from_opt_in.dart b/pkg/front_end/testcases/nnbd_mixed/bounds_from_opt_in.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/bounds_from_opt_in.dart
rename to pkg/front_end/testcases/nnbd_mixed/bounds_from_opt_in.dart
diff --git a/pkg/front_end/testcases/nnbd_mixed/bounds_from_opt_in.dart.outline.expect b/pkg/front_end/testcases/nnbd_mixed/bounds_from_opt_in.dart.outline.expect
new file mode 100644
index 0000000..19d5bb9
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd_mixed/bounds_from_opt_in.dart.outline.expect
@@ -0,0 +1,52 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/bounds_from_opt_in.dart:5:1: Error: A library can't opt out of non-nullable by default, when in nnbd-strong mode.
+// // @dart=2.6
+// ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd_mixed/bounds_from_opt_in.dart:9:7: Error: Type argument 'T' doesn't conform to the bound 'Never' of the type variable 'T' on 'Class' in the supertype 'Class' of class 'LegacyClass'.
+// Try changing type arguments so that they conform to the bounds.
+// class LegacyClass<T extends Null> extends Class<T> {
+// ^
+// pkg/front_end/testcases/nnbd_mixed/bounds_from_opt_in_lib.dart:5:13: Context: This is the type variable whose bound isn't conformed to.
+// class Class<T extends Never> {
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/bounds_from_opt_in.dart:10:3: Error: Declared bound 'Null' of type variable 'T' of 'LegacyClass.method' doesn't match the bound 'Never' on overridden method 'Class.method'.
+// method<T extends Null>() {}
+// ^
+// pkg/front_end/testcases/nnbd_mixed/bounds_from_opt_in_lib.dart:6:3: Context: This is the overridden method ('method').
+// method<T extends Never>() {}
+// ^
+//
+import self as self;
+import "dart:core" as core;
+import "bounds_from_opt_in_lib.dart" as bou;
+
+import "org-dartlang-testcase:///bounds_from_opt_in_lib.dart";
+
+class LegacyClass<T extends core::Null? = core::Null?> extends bou::Class<self::LegacyClass::T%> {
+ synthetic constructor •() → self::LegacyClass<self::LegacyClass::T%>
+ ;
+ method method<T extends core::Null? = core::Null?>() → dynamic
+ ;
+}
+static method test() → dynamic
+ ;
+static method main() → dynamic
+ ;
+
+library /*isNonNullableByDefault*/;
+import self as bou;
+import "dart:core" as core;
+
+class Class<T extends Never = Never> extends core::Object {
+ synthetic constructor •() → bou::Class<bou::Class::T>
+ ;
+ method method<T extends Never = Never>() → dynamic
+ ;
+}
+static method method<T extends Never = Never>() → dynamic
+ ;
diff --git a/pkg/front_end/testcases/nnbd/bounds_from_opt_in.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd_mixed/bounds_from_opt_in.dart.textual_outline.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/bounds_from_opt_in.dart.textual_outline.expect
rename to pkg/front_end/testcases/nnbd_mixed/bounds_from_opt_in.dart.textual_outline.expect
diff --git a/pkg/front_end/testcases/nnbd/bounds_from_opt_in.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd_mixed/bounds_from_opt_in.dart.textual_outline_modelled.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/bounds_from_opt_in.dart.textual_outline_modelled.expect
rename to pkg/front_end/testcases/nnbd_mixed/bounds_from_opt_in.dart.textual_outline_modelled.expect
diff --git a/pkg/front_end/testcases/nnbd/bounds_from_opt_in.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/bounds_from_opt_in.dart.weak.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/bounds_from_opt_in.dart.weak.expect
rename to pkg/front_end/testcases/nnbd_mixed/bounds_from_opt_in.dart.weak.expect
diff --git a/pkg/front_end/testcases/nnbd/bounds_from_opt_in.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/bounds_from_opt_in.dart.weak.transformed.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/bounds_from_opt_in.dart.weak.transformed.expect
rename to pkg/front_end/testcases/nnbd_mixed/bounds_from_opt_in.dart.weak.transformed.expect
diff --git a/pkg/front_end/testcases/nnbd/bounds_from_opt_in_lib.dart b/pkg/front_end/testcases/nnbd_mixed/bounds_from_opt_in_lib.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/bounds_from_opt_in_lib.dart
rename to pkg/front_end/testcases/nnbd_mixed/bounds_from_opt_in_lib.dart
diff --git a/pkg/front_end/testcases/nnbd/constant_null_is.dart b/pkg/front_end/testcases/nnbd_mixed/constant_null_is.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/constant_null_is.dart
rename to pkg/front_end/testcases/nnbd_mixed/constant_null_is.dart
diff --git a/pkg/front_end/testcases/nnbd/constant_null_is.dart.outline.expect b/pkg/front_end/testcases/nnbd_mixed/constant_null_is.dart.outline.expect
similarity index 79%
rename from pkg/front_end/testcases/nnbd/constant_null_is.dart.outline.expect
rename to pkg/front_end/testcases/nnbd_mixed/constant_null_is.dart.outline.expect
index 9a984f8..f00c03a 100644
--- a/pkg/front_end/testcases/nnbd/constant_null_is.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/constant_null_is.dart.outline.expect
@@ -24,14 +24,21 @@
static method expect(dynamic expected, dynamic actual, core::String message) → dynamic
;
-library;
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/constant_null_is_lib.dart:5:1: Error: A library can't opt out of non-nullable by default, when in nnbd-strong mode.
+// // @dart=2.6
+// ^^^^^^^^^^^^
+//
import self as self2;
import "dart:core" as core;
import "dart:async";
import "org-dartlang-testcase:///constant_null_is.dart";
-static const field core::bool* d0 = null is core::int*;
-static const field core::bool* d1 = null is core::Null?;
+static const field core::bool d0 = null is{ForNonNullableByDefault} core::int;
+static const field core::bool d1 = null is{ForNonNullableByDefault} core::Null?;
static method test() → dynamic
;
diff --git a/pkg/front_end/testcases/nnbd/constant_null_is.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd_mixed/constant_null_is.dart.textual_outline.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/constant_null_is.dart.textual_outline.expect
rename to pkg/front_end/testcases/nnbd_mixed/constant_null_is.dart.textual_outline.expect
diff --git a/pkg/front_end/testcases/nnbd/constant_null_is.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd_mixed/constant_null_is.dart.textual_outline_modelled.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/constant_null_is.dart.textual_outline_modelled.expect
rename to pkg/front_end/testcases/nnbd_mixed/constant_null_is.dart.textual_outline_modelled.expect
diff --git a/pkg/front_end/testcases/nnbd/constant_null_is.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/constant_null_is.dart.weak.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/constant_null_is.dart.weak.expect
rename to pkg/front_end/testcases/nnbd_mixed/constant_null_is.dart.weak.expect
diff --git a/pkg/front_end/testcases/nnbd/constant_null_is.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/constant_null_is.dart.weak.transformed.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/constant_null_is.dart.weak.transformed.expect
rename to pkg/front_end/testcases/nnbd_mixed/constant_null_is.dart.weak.transformed.expect
diff --git a/pkg/front_end/testcases/nnbd/constant_null_is_lib.dart b/pkg/front_end/testcases/nnbd_mixed/constant_null_is_lib.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/constant_null_is_lib.dart
rename to pkg/front_end/testcases/nnbd_mixed/constant_null_is_lib.dart
diff --git a/pkg/front_end/testcases/nnbd/constants.dart b/pkg/front_end/testcases/nnbd_mixed/constants.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/constants.dart
rename to pkg/front_end/testcases/nnbd_mixed/constants.dart
diff --git a/pkg/front_end/testcases/nnbd_mixed/constants.dart.outline.expect b/pkg/front_end/testcases/nnbd_mixed/constants.dart.outline.expect
new file mode 100644
index 0000000..c9f4c52
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd_mixed/constants.dart.outline.expect
@@ -0,0 +1,72 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+import "constants_lib.dart" as con;
+
+import "org-dartlang-testcase:///constants_lib.dart" as lib;
+
+typedef F1<invariant T extends core::Object? = dynamic> = (T%) → T%;
+typedef F2 = <T extends core::Object? = dynamic>(T%) → T%;
+static const field core::Type objectTypeLiteral = core::Object;
+static const field (core::int) → core::int partialInstantiation = con::id<core::int>;
+static const field con::Class<core::int> instance = const con::Class::•<core::int>(0);
+static const field core::Type functionTypeLiteral = (dynamic) → dynamic;
+static const field core::Type genericFunctionTypeLiteral = <T extends core::Object? = dynamic>(T%) → T%;
+static const field core::List<core::int> listLiteral = const <core::int>[0];
+static const field core::Set<core::int> setLiteral = const <core::int>{0};
+static const field core::Map<core::int, core::String> mapLiteral = const <core::int, core::String>{0: "foo"};
+static const field core::List<core::int> listConcatenation = self::listLiteral;
+static const field core::Set<core::int> setConcatenation = self::setLiteral;
+static const field core::Map<core::int, core::String> mapConcatenation = self::mapLiteral;
+static const field core::bool objectTypeLiteralIdentical = core::identical(self::objectTypeLiteral, con::objectTypeLiteral);
+static const field core::bool partialInstantiationIdentical = core::identical(self::partialInstantiation, con::partialInstantiation);
+static const field core::bool instanceIdentical = core::identical(self::instance, con::instance);
+static const field core::bool functionTypeLiteralIdentical = core::identical(self::functionTypeLiteral, con::functionTypeLiteral);
+static const field core::bool genericFunctionTypeLiteralIdentical = core::identical(self::genericFunctionTypeLiteral, con::genericFunctionTypeLiteral);
+static const field core::bool listLiteralIdentical = core::identical(self::listLiteral, con::listLiteral);
+static const field core::bool setLiteralIdentical = core::identical(self::setLiteral, con::setLiteral);
+static const field core::bool mapLiteralIdentical = core::identical(self::mapLiteral, con::mapLiteral);
+static const field core::bool listConcatenationIdentical = core::identical(self::listConcatenation, con::listConcatenation);
+static const field core::bool setConcatenationIdentical = core::identical(self::setConcatenation, con::setConcatenation);
+static const field core::bool mapConcatenationIdentical = core::identical(self::mapConcatenation, con::mapConcatenation);
+static final field core::bool inStrongMode;
+static method _inStrongMode() → core::bool
+ ;
+static method main() → dynamic
+ ;
+static method test(dynamic expected, dynamic actual) → dynamic
+ ;
+
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/constants_lib.dart:5:1: Error: A library can't opt out of non-nullable by default, when in nnbd-strong mode.
+// // @dart=2.6
+// ^^^^^^^^^^^^
+//
+import self as con;
+import "dart:core" as core;
+
+typedef F1<invariant T extends core::Object? = dynamic> = (T%) → T%;
+typedef F2 = <T extends core::Object? = dynamic>(T%) → T%;
+class Class<T extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/ {
+ final field con::Class::T% field;
+ const constructor •(con::Class::T% field) → con::Class<con::Class::T%>
+ : con::Class::field = field, super core::Object::•()
+ ;
+}
+static const field core::Type objectTypeLiteral = core::Object;
+static const field (core::Object?, core::Object?) → core::bool c2 = core::identical;
+static const field (core::int) → core::int partialInstantiation = con::id<core::int>;
+static const field con::Class<core::int> instance = const con::Class::•<core::int>(0);
+static const field core::Type functionTypeLiteral = (dynamic) → dynamic;
+static const field core::Type genericFunctionTypeLiteral = <T extends core::Object? = dynamic>(T%) → T%;
+static const field core::List<core::int> listLiteral = const <core::int>[0];
+static const field core::Set<core::int> setLiteral = const <core::int>{0};
+static const field core::Map<core::int, core::String> mapLiteral = const <core::int, core::String>{0: "foo"};
+static const field core::List<core::int> listConcatenation = con::listLiteral;
+static const field core::Set<core::int> setConcatenation = con::setLiteral;
+static const field core::Map<core::int, core::String> mapConcatenation = con::mapLiteral;
+static method id<T extends core::Object? = dynamic>(con::id::T% t) → con::id::T%
+ ;
diff --git a/pkg/front_end/testcases/nnbd/constants.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd_mixed/constants.dart.textual_outline.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/constants.dart.textual_outline.expect
rename to pkg/front_end/testcases/nnbd_mixed/constants.dart.textual_outline.expect
diff --git a/pkg/front_end/testcases/nnbd/constants.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd_mixed/constants.dart.textual_outline_modelled.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/constants.dart.textual_outline_modelled.expect
rename to pkg/front_end/testcases/nnbd_mixed/constants.dart.textual_outline_modelled.expect
diff --git a/pkg/front_end/testcases/nnbd/constants.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/constants.dart.weak.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/constants.dart.weak.expect
rename to pkg/front_end/testcases/nnbd_mixed/constants.dart.weak.expect
diff --git a/pkg/front_end/testcases/nnbd/constants.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/constants.dart.weak.transformed.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/constants.dart.weak.transformed.expect
rename to pkg/front_end/testcases/nnbd_mixed/constants.dart.weak.transformed.expect
diff --git a/pkg/front_end/testcases/nnbd/constants_lib.dart b/pkg/front_end/testcases/nnbd_mixed/constants_lib.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/constants_lib.dart
rename to pkg/front_end/testcases/nnbd_mixed/constants_lib.dart
diff --git a/pkg/front_end/testcases/nnbd/export_from_opt_out.dart b/pkg/front_end/testcases/nnbd_mixed/export_from_opt_out.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/export_from_opt_out.dart
rename to pkg/front_end/testcases/nnbd_mixed/export_from_opt_out.dart
diff --git a/pkg/front_end/testcases/nnbd_mixed/export_from_opt_out.dart.outline.expect b/pkg/front_end/testcases/nnbd_mixed/export_from_opt_out.dart.outline.expect
new file mode 100644
index 0000000..99c7835
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd_mixed/export_from_opt_out.dart.outline.expect
@@ -0,0 +1,122 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "export_from_opt_out_lib1.dart" as exp;
+import "export_from_opt_out_lib2.dart" as exp2;
+import "export_from_opt_out_lib3.dart" as exp3;
+import "export_from_opt_out_lib5.dart" as exp4;
+additionalExports = (exp::LegacyClass1,
+ exp2::LegacyClass3,
+ exp2::LegacyClass4,
+ exp3::LegacyClass2,
+ exp3::legacyMethod1,
+ exp3::LegacyExtension,
+ exp3::LegacyTypedef,
+ exp4::NnbdClass1,
+ exp4::NnbdClass2)
+
+export "org-dartlang-testcase:///export_from_opt_out_lib1.dart";
+export "org-dartlang-testcase:///export_from_opt_out_lib2.dart";
+export "org-dartlang-testcase:///export_from_opt_out_lib3.dart";
+export "org-dartlang-testcase:///export_from_opt_out_lib3.dart";
+export "org-dartlang-testcase:///export_from_opt_out_lib3.dart";
+export "org-dartlang-testcase:///export_from_opt_out_lib3.dart";
+export "org-dartlang-testcase:///export_from_opt_out_lib3.dart";
+export "org-dartlang-testcase:///export_from_opt_out_lib3.dart";
+export "org-dartlang-testcase:///export_from_opt_out_lib4.dart";
+export "org-dartlang-testcase:///export_from_opt_out_lib5.dart";
+
+static method main() → dynamic
+ ;
+
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/export_from_opt_out_lib1.dart:5:1: Error: A library can't opt out of non-nullable by default, when in nnbd-strong mode.
+// // @dart=2.5
+// ^^^^^^^^^^^^
+//
+import self as exp;
+import "dart:core" as core;
+
+class LegacyClass1 extends core::Object {
+ synthetic constructor •() → exp::LegacyClass1
+ ;
+}
+
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/export_from_opt_out_lib2.dart:5:1: Error: A library can't opt out of non-nullable by default, when in nnbd-strong mode.
+// // @dart=2.5
+// ^^^^^^^^^^^^
+//
+import self as exp2;
+import "dart:core" as core;
+
+class LegacyClass3 extends core::Object {
+ synthetic constructor •() → exp2::LegacyClass3
+ ;
+}
+class LegacyClass4 extends core::Object {
+ synthetic constructor •() → exp2::LegacyClass4
+ ;
+}
+static method legacyMethod2() → dynamic
+ ;
+
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/export_from_opt_out_lib3.dart:5:1: Error: A library can't opt out of non-nullable by default, when in nnbd-strong mode.
+// // @dart=2.5
+// ^^^^^^^^^^^^
+//
+import self as exp3;
+import "dart:core" as core;
+import "export_from_opt_out_lib5.dart" as exp4;
+additionalExports = (exp4::NnbdClass1,
+ exp4::NnbdClass2)
+
+export "org-dartlang-testcase:///export_from_opt_out_lib5.dart";
+
+typedef LegacyTypedef = () → void;
+class LegacyClass2 extends core::Object {
+ synthetic constructor •() → exp3::LegacyClass2
+ ;
+}
+extension LegacyExtension on core::String {
+}
+static method legacyMethod1() → dynamic
+ ;
+
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/export_from_opt_out_lib4.dart:5:1: Error: A library can't opt out of non-nullable by default, when in nnbd-strong mode.
+// // @dart=2.5
+// ^^^^^^^^^^^^
+//
+import self as self2;
+import "export_from_opt_out_lib5.dart" as exp4;
+additionalExports = (exp4::NnbdClass1,
+ exp4::NnbdClass2)
+
+export "org-dartlang-testcase:///export_from_opt_out_lib5.dart";
+
+
+library /*isNonNullableByDefault*/;
+import self as exp4;
+import "dart:core" as core;
+
+class NnbdClass1 extends core::Object {
+ synthetic constructor •() → exp4::NnbdClass1
+ ;
+}
+class NnbdClass2 extends core::Object {
+ synthetic constructor •() → exp4::NnbdClass2
+ ;
+}
diff --git a/pkg/front_end/testcases/nnbd/export_from_opt_out.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd_mixed/export_from_opt_out.dart.textual_outline.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/export_from_opt_out.dart.textual_outline.expect
rename to pkg/front_end/testcases/nnbd_mixed/export_from_opt_out.dart.textual_outline.expect
diff --git a/pkg/front_end/testcases/nnbd/export_from_opt_out.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd_mixed/export_from_opt_out.dart.textual_outline_modelled.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/export_from_opt_out.dart.textual_outline_modelled.expect
rename to pkg/front_end/testcases/nnbd_mixed/export_from_opt_out.dart.textual_outline_modelled.expect
diff --git a/pkg/front_end/testcases/nnbd/export_from_opt_out.dart.strong.expect b/pkg/front_end/testcases/nnbd_mixed/export_from_opt_out.dart.weak.expect
similarity index 86%
rename from pkg/front_end/testcases/nnbd/export_from_opt_out.dart.strong.expect
rename to pkg/front_end/testcases/nnbd_mixed/export_from_opt_out.dart.weak.expect
index 241f5aa..d741d6e 100644
--- a/pkg/front_end/testcases/nnbd/export_from_opt_out.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/export_from_opt_out.dart.weak.expect
@@ -2,27 +2,27 @@
//
// Problems in library:
//
-// pkg/front_end/testcases/nnbd/export_from_opt_out.dart:6:1: Error: Null safe libraries are not allowed to export declarations from of opt-out libraries.
+// pkg/front_end/testcases/nnbd_mixed/export_from_opt_out.dart:6:1: Error: Null safe libraries are not allowed to export declarations from of opt-out libraries.
// export 'export_from_opt_out_lib1.dart';
// ^
//
-// pkg/front_end/testcases/nnbd/export_from_opt_out.dart:10:1: Error: Null safe libraries are not allowed to export declarations from of opt-out libraries.
+// pkg/front_end/testcases/nnbd_mixed/export_from_opt_out.dart:10:1: Error: Null safe libraries are not allowed to export declarations from of opt-out libraries.
// export 'export_from_opt_out_lib2.dart' hide legacyMethod2;
// ^
//
-// pkg/front_end/testcases/nnbd/export_from_opt_out.dart:13:1: Error: Null safe libraries are not allowed to export declarations from of opt-out libraries.
+// pkg/front_end/testcases/nnbd_mixed/export_from_opt_out.dart:13:1: Error: Null safe libraries are not allowed to export declarations from of opt-out libraries.
// export 'export_from_opt_out_lib3.dart' show LegacyClass2;
// ^
//
-// pkg/front_end/testcases/nnbd/export_from_opt_out.dart:16:1: Error: Null safe libraries are not allowed to export declarations from of opt-out libraries.
+// pkg/front_end/testcases/nnbd_mixed/export_from_opt_out.dart:16:1: Error: Null safe libraries are not allowed to export declarations from of opt-out libraries.
// export 'export_from_opt_out_lib3.dart' show legacyMethod1;
// ^
//
-// pkg/front_end/testcases/nnbd/export_from_opt_out.dart:19:1: Error: Null safe libraries are not allowed to export declarations from of opt-out libraries.
+// pkg/front_end/testcases/nnbd_mixed/export_from_opt_out.dart:19:1: Error: Null safe libraries are not allowed to export declarations from of opt-out libraries.
// export 'export_from_opt_out_lib3.dart' show LegacyExtension;
// ^
//
-// pkg/front_end/testcases/nnbd/export_from_opt_out.dart:22:1: Error: Null safe libraries are not allowed to export declarations from of opt-out libraries.
+// pkg/front_end/testcases/nnbd_mixed/export_from_opt_out.dart:22:1: Error: Null safe libraries are not allowed to export declarations from of opt-out libraries.
// export 'export_from_opt_out_lib3.dart' show LegacyTypedef;
// ^
//
diff --git a/pkg/front_end/testcases/nnbd/export_from_opt_out.dart.strong.expect b/pkg/front_end/testcases/nnbd_mixed/export_from_opt_out.dart.weak.transformed.expect
similarity index 86%
copy from pkg/front_end/testcases/nnbd/export_from_opt_out.dart.strong.expect
copy to pkg/front_end/testcases/nnbd_mixed/export_from_opt_out.dart.weak.transformed.expect
index 241f5aa..d741d6e 100644
--- a/pkg/front_end/testcases/nnbd/export_from_opt_out.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/export_from_opt_out.dart.weak.transformed.expect
@@ -2,27 +2,27 @@
//
// Problems in library:
//
-// pkg/front_end/testcases/nnbd/export_from_opt_out.dart:6:1: Error: Null safe libraries are not allowed to export declarations from of opt-out libraries.
+// pkg/front_end/testcases/nnbd_mixed/export_from_opt_out.dart:6:1: Error: Null safe libraries are not allowed to export declarations from of opt-out libraries.
// export 'export_from_opt_out_lib1.dart';
// ^
//
-// pkg/front_end/testcases/nnbd/export_from_opt_out.dart:10:1: Error: Null safe libraries are not allowed to export declarations from of opt-out libraries.
+// pkg/front_end/testcases/nnbd_mixed/export_from_opt_out.dart:10:1: Error: Null safe libraries are not allowed to export declarations from of opt-out libraries.
// export 'export_from_opt_out_lib2.dart' hide legacyMethod2;
// ^
//
-// pkg/front_end/testcases/nnbd/export_from_opt_out.dart:13:1: Error: Null safe libraries are not allowed to export declarations from of opt-out libraries.
+// pkg/front_end/testcases/nnbd_mixed/export_from_opt_out.dart:13:1: Error: Null safe libraries are not allowed to export declarations from of opt-out libraries.
// export 'export_from_opt_out_lib3.dart' show LegacyClass2;
// ^
//
-// pkg/front_end/testcases/nnbd/export_from_opt_out.dart:16:1: Error: Null safe libraries are not allowed to export declarations from of opt-out libraries.
+// pkg/front_end/testcases/nnbd_mixed/export_from_opt_out.dart:16:1: Error: Null safe libraries are not allowed to export declarations from of opt-out libraries.
// export 'export_from_opt_out_lib3.dart' show legacyMethod1;
// ^
//
-// pkg/front_end/testcases/nnbd/export_from_opt_out.dart:19:1: Error: Null safe libraries are not allowed to export declarations from of opt-out libraries.
+// pkg/front_end/testcases/nnbd_mixed/export_from_opt_out.dart:19:1: Error: Null safe libraries are not allowed to export declarations from of opt-out libraries.
// export 'export_from_opt_out_lib3.dart' show LegacyExtension;
// ^
//
-// pkg/front_end/testcases/nnbd/export_from_opt_out.dart:22:1: Error: Null safe libraries are not allowed to export declarations from of opt-out libraries.
+// pkg/front_end/testcases/nnbd_mixed/export_from_opt_out.dart:22:1: Error: Null safe libraries are not allowed to export declarations from of opt-out libraries.
// export 'export_from_opt_out_lib3.dart' show LegacyTypedef;
// ^
//
diff --git a/pkg/front_end/testcases/nnbd/export_from_opt_out_lib1.dart b/pkg/front_end/testcases/nnbd_mixed/export_from_opt_out_lib1.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/export_from_opt_out_lib1.dart
rename to pkg/front_end/testcases/nnbd_mixed/export_from_opt_out_lib1.dart
diff --git a/pkg/front_end/testcases/nnbd/export_from_opt_out_lib2.dart b/pkg/front_end/testcases/nnbd_mixed/export_from_opt_out_lib2.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/export_from_opt_out_lib2.dart
rename to pkg/front_end/testcases/nnbd_mixed/export_from_opt_out_lib2.dart
diff --git a/pkg/front_end/testcases/nnbd/export_from_opt_out_lib3.dart b/pkg/front_end/testcases/nnbd_mixed/export_from_opt_out_lib3.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/export_from_opt_out_lib3.dart
rename to pkg/front_end/testcases/nnbd_mixed/export_from_opt_out_lib3.dart
diff --git a/pkg/front_end/testcases/nnbd/export_from_opt_out_lib4.dart b/pkg/front_end/testcases/nnbd_mixed/export_from_opt_out_lib4.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/export_from_opt_out_lib4.dart
rename to pkg/front_end/testcases/nnbd_mixed/export_from_opt_out_lib4.dart
diff --git a/pkg/front_end/testcases/nnbd/export_from_opt_out_lib5.dart b/pkg/front_end/testcases/nnbd_mixed/export_from_opt_out_lib5.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/export_from_opt_out_lib5.dart
rename to pkg/front_end/testcases/nnbd_mixed/export_from_opt_out_lib5.dart
diff --git a/pkg/front_end/testcases/nnbd/generic_override.dart b/pkg/front_end/testcases/nnbd_mixed/generic_override.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/generic_override.dart
rename to pkg/front_end/testcases/nnbd_mixed/generic_override.dart
diff --git a/pkg/front_end/testcases/nnbd_mixed/generic_override.dart.outline.expect b/pkg/front_end/testcases/nnbd_mixed/generic_override.dart.outline.expect
new file mode 100644
index 0000000..981f001
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd_mixed/generic_override.dart.outline.expect
@@ -0,0 +1,240 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/generic_override.dart:39:8: Error: Declared bound 'Object?' of type variable 'T' of 'Class2.method4b' doesn't match the bound 'Object' on overridden method 'Class1.method4b'.
+// - 'Object' is from 'dart:core'.
+// void method4b<T extends Object?>(); // error
+// ^
+// pkg/front_end/testcases/nnbd_mixed/generic_override.dart:19:8: Context: This is the overridden method ('method4b').
+// void method4b<T extends Object>();
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/generic_override.dart:40:8: Error: Declared bound 'Object' of type variable 'T' of 'Class2.method4c' doesn't match the bound 'Object?' on overridden method 'Class1.method4c'.
+// - 'Object' is from 'dart:core'.
+// void method4c<T extends Object>(); // error
+// ^
+// pkg/front_end/testcases/nnbd_mixed/generic_override.dart:20:8: Context: This is the overridden method ('method4c').
+// void method4c<T extends Object?>();
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/generic_override.dart:43:8: Error: Declared bound 'Class1?' of type variable 'T' of 'Class2.method5b' doesn't match the bound 'Class1' on overridden method 'Class1.method5b'.
+// - 'Class1' is from 'pkg/front_end/testcases/nnbd_mixed/generic_override.dart'.
+// void method5b<T extends Class1?>(); // error
+// ^
+// pkg/front_end/testcases/nnbd_mixed/generic_override.dart:23:8: Context: This is the overridden method ('method5b').
+// void method5b<T extends Class1>();
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/generic_override.dart:44:8: Error: Declared bound 'Class1' of type variable 'T' of 'Class2.method5c' doesn't match the bound 'Class1?' on overridden method 'Class1.method5c'.
+// - 'Class1' is from 'pkg/front_end/testcases/nnbd_mixed/generic_override.dart'.
+// void method5c<T extends Class1>(); // error
+// ^
+// pkg/front_end/testcases/nnbd_mixed/generic_override.dart:24:8: Context: This is the overridden method ('method5c').
+// void method5c<T extends Class1?>();
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/generic_override.dart:51:8: Error: Declared bound 'Object?' of type variable 'T' of 'Class3.method2a' doesn't match the bound 'Object' on overridden method 'LegacyClass1.method2a'.
+// - 'Object' is from 'dart:core'.
+// void method2a<T>();
+// ^
+// pkg/front_end/testcases/nnbd_mixed/generic_override_lib.dart:13:8: Context: This is the overridden method ('method2a').
+// void method2a<T extends Object>();
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/generic_override.dart:52:8: Error: Declared bound 'Object?' of type variable 'T' of 'Class3.method2b' doesn't match the bound 'Object' on overridden method 'LegacyClass1.method2b'.
+// - 'Object' is from 'dart:core'.
+// void method2b<T extends Object?>();
+// ^
+// pkg/front_end/testcases/nnbd_mixed/generic_override_lib.dart:14:8: Context: This is the overridden method ('method2b').
+// void method2b<T extends Object>();
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/generic_override.dart:53:8: Error: Declared bound 'dynamic' of type variable 'T' of 'Class3.method2c' doesn't match the bound 'Object' on overridden method 'LegacyClass1.method2c'.
+// - 'Object' is from 'dart:core'.
+// void method2c<T extends dynamic>();
+// ^
+// pkg/front_end/testcases/nnbd_mixed/generic_override_lib.dart:15:8: Context: This is the overridden method ('method2c').
+// void method2c<T extends Object>();
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/generic_override.dart:59:8: Error: Declared bound 'Object?' of type variable 'T' of 'Class3.method4b' doesn't match the bound 'Object' on overridden method 'LegacyClass1.method4b'.
+// - 'Object' is from 'dart:core'.
+// void method4b<T extends Object?>();
+// ^
+// pkg/front_end/testcases/nnbd_mixed/generic_override_lib.dart:21:8: Context: This is the overridden method ('method4b').
+// void method4b<T extends Object>();
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/generic_override.dart:63:8: Error: Declared bound 'Class1?' of type variable 'T' of 'Class3.method5b' doesn't match the bound 'Class1' on overridden method 'LegacyClass1.method5b'.
+// - 'Class1' is from 'pkg/front_end/testcases/nnbd_mixed/generic_override.dart'.
+// void method5b<T extends Class1?>();
+// ^
+// pkg/front_end/testcases/nnbd_mixed/generic_override_lib.dart:25:8: Context: This is the overridden method ('method5b').
+// void method5b<T extends Class1>();
+// ^
+//
+import self as self;
+import "dart:core" as core;
+import "generic_override_lib.dart" as gen;
+
+import "org-dartlang-testcase:///generic_override_lib.dart";
+
+abstract class Class1 extends core::Object {
+ synthetic constructor •() → self::Class1
+ ;
+ abstract method method1a<T extends core::Object? = dynamic>() → void;
+ abstract method method1b<T extends core::Object? = dynamic>() → void;
+ abstract method method1c<T extends core::Object? = dynamic>() → void;
+ abstract method method2a<T extends core::Object? = core::Object?>() → void;
+ abstract method method2b<T extends core::Object? = core::Object?>() → void;
+ abstract method method2c<T extends core::Object? = core::Object?>() → void;
+ abstract method method3a<T extends dynamic = dynamic>() → void;
+ abstract method method3b<T extends dynamic = dynamic>() → void;
+ abstract method method3c<T extends dynamic = dynamic>() → void;
+ abstract method method4a<T extends core::Object = core::Object>() → void;
+ abstract method method4b<T extends core::Object = core::Object>() → void;
+ abstract method method4c<T extends core::Object? = core::Object?>() → void;
+ abstract method method5a<T extends self::Class1 = self::Class1>() → void;
+ abstract method method5b<T extends self::Class1 = self::Class1>() → void;
+ abstract method method5c<T extends self::Class1? = self::Class1?>() → void;
+}
+abstract class Class2 extends self::Class1 {
+ synthetic constructor •() → self::Class2
+ ;
+ abstract method method1a<T extends core::Object? = dynamic>() → void;
+ abstract method method1b<T extends core::Object? = core::Object?>() → void;
+ abstract method method1c<T extends dynamic = dynamic>() → void;
+ abstract method method2a<T extends core::Object? = dynamic>() → void;
+ abstract method method2b<T extends core::Object? = core::Object?>() → void;
+ abstract method method2c<T extends dynamic = dynamic>() → void;
+ abstract method method3a<T extends core::Object? = dynamic>() → void;
+ abstract method method3b<T extends core::Object? = core::Object?>() → void;
+ abstract method method3c<T extends dynamic = dynamic>() → void;
+ abstract method method4a<T extends core::Object = core::Object>() → void;
+ abstract method method4b<T extends core::Object? = core::Object?>() → void;
+ abstract method method4c<T extends core::Object = core::Object>() → void;
+ abstract method method5a<T extends self::Class1 = self::Class1>() → void;
+ abstract method method5b<T extends self::Class1? = self::Class1?>() → void;
+ abstract method method5c<T extends self::Class1 = self::Class1>() → void;
+}
+abstract class Class3 extends gen::LegacyClass1 {
+ synthetic constructor •() → self::Class3
+ ;
+ abstract method method1a<T extends core::Object? = dynamic>() → void;
+ abstract method method1b<T extends core::Object? = core::Object?>() → void;
+ abstract method method1c<T extends dynamic = dynamic>() → void;
+ abstract method method2a<T extends core::Object? = dynamic>() → void;
+ abstract method method2b<T extends core::Object? = core::Object?>() → void;
+ abstract method method2c<T extends dynamic = dynamic>() → void;
+ abstract method method3a<T extends core::Object? = dynamic>() → void;
+ abstract method method3b<T extends core::Object? = core::Object?>() → void;
+ abstract method method3c<T extends dynamic = dynamic>() → void;
+ abstract method method4a<T extends core::Object = core::Object>() → void;
+ abstract method method4b<T extends core::Object? = core::Object?>() → void;
+ abstract method method4c<T extends core::Object = core::Object>() → void;
+ abstract method method5a<T extends self::Class1 = self::Class1>() → void;
+ abstract method method5b<T extends self::Class1? = self::Class1?>() → void;
+ abstract method method5c<T extends self::Class1 = self::Class1>() → void;
+}
+static method main() → dynamic
+ ;
+
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/generic_override_lib.dart:5:1: Error: A library can't opt out of non-nullable by default, when in nnbd-strong mode.
+// // @dart=2.6
+// ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd_mixed/generic_override_lib.dart:31:8: Error: Declared bound 'Object' of type variable 'T' of 'LegacyClass2.method1b' doesn't match the bound 'Object?' on overridden method 'Class1.method1b'.
+// - 'Object' is from 'dart:core'.
+// void method1b<T extends Object>();
+// ^
+// pkg/front_end/testcases/nnbd_mixed/generic_override.dart:9:8: Context: This is the overridden method ('method1b').
+// void method1b<T>();
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/generic_override_lib.dart:34:8: Error: Declared bound 'Object' of type variable 'T' of 'LegacyClass2.method2b' doesn't match the bound 'Object?' on overridden method 'Class1.method2b'.
+// - 'Object' is from 'dart:core'.
+// void method2b<T extends Object>();
+// ^
+// pkg/front_end/testcases/nnbd_mixed/generic_override.dart:12:8: Context: This is the overridden method ('method2b').
+// void method2b<T extends Object?>();
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/generic_override_lib.dart:37:8: Error: Declared bound 'Object' of type variable 'T' of 'LegacyClass2.method3b' doesn't match the bound 'dynamic' on overridden method 'Class1.method3b'.
+// - 'Object' is from 'dart:core'.
+// void method3b<T extends Object>();
+// ^
+// pkg/front_end/testcases/nnbd_mixed/generic_override.dart:15:8: Context: This is the overridden method ('method3b').
+// void method3b<T extends dynamic>();
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/generic_override_lib.dart:42:8: Error: Declared bound 'Object' of type variable 'T' of 'LegacyClass2.method4c' doesn't match the bound 'Object?' on overridden method 'Class1.method4c'.
+// - 'Object' is from 'dart:core'.
+// void method4c<T extends Object>();
+// ^
+// pkg/front_end/testcases/nnbd_mixed/generic_override.dart:20:8: Context: This is the overridden method ('method4c').
+// void method4c<T extends Object?>();
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/generic_override_lib.dart:46:8: Error: Declared bound 'Class1' of type variable 'T' of 'LegacyClass2.method5c' doesn't match the bound 'Class1?' on overridden method 'Class1.method5c'.
+// - 'Class1' is from 'pkg/front_end/testcases/nnbd_mixed/generic_override.dart'.
+// void method5c<T extends Class1>();
+// ^
+// pkg/front_end/testcases/nnbd_mixed/generic_override.dart:24:8: Context: This is the overridden method ('method5c').
+// void method5c<T extends Class1?>();
+// ^
+//
+import self as gen;
+import "dart:core" as core;
+import "generic_override.dart" as self;
+
+import "org-dartlang-testcase:///generic_override.dart";
+
+abstract class LegacyClass1 extends core::Object {
+ synthetic constructor •() → gen::LegacyClass1
+ ;
+ abstract method method1a<T extends core::Object? = dynamic>() → void;
+ abstract method method1b<T extends core::Object? = dynamic>() → void;
+ abstract method method1c<T extends core::Object? = dynamic>() → void;
+ abstract method method2a<T extends core::Object = core::Object>() → void;
+ abstract method method2b<T extends core::Object = core::Object>() → void;
+ abstract method method2c<T extends core::Object = core::Object>() → void;
+ abstract method method3a<T extends dynamic = dynamic>() → void;
+ abstract method method3b<T extends dynamic = dynamic>() → void;
+ abstract method method3c<T extends dynamic = dynamic>() → void;
+ abstract method method4a<T extends core::Object = core::Object>() → void;
+ abstract method method4b<T extends core::Object = core::Object>() → void;
+ abstract method method4c<T extends core::Object = core::Object>() → void;
+ abstract method method5a<T extends self::Class1 = self::Class1>() → void;
+ abstract method method5b<T extends self::Class1 = self::Class1>() → void;
+ abstract method method5c<T extends self::Class1 = self::Class1>() → void;
+}
+abstract class LegacyClass2 extends self::Class1 {
+ synthetic constructor •() → gen::LegacyClass2
+ ;
+ abstract method method1a<T extends core::Object? = dynamic>() → void;
+ abstract method method1b<T extends core::Object = core::Object>() → void;
+ abstract method method1c<T extends dynamic = dynamic>() → void;
+ abstract method method2a<T extends core::Object? = dynamic>() → void;
+ abstract method method2b<T extends core::Object = core::Object>() → void;
+ abstract method method2c<T extends dynamic = dynamic>() → void;
+ abstract method method3a<T extends core::Object? = dynamic>() → void;
+ abstract method method3b<T extends core::Object = core::Object>() → void;
+ abstract method method3c<T extends dynamic = dynamic>() → void;
+ abstract method method4a<T extends core::Object = core::Object>() → void;
+ abstract method method4b<T extends core::Object = core::Object>() → void;
+ abstract method method4c<T extends core::Object = core::Object>() → void;
+ abstract method method5a<T extends self::Class1 = self::Class1>() → void;
+ abstract method method5b<T extends self::Class1 = self::Class1>() → void;
+ abstract method method5c<T extends self::Class1 = self::Class1>() → void;
+}
+abstract class LegacyClass3 extends self::Class1 {
+ synthetic constructor •() → gen::LegacyClass3
+ ;
+}
+static method main() → dynamic
+ ;
diff --git a/pkg/front_end/testcases/nnbd/generic_override.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd_mixed/generic_override.dart.textual_outline.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/generic_override.dart.textual_outline.expect
rename to pkg/front_end/testcases/nnbd_mixed/generic_override.dart.textual_outline.expect
diff --git a/pkg/front_end/testcases/nnbd/generic_override.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd_mixed/generic_override.dart.textual_outline_modelled.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/generic_override.dart.textual_outline_modelled.expect
rename to pkg/front_end/testcases/nnbd_mixed/generic_override.dart.textual_outline_modelled.expect
diff --git a/pkg/front_end/testcases/nnbd/generic_override.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/generic_override.dart.weak.expect
similarity index 88%
rename from pkg/front_end/testcases/nnbd/generic_override.dart.weak.expect
rename to pkg/front_end/testcases/nnbd_mixed/generic_override.dart.weak.expect
index f6b9ee8..169e3bd 100644
--- a/pkg/front_end/testcases/nnbd/generic_override.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/generic_override.dart.weak.expect
@@ -2,35 +2,35 @@
//
// Problems in library:
//
-// pkg/front_end/testcases/nnbd/generic_override.dart:39:8: Error: Declared bound 'Object?' of type variable 'T' of 'Class2.method4b' doesn't match the bound 'Object' on overridden method 'Class1.method4b'.
+// pkg/front_end/testcases/nnbd_mixed/generic_override.dart:39:8: Error: Declared bound 'Object?' of type variable 'T' of 'Class2.method4b' doesn't match the bound 'Object' on overridden method 'Class1.method4b'.
// - 'Object' is from 'dart:core'.
// void method4b<T extends Object?>(); // error
// ^
-// pkg/front_end/testcases/nnbd/generic_override.dart:19:8: Context: This is the overridden method ('method4b').
+// pkg/front_end/testcases/nnbd_mixed/generic_override.dart:19:8: Context: This is the overridden method ('method4b').
// void method4b<T extends Object>();
// ^
//
-// pkg/front_end/testcases/nnbd/generic_override.dart:40:8: Error: Declared bound 'Object' of type variable 'T' of 'Class2.method4c' doesn't match the bound 'Object?' on overridden method 'Class1.method4c'.
+// pkg/front_end/testcases/nnbd_mixed/generic_override.dart:40:8: Error: Declared bound 'Object' of type variable 'T' of 'Class2.method4c' doesn't match the bound 'Object?' on overridden method 'Class1.method4c'.
// - 'Object' is from 'dart:core'.
// void method4c<T extends Object>(); // error
// ^
-// pkg/front_end/testcases/nnbd/generic_override.dart:20:8: Context: This is the overridden method ('method4c').
+// pkg/front_end/testcases/nnbd_mixed/generic_override.dart:20:8: Context: This is the overridden method ('method4c').
// void method4c<T extends Object?>();
// ^
//
-// pkg/front_end/testcases/nnbd/generic_override.dart:43:8: Error: Declared bound 'Class1?' of type variable 'T' of 'Class2.method5b' doesn't match the bound 'Class1' on overridden method 'Class1.method5b'.
-// - 'Class1' is from 'pkg/front_end/testcases/nnbd/generic_override.dart'.
+// pkg/front_end/testcases/nnbd_mixed/generic_override.dart:43:8: Error: Declared bound 'Class1?' of type variable 'T' of 'Class2.method5b' doesn't match the bound 'Class1' on overridden method 'Class1.method5b'.
+// - 'Class1' is from 'pkg/front_end/testcases/nnbd_mixed/generic_override.dart'.
// void method5b<T extends Class1?>(); // error
// ^
-// pkg/front_end/testcases/nnbd/generic_override.dart:23:8: Context: This is the overridden method ('method5b').
+// pkg/front_end/testcases/nnbd_mixed/generic_override.dart:23:8: Context: This is the overridden method ('method5b').
// void method5b<T extends Class1>();
// ^
//
-// pkg/front_end/testcases/nnbd/generic_override.dart:44:8: Error: Declared bound 'Class1' of type variable 'T' of 'Class2.method5c' doesn't match the bound 'Class1?' on overridden method 'Class1.method5c'.
-// - 'Class1' is from 'pkg/front_end/testcases/nnbd/generic_override.dart'.
+// pkg/front_end/testcases/nnbd_mixed/generic_override.dart:44:8: Error: Declared bound 'Class1' of type variable 'T' of 'Class2.method5c' doesn't match the bound 'Class1?' on overridden method 'Class1.method5c'.
+// - 'Class1' is from 'pkg/front_end/testcases/nnbd_mixed/generic_override.dart'.
// void method5c<T extends Class1>(); // error
// ^
-// pkg/front_end/testcases/nnbd/generic_override.dart:24:8: Context: This is the overridden method ('method5c').
+// pkg/front_end/testcases/nnbd_mixed/generic_override.dart:24:8: Context: This is the overridden method ('method5c').
// void method5c<T extends Class1?>();
// ^
//
diff --git a/pkg/front_end/testcases/nnbd/generic_override.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/generic_override.dart.weak.transformed.expect
similarity index 88%
rename from pkg/front_end/testcases/nnbd/generic_override.dart.weak.transformed.expect
rename to pkg/front_end/testcases/nnbd_mixed/generic_override.dart.weak.transformed.expect
index f6b9ee8..169e3bd 100644
--- a/pkg/front_end/testcases/nnbd/generic_override.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/generic_override.dart.weak.transformed.expect
@@ -2,35 +2,35 @@
//
// Problems in library:
//
-// pkg/front_end/testcases/nnbd/generic_override.dart:39:8: Error: Declared bound 'Object?' of type variable 'T' of 'Class2.method4b' doesn't match the bound 'Object' on overridden method 'Class1.method4b'.
+// pkg/front_end/testcases/nnbd_mixed/generic_override.dart:39:8: Error: Declared bound 'Object?' of type variable 'T' of 'Class2.method4b' doesn't match the bound 'Object' on overridden method 'Class1.method4b'.
// - 'Object' is from 'dart:core'.
// void method4b<T extends Object?>(); // error
// ^
-// pkg/front_end/testcases/nnbd/generic_override.dart:19:8: Context: This is the overridden method ('method4b').
+// pkg/front_end/testcases/nnbd_mixed/generic_override.dart:19:8: Context: This is the overridden method ('method4b').
// void method4b<T extends Object>();
// ^
//
-// pkg/front_end/testcases/nnbd/generic_override.dart:40:8: Error: Declared bound 'Object' of type variable 'T' of 'Class2.method4c' doesn't match the bound 'Object?' on overridden method 'Class1.method4c'.
+// pkg/front_end/testcases/nnbd_mixed/generic_override.dart:40:8: Error: Declared bound 'Object' of type variable 'T' of 'Class2.method4c' doesn't match the bound 'Object?' on overridden method 'Class1.method4c'.
// - 'Object' is from 'dart:core'.
// void method4c<T extends Object>(); // error
// ^
-// pkg/front_end/testcases/nnbd/generic_override.dart:20:8: Context: This is the overridden method ('method4c').
+// pkg/front_end/testcases/nnbd_mixed/generic_override.dart:20:8: Context: This is the overridden method ('method4c').
// void method4c<T extends Object?>();
// ^
//
-// pkg/front_end/testcases/nnbd/generic_override.dart:43:8: Error: Declared bound 'Class1?' of type variable 'T' of 'Class2.method5b' doesn't match the bound 'Class1' on overridden method 'Class1.method5b'.
-// - 'Class1' is from 'pkg/front_end/testcases/nnbd/generic_override.dart'.
+// pkg/front_end/testcases/nnbd_mixed/generic_override.dart:43:8: Error: Declared bound 'Class1?' of type variable 'T' of 'Class2.method5b' doesn't match the bound 'Class1' on overridden method 'Class1.method5b'.
+// - 'Class1' is from 'pkg/front_end/testcases/nnbd_mixed/generic_override.dart'.
// void method5b<T extends Class1?>(); // error
// ^
-// pkg/front_end/testcases/nnbd/generic_override.dart:23:8: Context: This is the overridden method ('method5b').
+// pkg/front_end/testcases/nnbd_mixed/generic_override.dart:23:8: Context: This is the overridden method ('method5b').
// void method5b<T extends Class1>();
// ^
//
-// pkg/front_end/testcases/nnbd/generic_override.dart:44:8: Error: Declared bound 'Class1' of type variable 'T' of 'Class2.method5c' doesn't match the bound 'Class1?' on overridden method 'Class1.method5c'.
-// - 'Class1' is from 'pkg/front_end/testcases/nnbd/generic_override.dart'.
+// pkg/front_end/testcases/nnbd_mixed/generic_override.dart:44:8: Error: Declared bound 'Class1' of type variable 'T' of 'Class2.method5c' doesn't match the bound 'Class1?' on overridden method 'Class1.method5c'.
+// - 'Class1' is from 'pkg/front_end/testcases/nnbd_mixed/generic_override.dart'.
// void method5c<T extends Class1>(); // error
// ^
-// pkg/front_end/testcases/nnbd/generic_override.dart:24:8: Context: This is the overridden method ('method5c').
+// pkg/front_end/testcases/nnbd_mixed/generic_override.dart:24:8: Context: This is the overridden method ('method5c').
// void method5c<T extends Class1?>();
// ^
//
diff --git a/pkg/front_end/testcases/nnbd/generic_override_lib.dart b/pkg/front_end/testcases/nnbd_mixed/generic_override_lib.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/generic_override_lib.dart
rename to pkg/front_end/testcases/nnbd_mixed/generic_override_lib.dart
diff --git a/pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in.dart b/pkg/front_end/testcases/nnbd_mixed/infer_constraints_from_opt_in.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in.dart
rename to pkg/front_end/testcases/nnbd_mixed/infer_constraints_from_opt_in.dart
diff --git a/pkg/front_end/testcases/nnbd_mixed/infer_constraints_from_opt_in.dart.outline.expect b/pkg/front_end/testcases/nnbd_mixed/infer_constraints_from_opt_in.dart.outline.expect
new file mode 100644
index 0000000..b7b6e9f
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd_mixed/infer_constraints_from_opt_in.dart.outline.expect
@@ -0,0 +1,59 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/infer_constraints_from_opt_in.dart:5:1: Error: A library can't opt out of non-nullable by default, when in nnbd-strong mode.
+// // @dart=2.5
+// ^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+import "infer_constraints_from_opt_in_lib.dart" as inf;
+
+import "org-dartlang-testcase:///infer_constraints_from_opt_in_lib.dart";
+
+abstract class A extends core::Object {
+ synthetic constructor •() → self::A
+ ;
+ method baz(inf::B b) → dynamic
+ ;
+}
+static method main() → dynamic
+ ;
+
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/infer_constraints_from_opt_in_lib.dart:11:9: Error: Field 'field5' should be initialized because its type 'C<int?>' doesn't allow null.
+// - 'C' is from 'pkg/front_end/testcases/nnbd_mixed/infer_constraints_from_opt_in_lib.dart'.
+// C<int?> field5;
+// ^^^^^^
+//
+// pkg/front_end/testcases/nnbd_mixed/infer_constraints_from_opt_in_lib.dart:13:5: Error: Field 'field7' should be initialized because its type 'int' doesn't allow null.
+// int field7;
+// ^^^^^^
+//
+import self as inf;
+import "dart:core" as core;
+
+class C<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → inf::C<inf::C::T%>
+ ;
+}
+abstract class B extends core::Object {
+ synthetic constructor •() → inf::B
+ ;
+ abstract method bar<X extends core::List<core::int?>? = core::List<core::int?>?>() → inf::B::bar::X%;
+ abstract method foo(core::List<core::int> list) → dynamic;
+}
+static field inf::C<dynamic> field1;
+static field inf::C<dynamic>? field2;
+static field inf::C<core::int> field3;
+static field inf::C<core::int>? field4;
+static field inf::C<core::int?> field5;
+static field inf::C<core::int?>? field6;
+static field core::int field7;
+static field core::int? field8;
+static method method() → dynamic
+ ;
diff --git a/pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd_mixed/infer_constraints_from_opt_in.dart.textual_outline.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in.dart.textual_outline.expect
rename to pkg/front_end/testcases/nnbd_mixed/infer_constraints_from_opt_in.dart.textual_outline.expect
diff --git a/pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd_mixed/infer_constraints_from_opt_in.dart.textual_outline_modelled.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in.dart.textual_outline_modelled.expect
rename to pkg/front_end/testcases/nnbd_mixed/infer_constraints_from_opt_in.dart.textual_outline_modelled.expect
diff --git a/pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/infer_constraints_from_opt_in.dart.weak.expect
similarity index 96%
rename from pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in.dart.weak.expect
rename to pkg/front_end/testcases/nnbd_mixed/infer_constraints_from_opt_in.dart.weak.expect
index e98a6278..9a2e199 100644
--- a/pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/infer_constraints_from_opt_in.dart.weak.expect
@@ -57,12 +57,12 @@
//
// Problems in library:
//
-// pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in_lib.dart:11:9: Error: Field 'field5' should be initialized because its type 'C<int?>' doesn't allow null.
-// - 'C' is from 'pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in_lib.dart'.
+// pkg/front_end/testcases/nnbd_mixed/infer_constraints_from_opt_in_lib.dart:11:9: Error: Field 'field5' should be initialized because its type 'C<int?>' doesn't allow null.
+// - 'C' is from 'pkg/front_end/testcases/nnbd_mixed/infer_constraints_from_opt_in_lib.dart'.
// C<int?> field5;
// ^^^^^^
//
-// pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in_lib.dart:13:5: Error: Field 'field7' should be initialized because its type 'int' doesn't allow null.
+// pkg/front_end/testcases/nnbd_mixed/infer_constraints_from_opt_in_lib.dart:13:5: Error: Field 'field7' should be initialized because its type 'int' doesn't allow null.
// int field7;
// ^^^^^^
//
diff --git a/pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/infer_constraints_from_opt_in.dart.weak.transformed.expect
similarity index 96%
rename from pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in.dart.weak.transformed.expect
rename to pkg/front_end/testcases/nnbd_mixed/infer_constraints_from_opt_in.dart.weak.transformed.expect
index 240e8dc..9a256aa 100644
--- a/pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/infer_constraints_from_opt_in.dart.weak.transformed.expect
@@ -57,12 +57,12 @@
//
// Problems in library:
//
-// pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in_lib.dart:11:9: Error: Field 'field5' should be initialized because its type 'C<int?>' doesn't allow null.
-// - 'C' is from 'pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in_lib.dart'.
+// pkg/front_end/testcases/nnbd_mixed/infer_constraints_from_opt_in_lib.dart:11:9: Error: Field 'field5' should be initialized because its type 'C<int?>' doesn't allow null.
+// - 'C' is from 'pkg/front_end/testcases/nnbd_mixed/infer_constraints_from_opt_in_lib.dart'.
// C<int?> field5;
// ^^^^^^
//
-// pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in_lib.dart:13:5: Error: Field 'field7' should be initialized because its type 'int' doesn't allow null.
+// pkg/front_end/testcases/nnbd_mixed/infer_constraints_from_opt_in_lib.dart:13:5: Error: Field 'field7' should be initialized because its type 'int' doesn't allow null.
// int field7;
// ^^^^^^
//
diff --git a/pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in_lib.dart b/pkg/front_end/testcases/nnbd_mixed/infer_constraints_from_opt_in_lib.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in_lib.dart
rename to pkg/front_end/testcases/nnbd_mixed/infer_constraints_from_opt_in_lib.dart
diff --git a/pkg/front_end/testcases/nnbd/infer_from_opt_in.dart b/pkg/front_end/testcases/nnbd_mixed/infer_from_opt_in.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/infer_from_opt_in.dart
rename to pkg/front_end/testcases/nnbd_mixed/infer_from_opt_in.dart
diff --git a/pkg/front_end/testcases/nnbd/infer_from_opt_in.dart.outline.expect b/pkg/front_end/testcases/nnbd_mixed/infer_from_opt_in.dart.outline.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/infer_from_opt_in.dart.outline.expect
rename to pkg/front_end/testcases/nnbd_mixed/infer_from_opt_in.dart.outline.expect
diff --git a/pkg/front_end/testcases/nnbd/infer_from_opt_in.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd_mixed/infer_from_opt_in.dart.textual_outline.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/infer_from_opt_in.dart.textual_outline.expect
rename to pkg/front_end/testcases/nnbd_mixed/infer_from_opt_in.dart.textual_outline.expect
diff --git a/pkg/front_end/testcases/nnbd/infer_from_opt_in.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd_mixed/infer_from_opt_in.dart.textual_outline_modelled.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/infer_from_opt_in.dart.textual_outline_modelled.expect
rename to pkg/front_end/testcases/nnbd_mixed/infer_from_opt_in.dart.textual_outline_modelled.expect
diff --git a/pkg/front_end/testcases/nnbd/infer_from_opt_in.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/infer_from_opt_in.dart.weak.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/infer_from_opt_in.dart.weak.expect
rename to pkg/front_end/testcases/nnbd_mixed/infer_from_opt_in.dart.weak.expect
diff --git a/pkg/front_end/testcases/nnbd/infer_from_opt_in.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/infer_from_opt_in.dart.weak.transformed.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/infer_from_opt_in.dart.weak.transformed.expect
rename to pkg/front_end/testcases/nnbd_mixed/infer_from_opt_in.dart.weak.transformed.expect
diff --git a/pkg/front_end/testcases/nnbd/infer_from_opt_in_lib.dart b/pkg/front_end/testcases/nnbd_mixed/infer_from_opt_in_lib.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/infer_from_opt_in_lib.dart
rename to pkg/front_end/testcases/nnbd_mixed/infer_from_opt_in_lib.dart
diff --git a/pkg/front_end/testcases/nnbd/infer_from_opt_out.dart b/pkg/front_end/testcases/nnbd_mixed/infer_from_opt_out.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/infer_from_opt_out.dart
rename to pkg/front_end/testcases/nnbd_mixed/infer_from_opt_out.dart
diff --git a/pkg/front_end/testcases/nnbd_mixed/infer_from_opt_out.dart.outline.expect b/pkg/front_end/testcases/nnbd_mixed/infer_from_opt_out.dart.outline.expect
new file mode 100644
index 0000000..8a07d4c
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd_mixed/infer_from_opt_out.dart.outline.expect
@@ -0,0 +1,30 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///infer_from_opt_out_lib.dart";
+
+static method reify<T extends core::Object? = dynamic>(self::reify::T% arg) → dynamic
+ ;
+static method main() → dynamic
+ ;
+
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/infer_from_opt_out_lib.dart:5:1: Error: A library can't opt out of non-nullable by default, when in nnbd-strong mode.
+// // @dart = 2.6
+// ^^^^^^^^^^^^^^
+//
+import self as self2;
+import "dart:core" as core;
+
+class Foo extends core::Object {
+ synthetic constructor •() → self2::Foo
+ ;
+}
+static method createFoo() → self2::Foo
+ ;
+static method callback((self2::Foo) → self2::Foo f) → void
+ ;
diff --git a/pkg/front_end/testcases/nnbd/infer_from_opt_out.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd_mixed/infer_from_opt_out.dart.textual_outline.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/infer_from_opt_out.dart.textual_outline.expect
rename to pkg/front_end/testcases/nnbd_mixed/infer_from_opt_out.dart.textual_outline.expect
diff --git a/pkg/front_end/testcases/nnbd/infer_from_opt_out.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd_mixed/infer_from_opt_out.dart.textual_outline_modelled.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/infer_from_opt_out.dart.textual_outline_modelled.expect
rename to pkg/front_end/testcases/nnbd_mixed/infer_from_opt_out.dart.textual_outline_modelled.expect
diff --git a/pkg/front_end/testcases/nnbd/infer_from_opt_out.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/infer_from_opt_out.dart.weak.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/infer_from_opt_out.dart.weak.expect
rename to pkg/front_end/testcases/nnbd_mixed/infer_from_opt_out.dart.weak.expect
diff --git a/pkg/front_end/testcases/nnbd/infer_from_opt_out.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/infer_from_opt_out.dart.weak.transformed.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/infer_from_opt_out.dart.weak.transformed.expect
rename to pkg/front_end/testcases/nnbd_mixed/infer_from_opt_out.dart.weak.transformed.expect
diff --git a/pkg/front_end/testcases/nnbd/infer_from_opt_out_lib.dart b/pkg/front_end/testcases/nnbd_mixed/infer_from_opt_out_lib.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/infer_from_opt_out_lib.dart
rename to pkg/front_end/testcases/nnbd_mixed/infer_from_opt_out_lib.dart
diff --git a/pkg/front_end/testcases/nnbd/infer_in_legacy_from_opted_in.dart b/pkg/front_end/testcases/nnbd_mixed/infer_in_legacy_from_opted_in.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/infer_in_legacy_from_opted_in.dart
rename to pkg/front_end/testcases/nnbd_mixed/infer_in_legacy_from_opted_in.dart
diff --git a/pkg/front_end/testcases/nnbd_mixed/infer_in_legacy_from_opted_in.dart.outline.expect b/pkg/front_end/testcases/nnbd_mixed/infer_in_legacy_from_opted_in.dart.outline.expect
new file mode 100644
index 0000000..86c1fad
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd_mixed/infer_in_legacy_from_opted_in.dart.outline.expect
@@ -0,0 +1,27 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/infer_in_legacy_from_opted_in.dart:5:1: Error: A library can't opt out of non-nullable by default, when in nnbd-strong mode.
+// // @dart=2.6
+// ^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///infer_in_legacy_from_opted_in_lib.dart";
+
+static method bar(core::int x) → dynamic
+ ;
+static method main() → dynamic
+ ;
+
+library /*isNonNullableByDefault*/;
+import self as self2;
+import "dart:core" as core;
+
+static field core::int y;
+static method foo<T extends core::num = core::num>(self2::foo::T t1, self2::foo::T t2) → self2::foo::T
+ ;
+static method baz(core::int? v) → dynamic
+ ;
diff --git a/pkg/front_end/testcases/nnbd/infer_in_legacy_from_opted_in.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd_mixed/infer_in_legacy_from_opted_in.dart.textual_outline.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/infer_in_legacy_from_opted_in.dart.textual_outline.expect
rename to pkg/front_end/testcases/nnbd_mixed/infer_in_legacy_from_opted_in.dart.textual_outline.expect
diff --git a/pkg/front_end/testcases/nnbd/infer_in_legacy_from_opted_in.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd_mixed/infer_in_legacy_from_opted_in.dart.textual_outline_modelled.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/infer_in_legacy_from_opted_in.dart.textual_outline_modelled.expect
rename to pkg/front_end/testcases/nnbd_mixed/infer_in_legacy_from_opted_in.dart.textual_outline_modelled.expect
diff --git a/pkg/front_end/testcases/nnbd/infer_in_legacy_from_opted_in.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/infer_in_legacy_from_opted_in.dart.weak.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/infer_in_legacy_from_opted_in.dart.weak.expect
rename to pkg/front_end/testcases/nnbd_mixed/infer_in_legacy_from_opted_in.dart.weak.expect
diff --git a/pkg/front_end/testcases/nnbd/infer_in_legacy_from_opted_in.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/infer_in_legacy_from_opted_in.dart.weak.transformed.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/infer_in_legacy_from_opted_in.dart.weak.transformed.expect
rename to pkg/front_end/testcases/nnbd_mixed/infer_in_legacy_from_opted_in.dart.weak.transformed.expect
diff --git a/pkg/front_end/testcases/nnbd/infer_in_legacy_from_opted_in_lib.dart b/pkg/front_end/testcases/nnbd_mixed/infer_in_legacy_from_opted_in_lib.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/infer_in_legacy_from_opted_in_lib.dart
rename to pkg/front_end/testcases/nnbd_mixed/infer_in_legacy_from_opted_in_lib.dart
diff --git a/pkg/front_end/testcases/nnbd/inheritance_from_opt_in.dart b/pkg/front_end/testcases/nnbd_mixed/inheritance_from_opt_in.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/inheritance_from_opt_in.dart
rename to pkg/front_end/testcases/nnbd_mixed/inheritance_from_opt_in.dart
diff --git a/pkg/front_end/testcases/nnbd_mixed/inheritance_from_opt_in.dart.outline.expect b/pkg/front_end/testcases/nnbd_mixed/inheritance_from_opt_in.dart.outline.expect
new file mode 100644
index 0000000..c2e072c
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd_mixed/inheritance_from_opt_in.dart.outline.expect
@@ -0,0 +1,113 @@
+//
+// Problems in component:
+//
+// pkg/front_end/testcases/nnbd_mixed/inheritance_from_opt_in.dart:25:7: Error: 'LegacyClass4e' can't implement both 'GenericInterface<num>' and 'GenericInterface<num?>'
+// - 'GenericInterface' is from 'pkg/front_end/testcases/nnbd_mixed/inheritance_from_opt_in_lib.dart'.
+// class LegacyClass4e implements Class4a, Class4b {}
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/inheritance_from_opt_in.dart:27:7: Error: 'LegacyClass5' can't implement both 'GenericInterface<dynamic>' and 'GenericInterface<Object>'
+// - 'GenericInterface' is from 'pkg/front_end/testcases/nnbd_mixed/inheritance_from_opt_in_lib.dart'.
+// - 'Object' is from 'dart:core'.
+// class LegacyClass5 extends Class5 implements GenericInterface<Object> {}
+// ^
+//
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/inheritance_from_opt_in.dart:5:1: Error: A library can't opt out of non-nullable by default, when in nnbd-strong mode.
+// // @dart=2.5
+// ^^^^^^^^^^^^
+//
+import self as self;
+import "inheritance_from_opt_in_lib.dart" as inh;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///inheritance_from_opt_in_lib.dart";
+
+class LegacyClass1 extends inh::Class1 {
+ synthetic constructor •() → self::LegacyClass1
+ ;
+}
+class LegacyClass2<T extends core::Object? = dynamic> extends inh::Class2<self::LegacyClass2::T%> {
+ synthetic constructor •() → self::LegacyClass2<self::LegacyClass2::T%>
+ ;
+}
+class LegacyClass3a<T extends core::Object? = dynamic> extends inh::Class3<self::LegacyClass3a::T%> {
+ synthetic constructor •() → self::LegacyClass3a<self::LegacyClass3a::T%>
+ ;
+}
+class LegacyClass3b<T extends core::Object? = dynamic> extends inh::Class3<self::LegacyClass3b::T%> implements inh::GenericInterface<self::LegacyClass3b::T%> {
+ synthetic constructor •() → self::LegacyClass3b<self::LegacyClass3b::T%>
+ ;
+}
+class LegacyClass4a extends inh::Class4a {
+ synthetic constructor •() → self::LegacyClass4a
+ ;
+}
+class LegacyClass4b extends core::Object implements inh::GenericInterface<core::num> {
+ synthetic constructor •() → self::LegacyClass4b
+ ;
+}
+class LegacyClass4c extends core::Object implements inh::GenericInterface<core::num?> {
+ synthetic constructor •() → self::LegacyClass4c
+ ;
+}
+class LegacyClass4d extends inh::Class4a implements inh::GenericInterface<core::num> {
+ synthetic constructor •() → self::LegacyClass4d
+ ;
+}
+class LegacyClass4e extends core::Object implements inh::Class4a, inh::Class4b {
+ synthetic constructor •() → self::LegacyClass4e
+ ;
+}
+class LegacyClass5 extends inh::Class5 implements inh::GenericInterface<core::Object> {
+ synthetic constructor •() → self::LegacyClass5
+ ;
+}
+class LegacyClass6a<T extends core::Object? = dynamic> extends inh::Class3<self::LegacyClass6a::T%> implements inh::GenericSubInterface<self::LegacyClass6a::T%> {
+ synthetic constructor •() → self::LegacyClass6a<self::LegacyClass6a::T%>
+ ;
+}
+class LegacyClass6b<T extends core::Object? = dynamic> extends self::LegacyClass3a<self::LegacyClass6b::T%> implements inh::GenericSubInterface<self::LegacyClass6b::T%> {
+ synthetic constructor •() → self::LegacyClass6b<self::LegacyClass6b::T%>
+ ;
+}
+
+library /*isNonNullableByDefault*/;
+import self as inh;
+import "dart:core" as core;
+
+abstract class GenericInterface<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → inh::GenericInterface<inh::GenericInterface::T%>
+ ;
+}
+abstract class GenericSubInterface<T extends core::Object? = dynamic> extends inh::GenericInterface<inh::GenericSubInterface::T%> {
+ synthetic constructor •() → inh::GenericSubInterface<inh::GenericSubInterface::T%>
+ ;
+}
+class Class1 extends core::Object {
+ synthetic constructor •() → inh::Class1
+ ;
+}
+class Class2<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → inh::Class2<inh::Class2::T%>
+ ;
+}
+class Class3<T extends core::Object? = dynamic> extends core::Object implements inh::GenericInterface<inh::Class3::T%> {
+ synthetic constructor •() → inh::Class3<inh::Class3::T%>
+ ;
+}
+class Class4a extends core::Object implements inh::GenericInterface<core::num> {
+ synthetic constructor •() → inh::Class4a
+ ;
+}
+class Class4b extends core::Object implements inh::GenericInterface<core::num?> {
+ synthetic constructor •() → inh::Class4b
+ ;
+}
+class Class5 extends core::Object implements inh::GenericInterface<dynamic> {
+ synthetic constructor •() → inh::Class5
+ ;
+}
diff --git a/pkg/front_end/testcases/nnbd/inheritance_from_opt_in.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd_mixed/inheritance_from_opt_in.dart.textual_outline.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/inheritance_from_opt_in.dart.textual_outline.expect
rename to pkg/front_end/testcases/nnbd_mixed/inheritance_from_opt_in.dart.textual_outline.expect
diff --git a/pkg/front_end/testcases/nnbd/inheritance_from_opt_in.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd_mixed/inheritance_from_opt_in.dart.textual_outline_modelled.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/inheritance_from_opt_in.dart.textual_outline_modelled.expect
rename to pkg/front_end/testcases/nnbd_mixed/inheritance_from_opt_in.dart.textual_outline_modelled.expect
diff --git a/pkg/front_end/testcases/nnbd/inheritance_from_opt_in.dart.strong.expect b/pkg/front_end/testcases/nnbd_mixed/inheritance_from_opt_in.dart.weak.expect
similarity index 95%
rename from pkg/front_end/testcases/nnbd/inheritance_from_opt_in.dart.strong.expect
rename to pkg/front_end/testcases/nnbd_mixed/inheritance_from_opt_in.dart.weak.expect
index 6b6a775..92b8e4e 100644
--- a/pkg/front_end/testcases/nnbd/inheritance_from_opt_in.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/inheritance_from_opt_in.dart.weak.expect
@@ -1,8 +1,8 @@
//
// Problems in component:
//
-// pkg/front_end/testcases/nnbd/inheritance_from_opt_in.dart:27:7: Error: 'LegacyClass5' can't implement both 'GenericInterface<dynamic>' and 'GenericInterface<Object>'
-// - 'GenericInterface' is from 'pkg/front_end/testcases/nnbd/inheritance_from_opt_in_lib.dart'.
+// pkg/front_end/testcases/nnbd_mixed/inheritance_from_opt_in.dart:27:7: Error: 'LegacyClass5' can't implement both 'GenericInterface<dynamic>' and 'GenericInterface<Object>'
+// - 'GenericInterface' is from 'pkg/front_end/testcases/nnbd_mixed/inheritance_from_opt_in_lib.dart'.
// - 'Object' is from 'dart:core'.
// class LegacyClass5 extends Class5 implements GenericInterface<Object> {}
// ^
@@ -11,11 +11,11 @@
//
// Problems in library:
//
-// pkg/front_end/testcases/nnbd/inheritance_from_opt_in.dart:21:52: Error: Null safety features are disabled for this library.
+// pkg/front_end/testcases/nnbd_mixed/inheritance_from_opt_in.dart:21:52: Error: Null safety features are disabled for this library.
// Try removing the `@dart=` annotation or setting the language version higher.
// class LegacyClass4c implements GenericInterface<num?> {}
// ^
-// pkg/front_end/testcases/nnbd/inheritance_from_opt_in.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
+// pkg/front_end/testcases/nnbd_mixed/inheritance_from_opt_in.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
// // @dart=2.5
// ^^^^^^^^^^^^
//
diff --git a/pkg/front_end/testcases/nnbd/inheritance_from_opt_in_lib.dart b/pkg/front_end/testcases/nnbd_mixed/inheritance_from_opt_in_lib.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/inheritance_from_opt_in_lib.dart
rename to pkg/front_end/testcases/nnbd_mixed/inheritance_from_opt_in_lib.dart
diff --git a/pkg/front_end/testcases/nnbd/inheritance_from_opt_out.dart b/pkg/front_end/testcases/nnbd_mixed/inheritance_from_opt_out.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/inheritance_from_opt_out.dart
rename to pkg/front_end/testcases/nnbd_mixed/inheritance_from_opt_out.dart
diff --git a/pkg/front_end/testcases/nnbd_mixed/inheritance_from_opt_out.dart.outline.expect b/pkg/front_end/testcases/nnbd_mixed/inheritance_from_opt_out.dart.outline.expect
new file mode 100644
index 0000000..66dbb96
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd_mixed/inheritance_from_opt_out.dart.outline.expect
@@ -0,0 +1,103 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "inheritance_from_opt_out_lib.dart" as inh;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///inheritance_from_opt_out_lib.dart";
+
+class Class1 extends inh::LegacyClass1 {
+ synthetic constructor •() → self::Class1
+ ;
+}
+class Class2<T extends core::Object? = dynamic> extends inh::LegacyClass2<self::Class2::T%> {
+ synthetic constructor •() → self::Class2<self::Class2::T%>
+ ;
+}
+class Class3a<T extends core::Object? = dynamic> extends inh::LegacyClass3<self::Class3a::T%> {
+ synthetic constructor •() → self::Class3a<self::Class3a::T%>
+ ;
+}
+class Class3b<T extends core::Object? = dynamic> extends inh::LegacyClass3<self::Class3b::T%> implements inh::GenericInterface<self::Class3b::T%> {
+ synthetic constructor •() → self::Class3b<self::Class3b::T%>
+ ;
+}
+class Class4a extends inh::LegacyClass4 {
+ synthetic constructor •() → self::Class4a
+ ;
+}
+class Class4b extends core::Object implements inh::GenericInterface<core::num> {
+ synthetic constructor •() → self::Class4b
+ ;
+}
+class Class4c extends core::Object implements inh::GenericInterface<core::num?> {
+ synthetic constructor •() → self::Class4c
+ ;
+}
+class Class4d extends inh::LegacyClass4 implements inh::GenericInterface<core::num> {
+ synthetic constructor •() → self::Class4d
+ ;
+}
+static method main() → dynamic
+ ;
+
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/inheritance_from_opt_out_lib.dart:5:1: Error: A library can't opt out of non-nullable by default, when in nnbd-strong mode.
+// // @dart=2.5
+// ^^^^^^^^^^^^
+//
+import self as inh;
+import "dart:core" as core;
+
+abstract class GenericInterface<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → inh::GenericInterface<inh::GenericInterface::T%>
+ ;
+}
+abstract class GenericSubInterface<T extends core::Object? = dynamic> extends core::Object implements inh::GenericInterface<inh::GenericSubInterface::T%> {
+ synthetic constructor •() → inh::GenericSubInterface<inh::GenericSubInterface::T%>
+ ;
+}
+class LegacyClass1 extends core::Object {
+ synthetic constructor •() → inh::LegacyClass1
+ ;
+}
+class LegacyClass2<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → inh::LegacyClass2<inh::LegacyClass2::T%>
+ ;
+}
+class LegacyClass3<T extends core::Object? = dynamic> extends core::Object implements inh::GenericInterface<inh::LegacyClass3::T%> {
+ synthetic constructor •() → inh::LegacyClass3<inh::LegacyClass3::T%>
+ ;
+}
+class LegacyClass4 extends core::Object implements inh::GenericInterface<core::num> {
+ synthetic constructor •() → inh::LegacyClass4
+ ;
+}
+class LegacyClass5<T extends core::Object? = dynamic> extends inh::LegacyClass3<inh::LegacyClass5::T%> implements inh::GenericInterface<inh::LegacyClass5::T%> {
+ synthetic constructor •() → inh::LegacyClass5<inh::LegacyClass5::T%>
+ ;
+}
+abstract class _LegacyClass6&Object&LegacyClass3<T extends core::Object? = dynamic> = core::Object with inh::LegacyClass3<inh::_LegacyClass6&Object&LegacyClass3::T%> /*isAnonymousMixin,hasConstConstructor*/ {
+ const synthetic constructor •() → inh::_LegacyClass6&Object&LegacyClass3<inh::_LegacyClass6&Object&LegacyClass3::T%>
+ : super core::Object::•()
+ ;
+}
+class LegacyClass6<T extends core::Object? = dynamic> extends inh::_LegacyClass6&Object&LegacyClass3<inh::LegacyClass6::T%> implements inh::GenericInterface<inh::LegacyClass6::T%> {
+ synthetic constructor •() → inh::LegacyClass6<inh::LegacyClass6::T%>
+ ;
+}
+class LegacyClass7<T extends core::Object? = dynamic> extends inh::LegacyClass3<inh::LegacyClass7::T%> implements inh::GenericSubInterface<inh::LegacyClass7::T%> {
+ synthetic constructor •() → inh::LegacyClass7<inh::LegacyClass7::T%>
+ ;
+}
+abstract class _LegacyClass8&Object&LegacyClass3<T extends core::Object? = dynamic> = core::Object with inh::LegacyClass3<inh::_LegacyClass8&Object&LegacyClass3::T%> /*isAnonymousMixin,hasConstConstructor*/ {
+ const synthetic constructor •() → inh::_LegacyClass8&Object&LegacyClass3<inh::_LegacyClass8&Object&LegacyClass3::T%>
+ : super core::Object::•()
+ ;
+}
+class LegacyClass8<T extends core::Object? = dynamic> extends inh::_LegacyClass8&Object&LegacyClass3<inh::LegacyClass8::T%> implements inh::GenericSubInterface<inh::LegacyClass8::T%> {
+ synthetic constructor •() → inh::LegacyClass8<inh::LegacyClass8::T%>
+ ;
+}
diff --git a/pkg/front_end/testcases/nnbd/inheritance_from_opt_out.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd_mixed/inheritance_from_opt_out.dart.textual_outline.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/inheritance_from_opt_out.dart.textual_outline.expect
rename to pkg/front_end/testcases/nnbd_mixed/inheritance_from_opt_out.dart.textual_outline.expect
diff --git a/pkg/front_end/testcases/nnbd/inheritance_from_opt_out.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd_mixed/inheritance_from_opt_out.dart.textual_outline_modelled.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/inheritance_from_opt_out.dart.textual_outline_modelled.expect
rename to pkg/front_end/testcases/nnbd_mixed/inheritance_from_opt_out.dart.textual_outline_modelled.expect
diff --git a/pkg/front_end/testcases/nnbd/inheritance_from_opt_out.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/inheritance_from_opt_out.dart.weak.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/inheritance_from_opt_out.dart.weak.expect
rename to pkg/front_end/testcases/nnbd_mixed/inheritance_from_opt_out.dart.weak.expect
diff --git a/pkg/front_end/testcases/nnbd/inheritance_from_opt_out.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/inheritance_from_opt_out.dart.weak.transformed.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/inheritance_from_opt_out.dart.weak.transformed.expect
rename to pkg/front_end/testcases/nnbd_mixed/inheritance_from_opt_out.dart.weak.transformed.expect
diff --git a/pkg/front_end/testcases/nnbd/inheritance_from_opt_out_lib.dart b/pkg/front_end/testcases/nnbd_mixed/inheritance_from_opt_out_lib.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/inheritance_from_opt_out_lib.dart
rename to pkg/front_end/testcases/nnbd_mixed/inheritance_from_opt_out_lib.dart
diff --git a/pkg/front_end/testcases/nnbd/issue40512/issue40512.dart b/pkg/front_end/testcases/nnbd_mixed/issue40512/issue40512.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue40512/issue40512.dart
rename to pkg/front_end/testcases/nnbd_mixed/issue40512/issue40512.dart
diff --git a/pkg/front_end/testcases/nnbd/issue40512/issue40512.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd_mixed/issue40512/issue40512.dart.textual_outline.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue40512/issue40512.dart.textual_outline.expect
rename to pkg/front_end/testcases/nnbd_mixed/issue40512/issue40512.dart.textual_outline.expect
diff --git a/pkg/front_end/testcases/nnbd/issue40512/issue40512.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd_mixed/issue40512/issue40512.dart.textual_outline_modelled.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue40512/issue40512.dart.textual_outline_modelled.expect
rename to pkg/front_end/testcases/nnbd_mixed/issue40512/issue40512.dart.textual_outline_modelled.expect
diff --git a/pkg/front_end/testcases/nnbd/issue40512/issue40512_lib.dart b/pkg/front_end/testcases/nnbd_mixed/issue40512/issue40512_lib.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue40512/issue40512_lib.dart
rename to pkg/front_end/testcases/nnbd_mixed/issue40512/issue40512_lib.dart
diff --git a/pkg/front_end/testcases/nnbd/issue40512/issue40512_lib.dart.outline.expect b/pkg/front_end/testcases/nnbd_mixed/issue40512/issue40512_lib.dart.outline.expect
similarity index 80%
rename from pkg/front_end/testcases/nnbd/issue40512/issue40512_lib.dart.outline.expect
rename to pkg/front_end/testcases/nnbd_mixed/issue40512/issue40512_lib.dart.outline.expect
index b7d1e81..667822e3 100644
--- a/pkg/front_end/testcases/nnbd/issue40512/issue40512_lib.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/issue40512/issue40512_lib.dart.outline.expect
@@ -1,4 +1,16 @@
-library;
+//
+// Problems in component:
+//
+// pkg/front_end/testcases/nnbd_mixed/issue40512/issue40512_lib.dart: Error: A library can't opt out of non-nullable by default, when in nnbd-strong mode.
+//
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/issue40512/issue40512.dart:5:1: Error: A library can't opt out of non-nullable by default, when in nnbd-strong mode.
+// // @dart = 2.6
+// ^^^^^^^^^^^^^^
+//
import self as self;
import "dart:core" as core;
import "issue40512_lib.dart" as baz2;
@@ -6,18 +18,18 @@
import "org-dartlang-testcase:///issue40512_lib.dart";
abstract class _C&Object&A = core::Object with baz2::A /*isAnonymousMixin,hasConstConstructor*/ {
- const synthetic constructor •() → self::_C&Object&A*
+ const synthetic constructor •() → self::_C&Object&A
: super core::Object::•()
;
}
abstract class _C&Object&A&B = self::_C&Object&A with baz2::B /*isAnonymousMixin,hasConstConstructor*/ {
- const synthetic constructor •() → self::_C&Object&A&B*
+ const synthetic constructor •() → self::_C&Object&A&B
: super self::_C&Object&A::•()
;
abstract forwarding-stub method toString({core::String* s}) → core::String*;
}
class C extends self::_C&Object&A&B {
- synthetic constructor •() → self::C*
+ synthetic constructor •() → self::C
;
abstract forwarding-stub method toString({core::String* s}) → core::String*;
}
diff --git a/pkg/front_end/testcases/nnbd/issue40512/issue40512_lib.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/issue40512/issue40512_lib.dart.weak.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue40512/issue40512_lib.dart.weak.expect
rename to pkg/front_end/testcases/nnbd_mixed/issue40512/issue40512_lib.dart.weak.expect
diff --git a/pkg/front_end/testcases/nnbd/issue40512/issue40512_lib.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/issue40512/issue40512_lib.dart.weak.transformed.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue40512/issue40512_lib.dart.weak.transformed.expect
rename to pkg/front_end/testcases/nnbd_mixed/issue40512/issue40512_lib.dart.weak.transformed.expect
diff --git a/pkg/front_end/testcases/nnbd/issue40512/link.options b/pkg/front_end/testcases/nnbd_mixed/issue40512/link.options
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue40512/link.options
rename to pkg/front_end/testcases/nnbd_mixed/issue40512/link.options
diff --git a/pkg/front_end/testcases/nnbd/issue41180.dart b/pkg/front_end/testcases/nnbd_mixed/issue41180.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue41180.dart
rename to pkg/front_end/testcases/nnbd_mixed/issue41180.dart
diff --git a/pkg/front_end/testcases/nnbd_mixed/issue41180.dart.outline.expect b/pkg/front_end/testcases/nnbd_mixed/issue41180.dart.outline.expect
new file mode 100644
index 0000000..c5ac2d8
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd_mixed/issue41180.dart.outline.expect
@@ -0,0 +1,52 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41180.dart:5:1: Error: A library can't opt out of non-nullable by default, when in nnbd-strong mode.
+// // @dart = 2.5
+// ^^^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+import "issue41180_lib.dart" as iss;
+
+import "org-dartlang-testcase:///issue41180_lib.dart";
+
+class D<Y extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::D<self::D::Y%>
+ ;
+ method method() → iss::C<self::D::Y%>
+ ;
+}
+static method main() → void
+ ;
+static method findKey(iss::Map<core::String, dynamic> m, dynamic search) → void
+ ;
+
+library /*isNonNullableByDefault*/;
+import self as iss;
+import "dart:core" as core;
+
+class C<X extends core::Object? = dynamic> extends core::Object {
+ constructor •(() → iss::Map<core::String, core::String> f) → iss::C<iss::C::X%>
+ ;
+}
+class Map<K extends core::Object? = dynamic, V extends core::Object? = dynamic> extends core::Object {
+ final field iss::Map::K% key;
+ final field iss::Map::V% value;
+ constructor •(iss::Map::K% key, iss::Map::V% value) → iss::Map<iss::Map::K%, iss::Map::V%>
+ ;
+ get entries() → iss::Iterable<core::MapEntry<iss::Map::K%, iss::Map::V%>>
+ ;
+}
+class Iterable<E extends core::Object? = dynamic> extends core::Object {
+ final field iss::Iterable::E% element;
+ constructor •(iss::Iterable::E% element) → iss::Iterable<iss::Iterable::E%>
+ ;
+ method singleWhere((iss::Iterable::E%) → core::bool test, {generic-covariant-impl () →? iss::Iterable::E% orElse}) → iss::Iterable::E%
+ ;
+}
+static method foo(() → iss::Map<core::String, core::String> f) → void
+ ;
+static set bar(() → iss::Map<core::String, core::String> f) → void
+ ;
diff --git a/pkg/front_end/testcases/nnbd/issue41180.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd_mixed/issue41180.dart.textual_outline.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue41180.dart.textual_outline.expect
rename to pkg/front_end/testcases/nnbd_mixed/issue41180.dart.textual_outline.expect
diff --git a/pkg/front_end/testcases/nnbd/issue41180.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd_mixed/issue41180.dart.textual_outline_modelled.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue41180.dart.textual_outline_modelled.expect
rename to pkg/front_end/testcases/nnbd_mixed/issue41180.dart.textual_outline_modelled.expect
diff --git a/pkg/front_end/testcases/nnbd/issue41180.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/issue41180.dart.weak.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue41180.dart.weak.expect
rename to pkg/front_end/testcases/nnbd_mixed/issue41180.dart.weak.expect
diff --git a/pkg/front_end/testcases/nnbd/issue41180.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/issue41180.dart.weak.transformed.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue41180.dart.weak.transformed.expect
rename to pkg/front_end/testcases/nnbd_mixed/issue41180.dart.weak.transformed.expect
diff --git a/pkg/front_end/testcases/nnbd/issue41180_lib.dart b/pkg/front_end/testcases/nnbd_mixed/issue41180_lib.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue41180_lib.dart
rename to pkg/front_end/testcases/nnbd_mixed/issue41180_lib.dart
diff --git a/pkg/front_end/testcases/nnbd/issue41210a/issue41210.dart b/pkg/front_end/testcases/nnbd_mixed/issue41210a/issue41210.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue41210a/issue41210.dart
rename to pkg/front_end/testcases/nnbd_mixed/issue41210a/issue41210.dart
diff --git a/pkg/front_end/testcases/nnbd/issue41210a/issue41210.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd_mixed/issue41210a/issue41210.dart.textual_outline.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue41210a/issue41210.dart.textual_outline.expect
rename to pkg/front_end/testcases/nnbd_mixed/issue41210a/issue41210.dart.textual_outline.expect
diff --git a/pkg/front_end/testcases/nnbd/issue41210a/issue41210.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd_mixed/issue41210a/issue41210.dart.textual_outline_modelled.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue41210a/issue41210.dart.textual_outline_modelled.expect
rename to pkg/front_end/testcases/nnbd_mixed/issue41210a/issue41210.dart.textual_outline_modelled.expect
diff --git a/pkg/front_end/testcases/nnbd/issue41210a/issue41210_lib1.dart b/pkg/front_end/testcases/nnbd_mixed/issue41210a/issue41210_lib1.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue41210a/issue41210_lib1.dart
rename to pkg/front_end/testcases/nnbd_mixed/issue41210a/issue41210_lib1.dart
diff --git a/pkg/front_end/testcases/nnbd/issue41210a/issue41210_lib1.dart.outline.expect b/pkg/front_end/testcases/nnbd_mixed/issue41210a/issue41210_lib1.dart.outline.expect
similarity index 83%
rename from pkg/front_end/testcases/nnbd/issue41210a/issue41210_lib1.dart.outline.expect
rename to pkg/front_end/testcases/nnbd_mixed/issue41210a/issue41210_lib1.dart.outline.expect
index 535099e..a91db35 100644
--- a/pkg/front_end/testcases/nnbd/issue41210a/issue41210_lib1.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/issue41210a/issue41210_lib1.dart.outline.expect
@@ -1,4 +1,16 @@
-library;
+//
+// Problems in component:
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41210a/issue41210_lib1.dart: Error: A library can't opt out of non-nullable by default, when in nnbd-strong mode.
+//
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41210a/issue41210.dart:5:1: Error: A library can't opt out of non-nullable by default, when in nnbd-strong mode.
+// // @dart=2.6
+// ^^^^^^^^^^^^
+//
import self as self;
import "dart:core" as core;
import "issue41210_lib1.dart" as iss;
@@ -6,18 +18,18 @@
import "org-dartlang-testcase:///issue41210_lib1.dart";
abstract class _C&Object&A = core::Object with iss::A /*isAnonymousMixin,hasConstConstructor*/ {
- const synthetic constructor •() → self::_C&Object&A*
+ const synthetic constructor •() → self::_C&Object&A
: super core::Object::•()
;
}
abstract class _C&Object&A&B = self::_C&Object&A with iss::B /*isAnonymousMixin,hasConstConstructor*/ {
- const synthetic constructor •() → self::_C&Object&A&B*
+ const synthetic constructor •() → self::_C&Object&A&B
: super self::_C&Object&A::•()
;
abstract forwarding-stub method method({core::String* s}) → core::String*;
}
class C extends self::_C&Object&A&B {
- synthetic constructor •() → self::C*
+ synthetic constructor •() → self::C
;
abstract forwarding-stub method method({core::String* s}) → core::String*;
}
diff --git a/pkg/front_end/testcases/nnbd/issue41210a/issue41210_lib1.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/issue41210a/issue41210_lib1.dart.weak.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue41210a/issue41210_lib1.dart.weak.expect
rename to pkg/front_end/testcases/nnbd_mixed/issue41210a/issue41210_lib1.dart.weak.expect
diff --git a/pkg/front_end/testcases/nnbd/issue41210a/issue41210_lib1.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/issue41210a/issue41210_lib1.dart.weak.transformed.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue41210a/issue41210_lib1.dart.weak.transformed.expect
rename to pkg/front_end/testcases/nnbd_mixed/issue41210a/issue41210_lib1.dart.weak.transformed.expect
diff --git a/pkg/front_end/testcases/nnbd/issue41210a/issue41210_lib2.dart b/pkg/front_end/testcases/nnbd_mixed/issue41210a/issue41210_lib2.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue41210a/issue41210_lib2.dart
rename to pkg/front_end/testcases/nnbd_mixed/issue41210a/issue41210_lib2.dart
diff --git a/pkg/front_end/testcases/nnbd/issue41210a/link.options b/pkg/front_end/testcases/nnbd_mixed/issue41210a/link.options
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue41210a/link.options
rename to pkg/front_end/testcases/nnbd_mixed/issue41210a/link.options
diff --git a/pkg/front_end/testcases/nnbd/issue41210b.dart b/pkg/front_end/testcases/nnbd_mixed/issue41210b.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue41210b.dart
rename to pkg/front_end/testcases/nnbd_mixed/issue41210b.dart
diff --git a/pkg/front_end/testcases/nnbd_mixed/issue41210b.dart.outline.expect b/pkg/front_end/testcases/nnbd_mixed/issue41210b.dart.outline.expect
new file mode 100644
index 0000000..89f4bb8
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd_mixed/issue41210b.dart.outline.expect
@@ -0,0 +1,65 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41210b.dart:5:1: Error: A library can't opt out of non-nullable by default, when in nnbd-strong mode.
+// // @dart=2.6
+// ^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+import "issue41210b_lib1.dart" as iss;
+
+import "org-dartlang-testcase:///issue41210b_lib1.dart";
+
+abstract class _C&Object&A = core::Object with iss::A /*isAnonymousMixin,hasConstConstructor*/ {
+ const synthetic constructor •() → self::_C&Object&A
+ : super core::Object::•()
+ ;
+}
+abstract class _C&Object&A&B = self::_C&Object&A with iss::B /*isAnonymousMixin,hasConstConstructor*/ {
+ const synthetic constructor •() → self::_C&Object&A&B
+ : super self::_C&Object&A::•()
+ ;
+}
+class C extends self::_C&Object&A&B {
+ synthetic constructor •() → self::C
+ ;
+}
+static method main() → dynamic
+ ;
+
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41210b_lib1.dart:5:1: Error: A library can't opt out of non-nullable by default, when in nnbd-strong mode.
+// // @dart=2.6
+// ^^^^^^^^^^^^
+//
+import self as iss;
+import "dart:core" as core;
+import "issue41210b_lib2.dart" as iss2;
+
+import "org-dartlang-testcase:///issue41210b_lib2.dart";
+
+abstract class A extends core::Object implements iss2::Interface /*isMixinDeclaration*/ {
+ method method({core::String s = "hello"}) → core::String
+ ;
+}
+abstract class B extends core::Object implements iss2::Interface {
+ synthetic constructor •() → iss::B
+ ;
+}
+static method main() → void
+ ;
+
+library /*isNonNullableByDefault*/;
+import self as iss2;
+import "dart:core" as core;
+
+abstract class Interface extends core::Object {
+ synthetic constructor •() → iss2::Interface
+ ;
+ abstract method method() → core::String;
+}
diff --git a/pkg/front_end/testcases/nnbd/issue41210b.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd_mixed/issue41210b.dart.textual_outline.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue41210b.dart.textual_outline.expect
rename to pkg/front_end/testcases/nnbd_mixed/issue41210b.dart.textual_outline.expect
diff --git a/pkg/front_end/testcases/nnbd/issue41210b.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd_mixed/issue41210b.dart.textual_outline_modelled.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue41210b.dart.textual_outline_modelled.expect
rename to pkg/front_end/testcases/nnbd_mixed/issue41210b.dart.textual_outline_modelled.expect
diff --git a/pkg/front_end/testcases/nnbd/issue41210b.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/issue41210b.dart.weak.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue41210b.dart.weak.expect
rename to pkg/front_end/testcases/nnbd_mixed/issue41210b.dart.weak.expect
diff --git a/pkg/front_end/testcases/nnbd/issue41210b.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/issue41210b.dart.weak.transformed.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue41210b.dart.weak.transformed.expect
rename to pkg/front_end/testcases/nnbd_mixed/issue41210b.dart.weak.transformed.expect
diff --git a/pkg/front_end/testcases/nnbd/issue41210b_lib1.dart b/pkg/front_end/testcases/nnbd_mixed/issue41210b_lib1.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue41210b_lib1.dart
rename to pkg/front_end/testcases/nnbd_mixed/issue41210b_lib1.dart
diff --git a/pkg/front_end/testcases/nnbd/issue41210b_lib2.dart b/pkg/front_end/testcases/nnbd_mixed/issue41210b_lib2.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue41210b_lib2.dart
rename to pkg/front_end/testcases/nnbd_mixed/issue41210b_lib2.dart
diff --git a/pkg/front_end/testcases/nnbd/issue41496.dart b/pkg/front_end/testcases/nnbd_mixed/issue41496.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue41496.dart
rename to pkg/front_end/testcases/nnbd_mixed/issue41496.dart
diff --git a/pkg/front_end/testcases/nnbd_mixed/issue41496.dart.outline.expect b/pkg/front_end/testcases/nnbd_mixed/issue41496.dart.outline.expect
new file mode 100644
index 0000000..f80d154
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd_mixed/issue41496.dart.outline.expect
@@ -0,0 +1,39 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41496.dart:7:11: Error: Field 'f1' should be initialized because its type 'void Function()' doesn't allow null.
+// LegacyFoo f1;
+// ^^
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41496.dart:10:20: Error: Field 'f2' should be initialized because its type 'void Function()' doesn't allow null.
+// static LegacyFoo f2;
+// ^^
+//
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///issue41496_lib.dart";
+
+class C extends core::Object {
+ static field () → void f2;
+ synthetic constructor •() → self::C
+ ;
+}
+static field () → void f1;
+static method main() → dynamic
+ ;
+
+library opted_out_lib /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41496_lib.dart:5:1: Error: A library can't opt out of non-nullable by default, when in nnbd-strong mode.
+// // @dart=2.6
+// ^^^^^^^^^^^^
+//
+import self as self2;
+
+typedef LegacyFoo = () → void;
+static method test(() → void f) → dynamic
+ ;
diff --git a/pkg/front_end/testcases/nnbd/issue41496.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd_mixed/issue41496.dart.textual_outline.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue41496.dart.textual_outline.expect
rename to pkg/front_end/testcases/nnbd_mixed/issue41496.dart.textual_outline.expect
diff --git a/pkg/front_end/testcases/nnbd/issue41496.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd_mixed/issue41496.dart.textual_outline_modelled.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue41496.dart.textual_outline_modelled.expect
rename to pkg/front_end/testcases/nnbd_mixed/issue41496.dart.textual_outline_modelled.expect
diff --git a/pkg/front_end/testcases/nnbd/issue41496.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/issue41496.dart.weak.expect
similarity index 67%
rename from pkg/front_end/testcases/nnbd/issue41496.dart.weak.expect
rename to pkg/front_end/testcases/nnbd_mixed/issue41496.dart.weak.expect
index 5a1bc313..e3dae37 100644
--- a/pkg/front_end/testcases/nnbd/issue41496.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/issue41496.dart.weak.expect
@@ -2,11 +2,11 @@
//
// Problems in library:
//
-// pkg/front_end/testcases/nnbd/issue41496.dart:7:11: Error: Field 'f1' should be initialized because its type 'void Function()' doesn't allow null.
+// pkg/front_end/testcases/nnbd_mixed/issue41496.dart:7:11: Error: Field 'f1' should be initialized because its type 'void Function()' doesn't allow null.
// LegacyFoo f1;
// ^^
//
-// pkg/front_end/testcases/nnbd/issue41496.dart:10:20: Error: Field 'f2' should be initialized because its type 'void Function()' doesn't allow null.
+// pkg/front_end/testcases/nnbd_mixed/issue41496.dart:10:20: Error: Field 'f2' should be initialized because its type 'void Function()' doesn't allow null.
// static LegacyFoo f2;
// ^^
//
diff --git a/pkg/front_end/testcases/nnbd/issue41496.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/issue41496.dart.weak.transformed.expect
similarity index 67%
rename from pkg/front_end/testcases/nnbd/issue41496.dart.weak.transformed.expect
rename to pkg/front_end/testcases/nnbd_mixed/issue41496.dart.weak.transformed.expect
index 5a1bc313..e3dae37 100644
--- a/pkg/front_end/testcases/nnbd/issue41496.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/issue41496.dart.weak.transformed.expect
@@ -2,11 +2,11 @@
//
// Problems in library:
//
-// pkg/front_end/testcases/nnbd/issue41496.dart:7:11: Error: Field 'f1' should be initialized because its type 'void Function()' doesn't allow null.
+// pkg/front_end/testcases/nnbd_mixed/issue41496.dart:7:11: Error: Field 'f1' should be initialized because its type 'void Function()' doesn't allow null.
// LegacyFoo f1;
// ^^
//
-// pkg/front_end/testcases/nnbd/issue41496.dart:10:20: Error: Field 'f2' should be initialized because its type 'void Function()' doesn't allow null.
+// pkg/front_end/testcases/nnbd_mixed/issue41496.dart:10:20: Error: Field 'f2' should be initialized because its type 'void Function()' doesn't allow null.
// static LegacyFoo f2;
// ^^
//
diff --git a/pkg/front_end/testcases/nnbd/issue41496_lib.dart b/pkg/front_end/testcases/nnbd_mixed/issue41496_lib.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue41496_lib.dart
rename to pkg/front_end/testcases/nnbd_mixed/issue41496_lib.dart
diff --git a/pkg/front_end/testcases/nnbd/issue41496b.dart b/pkg/front_end/testcases/nnbd_mixed/issue41496b.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue41496b.dart
rename to pkg/front_end/testcases/nnbd_mixed/issue41496b.dart
diff --git a/pkg/front_end/testcases/nnbd_mixed/issue41496b.dart.outline.expect b/pkg/front_end/testcases/nnbd_mixed/issue41496b.dart.outline.expect
new file mode 100644
index 0000000..bbfdc97
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd_mixed/issue41496b.dart.outline.expect
@@ -0,0 +1,43 @@
+library opted_out_lib /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41496b.dart:5:1: Error: A library can't opt out of non-nullable by default, when in nnbd-strong mode.
+// // @dart=2.6
+// ^^^^^^^^^^^^
+//
+import self as self;
+
+import "org-dartlang-testcase:///issue41496b_lib.dart" as opt_in;
+
+typedef LegacyFoo = () → void;
+static method test(() → void f) → dynamic
+ ;
+static method main() → dynamic
+ ;
+
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41496b_lib.dart:7:11: Error: Field 'f1' should be initialized because its type 'void Function()' doesn't allow null.
+// LegacyFoo f1;
+// ^^
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41496b_lib.dart:10:20: Error: Field 'f2' should be initialized because its type 'void Function()' doesn't allow null.
+// static LegacyFoo f2;
+// ^^
+//
+import self as self2;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///issue41496b.dart";
+
+class C extends core::Object {
+ static field () → void f2;
+ synthetic constructor •() → self2::C
+ ;
+}
+static field () → void f1;
+static method main() → dynamic
+ ;
diff --git a/pkg/front_end/testcases/nnbd/issue41496b.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd_mixed/issue41496b.dart.textual_outline.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue41496b.dart.textual_outline.expect
rename to pkg/front_end/testcases/nnbd_mixed/issue41496b.dart.textual_outline.expect
diff --git a/pkg/front_end/testcases/nnbd/issue41496b.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd_mixed/issue41496b.dart.textual_outline_modelled.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue41496b.dart.textual_outline_modelled.expect
rename to pkg/front_end/testcases/nnbd_mixed/issue41496b.dart.textual_outline_modelled.expect
diff --git a/pkg/front_end/testcases/nnbd/issue41496b.dart.strong.expect b/pkg/front_end/testcases/nnbd_mixed/issue41496b.dart.weak.expect
similarity index 70%
rename from pkg/front_end/testcases/nnbd/issue41496b.dart.strong.expect
rename to pkg/front_end/testcases/nnbd_mixed/issue41496b.dart.weak.expect
index b70a566..0144b18 100644
--- a/pkg/front_end/testcases/nnbd/issue41496b.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/issue41496b.dart.weak.expect
@@ -14,11 +14,11 @@
//
// Problems in library:
//
-// pkg/front_end/testcases/nnbd/issue41496b_lib.dart:7:11: Error: Field 'f1' should be initialized because its type 'void Function()' doesn't allow null.
+// pkg/front_end/testcases/nnbd_mixed/issue41496b_lib.dart:7:11: Error: Field 'f1' should be initialized because its type 'void Function()' doesn't allow null.
// LegacyFoo f1;
// ^^
//
-// pkg/front_end/testcases/nnbd/issue41496b_lib.dart:10:20: Error: Field 'f2' should be initialized because its type 'void Function()' doesn't allow null.
+// pkg/front_end/testcases/nnbd_mixed/issue41496b_lib.dart:10:20: Error: Field 'f2' should be initialized because its type 'void Function()' doesn't allow null.
// static LegacyFoo f2;
// ^^
//
diff --git a/pkg/front_end/testcases/nnbd/issue41496b.dart.strong.expect b/pkg/front_end/testcases/nnbd_mixed/issue41496b.dart.weak.transformed.expect
similarity index 70%
copy from pkg/front_end/testcases/nnbd/issue41496b.dart.strong.expect
copy to pkg/front_end/testcases/nnbd_mixed/issue41496b.dart.weak.transformed.expect
index b70a566..0144b18 100644
--- a/pkg/front_end/testcases/nnbd/issue41496b.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/issue41496b.dart.weak.transformed.expect
@@ -14,11 +14,11 @@
//
// Problems in library:
//
-// pkg/front_end/testcases/nnbd/issue41496b_lib.dart:7:11: Error: Field 'f1' should be initialized because its type 'void Function()' doesn't allow null.
+// pkg/front_end/testcases/nnbd_mixed/issue41496b_lib.dart:7:11: Error: Field 'f1' should be initialized because its type 'void Function()' doesn't allow null.
// LegacyFoo f1;
// ^^
//
-// pkg/front_end/testcases/nnbd/issue41496b_lib.dart:10:20: Error: Field 'f2' should be initialized because its type 'void Function()' doesn't allow null.
+// pkg/front_end/testcases/nnbd_mixed/issue41496b_lib.dart:10:20: Error: Field 'f2' should be initialized because its type 'void Function()' doesn't allow null.
// static LegacyFoo f2;
// ^^
//
diff --git a/pkg/front_end/testcases/nnbd/issue41496b_lib.dart b/pkg/front_end/testcases/nnbd_mixed/issue41496b_lib.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue41496b_lib.dart
rename to pkg/front_end/testcases/nnbd_mixed/issue41496b_lib.dart
diff --git a/pkg/front_end/testcases/nnbd/issue41498.dart b/pkg/front_end/testcases/nnbd_mixed/issue41498.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue41498.dart
rename to pkg/front_end/testcases/nnbd_mixed/issue41498.dart
diff --git a/pkg/front_end/testcases/nnbd_mixed/issue41498.dart.outline.expect b/pkg/front_end/testcases/nnbd_mixed/issue41498.dart.outline.expect
new file mode 100644
index 0000000..ccf0d3f
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd_mixed/issue41498.dart.outline.expect
@@ -0,0 +1,41 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///issue41498_lib.dart";
+
+class C extends core::Object {
+ synthetic constructor •() → self::C
+ ;
+ static method test() → void
+ ;
+ method test2() → void
+ ;
+}
+static method test() → dynamic
+ ;
+static method main() → dynamic
+ ;
+
+library opted_out_lib /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41498_lib.dart:5:1: Error: A library can't opt out of non-nullable by default, when in nnbd-strong mode.
+// // @dart=2.6
+// ^^^^^^^^^^^^
+//
+import self as self2;
+import "dart:core" as core;
+
+typedef LegacyFoo = () → void;
+class C extends core::Object {
+ synthetic constructor •() → self2::C
+ ;
+ static method test() → void
+ ;
+ method test2() → void
+ ;
+}
+static method test() → dynamic
+ ;
diff --git a/pkg/front_end/testcases/nnbd/issue41498.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd_mixed/issue41498.dart.textual_outline.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue41498.dart.textual_outline.expect
rename to pkg/front_end/testcases/nnbd_mixed/issue41498.dart.textual_outline.expect
diff --git a/pkg/front_end/testcases/nnbd/issue41498.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd_mixed/issue41498.dart.textual_outline_modelled.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue41498.dart.textual_outline_modelled.expect
rename to pkg/front_end/testcases/nnbd_mixed/issue41498.dart.textual_outline_modelled.expect
diff --git a/pkg/front_end/testcases/nnbd/issue41498.dart.strong.expect b/pkg/front_end/testcases/nnbd_mixed/issue41498.dart.weak.expect
similarity index 73%
rename from pkg/front_end/testcases/nnbd/issue41498.dart.strong.expect
rename to pkg/front_end/testcases/nnbd_mixed/issue41498.dart.weak.expect
index eb65bba..1dd6188 100644
--- a/pkg/front_end/testcases/nnbd/issue41498.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/issue41498.dart.weak.expect
@@ -2,19 +2,19 @@
//
// Problems in library:
//
-// pkg/front_end/testcases/nnbd/issue41498.dart:11:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
+// pkg/front_end/testcases/nnbd_mixed/issue41498.dart:11:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
// f.toString(); // error
// ^
//
-// pkg/front_end/testcases/nnbd/issue41498.dart:17:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
+// pkg/front_end/testcases/nnbd_mixed/issue41498.dart:17:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
// f.toString(); // error
// ^
//
-// pkg/front_end/testcases/nnbd/issue41498.dart:24:3: Error: Non-nullable variable 'f' must be assigned before it can be used.
+// pkg/front_end/testcases/nnbd_mixed/issue41498.dart:24:3: Error: Non-nullable variable 'f' must be assigned before it can be used.
// f.toString(); // error
// ^
//
-// pkg/front_end/testcases/nnbd/issue41498.dart:29:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
+// pkg/front_end/testcases/nnbd_mixed/issue41498.dart:29:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
// f.toString(); // error
// ^
//
@@ -29,25 +29,25 @@
;
static method test() → void {
() → void f;
- (let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/nnbd/issue41498.dart:11:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
+ (let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41498.dart:11:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
f.toString(); // error
^" in f).{core::Object::toString}();
}
method test2() → void {
() → void f;
- (let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/nnbd/issue41498.dart:17:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
+ (let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41498.dart:17:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
f.toString(); // error
^" in f).{core::Object::toString}();
}
}
static method test() → dynamic {
() → void f;
- (let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/nnbd/issue41498.dart:24:3: Error: Non-nullable variable 'f' must be assigned before it can be used.
+ (let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41498.dart:24:3: Error: Non-nullable variable 'f' must be assigned before it can be used.
f.toString(); // error
^" in f).{core::Object::toString}();
core::Function foo = () → core::Null? {
() → void f;
- (let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/nnbd/issue41498.dart:29:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
+ (let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41498.dart:29:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
f.toString(); // error
^" in f).{core::Object::toString}();
};
diff --git a/pkg/front_end/testcases/nnbd/issue41498.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/issue41498.dart.weak.transformed.expect
similarity index 73%
rename from pkg/front_end/testcases/nnbd/issue41498.dart.strong.transformed.expect
rename to pkg/front_end/testcases/nnbd_mixed/issue41498.dart.weak.transformed.expect
index eb65bba..1dd6188 100644
--- a/pkg/front_end/testcases/nnbd/issue41498.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/issue41498.dart.weak.transformed.expect
@@ -2,19 +2,19 @@
//
// Problems in library:
//
-// pkg/front_end/testcases/nnbd/issue41498.dart:11:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
+// pkg/front_end/testcases/nnbd_mixed/issue41498.dart:11:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
// f.toString(); // error
// ^
//
-// pkg/front_end/testcases/nnbd/issue41498.dart:17:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
+// pkg/front_end/testcases/nnbd_mixed/issue41498.dart:17:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
// f.toString(); // error
// ^
//
-// pkg/front_end/testcases/nnbd/issue41498.dart:24:3: Error: Non-nullable variable 'f' must be assigned before it can be used.
+// pkg/front_end/testcases/nnbd_mixed/issue41498.dart:24:3: Error: Non-nullable variable 'f' must be assigned before it can be used.
// f.toString(); // error
// ^
//
-// pkg/front_end/testcases/nnbd/issue41498.dart:29:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
+// pkg/front_end/testcases/nnbd_mixed/issue41498.dart:29:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
// f.toString(); // error
// ^
//
@@ -29,25 +29,25 @@
;
static method test() → void {
() → void f;
- (let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/nnbd/issue41498.dart:11:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
+ (let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41498.dart:11:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
f.toString(); // error
^" in f).{core::Object::toString}();
}
method test2() → void {
() → void f;
- (let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/nnbd/issue41498.dart:17:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
+ (let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41498.dart:17:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
f.toString(); // error
^" in f).{core::Object::toString}();
}
}
static method test() → dynamic {
() → void f;
- (let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/nnbd/issue41498.dart:24:3: Error: Non-nullable variable 'f' must be assigned before it can be used.
+ (let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41498.dart:24:3: Error: Non-nullable variable 'f' must be assigned before it can be used.
f.toString(); // error
^" in f).{core::Object::toString}();
core::Function foo = () → core::Null? {
() → void f;
- (let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/nnbd/issue41498.dart:29:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
+ (let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41498.dart:29:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
f.toString(); // error
^" in f).{core::Object::toString}();
};
diff --git a/pkg/front_end/testcases/nnbd/issue41498_lib.dart b/pkg/front_end/testcases/nnbd_mixed/issue41498_lib.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue41498_lib.dart
rename to pkg/front_end/testcases/nnbd_mixed/issue41498_lib.dart
diff --git a/pkg/front_end/testcases/nnbd/issue41498b.dart b/pkg/front_end/testcases/nnbd_mixed/issue41498b.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue41498b.dart
rename to pkg/front_end/testcases/nnbd_mixed/issue41498b.dart
diff --git a/pkg/front_end/testcases/nnbd_mixed/issue41498b.dart.outline.expect b/pkg/front_end/testcases/nnbd_mixed/issue41498b.dart.outline.expect
new file mode 100644
index 0000000..20bd432
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd_mixed/issue41498b.dart.outline.expect
@@ -0,0 +1,45 @@
+library opted_out_lib /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41498b.dart:5:1: Error: A library can't opt out of non-nullable by default, when in nnbd-strong mode.
+// // @dart=2.6
+// ^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///issue41498b_lib.dart" as opt_in;
+
+typedef LegacyFoo = () → void;
+class C extends core::Object {
+ synthetic constructor •() → self::C
+ ;
+ static method test() → void
+ ;
+ method test2() → void
+ ;
+}
+static method test() → dynamic
+ ;
+static method main() → dynamic
+ ;
+
+library /*isNonNullableByDefault*/;
+import self as self2;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///issue41498b.dart";
+
+class C extends core::Object {
+ synthetic constructor •() → self2::C
+ ;
+ static method test() → void
+ ;
+ method test2() → void
+ ;
+}
+static method test() → dynamic
+ ;
+static method main() → dynamic
+ ;
diff --git a/pkg/front_end/testcases/nnbd/issue41498b.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd_mixed/issue41498b.dart.textual_outline.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue41498b.dart.textual_outline.expect
rename to pkg/front_end/testcases/nnbd_mixed/issue41498b.dart.textual_outline.expect
diff --git a/pkg/front_end/testcases/nnbd/issue41498b.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd_mixed/issue41498b.dart.textual_outline_modelled.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue41498b.dart.textual_outline_modelled.expect
rename to pkg/front_end/testcases/nnbd_mixed/issue41498b.dart.textual_outline_modelled.expect
diff --git a/pkg/front_end/testcases/nnbd/issue41498b.dart.strong.expect b/pkg/front_end/testcases/nnbd_mixed/issue41498b.dart.weak.expect
similarity index 73%
rename from pkg/front_end/testcases/nnbd/issue41498b.dart.strong.expect
rename to pkg/front_end/testcases/nnbd_mixed/issue41498b.dart.weak.expect
index 0a74101..6ca8e39 100644
--- a/pkg/front_end/testcases/nnbd/issue41498b.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/issue41498b.dart.weak.expect
@@ -47,19 +47,19 @@
//
// Problems in library:
//
-// pkg/front_end/testcases/nnbd/issue41498b_lib.dart:11:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
+// pkg/front_end/testcases/nnbd_mixed/issue41498b_lib.dart:11:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
// f.toString(); // error
// ^
//
-// pkg/front_end/testcases/nnbd/issue41498b_lib.dart:17:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
+// pkg/front_end/testcases/nnbd_mixed/issue41498b_lib.dart:17:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
// f.toString(); // error
// ^
//
-// pkg/front_end/testcases/nnbd/issue41498b_lib.dart:24:3: Error: Non-nullable variable 'f' must be assigned before it can be used.
+// pkg/front_end/testcases/nnbd_mixed/issue41498b_lib.dart:24:3: Error: Non-nullable variable 'f' must be assigned before it can be used.
// f.toString(); // error
// ^
//
-// pkg/front_end/testcases/nnbd/issue41498b_lib.dart:29:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
+// pkg/front_end/testcases/nnbd_mixed/issue41498b_lib.dart:29:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
// f.toString(); // error
// ^
//
@@ -74,25 +74,25 @@
;
static method test() → void {
() → void f;
- (let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/nnbd/issue41498b_lib.dart:11:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
+ (let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41498b_lib.dart:11:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
f.toString(); // error
^" in f).{core::Object::toString}();
}
method test2() → void {
() → void f;
- (let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/nnbd/issue41498b_lib.dart:17:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
+ (let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41498b_lib.dart:17:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
f.toString(); // error
^" in f).{core::Object::toString}();
}
}
static method test() → dynamic {
() → void f;
- (let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/nnbd/issue41498b_lib.dart:24:3: Error: Non-nullable variable 'f' must be assigned before it can be used.
+ (let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41498b_lib.dart:24:3: Error: Non-nullable variable 'f' must be assigned before it can be used.
f.toString(); // error
^" in f).{core::Object::toString}();
core::Function foo = () → core::Null? {
() → void f;
- (let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/nnbd/issue41498b_lib.dart:29:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
+ (let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41498b_lib.dart:29:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
f.toString(); // error
^" in f).{core::Object::toString}();
};
diff --git a/pkg/front_end/testcases/nnbd/issue41498b.dart.strong.expect b/pkg/front_end/testcases/nnbd_mixed/issue41498b.dart.weak.transformed.expect
similarity index 73%
copy from pkg/front_end/testcases/nnbd/issue41498b.dart.strong.expect
copy to pkg/front_end/testcases/nnbd_mixed/issue41498b.dart.weak.transformed.expect
index 0a74101..6ca8e39 100644
--- a/pkg/front_end/testcases/nnbd/issue41498b.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/issue41498b.dart.weak.transformed.expect
@@ -47,19 +47,19 @@
//
// Problems in library:
//
-// pkg/front_end/testcases/nnbd/issue41498b_lib.dart:11:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
+// pkg/front_end/testcases/nnbd_mixed/issue41498b_lib.dart:11:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
// f.toString(); // error
// ^
//
-// pkg/front_end/testcases/nnbd/issue41498b_lib.dart:17:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
+// pkg/front_end/testcases/nnbd_mixed/issue41498b_lib.dart:17:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
// f.toString(); // error
// ^
//
-// pkg/front_end/testcases/nnbd/issue41498b_lib.dart:24:3: Error: Non-nullable variable 'f' must be assigned before it can be used.
+// pkg/front_end/testcases/nnbd_mixed/issue41498b_lib.dart:24:3: Error: Non-nullable variable 'f' must be assigned before it can be used.
// f.toString(); // error
// ^
//
-// pkg/front_end/testcases/nnbd/issue41498b_lib.dart:29:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
+// pkg/front_end/testcases/nnbd_mixed/issue41498b_lib.dart:29:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
// f.toString(); // error
// ^
//
@@ -74,25 +74,25 @@
;
static method test() → void {
() → void f;
- (let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/nnbd/issue41498b_lib.dart:11:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
+ (let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41498b_lib.dart:11:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
f.toString(); // error
^" in f).{core::Object::toString}();
}
method test2() → void {
() → void f;
- (let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/nnbd/issue41498b_lib.dart:17:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
+ (let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41498b_lib.dart:17:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
f.toString(); // error
^" in f).{core::Object::toString}();
}
}
static method test() → dynamic {
() → void f;
- (let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/nnbd/issue41498b_lib.dart:24:3: Error: Non-nullable variable 'f' must be assigned before it can be used.
+ (let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41498b_lib.dart:24:3: Error: Non-nullable variable 'f' must be assigned before it can be used.
f.toString(); // error
^" in f).{core::Object::toString}();
core::Function foo = () → core::Null? {
() → void f;
- (let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/nnbd/issue41498b_lib.dart:29:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
+ (let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41498b_lib.dart:29:5: Error: Non-nullable variable 'f' must be assigned before it can be used.
f.toString(); // error
^" in f).{core::Object::toString}();
};
diff --git a/pkg/front_end/testcases/nnbd/issue41498b_lib.dart b/pkg/front_end/testcases/nnbd_mixed/issue41498b_lib.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue41498b_lib.dart
rename to pkg/front_end/testcases/nnbd_mixed/issue41498b_lib.dart
diff --git a/pkg/front_end/testcases/nnbd/issue41499.dart b/pkg/front_end/testcases/nnbd_mixed/issue41499.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue41499.dart
rename to pkg/front_end/testcases/nnbd_mixed/issue41499.dart
diff --git a/pkg/front_end/testcases/nnbd_mixed/issue41499.dart.outline.expect b/pkg/front_end/testcases/nnbd_mixed/issue41499.dart.outline.expect
new file mode 100644
index 0000000..414795c
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd_mixed/issue41499.dart.outline.expect
@@ -0,0 +1,34 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///issue41499_lib.dart";
+
+class C extends core::Object {
+ synthetic constructor •() → self::C
+ ;
+ static method sTest() → () → void
+ ;
+ method mTest() → () → void
+ ;
+ get gTest() → () → void
+ ;
+}
+static method test() → () → void
+ ;
+static method main() → dynamic
+ ;
+
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41499_lib.dart:5:1: Error: A library can't opt out of non-nullable by default, when in nnbd-strong mode.
+// // @dart=2.6
+// ^^^^^^^^^^^^
+//
+import self as self2;
+
+typedef LegacyFoo = () → void;
+static method test(() → void f) → dynamic
+ ;
diff --git a/pkg/front_end/testcases/nnbd/issue41499.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd_mixed/issue41499.dart.textual_outline.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue41499.dart.textual_outline.expect
rename to pkg/front_end/testcases/nnbd_mixed/issue41499.dart.textual_outline.expect
diff --git a/pkg/front_end/testcases/nnbd/issue41499.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd_mixed/issue41499.dart.textual_outline_modelled.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue41499.dart.textual_outline_modelled.expect
rename to pkg/front_end/testcases/nnbd_mixed/issue41499.dart.textual_outline_modelled.expect
diff --git a/pkg/front_end/testcases/nnbd_mixed/issue41499.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/issue41499.dart.weak.expect
new file mode 100644
index 0000000..cad102d
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd_mixed/issue41499.dart.weak.expect
@@ -0,0 +1,57 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41499.dart:8:20: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
+// static LegacyFoo sTest() {}
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41499.dart:10:13: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
+// LegacyFoo mTest() {}
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41499.dart:12:17: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
+// LegacyFoo get gTest {}
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41499.dart:15:11: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
+// LegacyFoo test() {}
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///issue41499_lib.dart";
+
+class C extends core::Object {
+ synthetic constructor •() → self::C
+ : super core::Object::•()
+ ;
+ static method sTest() → () → void {
+ return let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41499.dart:8:20: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
+ static LegacyFoo sTest() {}
+ ^" in null;
+ }
+ method mTest() → () → void {
+ return let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41499.dart:10:13: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
+ LegacyFoo mTest() {}
+ ^" in null;
+ }
+ get gTest() → () → void {
+ return let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41499.dart:12:17: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
+ LegacyFoo get gTest {}
+ ^" in null;
+ }
+}
+static method test() → () → void {
+ return let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41499.dart:15:11: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
+LegacyFoo test() {}
+ ^" in null;
+}
+static method main() → dynamic {}
+
+library;
+import self as self2;
+
+typedef LegacyFoo = () →* void;
+static method test(() →* void f) → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd_mixed/issue41499.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/issue41499.dart.weak.transformed.expect
new file mode 100644
index 0000000..cad102d
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd_mixed/issue41499.dart.weak.transformed.expect
@@ -0,0 +1,57 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41499.dart:8:20: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
+// static LegacyFoo sTest() {}
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41499.dart:10:13: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
+// LegacyFoo mTest() {}
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41499.dart:12:17: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
+// LegacyFoo get gTest {}
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41499.dart:15:11: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
+// LegacyFoo test() {}
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///issue41499_lib.dart";
+
+class C extends core::Object {
+ synthetic constructor •() → self::C
+ : super core::Object::•()
+ ;
+ static method sTest() → () → void {
+ return let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41499.dart:8:20: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
+ static LegacyFoo sTest() {}
+ ^" in null;
+ }
+ method mTest() → () → void {
+ return let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41499.dart:10:13: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
+ LegacyFoo mTest() {}
+ ^" in null;
+ }
+ get gTest() → () → void {
+ return let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41499.dart:12:17: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
+ LegacyFoo get gTest {}
+ ^" in null;
+ }
+}
+static method test() → () → void {
+ return let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41499.dart:15:11: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
+LegacyFoo test() {}
+ ^" in null;
+}
+static method main() → dynamic {}
+
+library;
+import self as self2;
+
+typedef LegacyFoo = () →* void;
+static method test(() →* void f) → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue41499_lib.dart b/pkg/front_end/testcases/nnbd_mixed/issue41499_lib.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue41499_lib.dart
rename to pkg/front_end/testcases/nnbd_mixed/issue41499_lib.dart
diff --git a/pkg/front_end/testcases/nnbd/issue41499b.dart b/pkg/front_end/testcases/nnbd_mixed/issue41499b.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue41499b.dart
rename to pkg/front_end/testcases/nnbd_mixed/issue41499b.dart
diff --git a/pkg/front_end/testcases/nnbd/issue41499b.dart.outline.expect b/pkg/front_end/testcases/nnbd_mixed/issue41499b.dart.outline.expect
similarity index 61%
rename from pkg/front_end/testcases/nnbd/issue41499b.dart.outline.expect
rename to pkg/front_end/testcases/nnbd_mixed/issue41499b.dart.outline.expect
index dd70ad6..956b2db 100644
--- a/pkg/front_end/testcases/nnbd/issue41499b.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/issue41499b.dart.outline.expect
@@ -1,10 +1,17 @@
-library;
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41499b.dart:5:1: Error: A library can't opt out of non-nullable by default, when in nnbd-strong mode.
+// // @dart=2.6
+// ^^^^^^^^^^^^
+//
import self as self;
import "org-dartlang-testcase:///issue41499b_lib.dart" as opt_in;
-typedef LegacyFoo = () →* void;
-static method test(() →* void f) → dynamic
+typedef LegacyFoo = () → void;
+static method test(() → void f) → dynamic
;
static method main() → dynamic
;
diff --git a/pkg/front_end/testcases/nnbd/issue41499b.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd_mixed/issue41499b.dart.textual_outline.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue41499b.dart.textual_outline.expect
rename to pkg/front_end/testcases/nnbd_mixed/issue41499b.dart.textual_outline.expect
diff --git a/pkg/front_end/testcases/nnbd/issue41499b.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd_mixed/issue41499b.dart.textual_outline_modelled.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue41499b.dart.textual_outline_modelled.expect
rename to pkg/front_end/testcases/nnbd_mixed/issue41499b.dart.textual_outline_modelled.expect
diff --git a/pkg/front_end/testcases/nnbd_mixed/issue41499b.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/issue41499b.dart.weak.expect
new file mode 100644
index 0000000..6756b94
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd_mixed/issue41499b.dart.weak.expect
@@ -0,0 +1,59 @@
+library;
+import self as self;
+
+import "org-dartlang-testcase:///issue41499b_lib.dart" as opt_in;
+
+typedef LegacyFoo = () →* void;
+static method test(() →* void f) → dynamic {}
+static method main() → dynamic {}
+
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41499b_lib.dart:8:20: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
+// static LegacyFoo sTest() {}
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41499b_lib.dart:10:13: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
+// LegacyFoo mTest() {}
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41499b_lib.dart:12:17: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
+// LegacyFoo get gTest {}
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41499b_lib.dart:15:11: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
+// LegacyFoo test() {}
+// ^
+//
+import self as self2;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///issue41499b.dart";
+
+class C extends core::Object {
+ synthetic constructor •() → self2::C
+ : super core::Object::•()
+ ;
+ static method sTest() → () → void {
+ return let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41499b_lib.dart:8:20: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
+ static LegacyFoo sTest() {}
+ ^" in null;
+ }
+ method mTest() → () → void {
+ return let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41499b_lib.dart:10:13: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
+ LegacyFoo mTest() {}
+ ^" in null;
+ }
+ get gTest() → () → void {
+ return let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41499b_lib.dart:12:17: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
+ LegacyFoo get gTest {}
+ ^" in null;
+ }
+}
+static method test() → () → void {
+ return let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41499b_lib.dart:15:11: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
+LegacyFoo test() {}
+ ^" in null;
+}
diff --git a/pkg/front_end/testcases/nnbd_mixed/issue41499b.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/issue41499b.dart.weak.transformed.expect
new file mode 100644
index 0000000..6756b94
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd_mixed/issue41499b.dart.weak.transformed.expect
@@ -0,0 +1,59 @@
+library;
+import self as self;
+
+import "org-dartlang-testcase:///issue41499b_lib.dart" as opt_in;
+
+typedef LegacyFoo = () →* void;
+static method test(() →* void f) → dynamic {}
+static method main() → dynamic {}
+
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41499b_lib.dart:8:20: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
+// static LegacyFoo sTest() {}
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41499b_lib.dart:10:13: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
+// LegacyFoo mTest() {}
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41499b_lib.dart:12:17: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
+// LegacyFoo get gTest {}
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41499b_lib.dart:15:11: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
+// LegacyFoo test() {}
+// ^
+//
+import self as self2;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///issue41499b.dart";
+
+class C extends core::Object {
+ synthetic constructor •() → self2::C
+ : super core::Object::•()
+ ;
+ static method sTest() → () → void {
+ return let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41499b_lib.dart:8:20: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
+ static LegacyFoo sTest() {}
+ ^" in null;
+ }
+ method mTest() → () → void {
+ return let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41499b_lib.dart:10:13: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
+ LegacyFoo mTest() {}
+ ^" in null;
+ }
+ get gTest() → () → void {
+ return let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41499b_lib.dart:12:17: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
+ LegacyFoo get gTest {}
+ ^" in null;
+ }
+}
+static method test() → () → void {
+ return let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41499b_lib.dart:15:11: Error: A non-null value must be returned since the return type 'void Function()' doesn't allow null.
+LegacyFoo test() {}
+ ^" in null;
+}
diff --git a/pkg/front_end/testcases/nnbd/issue41499b_lib.dart b/pkg/front_end/testcases/nnbd_mixed/issue41499b_lib.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue41499b_lib.dart
rename to pkg/front_end/testcases/nnbd_mixed/issue41499b_lib.dart
diff --git a/pkg/front_end/testcases/nnbd/issue41567.dart b/pkg/front_end/testcases/nnbd_mixed/issue41567.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue41567.dart
rename to pkg/front_end/testcases/nnbd_mixed/issue41567.dart
diff --git a/pkg/front_end/testcases/nnbd_mixed/issue41567.dart.outline.expect b/pkg/front_end/testcases/nnbd_mixed/issue41567.dart.outline.expect
new file mode 100644
index 0000000..640cf39
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd_mixed/issue41567.dart.outline.expect
@@ -0,0 +1,77 @@
+//
+// Problems in component:
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41567.dart:9:7: Error: 'in1' can't implement both 'A<Object>' and 'A<dynamic>'
+// - 'A' is from 'pkg/front_end/testcases/nnbd_mixed/issue41567_lib.dart'.
+// - 'Object' is from 'dart:core'.
+// class in1 extends out_Object implements B {} // ok
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41567.dart:11:7: Error: 'in2' can't implement both 'A<dynamic>' and 'A<Object>'
+// - 'A' is from 'pkg/front_end/testcases/nnbd_mixed/issue41567_lib.dart'.
+// - 'Object' is from 'dart:core'.
+// class in2 extends B implements out_Object {} // ok
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41567.dart:13:7: Error: 'in3' can't implement both 'A<int>' and 'A<dynamic>'
+// - 'A' is from 'pkg/front_end/testcases/nnbd_mixed/issue41567_lib.dart'.
+// class in3 extends out_int implements B {} // error
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41567.dart:15:7: Error: 'in4' can't implement both 'A<dynamic>' and 'A<int>'
+// - 'A' is from 'pkg/front_end/testcases/nnbd_mixed/issue41567_lib.dart'.
+// class in4 extends B implements out_int {} // error
+// ^
+//
+library /*isNonNullableByDefault*/;
+import self as self;
+import "issue41567_lib.dart" as iss;
+
+import "org-dartlang-testcase:///issue41567_lib.dart";
+
+class B extends iss::A<dynamic> {
+ synthetic constructor •() → self::B
+ ;
+}
+class in1 extends iss::out_Object implements self::B {
+ synthetic constructor •() → self::in1
+ ;
+}
+class in2 extends self::B implements iss::out_Object {
+ synthetic constructor •() → self::in2
+ ;
+}
+class in3 extends iss::out_int implements self::B {
+ synthetic constructor •() → self::in3
+ ;
+}
+class in4 extends self::B implements iss::out_int {
+ synthetic constructor •() → self::in4
+ ;
+}
+static method main() → dynamic
+ ;
+
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41567_lib.dart:5:1: Error: A library can't opt out of non-nullable by default, when in nnbd-strong mode.
+// // @dart=2.6
+// ^^^^^^^^^^^^
+//
+import self as iss;
+import "dart:core" as core;
+
+class A<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → iss::A<iss::A::T%>
+ ;
+}
+class out_int extends iss::A<core::int> {
+ synthetic constructor •() → iss::out_int
+ ;
+}
+class out_Object extends iss::A<core::Object> {
+ synthetic constructor •() → iss::out_Object
+ ;
+}
diff --git a/pkg/front_end/testcases/nnbd/issue41567.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd_mixed/issue41567.dart.textual_outline.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue41567.dart.textual_outline.expect
rename to pkg/front_end/testcases/nnbd_mixed/issue41567.dart.textual_outline.expect
diff --git a/pkg/front_end/testcases/nnbd/issue41567.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd_mixed/issue41567.dart.textual_outline_modelled.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue41567.dart.textual_outline_modelled.expect
rename to pkg/front_end/testcases/nnbd_mixed/issue41567.dart.textual_outline_modelled.expect
diff --git a/pkg/front_end/testcases/nnbd/issue41567.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/issue41567.dart.weak.expect
similarity index 85%
rename from pkg/front_end/testcases/nnbd/issue41567.dart.weak.expect
rename to pkg/front_end/testcases/nnbd_mixed/issue41567.dart.weak.expect
index 1d75a33..c3b0030 100644
--- a/pkg/front_end/testcases/nnbd/issue41567.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/issue41567.dart.weak.expect
@@ -1,13 +1,13 @@
//
// Problems in component:
//
-// pkg/front_end/testcases/nnbd/issue41567.dart:13:7: Error: 'in3' can't implement both 'A<int>' and 'A<dynamic>'
-// - 'A' is from 'pkg/front_end/testcases/nnbd/issue41567_lib.dart'.
+// pkg/front_end/testcases/nnbd_mixed/issue41567.dart:13:7: Error: 'in3' can't implement both 'A<int>' and 'A<dynamic>'
+// - 'A' is from 'pkg/front_end/testcases/nnbd_mixed/issue41567_lib.dart'.
// class in3 extends out_int implements B {} // error
// ^
//
-// pkg/front_end/testcases/nnbd/issue41567.dart:15:7: Error: 'in4' can't implement both 'A<dynamic>' and 'A<int>'
-// - 'A' is from 'pkg/front_end/testcases/nnbd/issue41567_lib.dart'.
+// pkg/front_end/testcases/nnbd_mixed/issue41567.dart:15:7: Error: 'in4' can't implement both 'A<dynamic>' and 'A<int>'
+// - 'A' is from 'pkg/front_end/testcases/nnbd_mixed/issue41567_lib.dart'.
// class in4 extends B implements out_int {} // error
// ^
//
diff --git a/pkg/front_end/testcases/nnbd/issue41567_lib.dart b/pkg/front_end/testcases/nnbd_mixed/issue41567_lib.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue41567_lib.dart
rename to pkg/front_end/testcases/nnbd_mixed/issue41567_lib.dart
diff --git a/pkg/front_end/testcases/nnbd/issue41597.dart b/pkg/front_end/testcases/nnbd_mixed/issue41597.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue41597.dart
rename to pkg/front_end/testcases/nnbd_mixed/issue41597.dart
diff --git a/pkg/front_end/testcases/nnbd_mixed/issue41597.dart.outline.expect b/pkg/front_end/testcases/nnbd_mixed/issue41597.dart.outline.expect
new file mode 100644
index 0000000..09a8e05
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd_mixed/issue41597.dart.outline.expect
@@ -0,0 +1,48 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41597.dart:8:6: Error: 'x' is already declared in this scope.
+// bool x;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/issue41597.dart:7:6: Context: Previous declaration of 'x'.
+// bool x;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41597.dart:8:6: Error: Field 'x' should be initialized because its type 'bool' doesn't allow null.
+// bool x;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41597.dart:7:6: Error: Field 'x' should be initialized because its type 'bool' doesn't allow null.
+// bool x;
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///issue41597_lib.dart";
+
+class C extends core::Object {
+ constructor c0() → self::C
+ ;
+ constructor c1() → self::C
+ ;
+}
+static field core::bool x;
+static method errors() → dynamic
+ ;
+static method main() → dynamic
+ ;
+
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41597_lib.dart:5:1: Error: A library can't opt out of non-nullable by default, when in nnbd-strong mode.
+// // @dart=2.6
+// ^^^^^^^^^^^^
+//
+import self as self2;
+
+static method errors(dynamic c) → dynamic
+ ;
diff --git a/pkg/front_end/testcases/nnbd/issue41597.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd_mixed/issue41597.dart.textual_outline.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue41597.dart.textual_outline.expect
rename to pkg/front_end/testcases/nnbd_mixed/issue41597.dart.textual_outline.expect
diff --git a/pkg/front_end/testcases/nnbd_mixed/issue41597.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/issue41597.dart.weak.expect
new file mode 100644
index 0000000..c1f54a1
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd_mixed/issue41597.dart.weak.expect
@@ -0,0 +1,120 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41597.dart:8:6: Error: 'x' is already declared in this scope.
+// bool x;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/issue41597.dart:7:6: Context: Previous declaration of 'x'.
+// bool x;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41597.dart:8:6: Error: Field 'x' should be initialized because its type 'bool' doesn't allow null.
+// bool x;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41597.dart:7:6: Error: Field 'x' should be initialized because its type 'bool' doesn't allow null.
+// bool x;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41597.dart:11:9: Error: Can't use 'x' because it is declared more than once.
+// print(x);
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41597.dart:12:9: Error: Can't use 'x' because it is declared more than once.
+// print(x!);
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41597.dart:13:10: Error: Can't use 'x' because it is declared more than once.
+// print(!x);
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41597.dart:18:12: Error: Can't use 'super' as an expression.
+// To delegate a constructor to a super constructor, put the super call as an initializer.
+// C.c1() : super()!;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41597.dart:18:19: Error: Expected an initializer.
+// C.c1() : super()!;
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///issue41597_lib.dart";
+
+class C extends core::Object {
+ constructor c0() → self::C
+ : super core::Object::•()
+ ;
+ constructor c1() → self::C
+ : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41597.dart:18:12: Error: Can't use 'super' as an expression.
+To delegate a constructor to a super constructor, put the super call as an initializer.
+ C.c1() : super()!;
+ ^"!
+ ;
+}
+static field core::bool x;
+static method errors() → dynamic {
+ core::print(invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41597.dart:11:9: Error: Can't use 'x' because it is declared more than once.
+ print(x);
+ ^");
+ core::print(invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41597.dart:12:9: Error: Can't use 'x' because it is declared more than once.
+ print(x!);
+ ^"!);
+ core::print(!(invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41597.dart:13:10: Error: Can't use 'x' because it is declared more than once.
+ print(!x);
+ ^" as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool));
+}
+static method main() → dynamic {}
+
+library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41597_lib.dart:8:6: Error: Expected an identifier, but got '.'.
+// c?..f;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41597_lib.dart:8:6: Error: Expected an identifier, but got ''.
+// c?..f;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41597_lib.dart:9:7: Error: Expected an identifier, but got '.'.
+// !c?..f;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41597_lib.dart:9:7: Error: Expected an identifier, but got ''.
+// !c?..f;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41597_lib.dart:10:6: Error: Expected an identifier, but got '.'.
+// c?..f!;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41597_lib.dart:10:6: Error: Expected an identifier, but got ''.
+// c?..f!;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41597_lib.dart:10:8: Error: Null safety features are disabled for this library.
+// Try removing the `@dart=` annotation or setting the language version higher.
+// c?..f!;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/issue41597_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
+// // @dart=2.6
+// ^^^^^^^^^^^^
+//
+import self as self2;
+import "dart:core" as core;
+
+static method errors(dynamic c) → dynamic {
+ invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41597_lib.dart:8:6: Error: Expected an identifier, but got ''.
+ c?..f;
+ ^".f;
+ !(invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41597_lib.dart:9:7: Error: Expected an identifier, but got ''.
+ !c?..f;
+ ^".f as{TypeError,ForDynamic} core::bool*);
+ invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41597_lib.dart:10:6: Error: Expected an identifier, but got ''.
+ c?..f!;
+ ^".f!;
+}
diff --git a/pkg/front_end/testcases/nnbd_mixed/issue41597.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/issue41597.dart.weak.transformed.expect
new file mode 100644
index 0000000..c1f54a1
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd_mixed/issue41597.dart.weak.transformed.expect
@@ -0,0 +1,120 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41597.dart:8:6: Error: 'x' is already declared in this scope.
+// bool x;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/issue41597.dart:7:6: Context: Previous declaration of 'x'.
+// bool x;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41597.dart:8:6: Error: Field 'x' should be initialized because its type 'bool' doesn't allow null.
+// bool x;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41597.dart:7:6: Error: Field 'x' should be initialized because its type 'bool' doesn't allow null.
+// bool x;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41597.dart:11:9: Error: Can't use 'x' because it is declared more than once.
+// print(x);
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41597.dart:12:9: Error: Can't use 'x' because it is declared more than once.
+// print(x!);
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41597.dart:13:10: Error: Can't use 'x' because it is declared more than once.
+// print(!x);
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41597.dart:18:12: Error: Can't use 'super' as an expression.
+// To delegate a constructor to a super constructor, put the super call as an initializer.
+// C.c1() : super()!;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41597.dart:18:19: Error: Expected an initializer.
+// C.c1() : super()!;
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///issue41597_lib.dart";
+
+class C extends core::Object {
+ constructor c0() → self::C
+ : super core::Object::•()
+ ;
+ constructor c1() → self::C
+ : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41597.dart:18:12: Error: Can't use 'super' as an expression.
+To delegate a constructor to a super constructor, put the super call as an initializer.
+ C.c1() : super()!;
+ ^"!
+ ;
+}
+static field core::bool x;
+static method errors() → dynamic {
+ core::print(invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41597.dart:11:9: Error: Can't use 'x' because it is declared more than once.
+ print(x);
+ ^");
+ core::print(invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41597.dart:12:9: Error: Can't use 'x' because it is declared more than once.
+ print(x!);
+ ^"!);
+ core::print(!(invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41597.dart:13:10: Error: Can't use 'x' because it is declared more than once.
+ print(!x);
+ ^" as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool));
+}
+static method main() → dynamic {}
+
+library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41597_lib.dart:8:6: Error: Expected an identifier, but got '.'.
+// c?..f;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41597_lib.dart:8:6: Error: Expected an identifier, but got ''.
+// c?..f;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41597_lib.dart:9:7: Error: Expected an identifier, but got '.'.
+// !c?..f;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41597_lib.dart:9:7: Error: Expected an identifier, but got ''.
+// !c?..f;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41597_lib.dart:10:6: Error: Expected an identifier, but got '.'.
+// c?..f!;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41597_lib.dart:10:6: Error: Expected an identifier, but got ''.
+// c?..f!;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/issue41597_lib.dart:10:8: Error: Null safety features are disabled for this library.
+// Try removing the `@dart=` annotation or setting the language version higher.
+// c?..f!;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/issue41597_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
+// // @dart=2.6
+// ^^^^^^^^^^^^
+//
+import self as self2;
+import "dart:core" as core;
+
+static method errors(dynamic c) → dynamic {
+ invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41597_lib.dart:8:6: Error: Expected an identifier, but got ''.
+ c?..f;
+ ^".f;
+ !(invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41597_lib.dart:9:7: Error: Expected an identifier, but got ''.
+ !c?..f;
+ ^".f as{TypeError,ForDynamic} core::bool*);
+ invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue41597_lib.dart:10:6: Error: Expected an identifier, but got ''.
+ c?..f!;
+ ^".f!;
+}
diff --git a/pkg/front_end/testcases/nnbd/issue41597_lib.dart b/pkg/front_end/testcases/nnbd_mixed/issue41597_lib.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/issue41597_lib.dart
rename to pkg/front_end/testcases/nnbd_mixed/issue41597_lib.dart
diff --git a/pkg/front_end/testcases/nnbd/literal_from_opt_in.dart b/pkg/front_end/testcases/nnbd_mixed/literal_from_opt_in.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/literal_from_opt_in.dart
rename to pkg/front_end/testcases/nnbd_mixed/literal_from_opt_in.dart
diff --git a/pkg/front_end/testcases/nnbd/literal_from_opt_in.dart.outline.expect b/pkg/front_end/testcases/nnbd_mixed/literal_from_opt_in.dart.outline.expect
similarity index 77%
rename from pkg/front_end/testcases/nnbd/literal_from_opt_in.dart.outline.expect
rename to pkg/front_end/testcases/nnbd_mixed/literal_from_opt_in.dart.outline.expect
index 7086aea..bd8eede 100644
--- a/pkg/front_end/testcases/nnbd/literal_from_opt_in.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/literal_from_opt_in.dart.outline.expect
@@ -1,4 +1,11 @@
-library;
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/literal_from_opt_in.dart:5:1: Error: A library can't opt out of non-nullable by default, when in nnbd-strong mode.
+// // @dart=2.5
+// ^^^^^^^^^^^^
+//
import self as self;
import "org-dartlang-testcase:///literal_from_opt_in_lib.dart";
diff --git a/pkg/front_end/testcases/nnbd/literal_from_opt_in.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd_mixed/literal_from_opt_in.dart.textual_outline.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/literal_from_opt_in.dart.textual_outline.expect
rename to pkg/front_end/testcases/nnbd_mixed/literal_from_opt_in.dart.textual_outline.expect
diff --git a/pkg/front_end/testcases/nnbd/literal_from_opt_in.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd_mixed/literal_from_opt_in.dart.textual_outline_modelled.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/literal_from_opt_in.dart.textual_outline_modelled.expect
rename to pkg/front_end/testcases/nnbd_mixed/literal_from_opt_in.dart.textual_outline_modelled.expect
diff --git a/pkg/front_end/testcases/nnbd/literal_from_opt_in.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/literal_from_opt_in.dart.weak.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/literal_from_opt_in.dart.weak.expect
rename to pkg/front_end/testcases/nnbd_mixed/literal_from_opt_in.dart.weak.expect
diff --git a/pkg/front_end/testcases/nnbd/literal_from_opt_in.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/literal_from_opt_in.dart.weak.transformed.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/literal_from_opt_in.dart.weak.transformed.expect
rename to pkg/front_end/testcases/nnbd_mixed/literal_from_opt_in.dart.weak.transformed.expect
diff --git a/pkg/front_end/testcases/nnbd/literal_from_opt_in_lib.dart b/pkg/front_end/testcases/nnbd_mixed/literal_from_opt_in_lib.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/literal_from_opt_in_lib.dart
rename to pkg/front_end/testcases/nnbd_mixed/literal_from_opt_in_lib.dart
diff --git a/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_in.dart b/pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/member_inheritance_from_opt_in.dart
rename to pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in.dart
diff --git a/pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in.dart.outline.expect b/pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in.dart.outline.expect
new file mode 100644
index 0000000..2907bc7
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in.dart.outline.expect
@@ -0,0 +1,375 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in.dart:5:1: Error: A library can't opt out of non-nullable by default, when in nnbd-strong mode.
+// // @dart=2.5
+// ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in.dart:18:28: Error: Optional parameter 'b' should have a default value because its type 'int' doesn't allow null.
+// int method6b(int a, [int b]) => 0;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in.dart:20:21: Error: Optional parameter 'a' should have a default value because its type 'int' doesn't allow null.
+// int method6c([int a, int b]) => 0;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in.dart:20:28: Error: Optional parameter 'b' should have a default value because its type 'int' doesn't allow null.
+// int method6c([int a, int b]) => 0;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in.dart:24:21: Error: Optional parameter 'a' should have a default value because its type 'int' doesn't allow null.
+// int method8b({int a, int b: 0}) => 0;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in.dart:26:29: Error: Optional parameter 'b' should have a default value because its type 'int' doesn't allow null.
+// int method10a(int a, {int b}) => 0;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in.dart:28:22: Error: Optional parameter 'a' should have a default value because its type 'int' doesn't allow null.
+// int method10b({int a, int b}) => 0;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in.dart:28:29: Error: Optional parameter 'b' should have a default value because its type 'int' doesn't allow null.
+// int method10b({int a, int b}) => 0;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in.dart:16:20: Error: The parameter 'a' of the method 'LegacyClass.method6a' has type 'int', which does not match the corresponding type, 'int?', in the overridden method, 'Interface.method6a'.
+// Change to a supertype of 'int?', or, for a covariant parameter, a subtype.
+// int method6a(int a, int b) => 0;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in_lib.dart:20:8: Context: This is the overridden method ('method6a').
+// int? method6a(int? a, int b);
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in.dart:18:20: Error: The parameter 'a' of the method 'LegacyClass.method6b' has type 'int', which does not match the corresponding type, 'int?', in the overridden method, 'Interface.method6b'.
+// Change to a supertype of 'int?', or, for a covariant parameter, a subtype.
+// int method6b(int a, [int b]) => 0;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in_lib.dart:22:8: Context: This is the overridden method ('method6b').
+// int? method6b(int? a, [int b = 0]);
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in.dart:20:21: Error: The parameter 'a' of the method 'LegacyClass.method6c' has type 'int', which does not match the corresponding type, 'int?', in the overridden method, 'Interface.method6c'.
+// Change to a supertype of 'int?', or, for a covariant parameter, a subtype.
+// int method6c([int a, int b]) => 0;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in_lib.dart:24:8: Context: This is the overridden method ('method6c').
+// int? method6c([int? a, int b = 0]);
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in.dart:22:20: Error: The parameter 'a' of the method 'LegacyClass.method8a' has type 'int', which does not match the corresponding type, 'int?', in the overridden method, 'Interface.method8a'.
+// Change to a supertype of 'int?', or, for a covariant parameter, a subtype.
+// int method8a(int a, {int b: 0}) => 0;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in_lib.dart:30:8: Context: This is the overridden method ('method8a').
+// int? method8a(int? a, {int b: 0});
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in.dart:24:21: Error: The parameter 'a' of the method 'LegacyClass.method8b' has type 'int', which does not match the corresponding type, 'int?', in the overridden method, 'Interface.method8b'.
+// Change to a supertype of 'int?', or, for a covariant parameter, a subtype.
+// int method8b({int a, int b: 0}) => 0;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in_lib.dart:32:8: Context: This is the overridden method ('method8b').
+// int? method8b({int? a, int b: 0});
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in.dart:26:21: Error: The parameter 'a' of the method 'LegacyClass.method10a' has type 'int', which does not match the corresponding type, 'int?', in the overridden method, 'Interface.method10a'.
+// Change to a supertype of 'int?', or, for a covariant parameter, a subtype.
+// int method10a(int a, {int b}) => 0;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in_lib.dart:38:8: Context: This is the overridden method ('method10a').
+// int? method10a(int? a, {required int b});
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in.dart:28:22: Error: The parameter 'a' of the method 'LegacyClass.method10b' has type 'int', which does not match the corresponding type, 'int?', in the overridden method, 'Interface.method10b'.
+// Change to a supertype of 'int?', or, for a covariant parameter, a subtype.
+// int method10b({int a, int b}) => 0;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in_lib.dart:40:8: Context: This is the overridden method ('method10b').
+// int? method10b({required int? a, required int b});
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in.dart:40:7: Error: The field 'LegacyClass.field4' has type 'int', which does not match the corresponding type, 'int?', in the overridden setter, 'Interface.field4'.
+// int field4;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in_lib.dart:64:8: Context: This is the overridden method ('field4').
+// int? field4;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in.dart:48:26: Error: The parameter 'value' of the method 'LegacyClass.property4' has type 'int', which does not match the corresponding type, 'int?', in the overridden method, 'Interface.property4'.
+// Change to a supertype of 'int?', or, for a covariant parameter, a subtype.
+// void set property4(int value) {}
+// ^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in_lib.dart:80:12: Context: This is the overridden method ('property4').
+// void set property4(int? value);
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in.dart:52:7: Error: The field 'LegacyClass.property8' has type 'int', which does not match the corresponding type, 'int?', in the overridden setter, 'Interface.property8'.
+// int property8;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in_lib.dart:96:12: Context: This is the overridden method ('property8').
+// void set property8(int? value);
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in.dart:36:24: Error: The parameter 'value' of the method 'LegacyClass.setter4' has type 'int', which does not match the corresponding type, 'int?', in the overridden method, 'Interface.setter4'.
+// Change to a supertype of 'int?', or, for a covariant parameter, a subtype.
+// void set setter4(int value) {}
+// ^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in_lib.dart:56:12: Context: This is the overridden method ('setter4').
+// void set setter4(int? value);
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in.dart:11:7: Error: The implementation of 'method2' in the non-abstract class 'LegacyClass' does not conform to its interface.
+// class LegacyClass extends Class implements Interface {
+// ^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in_lib.dart:102:8: Context: The return type of the method 'Class.method2' is 'int?', which does not match the return type, 'int', of the overridden method, 'Interface.method2'.
+// Change to a subtype of 'int'.
+// int? method2() => 0;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in_lib.dart:8:7: Context: This is the overridden method ('method2').
+// int method2();
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in.dart:11:7: Error: The implementation of 'getter2' in the non-abstract class 'LegacyClass' does not conform to its interface.
+// class LegacyClass extends Class implements Interface {
+// ^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in_lib.dart:120:12: Context: The return type of the method 'Class.getter2' is 'int?', which does not match the return type, 'int', of the overridden method, 'Interface.getter2'.
+// Change to a subtype of 'int'.
+// int? get getter2 => 0;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in_lib.dart:44:11: Context: This is the overridden method ('getter2').
+// int get getter2;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in.dart:11:7: Error: The implementation of 'field1' in the non-abstract class 'LegacyClass' does not conform to its interface.
+// class LegacyClass extends Class implements Interface {
+// ^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in_lib.dart:126:7: Context: The field 'Class.field1' has type 'int', which does not match the corresponding type, 'int?', in the overridden setter, 'Interface.field1'.
+// int field1 = 0;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in_lib.dart:58:8: Context: This is the overridden method ('field1').
+// int? field1;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in.dart:11:7: Error: The implementation of 'field2' in the non-abstract class 'LegacyClass' does not conform to its interface.
+// class LegacyClass extends Class implements Interface {
+// ^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in_lib.dart:128:8: Context: The return type of the method 'Class.field2' is 'int?', which does not match the return type, 'int', of the overridden method, 'Interface.field2'.
+// Change to a subtype of 'int'.
+// int? field2;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in_lib.dart:60:7: Context: This is the overridden method ('field2').
+// int field2 = 0;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in.dart:11:7: Error: The implementation of 'property1' in the non-abstract class 'LegacyClass' does not conform to its interface.
+// class LegacyClass extends Class implements Interface {
+// ^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in_lib.dart:132:26: Context: The parameter 'value' of the method 'Class.property1' has type 'int', which does not match the corresponding type, 'int?', in the overridden method, 'Interface.property1'.
+// Change to a supertype of 'int?', or, for a covariant parameter, a subtype.
+// void set property1(int value) {}
+// ^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in_lib.dart:68:12: Context: This is the overridden method ('property1').
+// void set property1(int? value);
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in.dart:11:7: Error: The implementation of 'property2' in the non-abstract class 'LegacyClass' does not conform to its interface.
+// class LegacyClass extends Class implements Interface {
+// ^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in_lib.dart:134:12: Context: The return type of the method 'Class.property2' is 'int?', which does not match the return type, 'int', of the overridden method, 'Interface.property2'.
+// Change to a subtype of 'int'.
+// int? get property2 => 0;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in_lib.dart:70:11: Context: This is the overridden method ('property2').
+// int get property2;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in.dart:11:7: Error: The implementation of 'property5' in the non-abstract class 'LegacyClass' does not conform to its interface.
+// class LegacyClass extends Class implements Interface {
+// ^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in_lib.dart:138:7: Context: The field 'Class.property5' has type 'int', which does not match the corresponding type, 'int?', in the overridden setter, 'Interface.property5'.
+// int property5 = 0;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in_lib.dart:84:12: Context: This is the overridden method ('property5').
+// void set property5(int? value);
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in.dart:11:7: Error: The implementation of 'property6' in the non-abstract class 'LegacyClass' does not conform to its interface.
+// class LegacyClass extends Class implements Interface {
+// ^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in_lib.dart:140:8: Context: The return type of the method 'Class.property6' is 'int?', which does not match the return type, 'int', of the overridden method, 'Interface.property6'.
+// Change to a subtype of 'int'.
+// int? property6;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in_lib.dart:86:11: Context: This is the overridden method ('property6').
+// int get property6;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in.dart:11:7: Error: The implementation of 'setter1' in the non-abstract class 'LegacyClass' does not conform to its interface.
+// class LegacyClass extends Class implements Interface {
+// ^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in_lib.dart:122:24: Context: The parameter 'value' of the method 'Class.setter1' has type 'int', which does not match the corresponding type, 'int?', in the overridden method, 'Interface.setter1'.
+// Change to a supertype of 'int?', or, for a covariant parameter, a subtype.
+// void set setter1(int value) {}
+// ^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in_lib.dart:50:12: Context: This is the overridden method ('setter1').
+// void set setter1(int? value);
+// ^
+//
+import self as self;
+import "member_inheritance_from_opt_in_lib.dart" as mem;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///member_inheritance_from_opt_in_lib.dart";
+
+class LegacyClass extends mem::Class implements mem::Interface {
+ field core::int field3;
+ field core::int field4;
+ field core::int property7;
+ field core::int property8;
+ synthetic constructor •() → self::LegacyClass
+ ;
+ method method3() → core::int
+ ;
+ method method4() → core::int
+ ;
+ method method6a(core::int a, core::int b) → core::int
+ ;
+ method method6b(core::int a, [core::int b]) → core::int
+ ;
+ method method6c([core::int a, core::int b]) → core::int
+ ;
+ method method8a(core::int a, {core::int b = 0}) → core::int
+ ;
+ method method8b({core::int a, core::int b = 0}) → core::int
+ ;
+ method method10a(core::int a, {core::int b}) → core::int
+ ;
+ method method10b({core::int a, core::int b}) → core::int
+ ;
+ get getter3() → core::int
+ ;
+ get getter4() → core::int
+ ;
+ set setter3(core::int value) → void
+ ;
+ set setter4(core::int value) → void
+ ;
+ get property3() → core::int
+ ;
+ set property3(core::int value) → void
+ ;
+ get property4() → core::int
+ ;
+ set property4(core::int value) → void
+ ;
+ abstract forwarding-stub method method2() → core::int;
+ abstract forwarding-stub get getter2() → core::int;
+ abstract forwarding-stub set field1(core::int? _) → void;
+ abstract forwarding-stub get field2() → core::int;
+ abstract forwarding-stub set property1(core::int? value) → void;
+ abstract forwarding-stub get property2() → core::int;
+ abstract forwarding-stub set property5(core::int? value) → void;
+ abstract forwarding-stub get property6() → core::int;
+ abstract forwarding-stub set setter1(core::int? value) → void;
+}
+static method main() → dynamic
+ ;
+
+library /*isNonNullableByDefault*/;
+import self as mem;
+import "dart:core" as core;
+
+abstract class Interface extends core::Object {
+ field core::int? field1;
+ field core::int field2;
+ field core::int field3;
+ field core::int? field4;
+ synthetic constructor •() → mem::Interface
+ ;
+ abstract method method1() → core::int?;
+ abstract method method2() → core::int;
+ abstract method method3() → core::int;
+ abstract method method4() → core::int?;
+ abstract method method5a(core::int a, core::int? b) → core::int;
+ abstract method method5b(core::int a, [core::int? b]) → core::int;
+ abstract method method5c([core::int a = 0, core::int? b]) → core::int;
+ abstract method method6a(core::int? a, core::int b) → core::int?;
+ abstract method method6b(core::int? a, [core::int b = 0]) → core::int?;
+ abstract method method6c([core::int? a, core::int b = 0]) → core::int?;
+ abstract method method7a(core::int a, {core::int? b}) → core::int;
+ abstract method method7b({core::int a = 0, core::int? b}) → core::int;
+ abstract method method8a(core::int? a, {core::int b = 0}) → core::int?;
+ abstract method method8b({core::int? a, core::int b = 0}) → core::int?;
+ abstract method method9a(core::int a, {required core::int? b}) → core::int;
+ abstract method method9b({required core::int a, required core::int? b}) → core::int;
+ abstract method method10a(core::int? a, {required core::int b}) → core::int?;
+ abstract method method10b({required core::int? a, required core::int b}) → core::int?;
+ abstract get getter1() → core::int?;
+ abstract get getter2() → core::int;
+ abstract get getter3() → core::int;
+ abstract get getter4() → core::int?;
+ abstract set setter1(core::int? value) → void;
+ abstract set setter2(core::int value) → void;
+ abstract set setter3(core::int value) → void;
+ abstract set setter4(core::int? value) → void;
+ abstract get property1() → core::int?;
+ abstract set property1(core::int? value) → void;
+ abstract get property2() → core::int;
+ abstract set property2(core::int value) → void;
+ abstract get property3() → core::int;
+ abstract set property3(core::int value) → void;
+ abstract get property4() → core::int?;
+ abstract set property4(core::int? value) → void;
+ abstract get property5() → core::int?;
+ abstract set property5(core::int? value) → void;
+ abstract get property6() → core::int;
+ abstract set property6(core::int value) → void;
+ abstract get property7() → core::int;
+ abstract set property7(core::int value) → void;
+ abstract get property8() → core::int?;
+ abstract set property8(core::int? value) → void;
+}
+class Class extends core::Object {
+ field core::int field1;
+ field core::int? field2;
+ field core::int property5;
+ field core::int? property6;
+ synthetic constructor •() → mem::Class
+ ;
+ method method1() → core::int
+ ;
+ method method2() → core::int?
+ ;
+ method method5a(core::int a, core::int? b) → core::int
+ ;
+ method method5b(core::int a, [core::int? b]) → core::int
+ ;
+ method method5c([core::int a = 0, core::int? b]) → core::int
+ ;
+ method method7a(core::int a, {core::int? b}) → core::int
+ ;
+ method method7b({core::int a = 0, core::int? b}) → core::int
+ ;
+ method method9a(core::int a, {required core::int? b}) → core::int
+ ;
+ method method9b({required core::int a, required core::int? b}) → core::int
+ ;
+ get getter1() → core::int
+ ;
+ get getter2() → core::int?
+ ;
+ set setter1(core::int value) → void
+ ;
+ set setter2(core::int? value) → void
+ ;
+ get property1() → core::int
+ ;
+ set property1(core::int value) → void
+ ;
+ get property2() → core::int?
+ ;
+ set property2(core::int? value) → void
+ ;
+}
diff --git a/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_in.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in.dart.textual_outline.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/member_inheritance_from_opt_in.dart.textual_outline.expect
rename to pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in.dart.textual_outline.expect
diff --git a/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_in.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in.dart.textual_outline_modelled.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/member_inheritance_from_opt_in.dart.textual_outline_modelled.expect
rename to pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in.dart.textual_outline_modelled.expect
diff --git a/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_in.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in.dart.weak.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/member_inheritance_from_opt_in.dart.weak.expect
rename to pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in.dart.weak.expect
diff --git a/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_in.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in.dart.weak.transformed.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/member_inheritance_from_opt_in.dart.weak.transformed.expect
rename to pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in.dart.weak.transformed.expect
diff --git a/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_in_lib.dart b/pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in_lib.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/member_inheritance_from_opt_in_lib.dart
rename to pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in_lib.dart
diff --git a/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart b/pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart
rename to pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart
diff --git a/pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart.outline.expect b/pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart.outline.expect
new file mode 100644
index 0000000..90e6336
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart.outline.expect
@@ -0,0 +1,582 @@
+library main /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:78:8: Error: The return type of the method 'Class2b.method2' is 'int?', which does not match the return type, 'int', of the overridden method, 'LegacyClass.method2'.
+// Change to a subtype of 'int'.
+// int? method2() => 0;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:12:7: Context: This is the overridden method ('method2').
+// int method2() => 0;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:86:8: Error: The return type of the method 'Class2b.method4a' is 'int?', which does not match the return type, 'int', of the overridden method, 'LegacyClass.method4a'.
+// Change to a subtype of 'int'.
+// int? method4a(int? a, int? b) => 0;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:20:7: Context: This is the overridden method ('method4a').
+// int method4a(int a, int b) => 0;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:88:8: Error: The return type of the method 'Class2b.method4b' is 'int?', which does not match the return type, 'int', of the overridden method, 'LegacyClass.method4b'.
+// Change to a subtype of 'int'.
+// int? method4b(int? a, [int? b]) => 0;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:22:7: Context: This is the overridden method ('method4b').
+// int method4b(int a, [int b]) => 0;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:90:8: Error: The return type of the method 'Class2b.method4c' is 'int?', which does not match the return type, 'int', of the overridden method, 'LegacyClass.method4c'.
+// Change to a subtype of 'int'.
+// int? method4c([int? a, int? b]) => 0;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:24:7: Context: This is the overridden method ('method4c').
+// int method4c([int a, int b]) => 0;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:96:30: Error: The required named parameter 'a' in method 'Class2b.method5c' is not required in overridden method 'LegacyClass.method5c'.
+// int method5c({required int a, required int b}) => 0;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:30:7: Context: This is the overridden method ('method5c').
+// int method5c({int a, int b}) => 0;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:96:46: Error: The required named parameter 'b' in method 'Class2b.method5c' is not required in overridden method 'LegacyClass.method5c'.
+// int method5c({required int a, required int b}) => 0;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:30:7: Context: This is the overridden method ('method5c').
+// int method5c({int a, int b}) => 0;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:98:8: Error: The return type of the method 'Class2b.method6a' is 'int?', which does not match the return type, 'int', of the overridden method, 'LegacyClass.method6a'.
+// Change to a subtype of 'int'.
+// int? method6a(int? a, {int? b}) => 0;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:32:7: Context: This is the overridden method ('method6a').
+// int method6a(int a, {int b}) => 0;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:100:8: Error: The return type of the method 'Class2b.method6b' is 'int?', which does not match the return type, 'int', of the overridden method, 'LegacyClass.method6b'.
+// Change to a subtype of 'int'.
+// int? method6b({int? a, int? b}) => 0;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:34:7: Context: This is the overridden method ('method6b').
+// int method6b({int a, int b}) => 0;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:102:8: Error: The return type of the method 'Class2b.method6c' is 'int?', which does not match the return type, 'int', of the overridden method, 'LegacyClass.method6c'.
+// Change to a subtype of 'int'.
+// int? method6c({required int? a, required int? b}) => 0;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:36:7: Context: This is the overridden method ('method6c').
+// int method6c({int a, int b}) => 0;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:102:32: Error: The required named parameter 'a' in method 'Class2b.method6c' is not required in overridden method 'LegacyClass.method6c'.
+// int? method6c({required int? a, required int? b}) => 0;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:36:7: Context: This is the overridden method ('method6c').
+// int method6c({int a, int b}) => 0;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:102:49: Error: The required named parameter 'b' in method 'Class2b.method6c' is not required in overridden method 'LegacyClass.method6c'.
+// int? method6c({required int? a, required int? b}) => 0;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:36:7: Context: This is the overridden method ('method6c').
+// int method6c({int a, int b}) => 0;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:106:12: Error: The return type of the method 'Class2b.getter2' is 'int?', which does not match the return type, 'int', of the overridden method, 'LegacyClass.getter2'.
+// Change to a subtype of 'int'.
+// int? get getter2 => 0;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:40:11: Context: This is the overridden method ('getter2').
+// int get getter2 => 0;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:114:8: Error: The return type of the method 'Class2b.field2' is 'int?', which does not match the return type, 'int', of the overridden method, 'LegacyClass.field2'.
+// Change to a subtype of 'int'.
+// int? field2;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:48:7: Context: This is the overridden method ('field2').
+// int field2;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:120:12: Error: The return type of the method 'Class2b.field4' is 'int?', which does not match the return type, 'int', of the overridden method, 'LegacyClass.field4'.
+// Change to a subtype of 'int'.
+// int? get field4 => 0;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:52:7: Context: This is the overridden method ('field4').
+// int field4;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:128:12: Error: The return type of the method 'Class2b.property2' is 'int?', which does not match the return type, 'int', of the overridden method, 'LegacyClass.property2'.
+// Change to a subtype of 'int'.
+// int? get property2 => 0;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:58:11: Context: This is the overridden method ('property2').
+// int get property2 => 0;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:134:8: Error: The return type of the method 'Class2b.property4' is 'int?', which does not match the return type, 'int', of the overridden method, 'LegacyClass.property4'.
+// Change to a subtype of 'int'.
+// int? property4;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:66:11: Context: This is the overridden method ('property4').
+// int get property4 => 0;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:73:7: Error: The implementation of 'method4a' in the non-abstract class 'Class2a' does not conform to its interface.
+// class Class2a extends LegacyClass implements Interface {}
+// ^^^^^^^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:20:20: Context: The parameter 'a' of the method 'LegacyClass.method4a' has type 'int', which does not match the corresponding type, 'int?', in the overridden method, 'Interface.method4a'.
+// Change to a supertype of 'int?', or, for a covariant parameter, a subtype.
+// int method4a(int a, int b) => 0;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:20:8: Context: This is the overridden method ('method4a').
+// int? method4a(int? a, int? b);
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:73:7: Error: Class 'Class2a' inherits multiple members named 'method4a' with incompatible signatures.
+// Try adding a declaration of 'method4a' to 'Class2a'.
+// class Class2a extends LegacyClass implements Interface {}
+// ^^^^^^^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:20:7: Context: This is one of the inherited members.
+// int method4a(int a, int b) => 0;
+// ^^^^^^^^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:20:8: Context: This is one of the inherited members.
+// int? method4a(int? a, int? b);
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:73:7: Error: The implementation of 'method4b' in the non-abstract class 'Class2a' does not conform to its interface.
+// class Class2a extends LegacyClass implements Interface {}
+// ^^^^^^^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:22:20: Context: The parameter 'a' of the method 'LegacyClass.method4b' has type 'int', which does not match the corresponding type, 'int?', in the overridden method, 'Interface.method4b'.
+// Change to a supertype of 'int?', or, for a covariant parameter, a subtype.
+// int method4b(int a, [int b]) => 0;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:22:8: Context: This is the overridden method ('method4b').
+// int? method4b(int? a, [int? b]);
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:73:7: Error: Class 'Class2a' inherits multiple members named 'method4b' with incompatible signatures.
+// Try adding a declaration of 'method4b' to 'Class2a'.
+// class Class2a extends LegacyClass implements Interface {}
+// ^^^^^^^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:22:7: Context: This is one of the inherited members.
+// int method4b(int a, [int b]) => 0;
+// ^^^^^^^^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:22:8: Context: This is one of the inherited members.
+// int? method4b(int? a, [int? b]);
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:73:7: Error: The implementation of 'method4c' in the non-abstract class 'Class2a' does not conform to its interface.
+// class Class2a extends LegacyClass implements Interface {}
+// ^^^^^^^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:24:21: Context: The parameter 'a' of the method 'LegacyClass.method4c' has type 'int', which does not match the corresponding type, 'int?', in the overridden method, 'Interface.method4c'.
+// Change to a supertype of 'int?', or, for a covariant parameter, a subtype.
+// int method4c([int a, int b]) => 0;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:24:8: Context: This is the overridden method ('method4c').
+// int? method4c([int? a, int? b]);
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:73:7: Error: Class 'Class2a' inherits multiple members named 'method4c' with incompatible signatures.
+// Try adding a declaration of 'method4c' to 'Class2a'.
+// class Class2a extends LegacyClass implements Interface {}
+// ^^^^^^^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:24:7: Context: This is one of the inherited members.
+// int method4c([int a, int b]) => 0;
+// ^^^^^^^^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:24:8: Context: This is one of the inherited members.
+// int? method4c([int? a, int? b]);
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:73:7: Error: The implementation of 'method6a' in the non-abstract class 'Class2a' does not conform to its interface.
+// class Class2a extends LegacyClass implements Interface {}
+// ^^^^^^^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:32:20: Context: The parameter 'a' of the method 'LegacyClass.method6a' has type 'int', which does not match the corresponding type, 'int?', in the overridden method, 'Interface.method6a'.
+// Change to a supertype of 'int?', or, for a covariant parameter, a subtype.
+// int method6a(int a, {int b}) => 0;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:32:8: Context: This is the overridden method ('method6a').
+// int? method6a(int? a, {int? b});
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:73:7: Error: Class 'Class2a' inherits multiple members named 'method6a' with incompatible signatures.
+// Try adding a declaration of 'method6a' to 'Class2a'.
+// class Class2a extends LegacyClass implements Interface {}
+// ^^^^^^^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:32:7: Context: This is one of the inherited members.
+// int method6a(int a, {int b}) => 0;
+// ^^^^^^^^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:32:8: Context: This is one of the inherited members.
+// int? method6a(int? a, {int? b});
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:73:7: Error: The implementation of 'method6b' in the non-abstract class 'Class2a' does not conform to its interface.
+// class Class2a extends LegacyClass implements Interface {}
+// ^^^^^^^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:34:21: Context: The parameter 'a' of the method 'LegacyClass.method6b' has type 'int', which does not match the corresponding type, 'int?', in the overridden method, 'Interface.method6b'.
+// Change to a supertype of 'int?', or, for a covariant parameter, a subtype.
+// int method6b({int a, int b}) => 0;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:34:8: Context: This is the overridden method ('method6b').
+// int? method6b({int? a, int? b});
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:73:7: Error: Class 'Class2a' inherits multiple members named 'method6b' with incompatible signatures.
+// Try adding a declaration of 'method6b' to 'Class2a'.
+// class Class2a extends LegacyClass implements Interface {}
+// ^^^^^^^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:34:7: Context: This is one of the inherited members.
+// int method6b({int a, int b}) => 0;
+// ^^^^^^^^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:34:8: Context: This is one of the inherited members.
+// int? method6b({int? a, int? b});
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:73:7: Error: The implementation of 'method6c' in the non-abstract class 'Class2a' does not conform to its interface.
+// class Class2a extends LegacyClass implements Interface {}
+// ^^^^^^^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:36:21: Context: The parameter 'a' of the method 'LegacyClass.method6c' has type 'int', which does not match the corresponding type, 'int?', in the overridden method, 'Interface.method6c'.
+// Change to a supertype of 'int?', or, for a covariant parameter, a subtype.
+// int method6c({int a, int b}) => 0;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:36:8: Context: This is the overridden method ('method6c').
+// int? method6c({required int? a, required int? b});
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:73:7: Error: Class 'Class2a' inherits multiple members named 'method6c' with incompatible signatures.
+// Try adding a declaration of 'method6c' to 'Class2a'.
+// class Class2a extends LegacyClass implements Interface {}
+// ^^^^^^^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:36:7: Context: This is one of the inherited members.
+// int method6c({int a, int b}) => 0;
+// ^^^^^^^^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:36:8: Context: This is one of the inherited members.
+// int? method6c({required int? a, required int? b});
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:73:7: Error: The implementation of 'field2' in the non-abstract class 'Class2a' does not conform to its interface.
+// class Class2a extends LegacyClass implements Interface {}
+// ^^^^^^^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:48:7: Context: The field 'LegacyClass.field2' has type 'int', which does not match the corresponding type, 'int?', in the overridden setter, 'Interface.field2'.
+// int field2;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:48:8: Context: This is the overridden method ('field2').
+// int? field2;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:73:7: Error: The implementation of 'field4' in the non-abstract class 'Class2a' does not conform to its interface.
+// class Class2a extends LegacyClass implements Interface {}
+// ^^^^^^^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:52:7: Context: The field 'LegacyClass.field4' has type 'int', which does not match the corresponding type, 'int?', in the overridden setter, 'Interface.field4'.
+// int field4;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:56:12: Context: This is the overridden method ('field4').
+// void set field4(int? value);
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:73:7: Error: The implementation of 'property2' in the non-abstract class 'Class2a' does not conform to its interface.
+// class Class2a extends LegacyClass implements Interface {}
+// ^^^^^^^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:60:26: Context: The parameter 'value' of the method 'LegacyClass.property2' has type 'int', which does not match the corresponding type, 'int?', in the overridden method, 'Interface.property2'.
+// Change to a supertype of 'int?', or, for a covariant parameter, a subtype.
+// void set property2(int value) {}
+// ^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:64:12: Context: This is the overridden method ('property2').
+// void set property2(int? value);
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:73:7: Error: The implementation of 'property4' in the non-abstract class 'Class2a' does not conform to its interface.
+// class Class2a extends LegacyClass implements Interface {}
+// ^^^^^^^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:68:26: Context: The parameter 'value' of the method 'LegacyClass.property4' has type 'int', which does not match the corresponding type, 'int?', in the overridden method, 'Interface.property4'.
+// Change to a supertype of 'int?', or, for a covariant parameter, a subtype.
+// void set property4(int value) {}
+// ^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:68:8: Context: This is the overridden method ('property4').
+// int? property4;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:73:7: Error: The implementation of 'setter2' in the non-abstract class 'Class2a' does not conform to its interface.
+// class Class2a extends LegacyClass implements Interface {}
+// ^^^^^^^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:44:24: Context: The parameter 'value' of the method 'LegacyClass.setter2' has type 'int', which does not match the corresponding type, 'int?', in the overridden method, 'Interface.setter2'.
+// Change to a supertype of 'int?', or, for a covariant parameter, a subtype.
+// void set setter2(int value) {}
+// ^
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:44:12: Context: This is the overridden method ('setter2').
+// void set setter2(int? value);
+// ^
+//
+import self as self;
+import "dart:core" as core;
+import "member_inheritance_from_opt_out_lib.dart" as opt;
+
+import "org-dartlang-testcase:///member_inheritance_from_opt_out_lib.dart";
+
+abstract class Interface extends core::Object {
+ field core::int field1;
+ field core::int? field2;
+ field core::int property3;
+ field core::int? property4;
+ synthetic constructor •() → self::Interface
+ ;
+ abstract method method1() → core::int;
+ abstract method method2() → core::int?;
+ abstract method method3a(core::int a, core::int b) → core::int;
+ abstract method method3b(core::int a, [core::int b]) → core::int;
+ abstract method method3c([core::int a, core::int b]) → core::int;
+ abstract method method4a(core::int? a, core::int? b) → core::int?;
+ abstract method method4b(core::int? a, [core::int? b]) → core::int?;
+ abstract method method4c([core::int? a, core::int? b]) → core::int?;
+ abstract method method5a(core::int a, {core::int b = 0}) → core::int;
+ abstract method method5b({core::int a = 0, core::int b = 0}) → core::int;
+ abstract method method5c({required core::int a, required core::int b}) → core::int;
+ abstract method method6a(core::int? a, {core::int? b}) → core::int?;
+ abstract method method6b({core::int? a, core::int? b}) → core::int?;
+ abstract method method6c({required core::int? a, required core::int? b}) → core::int?;
+ abstract get getter1() → core::int;
+ abstract get getter2() → core::int?;
+ abstract set setter1(core::int value) → void;
+ abstract set setter2(core::int? value) → void;
+ abstract get field3() → core::int;
+ abstract set field3(core::int value) → void;
+ abstract get field4() → core::int?;
+ abstract set field4(core::int? value) → void;
+ abstract get property1() → core::int;
+ abstract set property1(core::int value) → void;
+ abstract get property2() → core::int?;
+ abstract set property2(core::int? value) → void;
+}
+class Class1 extends opt::LegacyClass {
+ synthetic constructor •() → self::Class1
+ ;
+}
+class Class2a extends opt::LegacyClass implements self::Interface {
+ synthetic constructor •() → self::Class2a
+ ;
+ abstract forwarding-stub set field2(core::int? _) → void;
+ abstract forwarding-stub set field4(core::int? value) → void;
+ abstract forwarding-stub set property2(core::int? value) → void;
+ abstract forwarding-stub set property4(core::int? _) → void;
+ abstract forwarding-stub set setter2(core::int? value) → void;
+}
+class Class2b extends opt::LegacyClass implements self::Interface {
+ field core::int field1;
+ field core::int? field2;
+ field core::int property3;
+ field core::int? property4;
+ synthetic constructor •() → self::Class2b
+ ;
+ method method1() → core::int
+ ;
+ method method2() → core::int?
+ ;
+ method method3a(core::int a, core::int b) → core::int
+ ;
+ method method3b(core::int a, [core::int b = 42]) → core::int
+ ;
+ method method3c([core::int a = 42, core::int b = 42]) → core::int
+ ;
+ method method4a(core::int? a, core::int? b) → core::int?
+ ;
+ method method4b(core::int? a, [core::int? b]) → core::int?
+ ;
+ method method4c([core::int? a, core::int? b]) → core::int?
+ ;
+ method method5a(core::int a, {core::int b = 0}) → core::int
+ ;
+ method method5b({core::int a = 0, core::int b = 0}) → core::int
+ ;
+ method method5c({required core::int a, required core::int b}) → core::int
+ ;
+ method method6a(core::int? a, {core::int? b}) → core::int?
+ ;
+ method method6b({core::int? a, core::int? b}) → core::int?
+ ;
+ method method6c({required core::int? a, required core::int? b}) → core::int?
+ ;
+ get getter1() → core::int
+ ;
+ get getter2() → core::int?
+ ;
+ set setter1(core::int value) → void
+ ;
+ set setter2(core::int? value) → void
+ ;
+ get field3() → core::int
+ ;
+ set field3(core::int value) → void
+ ;
+ get field4() → core::int?
+ ;
+ set field4(core::int? value) → void
+ ;
+ get property1() → core::int
+ ;
+ set property1(core::int value) → void
+ ;
+ get property2() → core::int?
+ ;
+ set property2(core::int? value) → void
+ ;
+}
+class Class3a extends opt::GenericLegacyClass<core::int> {
+ synthetic constructor •() → self::Class3a
+ ;
+}
+class Class3b extends opt::GenericLegacyClass<core::int?> {
+ synthetic constructor •() → self::Class3b
+ ;
+}
+class Class3c<S extends core::Object? = dynamic> extends opt::GenericLegacyClass<self::Class3c::S%> {
+ synthetic constructor •() → self::Class3c<self::Class3c::S%>
+ ;
+}
+static method main() → dynamic
+ ;
+
+library opt_out /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:5:1: Error: A library can't opt out of non-nullable by default, when in nnbd-strong mode.
+// // @dart=2.5
+// ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:16:28: Error: Optional parameter 'b' should have a default value because its type 'int' doesn't allow null.
+// int method3b(int a, [int b]) => 0;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:18:21: Error: Optional parameter 'a' should have a default value because its type 'int' doesn't allow null.
+// int method3c([int a, int b]) => 0;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:18:28: Error: Optional parameter 'b' should have a default value because its type 'int' doesn't allow null.
+// int method3c([int a, int b]) => 0;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:22:28: Error: Optional parameter 'b' should have a default value because its type 'int' doesn't allow null.
+// int method4b(int a, [int b]) => 0;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:24:21: Error: Optional parameter 'a' should have a default value because its type 'int' doesn't allow null.
+// int method4c([int a, int b]) => 0;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:24:28: Error: Optional parameter 'b' should have a default value because its type 'int' doesn't allow null.
+// int method4c([int a, int b]) => 0;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:26:28: Error: Optional parameter 'b' should have a default value because its type 'int' doesn't allow null.
+// int method5a(int a, {int b}) => 0;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:28:21: Error: Optional parameter 'a' should have a default value because its type 'int' doesn't allow null.
+// int method5b({int a, int b}) => 0;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:28:28: Error: Optional parameter 'b' should have a default value because its type 'int' doesn't allow null.
+// int method5b({int a, int b}) => 0;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:30:21: Error: Optional parameter 'a' should have a default value because its type 'int' doesn't allow null.
+// int method5c({int a, int b}) => 0;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:30:28: Error: Optional parameter 'b' should have a default value because its type 'int' doesn't allow null.
+// int method5c({int a, int b}) => 0;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:32:28: Error: Optional parameter 'b' should have a default value because its type 'int' doesn't allow null.
+// int method6a(int a, {int b}) => 0;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:34:21: Error: Optional parameter 'a' should have a default value because its type 'int' doesn't allow null.
+// int method6b({int a, int b}) => 0;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:34:28: Error: Optional parameter 'b' should have a default value because its type 'int' doesn't allow null.
+// int method6b({int a, int b}) => 0;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:36:21: Error: Optional parameter 'a' should have a default value because its type 'int' doesn't allow null.
+// int method6c({int a, int b}) => 0;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:36:28: Error: Optional parameter 'b' should have a default value because its type 'int' doesn't allow null.
+// int method6c({int a, int b}) => 0;
+// ^
+//
+import self as opt;
+import "dart:core" as core;
+
+class LegacyClass extends core::Object {
+ field core::int field1;
+ field core::int field2;
+ field core::int field3;
+ field core::int field4;
+ synthetic constructor •() → opt::LegacyClass
+ ;
+ method method1() → core::int
+ ;
+ method method2() → core::int
+ ;
+ method method3a(core::int a, core::int b) → core::int
+ ;
+ method method3b(core::int a, [core::int b]) → core::int
+ ;
+ method method3c([core::int a, core::int b]) → core::int
+ ;
+ method method4a(core::int a, core::int b) → core::int
+ ;
+ method method4b(core::int a, [core::int b]) → core::int
+ ;
+ method method4c([core::int a, core::int b]) → core::int
+ ;
+ method method5a(core::int a, {core::int b}) → core::int
+ ;
+ method method5b({core::int a, core::int b}) → core::int
+ ;
+ method method5c({core::int a, core::int b}) → core::int
+ ;
+ method method6a(core::int a, {core::int b}) → core::int
+ ;
+ method method6b({core::int a, core::int b}) → core::int
+ ;
+ method method6c({core::int a, core::int b}) → core::int
+ ;
+ get getter1() → core::int
+ ;
+ get getter2() → core::int
+ ;
+ set setter1(core::int value) → void
+ ;
+ set setter2(core::int value) → void
+ ;
+ get property1() → core::int
+ ;
+ set property1(core::int value) → void
+ ;
+ get property2() → core::int
+ ;
+ set property2(core::int value) → void
+ ;
+ get property3() → core::int
+ ;
+ set property3(core::int value) → void
+ ;
+ get property4() → core::int
+ ;
+ set property4(core::int value) → void
+ ;
+}
+class GenericLegacyClass<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → opt::GenericLegacyClass<opt::GenericLegacyClass::T%>
+ ;
+ method method1() → opt::GenericLegacyClass::T%
+ ;
+}
diff --git a/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart.textual_outline.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart.textual_outline.expect
rename to pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart.textual_outline.expect
diff --git a/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart.textual_outline_modelled.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart.textual_outline_modelled.expect
rename to pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart.textual_outline_modelled.expect
diff --git a/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart.strong.expect b/pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart.weak.expect
similarity index 90%
rename from pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart.strong.expect
rename to pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart.weak.expect
index 4da2cc7..7e6e97a 100644
--- a/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart.weak.expect
@@ -2,31 +2,31 @@
//
// Problems in library:
//
-// pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart:96:30: Error: The required named parameter 'a' in method 'Class2b.method5c' is not required in overridden method 'LegacyClass.method5c'.
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:96:30: Error: The required named parameter 'a' in method 'Class2b.method5c' is not required in overridden method 'LegacyClass.method5c'.
// int method5c({required int a, required int b}) => 0;
// ^
-// pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out_lib.dart:30:7: Context: This is the overridden method ('method5c').
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:30:7: Context: This is the overridden method ('method5c').
// int method5c({int a, int b}) => 0;
// ^
//
-// pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart:96:46: Error: The required named parameter 'b' in method 'Class2b.method5c' is not required in overridden method 'LegacyClass.method5c'.
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:96:46: Error: The required named parameter 'b' in method 'Class2b.method5c' is not required in overridden method 'LegacyClass.method5c'.
// int method5c({required int a, required int b}) => 0;
// ^
-// pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out_lib.dart:30:7: Context: This is the overridden method ('method5c').
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:30:7: Context: This is the overridden method ('method5c').
// int method5c({int a, int b}) => 0;
// ^
//
-// pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart:102:32: Error: The required named parameter 'a' in method 'Class2b.method6c' is not required in overridden method 'LegacyClass.method6c'.
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:102:32: Error: The required named parameter 'a' in method 'Class2b.method6c' is not required in overridden method 'LegacyClass.method6c'.
// int? method6c({required int? a, required int? b}) => 0;
// ^
-// pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out_lib.dart:36:7: Context: This is the overridden method ('method6c').
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:36:7: Context: This is the overridden method ('method6c').
// int method6c({int a, int b}) => 0;
// ^
//
-// pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart:102:49: Error: The required named parameter 'b' in method 'Class2b.method6c' is not required in overridden method 'LegacyClass.method6c'.
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:102:49: Error: The required named parameter 'b' in method 'Class2b.method6c' is not required in overridden method 'LegacyClass.method6c'.
// int? method6c({required int? a, required int? b}) => 0;
// ^
-// pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out_lib.dart:36:7: Context: This is the overridden method ('method6c').
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:36:7: Context: This is the overridden method ('method6c').
// int method6c({int a, int b}) => 0;
// ^
//
diff --git a/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart.weak.transformed.expect
similarity index 90%
rename from pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart.strong.transformed.expect
rename to pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart.weak.transformed.expect
index 4da2cc7..7e6e97a 100644
--- a/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart.weak.transformed.expect
@@ -2,31 +2,31 @@
//
// Problems in library:
//
-// pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart:96:30: Error: The required named parameter 'a' in method 'Class2b.method5c' is not required in overridden method 'LegacyClass.method5c'.
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:96:30: Error: The required named parameter 'a' in method 'Class2b.method5c' is not required in overridden method 'LegacyClass.method5c'.
// int method5c({required int a, required int b}) => 0;
// ^
-// pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out_lib.dart:30:7: Context: This is the overridden method ('method5c').
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:30:7: Context: This is the overridden method ('method5c').
// int method5c({int a, int b}) => 0;
// ^
//
-// pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart:96:46: Error: The required named parameter 'b' in method 'Class2b.method5c' is not required in overridden method 'LegacyClass.method5c'.
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:96:46: Error: The required named parameter 'b' in method 'Class2b.method5c' is not required in overridden method 'LegacyClass.method5c'.
// int method5c({required int a, required int b}) => 0;
// ^
-// pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out_lib.dart:30:7: Context: This is the overridden method ('method5c').
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:30:7: Context: This is the overridden method ('method5c').
// int method5c({int a, int b}) => 0;
// ^
//
-// pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart:102:32: Error: The required named parameter 'a' in method 'Class2b.method6c' is not required in overridden method 'LegacyClass.method6c'.
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:102:32: Error: The required named parameter 'a' in method 'Class2b.method6c' is not required in overridden method 'LegacyClass.method6c'.
// int? method6c({required int? a, required int? b}) => 0;
// ^
-// pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out_lib.dart:36:7: Context: This is the overridden method ('method6c').
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:36:7: Context: This is the overridden method ('method6c').
// int method6c({int a, int b}) => 0;
// ^
//
-// pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart:102:49: Error: The required named parameter 'b' in method 'Class2b.method6c' is not required in overridden method 'LegacyClass.method6c'.
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart:102:49: Error: The required named parameter 'b' in method 'Class2b.method6c' is not required in overridden method 'LegacyClass.method6c'.
// int? method6c({required int? a, required int? b}) => 0;
// ^
-// pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out_lib.dart:36:7: Context: This is the overridden method ('method6c').
+// pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart:36:7: Context: This is the overridden method ('method6c').
// int method6c({int a, int b}) => 0;
// ^
//
diff --git a/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out_lib.dart b/pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out_lib.dart
rename to pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out_lib.dart
diff --git a/pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart b/pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart
rename to pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart
diff --git a/pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart.outline.expect b/pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart.outline.expect
new file mode 100644
index 0000000..2f54d4c
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart.outline.expect
@@ -0,0 +1,176 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:17:6: Error: The return type of the method 'SubInIn.nullableBad' is 'T?', which does not match the return type, 'int?', of the overridden method, 'SuperIn.nullableBad'.
+// Change to a subtype of 'int?'.
+// T? nullableBad<T>(T t) => null;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:10:8: Context: This is the overridden method ('nullableBad').
+// int? nullableBad<T>(T t) => 1;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:18:5: Error: The return type of the method 'SubInIn.nonNullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperIn.nonNullableBad'.
+// Change to a subtype of 'int'.
+// T nonNullableBad<T>(T t) => t;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:11:7: Context: This is the overridden method ('nonNullableBad').
+// int nonNullableBad<T>(T t) => 2;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:22:11: Error: The return type of the method 'SubOutIn.nullableSame' is 'String?', which does not match the return type, 'String', of the overridden method, 'SuperOut.nullableSame'.
+// Change to a subtype of 'String'.
+// String? nullableSame() => "foo";
+// ^
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:10:10: Context: This is the overridden method ('nullableSame').
+// String nullableSame() => "foo";
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:24:6: Error: The return type of the method 'SubOutIn.nullableBad' is 'T?', which does not match the return type, 'int', of the overridden method, 'SuperOut.nullableBad'.
+// Change to a subtype of 'int'.
+// T? nullableBad<T>(T t) => null;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:12:7: Context: This is the overridden method ('nullableBad').
+// int nullableBad<T>(T t) => 1;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:25:5: Error: The return type of the method 'SubOutIn.nonNullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperOut.nonNullableBad'.
+// Change to a subtype of 'int'.
+// T nonNullableBad<T>(T t) => t;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:13:7: Context: This is the overridden method ('nonNullableBad').
+// int nonNullableBad<T>(T t) => 2;
+// ^
+//
+import self as self;
+import "dart:core" as core;
+import "messages_with_types_opt_out.dart" as mes;
+
+import "org-dartlang-testcase:///messages_with_types_opt_out.dart";
+
+class SuperIn extends core::Object {
+ synthetic constructor •() → self::SuperIn
+ ;
+ method nullableSame() → core::String?
+ ;
+ method nonNullableSame() → core::String
+ ;
+ method nullableBad<T extends core::Object? = dynamic>(self::SuperIn::nullableBad::T% t) → core::int?
+ ;
+ method nonNullableBad<T extends core::Object? = dynamic>(self::SuperIn::nonNullableBad::T% t) → core::int
+ ;
+}
+class SubInIn extends self::SuperIn {
+ synthetic constructor •() → self::SubInIn
+ ;
+ method nullableSame() → core::String?
+ ;
+ method nonNullableSame() → core::String
+ ;
+ method nullableBad<T extends core::Object? = dynamic>(self::SubInIn::nullableBad::T% t) → self::SubInIn::nullableBad::T?
+ ;
+ method nonNullableBad<T extends core::Object? = dynamic>(self::SubInIn::nonNullableBad::T% t) → self::SubInIn::nonNullableBad::T%
+ ;
+}
+class SubOutIn extends mes::SuperOut {
+ synthetic constructor •() → self::SubOutIn
+ ;
+ method nullableSame() → core::String?
+ ;
+ method nonNullableSame() → core::String
+ ;
+ method nullableBad<T extends core::Object? = dynamic>(self::SubOutIn::nullableBad::T% t) → self::SubOutIn::nullableBad::T?
+ ;
+ method nonNullableBad<T extends core::Object? = dynamic>(self::SubOutIn::nonNullableBad::T% t) → self::SubOutIn::nonNullableBad::T%
+ ;
+}
+static field () →? core::int nullableVar;
+static field core::double nonNullableVar;
+static method testOptIn() → dynamic
+ ;
+
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:5:1: Error: A library can't opt out of non-nullable by default, when in nnbd-strong mode.
+// // @dart=2.5
+// ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:19:5: Error: The return type of the method 'SubOutOut.nullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperOut.nullableBad'.
+// Change to a subtype of 'int'.
+// T nullableBad<T>(T t) => null;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:12:7: Context: This is the overridden method ('nullableBad').
+// int nullableBad<T>(T t) => 1;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:20:5: Error: The return type of the method 'SubOutOut.nonNullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperOut.nonNullableBad'.
+// Change to a subtype of 'int'.
+// T nonNullableBad<T>(T t) => t;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:13:7: Context: This is the overridden method ('nonNullableBad').
+// int nonNullableBad<T>(T t) => 2;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:26:5: Error: The return type of the method 'SubInOut.nullableBad' is 'T', which does not match the return type, 'int?', of the overridden method, 'SuperIn.nullableBad'.
+// Change to a subtype of 'int?'.
+// T nullableBad<T>(T t) => null;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:10:8: Context: This is the overridden method ('nullableBad').
+// int? nullableBad<T>(T t) => 1;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:27:5: Error: The return type of the method 'SubInOut.nonNullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperIn.nonNullableBad'.
+// Change to a subtype of 'int'.
+// T nonNullableBad<T>(T t) => t;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:11:7: Context: This is the overridden method ('nonNullableBad').
+// int nonNullableBad<T>(T t) => 2;
+// ^
+//
+import self as mes;
+import "dart:core" as core;
+import "messages_with_types_opt_in.dart" as self;
+
+import "org-dartlang-testcase:///messages_with_types_opt_in.dart";
+
+class SuperOut extends core::Object {
+ synthetic constructor •() → mes::SuperOut
+ ;
+ method nullableSame() → core::String
+ ;
+ method nonNullableSame() → core::String
+ ;
+ method nullableBad<T extends core::Object? = dynamic>(mes::SuperOut::nullableBad::T% t) → core::int
+ ;
+ method nonNullableBad<T extends core::Object? = dynamic>(mes::SuperOut::nonNullableBad::T% t) → core::int
+ ;
+}
+class SubOutOut extends mes::SuperOut {
+ synthetic constructor •() → mes::SubOutOut
+ ;
+ method nullableSame() → core::String
+ ;
+ method nonNullableSame() → core::String
+ ;
+ method nullableBad<T extends core::Object? = dynamic>(mes::SubOutOut::nullableBad::T% t) → mes::SubOutOut::nullableBad::T%
+ ;
+ method nonNullableBad<T extends core::Object? = dynamic>(mes::SubOutOut::nonNullableBad::T% t) → mes::SubOutOut::nonNullableBad::T%
+ ;
+}
+class SubInOut extends self::SuperIn {
+ synthetic constructor •() → mes::SubInOut
+ ;
+ method nullableSame() → core::String
+ ;
+ method nonNullableSame() → core::String
+ ;
+ method nullableBad<T extends core::Object? = dynamic>(mes::SubInOut::nullableBad::T% t) → mes::SubInOut::nullableBad::T%
+ ;
+ method nonNullableBad<T extends core::Object? = dynamic>(mes::SubInOut::nonNullableBad::T% t) → mes::SubInOut::nonNullableBad::T%
+ ;
+}
+static field core::String legacyVar;
+static method testOptOut() → dynamic
+ ;
diff --git a/pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart.textual_outline.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart.textual_outline.expect
rename to pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart.textual_outline.expect
diff --git a/pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart.textual_outline_modelled.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart.textual_outline_modelled.expect
rename to pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart.textual_outline_modelled.expect
diff --git a/pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart.weak.expect
new file mode 100644
index 0000000..44f7208
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart.weak.expect
@@ -0,0 +1,274 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:17:6: Error: The return type of the method 'SubInIn.nullableBad' is 'T?', which does not match the return type, 'int?', of the overridden method, 'SuperIn.nullableBad'.
+// Change to a subtype of 'int?'.
+// T? nullableBad<T>(T t) => null;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:10:8: Context: This is the overridden method ('nullableBad').
+// int? nullableBad<T>(T t) => 1;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:18:5: Error: The return type of the method 'SubInIn.nonNullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperIn.nonNullableBad'.
+// Change to a subtype of 'int'.
+// T nonNullableBad<T>(T t) => t;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:11:7: Context: This is the overridden method ('nonNullableBad').
+// int nonNullableBad<T>(T t) => 2;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:24:6: Error: The return type of the method 'SubOutIn.nullableBad' is 'T?', which does not match the return type, 'int', of the overridden method, 'SuperOut.nullableBad'.
+// Change to a subtype of 'int'.
+// T? nullableBad<T>(T t) => null;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:12:7: Context: This is the overridden method ('nullableBad').
+// int nullableBad<T>(T t) => 1;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:25:5: Error: The return type of the method 'SubOutIn.nonNullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperOut.nonNullableBad'.
+// Change to a subtype of 'int'.
+// T nonNullableBad<T>(T t) => t;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:13:7: Context: This is the overridden method ('nonNullableBad').
+// int nonNullableBad<T>(T t) => 2;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:32:17: Error: A value of type 'double' can't be assigned to a variable of type 'int Function()?'.
+// nullableVar = nonNullableVar;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:33:20: Error: A value of type 'int Function()?' can't be assigned to a variable of type 'double'.
+// nonNullableVar = nullableVar;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:34:15: Error: A value of type 'int Function()?' can't be assigned to a variable of type 'String'.
+// legacyVar = nullableVar;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:35:17: Error: A value of type 'String' can't be assigned to a variable of type 'int Function()?'.
+// nullableVar = legacyVar;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:36:20: Error: A value of type 'String' can't be assigned to a variable of type 'double'.
+// nonNullableVar = legacyVar;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:37:15: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
+// legacyVar = nonNullableVar;
+// ^
+//
+import self as self;
+import "dart:core" as core;
+import "messages_with_types_opt_out.dart" as mes;
+
+import "org-dartlang-testcase:///messages_with_types_opt_out.dart";
+
+class SuperIn extends core::Object {
+ synthetic constructor •() → self::SuperIn
+ : super core::Object::•()
+ ;
+ method nullableSame() → core::String?
+ return "foo";
+ method nonNullableSame() → core::String
+ return "bar";
+ method nullableBad<T extends core::Object? = dynamic>(self::SuperIn::nullableBad::T% t) → core::int?
+ return 1;
+ method nonNullableBad<T extends core::Object? = dynamic>(self::SuperIn::nonNullableBad::T% t) → core::int
+ return 2;
+}
+class SubInIn extends self::SuperIn {
+ synthetic constructor •() → self::SubInIn
+ : super self::SuperIn::•()
+ ;
+ method nullableSame() → core::String?
+ return "foo";
+ method nonNullableSame() → core::String
+ return "bar";
+ method nullableBad<T extends core::Object? = dynamic>(self::SubInIn::nullableBad::T% t) → self::SubInIn::nullableBad::T?
+ return null;
+ method nonNullableBad<T extends core::Object? = dynamic>(self::SubInIn::nonNullableBad::T% t) → self::SubInIn::nonNullableBad::T%
+ return t;
+}
+class SubOutIn extends mes::SuperOut {
+ synthetic constructor •() → self::SubOutIn
+ : super mes::SuperOut::•()
+ ;
+ method nullableSame() → core::String?
+ return "foo";
+ method nonNullableSame() → core::String
+ return "bar";
+ method nullableBad<T extends core::Object? = dynamic>(self::SubOutIn::nullableBad::T% t) → self::SubOutIn::nullableBad::T?
+ return null;
+ method nonNullableBad<T extends core::Object? = dynamic>(self::SubOutIn::nonNullableBad::T% t) → self::SubOutIn::nonNullableBad::T%
+ return t;
+}
+static field () →? core::int nullableVar = () → core::int => 3;
+static field core::double nonNullableVar = 4.0;
+static method testOptIn() → dynamic {
+ self::nullableVar = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:32:17: Error: A value of type 'double' can't be assigned to a variable of type 'int Function()?'.
+ nullableVar = nonNullableVar;
+ ^" in self::nonNullableVar as{TypeError,ForNonNullableByDefault} () →? core::int;
+ self::nonNullableVar = let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:33:20: Error: A value of type 'int Function()?' can't be assigned to a variable of type 'double'.
+ nonNullableVar = nullableVar;
+ ^" in self::nullableVar as{TypeError,ForNonNullableByDefault} core::double;
+ mes::legacyVar = let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:34:15: Error: A value of type 'int Function()?' can't be assigned to a variable of type 'String'.
+ legacyVar = nullableVar;
+ ^" in self::nullableVar as{TypeError,ForNonNullableByDefault} core::String*;
+ self::nullableVar = let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:35:17: Error: A value of type 'String' can't be assigned to a variable of type 'int Function()?'.
+ nullableVar = legacyVar;
+ ^" in mes::legacyVar as{TypeError,ForNonNullableByDefault} () →? core::int;
+ self::nonNullableVar = let final<BottomType> #t5 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:36:20: Error: A value of type 'String' can't be assigned to a variable of type 'double'.
+ nonNullableVar = legacyVar;
+ ^" in mes::legacyVar as{TypeError,ForNonNullableByDefault} core::double;
+ mes::legacyVar = let final<BottomType> #t6 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:37:15: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
+ legacyVar = nonNullableVar;
+ ^" in self::nonNullableVar as{TypeError,ForNonNullableByDefault} core::String*;
+}
+
+library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:19:5: Error: The return type of the method 'SubOutOut.nullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperOut.nullableBad'.
+// Change to a subtype of 'int'.
+// T nullableBad<T>(T t) => null;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:12:7: Context: This is the overridden method ('nullableBad').
+// int nullableBad<T>(T t) => 1;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:20:5: Error: The return type of the method 'SubOutOut.nonNullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperOut.nonNullableBad'.
+// Change to a subtype of 'int'.
+// T nonNullableBad<T>(T t) => t;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:13:7: Context: This is the overridden method ('nonNullableBad').
+// int nonNullableBad<T>(T t) => 2;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:26:5: Error: The return type of the method 'SubInOut.nullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperIn.nullableBad'.
+// Change to a subtype of 'int'.
+// T nullableBad<T>(T t) => null;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:10:8: Context: This is the overridden method ('nullableBad').
+// int? nullableBad<T>(T t) => 1;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:27:5: Error: The return type of the method 'SubInOut.nonNullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperIn.nonNullableBad'.
+// Change to a subtype of 'int'.
+// T nonNullableBad<T>(T t) => t;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:11:7: Context: This is the overridden method ('nonNullableBad').
+// int nonNullableBad<T>(T t) => 2;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:33:17: Error: A value of type 'double' can't be assigned to a variable of type 'int Function()'.
+// nullableVar = nonNullableVar;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:34:20: Error: A value of type 'int Function()' can't be assigned to a variable of type 'double'.
+// nonNullableVar = nullableVar;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:35:15: Error: A value of type 'int Function()' can't be assigned to a variable of type 'String'.
+// legacyVar = nullableVar;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:36:17: Error: A value of type 'String' can't be assigned to a variable of type 'int Function()'.
+// nullableVar = legacyVar;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:37:20: Error: A value of type 'String' can't be assigned to a variable of type 'double'.
+// nonNullableVar = legacyVar;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:38:15: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
+// legacyVar = nonNullableVar;
+// ^
+//
+import self as mes;
+import "dart:core" as core;
+import "messages_with_types_opt_in.dart" as self;
+
+import "org-dartlang-testcase:///messages_with_types_opt_in.dart";
+
+class SuperOut extends core::Object {
+ synthetic constructor •() → mes::SuperOut*
+ : super core::Object::•()
+ ;
+ method nullableSame() → core::String*
+ return "foo";
+ method nonNullableSame() → core::String*
+ return "bar";
+ method nullableBad<T extends core::Object* = dynamic>(mes::SuperOut::nullableBad::T* t) → core::int*
+ return 1;
+ method nonNullableBad<T extends core::Object* = dynamic>(mes::SuperOut::nonNullableBad::T* t) → core::int*
+ return 2;
+ abstract member-signature get _identityHashCode() → core::int*;
+ abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+ abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+ abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+ abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+ abstract member-signature operator ==(dynamic other) → core::bool*;
+ abstract member-signature get hashCode() → core::int*;
+ abstract member-signature method toString() → core::String*;
+ abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+ abstract member-signature get runtimeType() → core::Type*;
+}
+class SubOutOut extends mes::SuperOut {
+ synthetic constructor •() → mes::SubOutOut*
+ : super mes::SuperOut::•()
+ ;
+ method nullableSame() → core::String*
+ return "foo";
+ method nonNullableSame() → core::String*
+ return "bar";
+ method nullableBad<T extends core::Object* = dynamic>(mes::SubOutOut::nullableBad::T* t) → mes::SubOutOut::nullableBad::T*
+ return null;
+ method nonNullableBad<T extends core::Object* = dynamic>(mes::SubOutOut::nonNullableBad::T* t) → mes::SubOutOut::nonNullableBad::T*
+ return t;
+}
+class SubInOut extends self::SuperIn {
+ synthetic constructor •() → mes::SubInOut*
+ : super self::SuperIn::•()
+ ;
+ method nullableSame() → core::String*
+ return "foo";
+ method nonNullableSame() → core::String*
+ return "bar";
+ method nullableBad<T extends core::Object* = dynamic>(mes::SubInOut::nullableBad::T* t) → mes::SubInOut::nullableBad::T*
+ return null;
+ method nonNullableBad<T extends core::Object* = dynamic>(mes::SubInOut::nonNullableBad::T* t) → mes::SubInOut::nonNullableBad::T*
+ return t;
+ abstract member-signature get _identityHashCode() → core::int*;
+ abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+ abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+ abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+ abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+ abstract member-signature operator ==(dynamic other) → core::bool*;
+ abstract member-signature get hashCode() → core::int*;
+ abstract member-signature method toString() → core::String*;
+ abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+ abstract member-signature get runtimeType() → core::Type*;
+}
+static field core::String* legacyVar = "legacy";
+static method testOptOut() → dynamic {
+ self::nullableVar = let final<BottomType> #t7 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:33:17: Error: A value of type 'double' can't be assigned to a variable of type 'int Function()'.
+ nullableVar = nonNullableVar;
+ ^" in self::nonNullableVar as{TypeError} () →? core::int;
+ self::nonNullableVar = let final<BottomType> #t8 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:34:20: Error: A value of type 'int Function()' can't be assigned to a variable of type 'double'.
+ nonNullableVar = nullableVar;
+ ^" in self::nullableVar as{TypeError} core::double;
+ mes::legacyVar = let final<BottomType> #t9 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:35:15: Error: A value of type 'int Function()' can't be assigned to a variable of type 'String'.
+ legacyVar = nullableVar;
+ ^" in self::nullableVar as{TypeError} core::String*;
+ self::nullableVar = let final<BottomType> #t10 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:36:17: Error: A value of type 'String' can't be assigned to a variable of type 'int Function()'.
+ nullableVar = legacyVar;
+ ^" in mes::legacyVar as{TypeError} () →? core::int;
+ self::nonNullableVar = let final<BottomType> #t11 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:37:20: Error: A value of type 'String' can't be assigned to a variable of type 'double'.
+ nonNullableVar = legacyVar;
+ ^" in mes::legacyVar as{TypeError} core::double;
+ mes::legacyVar = let final<BottomType> #t12 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:38:15: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
+ legacyVar = nonNullableVar;
+ ^" in self::nonNullableVar as{TypeError} core::String*;
+}
diff --git a/pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart b/pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart
rename to pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart
diff --git a/pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart.outline.expect b/pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart.outline.expect
new file mode 100644
index 0000000..0bbe3b7
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart.outline.expect
@@ -0,0 +1,176 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:5:1: Error: A library can't opt out of non-nullable by default, when in nnbd-strong mode.
+// // @dart=2.5
+// ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:19:5: Error: The return type of the method 'SubOutOut.nullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperOut.nullableBad'.
+// Change to a subtype of 'int'.
+// T nullableBad<T>(T t) => null;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:12:7: Context: This is the overridden method ('nullableBad').
+// int nullableBad<T>(T t) => 1;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:20:5: Error: The return type of the method 'SubOutOut.nonNullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperOut.nonNullableBad'.
+// Change to a subtype of 'int'.
+// T nonNullableBad<T>(T t) => t;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:13:7: Context: This is the overridden method ('nonNullableBad').
+// int nonNullableBad<T>(T t) => 2;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:26:5: Error: The return type of the method 'SubInOut.nullableBad' is 'T', which does not match the return type, 'int?', of the overridden method, 'SuperIn.nullableBad'.
+// Change to a subtype of 'int?'.
+// T nullableBad<T>(T t) => null;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:10:8: Context: This is the overridden method ('nullableBad').
+// int? nullableBad<T>(T t) => 1;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:27:5: Error: The return type of the method 'SubInOut.nonNullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperIn.nonNullableBad'.
+// Change to a subtype of 'int'.
+// T nonNullableBad<T>(T t) => t;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:11:7: Context: This is the overridden method ('nonNullableBad').
+// int nonNullableBad<T>(T t) => 2;
+// ^
+//
+import self as self;
+import "dart:core" as core;
+import "messages_with_types_opt_in.dart" as mes;
+
+import "org-dartlang-testcase:///messages_with_types_opt_in.dart";
+
+class SuperOut extends core::Object {
+ synthetic constructor •() → self::SuperOut
+ ;
+ method nullableSame() → core::String
+ ;
+ method nonNullableSame() → core::String
+ ;
+ method nullableBad<T extends core::Object? = dynamic>(self::SuperOut::nullableBad::T% t) → core::int
+ ;
+ method nonNullableBad<T extends core::Object? = dynamic>(self::SuperOut::nonNullableBad::T% t) → core::int
+ ;
+}
+class SubOutOut extends self::SuperOut {
+ synthetic constructor •() → self::SubOutOut
+ ;
+ method nullableSame() → core::String
+ ;
+ method nonNullableSame() → core::String
+ ;
+ method nullableBad<T extends core::Object? = dynamic>(self::SubOutOut::nullableBad::T% t) → self::SubOutOut::nullableBad::T%
+ ;
+ method nonNullableBad<T extends core::Object? = dynamic>(self::SubOutOut::nonNullableBad::T% t) → self::SubOutOut::nonNullableBad::T%
+ ;
+}
+class SubInOut extends mes::SuperIn {
+ synthetic constructor •() → self::SubInOut
+ ;
+ method nullableSame() → core::String
+ ;
+ method nonNullableSame() → core::String
+ ;
+ method nullableBad<T extends core::Object? = dynamic>(self::SubInOut::nullableBad::T% t) → self::SubInOut::nullableBad::T%
+ ;
+ method nonNullableBad<T extends core::Object? = dynamic>(self::SubInOut::nonNullableBad::T% t) → self::SubInOut::nonNullableBad::T%
+ ;
+}
+static field core::String legacyVar;
+static method testOptOut() → dynamic
+ ;
+
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:17:6: Error: The return type of the method 'SubInIn.nullableBad' is 'T?', which does not match the return type, 'int?', of the overridden method, 'SuperIn.nullableBad'.
+// Change to a subtype of 'int?'.
+// T? nullableBad<T>(T t) => null;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:10:8: Context: This is the overridden method ('nullableBad').
+// int? nullableBad<T>(T t) => 1;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:18:5: Error: The return type of the method 'SubInIn.nonNullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperIn.nonNullableBad'.
+// Change to a subtype of 'int'.
+// T nonNullableBad<T>(T t) => t;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:11:7: Context: This is the overridden method ('nonNullableBad').
+// int nonNullableBad<T>(T t) => 2;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:22:11: Error: The return type of the method 'SubOutIn.nullableSame' is 'String?', which does not match the return type, 'String', of the overridden method, 'SuperOut.nullableSame'.
+// Change to a subtype of 'String'.
+// String? nullableSame() => "foo";
+// ^
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:10:10: Context: This is the overridden method ('nullableSame').
+// String nullableSame() => "foo";
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:24:6: Error: The return type of the method 'SubOutIn.nullableBad' is 'T?', which does not match the return type, 'int', of the overridden method, 'SuperOut.nullableBad'.
+// Change to a subtype of 'int'.
+// T? nullableBad<T>(T t) => null;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:12:7: Context: This is the overridden method ('nullableBad').
+// int nullableBad<T>(T t) => 1;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:25:5: Error: The return type of the method 'SubOutIn.nonNullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperOut.nonNullableBad'.
+// Change to a subtype of 'int'.
+// T nonNullableBad<T>(T t) => t;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:13:7: Context: This is the overridden method ('nonNullableBad').
+// int nonNullableBad<T>(T t) => 2;
+// ^
+//
+import self as mes;
+import "dart:core" as core;
+import "messages_with_types_opt_out.dart" as self;
+
+import "org-dartlang-testcase:///messages_with_types_opt_out.dart";
+
+class SuperIn extends core::Object {
+ synthetic constructor •() → mes::SuperIn
+ ;
+ method nullableSame() → core::String?
+ ;
+ method nonNullableSame() → core::String
+ ;
+ method nullableBad<T extends core::Object? = dynamic>(mes::SuperIn::nullableBad::T% t) → core::int?
+ ;
+ method nonNullableBad<T extends core::Object? = dynamic>(mes::SuperIn::nonNullableBad::T% t) → core::int
+ ;
+}
+class SubInIn extends mes::SuperIn {
+ synthetic constructor •() → mes::SubInIn
+ ;
+ method nullableSame() → core::String?
+ ;
+ method nonNullableSame() → core::String
+ ;
+ method nullableBad<T extends core::Object? = dynamic>(mes::SubInIn::nullableBad::T% t) → mes::SubInIn::nullableBad::T?
+ ;
+ method nonNullableBad<T extends core::Object? = dynamic>(mes::SubInIn::nonNullableBad::T% t) → mes::SubInIn::nonNullableBad::T%
+ ;
+}
+class SubOutIn extends self::SuperOut {
+ synthetic constructor •() → mes::SubOutIn
+ ;
+ method nullableSame() → core::String?
+ ;
+ method nonNullableSame() → core::String
+ ;
+ method nullableBad<T extends core::Object? = dynamic>(mes::SubOutIn::nullableBad::T% t) → mes::SubOutIn::nullableBad::T?
+ ;
+ method nonNullableBad<T extends core::Object? = dynamic>(mes::SubOutIn::nonNullableBad::T% t) → mes::SubOutIn::nonNullableBad::T%
+ ;
+}
+static field () →? core::int nullableVar;
+static field core::double nonNullableVar;
+static method testOptIn() → dynamic
+ ;
diff --git a/pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart.textual_outline.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart.textual_outline.expect
rename to pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart.textual_outline.expect
diff --git a/pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart.textual_outline_modelled.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart.textual_outline_modelled.expect
rename to pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart.textual_outline_modelled.expect
diff --git a/pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart.weak.expect
new file mode 100644
index 0000000..952d1e3
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart.weak.expect
@@ -0,0 +1,274 @@
+library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:19:5: Error: The return type of the method 'SubOutOut.nullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperOut.nullableBad'.
+// Change to a subtype of 'int'.
+// T nullableBad<T>(T t) => null;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:12:7: Context: This is the overridden method ('nullableBad').
+// int nullableBad<T>(T t) => 1;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:20:5: Error: The return type of the method 'SubOutOut.nonNullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperOut.nonNullableBad'.
+// Change to a subtype of 'int'.
+// T nonNullableBad<T>(T t) => t;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:13:7: Context: This is the overridden method ('nonNullableBad').
+// int nonNullableBad<T>(T t) => 2;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:26:5: Error: The return type of the method 'SubInOut.nullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperIn.nullableBad'.
+// Change to a subtype of 'int'.
+// T nullableBad<T>(T t) => null;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:10:8: Context: This is the overridden method ('nullableBad').
+// int? nullableBad<T>(T t) => 1;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:27:5: Error: The return type of the method 'SubInOut.nonNullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperIn.nonNullableBad'.
+// Change to a subtype of 'int'.
+// T nonNullableBad<T>(T t) => t;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:11:7: Context: This is the overridden method ('nonNullableBad').
+// int nonNullableBad<T>(T t) => 2;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:33:17: Error: A value of type 'double' can't be assigned to a variable of type 'int Function()'.
+// nullableVar = nonNullableVar;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:34:20: Error: A value of type 'int Function()' can't be assigned to a variable of type 'double'.
+// nonNullableVar = nullableVar;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:35:15: Error: A value of type 'int Function()' can't be assigned to a variable of type 'String'.
+// legacyVar = nullableVar;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:36:17: Error: A value of type 'String' can't be assigned to a variable of type 'int Function()'.
+// nullableVar = legacyVar;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:37:20: Error: A value of type 'String' can't be assigned to a variable of type 'double'.
+// nonNullableVar = legacyVar;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:38:15: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
+// legacyVar = nonNullableVar;
+// ^
+//
+import self as self;
+import "dart:core" as core;
+import "messages_with_types_opt_in.dart" as mes;
+
+import "org-dartlang-testcase:///messages_with_types_opt_in.dart";
+
+class SuperOut extends core::Object {
+ synthetic constructor •() → self::SuperOut*
+ : super core::Object::•()
+ ;
+ method nullableSame() → core::String*
+ return "foo";
+ method nonNullableSame() → core::String*
+ return "bar";
+ method nullableBad<T extends core::Object* = dynamic>(self::SuperOut::nullableBad::T* t) → core::int*
+ return 1;
+ method nonNullableBad<T extends core::Object* = dynamic>(self::SuperOut::nonNullableBad::T* t) → core::int*
+ return 2;
+ abstract member-signature get _identityHashCode() → core::int*;
+ abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+ abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+ abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+ abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+ abstract member-signature operator ==(dynamic other) → core::bool*;
+ abstract member-signature get hashCode() → core::int*;
+ abstract member-signature method toString() → core::String*;
+ abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+ abstract member-signature get runtimeType() → core::Type*;
+}
+class SubOutOut extends self::SuperOut {
+ synthetic constructor •() → self::SubOutOut*
+ : super self::SuperOut::•()
+ ;
+ method nullableSame() → core::String*
+ return "foo";
+ method nonNullableSame() → core::String*
+ return "bar";
+ method nullableBad<T extends core::Object* = dynamic>(self::SubOutOut::nullableBad::T* t) → self::SubOutOut::nullableBad::T*
+ return null;
+ method nonNullableBad<T extends core::Object* = dynamic>(self::SubOutOut::nonNullableBad::T* t) → self::SubOutOut::nonNullableBad::T*
+ return t;
+}
+class SubInOut extends mes::SuperIn {
+ synthetic constructor •() → self::SubInOut*
+ : super mes::SuperIn::•()
+ ;
+ method nullableSame() → core::String*
+ return "foo";
+ method nonNullableSame() → core::String*
+ return "bar";
+ method nullableBad<T extends core::Object* = dynamic>(self::SubInOut::nullableBad::T* t) → self::SubInOut::nullableBad::T*
+ return null;
+ method nonNullableBad<T extends core::Object* = dynamic>(self::SubInOut::nonNullableBad::T* t) → self::SubInOut::nonNullableBad::T*
+ return t;
+ abstract member-signature get _identityHashCode() → core::int*;
+ abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+ abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+ abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+ abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+ abstract member-signature operator ==(dynamic other) → core::bool*;
+ abstract member-signature get hashCode() → core::int*;
+ abstract member-signature method toString() → core::String*;
+ abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+ abstract member-signature get runtimeType() → core::Type*;
+}
+static field core::String* legacyVar = "legacy";
+static method testOptOut() → dynamic {
+ mes::nullableVar = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:33:17: Error: A value of type 'double' can't be assigned to a variable of type 'int Function()'.
+ nullableVar = nonNullableVar;
+ ^" in mes::nonNullableVar as{TypeError} () →? core::int;
+ mes::nonNullableVar = let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:34:20: Error: A value of type 'int Function()' can't be assigned to a variable of type 'double'.
+ nonNullableVar = nullableVar;
+ ^" in mes::nullableVar as{TypeError} core::double;
+ self::legacyVar = let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:35:15: Error: A value of type 'int Function()' can't be assigned to a variable of type 'String'.
+ legacyVar = nullableVar;
+ ^" in mes::nullableVar as{TypeError} core::String*;
+ mes::nullableVar = let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:36:17: Error: A value of type 'String' can't be assigned to a variable of type 'int Function()'.
+ nullableVar = legacyVar;
+ ^" in self::legacyVar as{TypeError} () →? core::int;
+ mes::nonNullableVar = let final<BottomType> #t5 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:37:20: Error: A value of type 'String' can't be assigned to a variable of type 'double'.
+ nonNullableVar = legacyVar;
+ ^" in self::legacyVar as{TypeError} core::double;
+ self::legacyVar = let final<BottomType> #t6 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:38:15: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
+ legacyVar = nonNullableVar;
+ ^" in mes::nonNullableVar as{TypeError} core::String*;
+}
+
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:17:6: Error: The return type of the method 'SubInIn.nullableBad' is 'T?', which does not match the return type, 'int?', of the overridden method, 'SuperIn.nullableBad'.
+// Change to a subtype of 'int?'.
+// T? nullableBad<T>(T t) => null;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:10:8: Context: This is the overridden method ('nullableBad').
+// int? nullableBad<T>(T t) => 1;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:18:5: Error: The return type of the method 'SubInIn.nonNullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperIn.nonNullableBad'.
+// Change to a subtype of 'int'.
+// T nonNullableBad<T>(T t) => t;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:11:7: Context: This is the overridden method ('nonNullableBad').
+// int nonNullableBad<T>(T t) => 2;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:24:6: Error: The return type of the method 'SubOutIn.nullableBad' is 'T?', which does not match the return type, 'int', of the overridden method, 'SuperOut.nullableBad'.
+// Change to a subtype of 'int'.
+// T? nullableBad<T>(T t) => null;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:12:7: Context: This is the overridden method ('nullableBad').
+// int nullableBad<T>(T t) => 1;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:25:5: Error: The return type of the method 'SubOutIn.nonNullableBad' is 'T', which does not match the return type, 'int', of the overridden method, 'SuperOut.nonNullableBad'.
+// Change to a subtype of 'int'.
+// T nonNullableBad<T>(T t) => t;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_out.dart:13:7: Context: This is the overridden method ('nonNullableBad').
+// int nonNullableBad<T>(T t) => 2;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:32:17: Error: A value of type 'double' can't be assigned to a variable of type 'int Function()?'.
+// nullableVar = nonNullableVar;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:33:20: Error: A value of type 'int Function()?' can't be assigned to a variable of type 'double'.
+// nonNullableVar = nullableVar;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:34:15: Error: A value of type 'int Function()?' can't be assigned to a variable of type 'String'.
+// legacyVar = nullableVar;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:35:17: Error: A value of type 'String' can't be assigned to a variable of type 'int Function()?'.
+// nullableVar = legacyVar;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:36:20: Error: A value of type 'String' can't be assigned to a variable of type 'double'.
+// nonNullableVar = legacyVar;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:37:15: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
+// legacyVar = nonNullableVar;
+// ^
+//
+import self as mes;
+import "dart:core" as core;
+import "messages_with_types_opt_out.dart" as self;
+
+import "org-dartlang-testcase:///messages_with_types_opt_out.dart";
+
+class SuperIn extends core::Object {
+ synthetic constructor •() → mes::SuperIn
+ : super core::Object::•()
+ ;
+ method nullableSame() → core::String?
+ return "foo";
+ method nonNullableSame() → core::String
+ return "bar";
+ method nullableBad<T extends core::Object? = dynamic>(mes::SuperIn::nullableBad::T% t) → core::int?
+ return 1;
+ method nonNullableBad<T extends core::Object? = dynamic>(mes::SuperIn::nonNullableBad::T% t) → core::int
+ return 2;
+}
+class SubInIn extends mes::SuperIn {
+ synthetic constructor •() → mes::SubInIn
+ : super mes::SuperIn::•()
+ ;
+ method nullableSame() → core::String?
+ return "foo";
+ method nonNullableSame() → core::String
+ return "bar";
+ method nullableBad<T extends core::Object? = dynamic>(mes::SubInIn::nullableBad::T% t) → mes::SubInIn::nullableBad::T?
+ return null;
+ method nonNullableBad<T extends core::Object? = dynamic>(mes::SubInIn::nonNullableBad::T% t) → mes::SubInIn::nonNullableBad::T%
+ return t;
+}
+class SubOutIn extends self::SuperOut {
+ synthetic constructor •() → mes::SubOutIn
+ : super self::SuperOut::•()
+ ;
+ method nullableSame() → core::String?
+ return "foo";
+ method nonNullableSame() → core::String
+ return "bar";
+ method nullableBad<T extends core::Object? = dynamic>(mes::SubOutIn::nullableBad::T% t) → mes::SubOutIn::nullableBad::T?
+ return null;
+ method nonNullableBad<T extends core::Object? = dynamic>(mes::SubOutIn::nonNullableBad::T% t) → mes::SubOutIn::nonNullableBad::T%
+ return t;
+}
+static field () →? core::int nullableVar = () → core::int => 3;
+static field core::double nonNullableVar = 4.0;
+static method testOptIn() → dynamic {
+ mes::nullableVar = let final<BottomType> #t7 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:32:17: Error: A value of type 'double' can't be assigned to a variable of type 'int Function()?'.
+ nullableVar = nonNullableVar;
+ ^" in mes::nonNullableVar as{TypeError,ForNonNullableByDefault} () →? core::int;
+ mes::nonNullableVar = let final<BottomType> #t8 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:33:20: Error: A value of type 'int Function()?' can't be assigned to a variable of type 'double'.
+ nonNullableVar = nullableVar;
+ ^" in mes::nullableVar as{TypeError,ForNonNullableByDefault} core::double;
+ self::legacyVar = let final<BottomType> #t9 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:34:15: Error: A value of type 'int Function()?' can't be assigned to a variable of type 'String'.
+ legacyVar = nullableVar;
+ ^" in mes::nullableVar as{TypeError,ForNonNullableByDefault} core::String*;
+ mes::nullableVar = let final<BottomType> #t10 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:35:17: Error: A value of type 'String' can't be assigned to a variable of type 'int Function()?'.
+ nullableVar = legacyVar;
+ ^" in self::legacyVar as{TypeError,ForNonNullableByDefault} () →? core::int;
+ mes::nonNullableVar = let final<BottomType> #t11 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:36:20: Error: A value of type 'String' can't be assigned to a variable of type 'double'.
+ nonNullableVar = legacyVar;
+ ^" in self::legacyVar as{TypeError,ForNonNullableByDefault} core::double;
+ self::legacyVar = let final<BottomType> #t12 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/messages_with_types_opt_in.dart:37:15: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
+ legacyVar = nonNullableVar;
+ ^" in mes::nonNullableVar as{TypeError,ForNonNullableByDefault} core::String*;
+}
diff --git a/pkg/front_end/testcases/nnbd/mixed_mode_hierarchy_generic_methods.dart b/pkg/front_end/testcases/nnbd_mixed/mixed_mode_hierarchy_generic_methods.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/mixed_mode_hierarchy_generic_methods.dart
rename to pkg/front_end/testcases/nnbd_mixed/mixed_mode_hierarchy_generic_methods.dart
diff --git a/pkg/front_end/testcases/nnbd_mixed/mixed_mode_hierarchy_generic_methods.dart.outline.expect b/pkg/front_end/testcases/nnbd_mixed/mixed_mode_hierarchy_generic_methods.dart.outline.expect
new file mode 100644
index 0000000..9c82e41
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd_mixed/mixed_mode_hierarchy_generic_methods.dart.outline.expect
@@ -0,0 +1,36 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/mixed_mode_hierarchy_generic_methods.dart:5:1: Error: A library can't opt out of non-nullable by default, when in nnbd-strong mode.
+// // @dart = 2.6
+// ^^^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+import "mixed_mode_hierarchy_generic_methods_lib.dart" as mix;
+import "dart:async" as asy;
+
+import "org-dartlang-testcase:///mixed_mode_hierarchy_generic_methods_lib.dart";
+import "dart:async";
+
+class B extends core::Object implements mix::A<core::int> {
+ synthetic constructor •() → self::B
+ ;
+ method then<B extends core::Object? = dynamic>() → asy::Future<self::B::then::B%>
+ ;
+}
+static method main() → dynamic
+ ;
+
+library /*isNonNullableByDefault*/;
+import self as mix;
+import "dart:core" as core;
+import "dart:async" as asy;
+
+class A<R extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → mix::A<mix::A::R%>
+ ;
+ method then<T extends core::Object? = dynamic>() → asy::Future<mix::A::then::T%>
+ ;
+}
diff --git a/pkg/front_end/testcases/nnbd/mixed_mode_hierarchy_generic_methods.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd_mixed/mixed_mode_hierarchy_generic_methods.dart.textual_outline.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/mixed_mode_hierarchy_generic_methods.dart.textual_outline.expect
rename to pkg/front_end/testcases/nnbd_mixed/mixed_mode_hierarchy_generic_methods.dart.textual_outline.expect
diff --git a/pkg/front_end/testcases/nnbd/mixed_mode_hierarchy_generic_methods.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd_mixed/mixed_mode_hierarchy_generic_methods.dart.textual_outline_modelled.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/mixed_mode_hierarchy_generic_methods.dart.textual_outline_modelled.expect
rename to pkg/front_end/testcases/nnbd_mixed/mixed_mode_hierarchy_generic_methods.dart.textual_outline_modelled.expect
diff --git a/pkg/front_end/testcases/nnbd/mixed_mode_hierarchy_generic_methods.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/mixed_mode_hierarchy_generic_methods.dart.weak.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/mixed_mode_hierarchy_generic_methods.dart.weak.expect
rename to pkg/front_end/testcases/nnbd_mixed/mixed_mode_hierarchy_generic_methods.dart.weak.expect
diff --git a/pkg/front_end/testcases/nnbd/mixed_mode_hierarchy_generic_methods.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/mixed_mode_hierarchy_generic_methods.dart.weak.transformed.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/mixed_mode_hierarchy_generic_methods.dart.weak.transformed.expect
rename to pkg/front_end/testcases/nnbd_mixed/mixed_mode_hierarchy_generic_methods.dart.weak.transformed.expect
diff --git a/pkg/front_end/testcases/nnbd/mixed_mode_hierarchy_generic_methods_lib.dart b/pkg/front_end/testcases/nnbd_mixed/mixed_mode_hierarchy_generic_methods_lib.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/mixed_mode_hierarchy_generic_methods_lib.dart
rename to pkg/front_end/testcases/nnbd_mixed/mixed_mode_hierarchy_generic_methods_lib.dart
diff --git a/pkg/front_end/testcases/nnbd/mixin_from_opt_in.dart b/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/mixin_from_opt_in.dart
rename to pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in.dart
diff --git a/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in.dart.outline.expect b/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in.dart.outline.expect
new file mode 100644
index 0000000..737637b
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in.dart.outline.expect
@@ -0,0 +1,36 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in.dart:5:1: Error: A library can't opt out of non-nullable by default, when in nnbd-strong mode.
+// // @dart=2.6
+// ^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+import "mixin_from_opt_in_lib.dart" as mix;
+
+import "org-dartlang-testcase:///mixin_from_opt_in_lib.dart";
+
+abstract class _Class&Object&Mixin = core::Object with mix::Mixin /*isAnonymousMixin,hasConstConstructor*/ {
+ const synthetic constructor •() → self::_Class&Object&Mixin
+ : super core::Object::•()
+ ;
+}
+class Class extends self::_Class&Object&Mixin {
+ synthetic constructor •() → self::Class
+ ;
+}
+static method main() → dynamic
+ ;
+
+library /*isNonNullableByDefault*/;
+import self as mix;
+import "dart:core" as core;
+
+class Mixin extends core::Object {
+ synthetic constructor •() → mix::Mixin
+ ;
+ method method(core::int? i) → core::int
+ ;
+}
diff --git a/pkg/front_end/testcases/nnbd/mixin_from_opt_in.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in.dart.textual_outline.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/mixin_from_opt_in.dart.textual_outline.expect
rename to pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in.dart.textual_outline.expect
diff --git a/pkg/front_end/testcases/nnbd/mixin_from_opt_in.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in.dart.textual_outline_modelled.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/mixin_from_opt_in.dart.textual_outline_modelled.expect
rename to pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in.dart.textual_outline_modelled.expect
diff --git a/pkg/front_end/testcases/nnbd/mixin_from_opt_in.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in.dart.weak.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/mixin_from_opt_in.dart.weak.expect
rename to pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in.dart.weak.expect
diff --git a/pkg/front_end/testcases/nnbd/mixin_from_opt_in.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in.dart.weak.transformed.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/mixin_from_opt_in.dart.weak.transformed.expect
rename to pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in.dart.weak.transformed.expect
diff --git a/pkg/front_end/testcases/nnbd/mixin_from_opt_in_lib.dart b/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_lib.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/mixin_from_opt_in_lib.dart
rename to pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_lib.dart
diff --git a/pkg/front_end/testcases/nnbd/mixin_from_opt_in_out_in.dart b/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/mixin_from_opt_in_out_in.dart
rename to pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in.dart
diff --git a/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in.dart.outline.expect b/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in.dart.outline.expect
new file mode 100644
index 0000000..6ecb40e
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in.dart.outline.expect
@@ -0,0 +1,304 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in.dart:21:7: Error: Applying the mixin 'Bq' to 'C0' introduces an erroneous override of 'a'.
+// class DwBq0 extends C0 with Bq {}
+// ^^^^^
+// pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in_lib2.dart:12:33: Context: The return type of the method 'Bq.a' is 'List<int? Function(int?)>', which does not match the return type, 'List<int Function(int)>', of the overridden method, 'B.a'.
+// - 'List' is from 'dart:core'.
+// Change to a subtype of 'List<int Function(int)>'.
+// List<int? Function(int?)> get a => [];
+// ^
+// pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in_lib2.dart:6:31: Context: This is the overridden method ('a').
+// List<int Function(int)> get a => [];
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in.dart:21:7: Error: Applying the mixin 'Bq' to 'C0' introduces an erroneous override of 'm'.
+// class DwBq0 extends C0 with Bq {}
+// ^^^^^
+// pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in_lib2.dart:14:23: Context: The return type of the method 'Bq.m' is 'int? Function(int?)', which does not match the return type, 'int Function(int)', of the overridden method, 'B.m'.
+// Change to a subtype of 'int Function(int)'.
+// int? Function(int?) m(int? Function(int?) x) => x;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in_lib2.dart:8:21: Context: This is the overridden method ('m').
+// int Function(int) m(int Function(int) x) => x;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in.dart:30:7: Error: Applying the mixin 'B' to 'C3' introduces an erroneous override of 'a'.
+// class DwB3 extends C3 with B {}
+// ^^^^
+// pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in_lib2.dart:6:31: Context: The return type of the method 'B.a' is 'List<int Function(int)>', which does not match the return type, 'List<int? Function(int?)>', of the overridden method, 'Bq.a'.
+// - 'List' is from 'dart:core'.
+// Change to a subtype of 'List<int? Function(int?)>'.
+// List<int Function(int)> get a => [];
+// ^
+// pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in_lib2.dart:12:33: Context: This is the overridden method ('a').
+// List<int? Function(int?)> get a => [];
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in.dart:30:7: Error: Applying the mixin 'B' to 'C3' introduces an erroneous override of 'm'.
+// class DwB3 extends C3 with B {}
+// ^^^^
+// pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in_lib2.dart:8:21: Context: The return type of the method 'B.m' is 'int Function(int)', which does not match the return type, 'int? Function(int?)', of the overridden method, 'Bq.m'.
+// Change to a subtype of 'int? Function(int?)'.
+// int Function(int) m(int Function(int) x) => x;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in_lib2.dart:14:23: Context: This is the overridden method ('m').
+// int? Function(int?) m(int? Function(int?) x) => x;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in.dart:15:7: Error: The implementation of 'a' in the non-abstract class 'DiBq0' does not conform to its interface.
+// class DiBq0 extends C0 implements Bq {}
+// ^^^^^
+// pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in_lib2.dart:6:31: Context: The return type of the method 'B.a' is 'List<int Function(int)>', which does not match the return type, 'List<int? Function(int?)>', of the overridden method, 'Bq.a'.
+// - 'List' is from 'dart:core'.
+// Change to a subtype of 'List<int? Function(int?)>'.
+// List<int Function(int)> get a => [];
+// ^
+// pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in_lib2.dart:12:33: Context: This is the overridden method ('a').
+// List<int? Function(int?)> get a => [];
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in.dart:15:7: Error: Class 'DiBq0' inherits multiple members named 'a' with incompatible signatures.
+// Try adding a declaration of 'a' to 'DiBq0'.
+// class DiBq0 extends C0 implements Bq {}
+// ^^^^^
+// pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in_lib2.dart:6:31: Context: This is one of the inherited members.
+// List<int Function(int)> get a => [];
+// ^
+// pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in_lib2.dart:12:33: Context: This is one of the inherited members.
+// List<int? Function(int?)> get a => [];
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in.dart:15:7: Error: The implementation of 'm' in the non-abstract class 'DiBq0' does not conform to its interface.
+// class DiBq0 extends C0 implements Bq {}
+// ^^^^^
+// pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in_lib2.dart:8:21: Context: The return type of the method 'B.m' is 'int Function(int)', which does not match the return type, 'int? Function(int?)', of the overridden method, 'Bq.m'.
+// Change to a subtype of 'int? Function(int?)'.
+// int Function(int) m(int Function(int) x) => x;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in_lib2.dart:14:23: Context: This is the overridden method ('m').
+// int? Function(int?) m(int? Function(int?) x) => x;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in.dart:15:7: Error: Class 'DiBq0' inherits multiple members named 'm' with incompatible signatures.
+// Try adding a declaration of 'm' to 'DiBq0'.
+// class DiBq0 extends C0 implements Bq {}
+// ^^^^^
+// pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in_lib2.dart:8:21: Context: This is one of the inherited members.
+// int Function(int) m(int Function(int) x) => x;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in_lib2.dart:14:23: Context: This is one of the inherited members.
+// int? Function(int?) m(int? Function(int?) x) => x;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in.dart:21:7: Error: Class 'C0 with Bq' inherits multiple members named 'a' with incompatible signatures.
+// Try adding a declaration of 'a' to 'C0 with Bq'.
+// class DwBq0 extends C0 with Bq {}
+// ^
+// pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in_lib2.dart:12:33: Context: This is one of the inherited members.
+// List<int? Function(int?)> get a => [];
+// ^
+// pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in_lib2.dart:6:31: Context: This is one of the inherited members.
+// List<int Function(int)> get a => [];
+// ^
+// pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in_lib2.dart:12:33: Context: This is one of the inherited members.
+// List<int? Function(int?)> get a => [];
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in.dart:21:7: Error: Class 'C0 with Bq' inherits multiple members named 'm' with incompatible signatures.
+// Try adding a declaration of 'm' to 'C0 with Bq'.
+// class DwBq0 extends C0 with Bq {}
+// ^
+// pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in_lib2.dart:14:23: Context: This is one of the inherited members.
+// int? Function(int?) m(int? Function(int?) x) => x;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in_lib2.dart:8:21: Context: This is one of the inherited members.
+// int Function(int) m(int Function(int) x) => x;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in_lib2.dart:14:23: Context: This is one of the inherited members.
+// int? Function(int?) m(int? Function(int?) x) => x;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in.dart:24:7: Error: The implementation of 'a' in the non-abstract class 'DiB3' does not conform to its interface.
+// class DiB3 extends C3 implements B {}
+// ^^^^
+// pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in_lib2.dart:12:33: Context: The return type of the method 'Bq.a' is 'List<int? Function(int?)>', which does not match the return type, 'List<int Function(int)>', of the overridden method, 'B.a'.
+// - 'List' is from 'dart:core'.
+// Change to a subtype of 'List<int Function(int)>'.
+// List<int? Function(int?)> get a => [];
+// ^
+// pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in_lib2.dart:6:31: Context: This is the overridden method ('a').
+// List<int Function(int)> get a => [];
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in.dart:24:7: Error: Class 'DiB3' inherits multiple members named 'a' with incompatible signatures.
+// Try adding a declaration of 'a' to 'DiB3'.
+// class DiB3 extends C3 implements B {}
+// ^^^^
+// pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in_lib2.dart:12:33: Context: This is one of the inherited members.
+// List<int? Function(int?)> get a => [];
+// ^
+// pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in_lib2.dart:6:31: Context: This is one of the inherited members.
+// List<int Function(int)> get a => [];
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in.dart:24:7: Error: The implementation of 'm' in the non-abstract class 'DiB3' does not conform to its interface.
+// class DiB3 extends C3 implements B {}
+// ^^^^
+// pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in_lib2.dart:14:23: Context: The return type of the method 'Bq.m' is 'int? Function(int?)', which does not match the return type, 'int Function(int)', of the overridden method, 'B.m'.
+// Change to a subtype of 'int Function(int)'.
+// int? Function(int?) m(int? Function(int?) x) => x;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in_lib2.dart:8:21: Context: This is the overridden method ('m').
+// int Function(int) m(int Function(int) x) => x;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in.dart:24:7: Error: Class 'DiB3' inherits multiple members named 'm' with incompatible signatures.
+// Try adding a declaration of 'm' to 'DiB3'.
+// class DiB3 extends C3 implements B {}
+// ^^^^
+// pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in_lib2.dart:14:23: Context: This is one of the inherited members.
+// int? Function(int?) m(int? Function(int?) x) => x;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in_lib2.dart:8:21: Context: This is one of the inherited members.
+// int Function(int) m(int Function(int) x) => x;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in.dart:30:7: Error: Class 'C3 with B' inherits multiple members named 'a' with incompatible signatures.
+// Try adding a declaration of 'a' to 'C3 with B'.
+// class DwB3 extends C3 with B {}
+// ^
+// pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in_lib2.dart:6:31: Context: This is one of the inherited members.
+// List<int Function(int)> get a => [];
+// ^
+// pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in_lib2.dart:12:33: Context: This is one of the inherited members.
+// List<int? Function(int?)> get a => [];
+// ^
+// pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in_lib2.dart:6:31: Context: This is one of the inherited members.
+// List<int Function(int)> get a => [];
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in.dart:30:7: Error: Class 'C3 with B' inherits multiple members named 'm' with incompatible signatures.
+// Try adding a declaration of 'm' to 'C3 with B'.
+// class DwB3 extends C3 with B {}
+// ^
+// pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in_lib2.dart:8:21: Context: This is one of the inherited members.
+// int Function(int) m(int Function(int) x) => x;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in_lib2.dart:14:23: Context: This is one of the inherited members.
+// int? Function(int?) m(int? Function(int?) x) => x;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in_lib2.dart:8:21: Context: This is one of the inherited members.
+// int Function(int) m(int Function(int) x) => x;
+// ^
+//
+import self as self;
+import "mixin_from_opt_in_out_in_lib1.dart" as mix;
+import "mixin_from_opt_in_out_in_lib2.dart" as mix2;
+
+import "org-dartlang-testcase:///mixin_from_opt_in_out_in_lib1.dart";
+import "org-dartlang-testcase:///mixin_from_opt_in_out_in_lib2.dart";
+
+class DiB0 extends mix::C0 implements mix2::B {
+ synthetic constructor •() → self::DiB0
+ ;
+}
+class DiBq0 extends mix::C0 implements mix2::Bq {
+ synthetic constructor •() → self::DiBq0
+ ;
+}
+abstract class _DwB0&C0&B = mix::C0 with mix2::B /*isAnonymousMixin*/ {
+ synthetic constructor •() → self::_DwB0&C0&B
+ : super mix::C0::•()
+ ;
+}
+class DwB0 extends self::_DwB0&C0&B {
+ synthetic constructor •() → self::DwB0
+ ;
+}
+abstract class _DwBq0&C0&Bq = mix::C0 with mix2::Bq /*isAnonymousMixin*/ {
+ synthetic constructor •() → self::_DwBq0&C0&Bq
+ : super mix::C0::•()
+ ;
+}
+class DwBq0 extends self::_DwBq0&C0&Bq {
+ synthetic constructor •() → self::DwBq0
+ ;
+}
+class DiB3 extends mix::C3 implements mix2::B {
+ synthetic constructor •() → self::DiB3
+ ;
+}
+class DiBq3 extends mix::C3 implements mix2::Bq {
+ synthetic constructor •() → self::DiBq3
+ ;
+}
+abstract class _DwB3&C3&B = mix::C3 with mix2::B /*isAnonymousMixin*/ {
+ synthetic constructor •() → self::_DwB3&C3&B
+ : super mix::C3::•()
+ ;
+}
+class DwB3 extends self::_DwB3&C3&B {
+ synthetic constructor •() → self::DwB3
+ ;
+}
+abstract class _DwBq3&C3&Bq = mix::C3 with mix2::Bq /*isAnonymousMixin*/ {
+ synthetic constructor •() → self::_DwBq3&C3&Bq
+ : super mix::C3::•()
+ ;
+}
+class DwBq3 extends self::_DwBq3&C3&Bq {
+ synthetic constructor •() → self::DwBq3
+ ;
+}
+static method main() → dynamic
+ ;
+
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in_lib1.dart:5:1: Error: A library can't opt out of non-nullable by default, when in nnbd-strong mode.
+// // @dart=2.6
+// ^^^^^^^^^^^^
+//
+import self as mix;
+import "mixin_from_opt_in_out_in_lib2.dart" as mix2;
+
+import "org-dartlang-testcase:///mixin_from_opt_in_out_in_lib2.dart";
+
+class C0 extends mix2::B {
+ synthetic constructor •() → mix::C0
+ ;
+}
+class C3 extends mix2::Bq {
+ synthetic constructor •() → mix::C3
+ ;
+}
+
+library /*isNonNullableByDefault*/;
+import self as mix2;
+import "dart:core" as core;
+
+class B extends core::Object {
+ synthetic constructor •() → mix2::B
+ ;
+ get a() → core::List<(core::int) → core::int>
+ ;
+ set a(core::List<(core::int) → core::int> _) → void
+ ;
+ method m((core::int) → core::int x) → (core::int) → core::int
+ ;
+}
+class Bq extends core::Object {
+ synthetic constructor •() → mix2::Bq
+ ;
+ get a() → core::List<(core::int?) → core::int?>
+ ;
+ set a(core::List<(core::int?) → core::int?> _) → void
+ ;
+ method m((core::int?) → core::int? x) → (core::int?) → core::int?
+ ;
+}
diff --git a/pkg/front_end/testcases/nnbd/mixin_from_opt_in_out_in.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in.dart.textual_outline.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/mixin_from_opt_in_out_in.dart.textual_outline.expect
rename to pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in.dart.textual_outline.expect
diff --git a/pkg/front_end/testcases/nnbd/mixin_from_opt_in_out_in.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in.dart.textual_outline_modelled.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/mixin_from_opt_in_out_in.dart.textual_outline_modelled.expect
rename to pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in.dart.textual_outline_modelled.expect
diff --git a/pkg/front_end/testcases/nnbd/mixin_from_opt_in_out_in.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in.dart.weak.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/mixin_from_opt_in_out_in.dart.weak.expect
rename to pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in.dart.weak.expect
diff --git a/pkg/front_end/testcases/nnbd/mixin_from_opt_in_out_in.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in.dart.weak.transformed.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/mixin_from_opt_in_out_in.dart.weak.transformed.expect
rename to pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in.dart.weak.transformed.expect
diff --git a/pkg/front_end/testcases/nnbd/mixin_from_opt_in_out_in_lib1.dart b/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in_lib1.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/mixin_from_opt_in_out_in_lib1.dart
rename to pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in_lib1.dart
diff --git a/pkg/front_end/testcases/nnbd/mixin_from_opt_in_out_in_lib2.dart b/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in_lib2.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/mixin_from_opt_in_out_in_lib2.dart
rename to pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in_out_in_lib2.dart
diff --git a/pkg/front_end/testcases/nnbd/mixin_from_opt_out.dart b/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_out.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/mixin_from_opt_out.dart
rename to pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_out.dart
diff --git a/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_out.dart.outline.expect b/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_out.dart.outline.expect
new file mode 100644
index 0000000..1f41cf6
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_out.dart.outline.expect
@@ -0,0 +1,36 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+import "mixin_from_opt_out_lib.dart" as mix;
+
+import "org-dartlang-testcase:///mixin_from_opt_out_lib.dart";
+
+abstract class _Class&Object&Mixin = core::Object with mix::Mixin /*isAnonymousMixin,hasConstConstructor*/ {
+ const synthetic constructor •() → self::_Class&Object&Mixin
+ : super core::Object::•()
+ ;
+}
+class Class extends self::_Class&Object&Mixin {
+ synthetic constructor •() → self::Class
+ ;
+}
+static method main() → dynamic
+ ;
+
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_out_lib.dart:5:1: Error: A library can't opt out of non-nullable by default, when in nnbd-strong mode.
+// // @dart=2.6
+// ^^^^^^^^^^^^
+//
+import self as mix;
+import "dart:core" as core;
+
+class Mixin extends core::Object {
+ synthetic constructor •() → mix::Mixin
+ ;
+ method method(core::int i) → core::int
+ ;
+}
diff --git a/pkg/front_end/testcases/nnbd/mixin_from_opt_out.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_out.dart.textual_outline.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/mixin_from_opt_out.dart.textual_outline.expect
rename to pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_out.dart.textual_outline.expect
diff --git a/pkg/front_end/testcases/nnbd/mixin_from_opt_out.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_out.dart.textual_outline_modelled.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/mixin_from_opt_out.dart.textual_outline_modelled.expect
rename to pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_out.dart.textual_outline_modelled.expect
diff --git a/pkg/front_end/testcases/nnbd/mixin_from_opt_out.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_out.dart.weak.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/mixin_from_opt_out.dart.weak.expect
rename to pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_out.dart.weak.expect
diff --git a/pkg/front_end/testcases/nnbd/mixin_from_opt_out.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_out.dart.weak.transformed.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/mixin_from_opt_out.dart.weak.transformed.expect
rename to pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_out.dart.weak.transformed.expect
diff --git a/pkg/front_end/testcases/nnbd/mixin_from_opt_out_lib.dart b/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_out_lib.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/mixin_from_opt_out_lib.dart
rename to pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_out_lib.dart
diff --git a/pkg/front_end/testcases/nnbd/never_opt_out.dart b/pkg/front_end/testcases/nnbd_mixed/never_opt_out.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/never_opt_out.dart
rename to pkg/front_end/testcases/nnbd_mixed/never_opt_out.dart
diff --git a/pkg/front_end/testcases/nnbd_mixed/never_opt_out.dart.outline.expect b/pkg/front_end/testcases/nnbd_mixed/never_opt_out.dart.outline.expect
new file mode 100644
index 0000000..82cb791
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd_mixed/never_opt_out.dart.outline.expect
@@ -0,0 +1,135 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/never_opt_out.dart:5:1: Error: A library can't opt out of non-nullable by default, when in nnbd-strong mode.
+// // @dart=2.6
+// ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd_mixed/never_opt_out.dart:9:7: Error: Field 'optOutNever' should be initialized because its type 'Never' doesn't allow null.
+// Never optOutNever;
+// ^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd_mixed/never_opt_out.dart:68:8: Error: The return type of the method 'B.neverField' is 'Null', which does not match the return type, 'Never', of the overridden method, 'A.neverField'.
+// Change to a subtype of 'Never'.
+// Null neverField;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/never_opt_out_lib.dart:12:9: Context: This is the overridden method ('neverField').
+// Never neverField = throw "Should not reach here";
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/never_opt_out.dart:69:8: Error: The return type of the method 'B.neverMethod' is 'Null', which does not match the return type, 'Never', of the overridden method, 'A.neverMethod'.
+// Change to a subtype of 'Never'.
+// Null neverMethod(Null value) => value;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/never_opt_out_lib.dart:13:9: Context: This is the overridden method ('neverMethod').
+// Never neverMethod(Never value) => value;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/never_opt_out.dart:70:12: Error: The return type of the method 'B.neverProperty' is 'Null', which does not match the return type, 'Never', of the overridden method, 'A.neverProperty'.
+// Change to a subtype of 'Never'.
+// Null get neverProperty => null;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/never_opt_out_lib.dart:14:13: Context: This is the overridden method ('neverProperty').
+// Never get neverProperty => throw "Should not reach here";
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/never_opt_out.dart:85:9: Error: The field 'C.nullField' has type 'Never', which does not match the corresponding type, 'Null', in the overridden setter, 'A.nullField'.
+// Never nullField;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/never_opt_out_lib.dart:17:8: Context: This is the overridden method ('nullField').
+// Null nullField = null;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/never_opt_out.dart:86:26: Error: The parameter 'value' of the method 'C.nullMethod' has type 'Never', which does not match the corresponding type, 'Null', in the overridden method, 'A.nullMethod'.
+// Change to a supertype of 'Null', or, for a covariant parameter, a subtype.
+// Never nullMethod(Never value) => value;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/never_opt_out_lib.dart:18:8: Context: This is the overridden method ('nullMethod').
+// Null nullMethod(Null value) => value;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/never_opt_out.dart:88:31: Error: The parameter 'value' of the method 'C.nullProperty' has type 'Never', which does not match the corresponding type, 'Null', in the overridden method, 'A.nullProperty'.
+// Change to a supertype of 'Null', or, for a covariant parameter, a subtype.
+// void set nullProperty(Never value) {}
+// ^
+// pkg/front_end/testcases/nnbd_mixed/never_opt_out_lib.dart:20:12: Context: This is the overridden method ('nullProperty').
+// void set nullProperty(Null value) {}
+// ^
+//
+import self as self;
+import "never_opt_out_lib.dart" as nev;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///never_opt_out_lib.dart";
+
+class B extends nev::A {
+ field core::Null? neverField;
+ field core::Null? nullField;
+ synthetic constructor •() → self::B
+ ;
+ method neverMethod(core::Null? value) → core::Null?
+ ;
+ get neverProperty() → core::Null?
+ ;
+ set neverProperty(core::Null? value) → void
+ ;
+ method nullMethod(core::Null? value) → core::Null?
+ ;
+ get nullProperty() → core::Null?
+ ;
+ set nullProperty(core::Null? value) → void
+ ;
+}
+class C extends nev::A {
+ field Never neverField;
+ field Never nullField;
+ synthetic constructor •() → self::C
+ ;
+ method neverMethod(Never value) → Never
+ ;
+ get neverProperty() → Never
+ ;
+ set neverProperty(Never value) → void
+ ;
+ method nullMethod(Never value) → Never
+ ;
+ get nullProperty() → Never
+ ;
+ set nullProperty(Never value) → void
+ ;
+}
+static field Never optOutNever;
+static field Never inferredOptOutNever;
+static method main() → dynamic
+ ;
+static method throws(() → void f) → dynamic
+ ;
+
+library /*isNonNullableByDefault*/;
+import self as nev;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///never_opt_out.dart";
+
+class A extends core::Object {
+ field Never neverField;
+ field core::Null? nullField;
+ synthetic constructor •() → nev::A
+ ;
+ method neverMethod(Never value) → Never
+ ;
+ get neverProperty() → Never
+ ;
+ set neverProperty(Never value) → void
+ ;
+ method nullMethod(core::Null? value) → core::Null?
+ ;
+ get nullProperty() → core::Null?
+ ;
+ set nullProperty(core::Null? value) → void
+ ;
+}
+static field Never optInNever;
+static method throwing() → Never
+ ;
diff --git a/pkg/front_end/testcases/nnbd/never_opt_out.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd_mixed/never_opt_out.dart.textual_outline.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/never_opt_out.dart.textual_outline.expect
rename to pkg/front_end/testcases/nnbd_mixed/never_opt_out.dart.textual_outline.expect
diff --git a/pkg/front_end/testcases/nnbd/never_opt_out.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd_mixed/never_opt_out.dart.textual_outline_modelled.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/never_opt_out.dart.textual_outline_modelled.expect
rename to pkg/front_end/testcases/nnbd_mixed/never_opt_out.dart.textual_outline_modelled.expect
diff --git a/pkg/front_end/testcases/nnbd/never_opt_out.dart.strong.expect b/pkg/front_end/testcases/nnbd_mixed/never_opt_out.dart.weak.expect
similarity index 95%
rename from pkg/front_end/testcases/nnbd/never_opt_out.dart.strong.expect
rename to pkg/front_end/testcases/nnbd_mixed/never_opt_out.dart.weak.expect
index 2072456..ad7f2b8 100644
--- a/pkg/front_end/testcases/nnbd/never_opt_out.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/never_opt_out.dart.weak.expect
@@ -122,7 +122,7 @@
//
// Problems in library:
//
-// pkg/front_end/testcases/nnbd/never_opt_out_lib.dart:19:28: Error: A value of type 'Type' can't be assigned to a variable of type 'Null'.
+// pkg/front_end/testcases/nnbd_mixed/never_opt_out_lib.dart:19:28: Error: A value of type 'Type' can't be assigned to a variable of type 'Null'.
// - 'Type' is from 'dart:core'.
// Null get nullProperty => Null;
// ^
@@ -147,7 +147,7 @@
method nullMethod(core::Null? value) → core::Null?
return value;
get nullProperty() → core::Null?
- return let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/nnbd/never_opt_out_lib.dart:19:28: Error: A value of type 'Type' can't be assigned to a variable of type 'Null'.
+ return let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/nnbd_mixed/never_opt_out_lib.dart:19:28: Error: A value of type 'Type' can't be assigned to a variable of type 'Null'.
- 'Type' is from 'dart:core'.
Null get nullProperty => Null;
^" in core::Null? as{TypeError,ForNonNullableByDefault} core::Null?;
diff --git a/pkg/front_end/testcases/nnbd/never_opt_out.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/never_opt_out.dart.weak.transformed.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/never_opt_out.dart.weak.transformed.expect
rename to pkg/front_end/testcases/nnbd_mixed/never_opt_out.dart.weak.transformed.expect
diff --git a/pkg/front_end/testcases/nnbd/never_opt_out_lib.dart b/pkg/front_end/testcases/nnbd_mixed/never_opt_out_lib.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/never_opt_out_lib.dart
rename to pkg/front_end/testcases/nnbd_mixed/never_opt_out_lib.dart
diff --git a/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version.dart b/pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version.dart
rename to pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version.dart
diff --git a/pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version.dart.outline.expect b/pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version.dart.outline.expect
new file mode 100644
index 0000000..230aab9
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version.dart.outline.expect
@@ -0,0 +1,54 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version.dart:1:1: Error: A library can't opt out of non-nullable by default, when in nnbd-strong mode.
+// // @dart=2.4
+// ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version.dart:3:7: Error: Can't use 'late' as a name here.
+// class late {
+// ^^^^
+//
+// pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version.dart:7:7: Error: Can't use 'required' as a name here.
+// class required {
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version.dart:12:8: Error: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+// Try adding the name of the type of the variable or the keyword 'var'.
+// late l = late();
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version.dart:13:3: Error: Can't have modifier 'required' here.
+// Try removing 'required'.
+// required r = required();
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version.dart:13:12: Error: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+// Try adding the name of the type of the variable or the keyword 'var'.
+// required r = required();
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+class late extends core::Object {
+ synthetic constructor •() → self::late
+ ;
+ get g() → core::int
+ ;
+}
+class required extends core::Object {
+ synthetic constructor •() → self::required
+ ;
+ get g() → core::int
+ ;
+}
+class C extends core::Object {
+ late field self::late l;
+ field self::required r;
+ synthetic constructor •() → self::C
+ ;
+}
+static method main() → dynamic
+ ;
diff --git a/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version.dart.textual_outline.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version.dart.textual_outline.expect
rename to pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version.dart.textual_outline.expect
diff --git a/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version.dart.textual_outline_modelled.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version.dart.textual_outline_modelled.expect
rename to pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version.dart.textual_outline_modelled.expect
diff --git a/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version.dart.weak.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version.dart.weak.expect
rename to pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version.dart.weak.expect
diff --git a/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version.dart.weak.transformed.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version.dart.weak.transformed.expect
rename to pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version.dart.weak.transformed.expect
diff --git a/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version_try_to_trick.dart b/pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version_try_to_trick.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version_try_to_trick.dart
rename to pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version_try_to_trick.dart
diff --git a/pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version_try_to_trick.dart.outline.expect b/pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version_try_to_trick.dart.outline.expect
new file mode 100644
index 0000000..713621d
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version_try_to_trick.dart.outline.expect
@@ -0,0 +1,54 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version_try_to_trick.dart:1:1: Error: A library can't opt out of non-nullable by default, when in nnbd-strong mode.
+// // @dart=2.4
+// ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version_try_to_trick.dart:4:7: Error: Can't use 'late' as a name here.
+// class late {
+// ^^^^
+//
+// pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version_try_to_trick.dart:8:7: Error: Can't use 'required' as a name here.
+// class required {
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version_try_to_trick.dart:13:8: Error: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+// Try adding the name of the type of the variable or the keyword 'var'.
+// late l = late();
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version_try_to_trick.dart:14:3: Error: Can't have modifier 'required' here.
+// Try removing 'required'.
+// required r = required();
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version_try_to_trick.dart:14:12: Error: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+// Try adding the name of the type of the variable or the keyword 'var'.
+// required r = required();
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+class late extends core::Object {
+ synthetic constructor •() → self::late
+ ;
+ get g() → core::int
+ ;
+}
+class required extends core::Object {
+ synthetic constructor •() → self::required
+ ;
+ get g() → core::int
+ ;
+}
+class C extends core::Object {
+ late field self::late l;
+ field self::required r;
+ synthetic constructor •() → self::C
+ ;
+}
+static method main() → dynamic
+ ;
diff --git a/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version_try_to_trick.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version_try_to_trick.dart.textual_outline.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version_try_to_trick.dart.textual_outline.expect
rename to pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version_try_to_trick.dart.textual_outline.expect
diff --git a/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version_try_to_trick.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version_try_to_trick.dart.textual_outline_modelled.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version_try_to_trick.dart.textual_outline_modelled.expect
rename to pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version_try_to_trick.dart.textual_outline_modelled.expect
diff --git a/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version_try_to_trick.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version_try_to_trick.dart.weak.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version_try_to_trick.dart.weak.expect
rename to pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version_try_to_trick.dart.weak.expect
diff --git a/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version_try_to_trick.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version_try_to_trick.dart.weak.transformed.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version_try_to_trick.dart.weak.transformed.expect
rename to pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version_try_to_trick.dart.weak.transformed.expect
diff --git a/pkg/front_end/testcases/nnbd/no_null_shorting.dart b/pkg/front_end/testcases/nnbd_mixed/no_null_shorting.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/no_null_shorting.dart
rename to pkg/front_end/testcases/nnbd_mixed/no_null_shorting.dart
diff --git a/pkg/front_end/testcases/nnbd_mixed/no_null_shorting.dart.outline.expect b/pkg/front_end/testcases/nnbd_mixed/no_null_shorting.dart.outline.expect
new file mode 100644
index 0000000..e4f8891
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd_mixed/no_null_shorting.dart.outline.expect
@@ -0,0 +1,38 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/no_null_shorting.dart:5:1: Error: A library can't opt out of non-nullable by default, when in nnbd-strong mode.
+// // @dart=2.6
+// ^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object {
+ field self::Class field;
+ synthetic constructor •() → self::Class
+ ;
+ method method() → self::Class
+ ;
+ operator [](self::Class key) → self::Class
+ ;
+ operator []=(self::Class key, self::Class value) → void
+ ;
+ operator +(core::int value) → self::Class
+ ;
+ operator unary-() → self::Class
+ ;
+}
+static method main() → dynamic
+ ;
+static method propertyAccess(self::Class c) → void
+ ;
+static method indexAccess(self::Class c) → void
+ ;
+static method operatorAccess(self::Class c) → void
+ ;
+static method ifNull(self::Class c) → void
+ ;
+static method throws(() → void f) → void
+ ;
diff --git a/pkg/front_end/testcases/nnbd/no_null_shorting.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd_mixed/no_null_shorting.dart.textual_outline.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/no_null_shorting.dart.textual_outline.expect
rename to pkg/front_end/testcases/nnbd_mixed/no_null_shorting.dart.textual_outline.expect
diff --git a/pkg/front_end/testcases/nnbd/no_null_shorting.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd_mixed/no_null_shorting.dart.textual_outline_modelled.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/no_null_shorting.dart.textual_outline_modelled.expect
rename to pkg/front_end/testcases/nnbd_mixed/no_null_shorting.dart.textual_outline_modelled.expect
diff --git a/pkg/front_end/testcases/nnbd/no_null_shorting.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/no_null_shorting.dart.weak.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/no_null_shorting.dart.weak.expect
rename to pkg/front_end/testcases/nnbd_mixed/no_null_shorting.dart.weak.expect
diff --git a/pkg/front_end/testcases/nnbd/no_null_shorting.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/no_null_shorting.dart.weak.transformed.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/no_null_shorting.dart.weak.transformed.expect
rename to pkg/front_end/testcases/nnbd_mixed/no_null_shorting.dart.weak.transformed.expect
diff --git a/pkg/front_end/testcases/nnbd/no_null_shorting_explicit_extension.dart b/pkg/front_end/testcases/nnbd_mixed/no_null_shorting_explicit_extension.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/no_null_shorting_explicit_extension.dart
rename to pkg/front_end/testcases/nnbd_mixed/no_null_shorting_explicit_extension.dart
diff --git a/pkg/front_end/testcases/nnbd_mixed/no_null_shorting_explicit_extension.dart.outline.expect b/pkg/front_end/testcases/nnbd_mixed/no_null_shorting_explicit_extension.dart.outline.expect
new file mode 100644
index 0000000..0ca48a4
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd_mixed/no_null_shorting_explicit_extension.dart.outline.expect
@@ -0,0 +1,54 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/no_null_shorting_explicit_extension.dart:5:1: Error: A library can't opt out of non-nullable by default, when in nnbd-strong mode.
+// // @dart=2.6
+// ^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object {
+ field self::Class _field;
+ synthetic constructor •() → self::Class
+ ;
+}
+extension Extension on self::Class {
+ get field = self::Extension|get#field;
+ method method = self::Extension|method;
+ tearoff method = self::Extension|get#method;
+ operator [] = self::Extension|[];
+ operator []= = self::Extension|[]=;
+ operator + = self::Extension|+;
+ operator unary- = self::Extension|unary-;
+ set field = self::Extension|set#field;
+}
+static method Extension|get#field(final self::Class #this) → self::Class
+ ;
+static method Extension|set#field(final self::Class #this, self::Class value) → void
+ ;
+static method Extension|method(final self::Class #this) → self::Class
+ ;
+static method Extension|get#method(final self::Class #this) → () → self::Class
+ return () → self::Class => self::Extension|method(#this);
+static method Extension|[](final self::Class #this, self::Class key) → self::Class
+ ;
+static method Extension|[]=(final self::Class #this, self::Class key, self::Class value) → void
+ ;
+static method Extension|+(final self::Class #this, core::int value) → self::Class
+ ;
+static method Extension|unary-(final self::Class #this) → self::Class
+ ;
+static method main() → dynamic
+ ;
+static method propertyAccess(self::Class c) → void
+ ;
+static method indexAccess(self::Class c) → void
+ ;
+static method operatorAccess(self::Class c) → void
+ ;
+static method ifNull(self::Class c) → void
+ ;
+static method throws(() → void f) → void
+ ;
diff --git a/pkg/front_end/testcases/nnbd/no_null_shorting_explicit_extension.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd_mixed/no_null_shorting_explicit_extension.dart.textual_outline.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/no_null_shorting_explicit_extension.dart.textual_outline.expect
rename to pkg/front_end/testcases/nnbd_mixed/no_null_shorting_explicit_extension.dart.textual_outline.expect
diff --git a/pkg/front_end/testcases/nnbd/no_null_shorting_explicit_extension.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/no_null_shorting_explicit_extension.dart.weak.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/no_null_shorting_explicit_extension.dart.weak.expect
rename to pkg/front_end/testcases/nnbd_mixed/no_null_shorting_explicit_extension.dart.weak.expect
diff --git a/pkg/front_end/testcases/nnbd/no_null_shorting_explicit_extension.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/no_null_shorting_explicit_extension.dart.weak.transformed.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/no_null_shorting_explicit_extension.dart.weak.transformed.expect
rename to pkg/front_end/testcases/nnbd_mixed/no_null_shorting_explicit_extension.dart.weak.transformed.expect
diff --git a/pkg/front_end/testcases/nnbd/no_null_shorting_extension.dart b/pkg/front_end/testcases/nnbd_mixed/no_null_shorting_extension.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/no_null_shorting_extension.dart
rename to pkg/front_end/testcases/nnbd_mixed/no_null_shorting_extension.dart
diff --git a/pkg/front_end/testcases/nnbd_mixed/no_null_shorting_extension.dart.outline.expect b/pkg/front_end/testcases/nnbd_mixed/no_null_shorting_extension.dart.outline.expect
new file mode 100644
index 0000000..1b95bad
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd_mixed/no_null_shorting_extension.dart.outline.expect
@@ -0,0 +1,54 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/no_null_shorting_extension.dart:5:1: Error: A library can't opt out of non-nullable by default, when in nnbd-strong mode.
+// // @dart=2.6
+// ^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object {
+ field self::Class _field;
+ synthetic constructor •() → self::Class
+ ;
+}
+extension Extension on self::Class {
+ get field = self::Extension|get#field;
+ method method = self::Extension|method;
+ tearoff method = self::Extension|get#method;
+ operator [] = self::Extension|[];
+ operator []= = self::Extension|[]=;
+ operator + = self::Extension|+;
+ operator unary- = self::Extension|unary-;
+ set field = self::Extension|set#field;
+}
+static method Extension|get#field(final self::Class #this) → self::Class
+ ;
+static method Extension|set#field(final self::Class #this, self::Class value) → void
+ ;
+static method Extension|method(final self::Class #this) → self::Class
+ ;
+static method Extension|get#method(final self::Class #this) → () → self::Class
+ return () → self::Class => self::Extension|method(#this);
+static method Extension|[](final self::Class #this, self::Class key) → self::Class
+ ;
+static method Extension|[]=(final self::Class #this, self::Class key, self::Class value) → void
+ ;
+static method Extension|+(final self::Class #this, core::int value) → self::Class
+ ;
+static method Extension|unary-(final self::Class #this) → self::Class
+ ;
+static method main() → dynamic
+ ;
+static method propertyAccess(self::Class c) → void
+ ;
+static method indexAccess(self::Class c) → void
+ ;
+static method operatorAccess(self::Class c) → void
+ ;
+static method ifNull(self::Class c) → void
+ ;
+static method throws(() → void f) → void
+ ;
diff --git a/pkg/front_end/testcases/nnbd/no_null_shorting_extension.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd_mixed/no_null_shorting_extension.dart.textual_outline.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/no_null_shorting_extension.dart.textual_outline.expect
rename to pkg/front_end/testcases/nnbd_mixed/no_null_shorting_extension.dart.textual_outline.expect
diff --git a/pkg/front_end/testcases/nnbd/no_null_shorting_extension.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/no_null_shorting_extension.dart.weak.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/no_null_shorting_extension.dart.weak.expect
rename to pkg/front_end/testcases/nnbd_mixed/no_null_shorting_extension.dart.weak.expect
diff --git a/pkg/front_end/testcases/nnbd/no_null_shorting_extension.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/no_null_shorting_extension.dart.weak.transformed.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/no_null_shorting_extension.dart.weak.transformed.expect
rename to pkg/front_end/testcases/nnbd_mixed/no_null_shorting_extension.dart.weak.transformed.expect
diff --git a/pkg/front_end/testcases/nnbd/nsm_from_opt_in.dart b/pkg/front_end/testcases/nnbd_mixed/nsm_from_opt_in.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/nsm_from_opt_in.dart
rename to pkg/front_end/testcases/nnbd_mixed/nsm_from_opt_in.dart
diff --git a/pkg/front_end/testcases/nnbd_mixed/nsm_from_opt_in.dart.outline.expect b/pkg/front_end/testcases/nnbd_mixed/nsm_from_opt_in.dart.outline.expect
new file mode 100644
index 0000000..df852ba
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd_mixed/nsm_from_opt_in.dart.outline.expect
@@ -0,0 +1,93 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/nsm_from_opt_in.dart:5:1: Error: A library can't opt out of non-nullable by default, when in nnbd-strong mode.
+// // @dart=2.6
+// ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd_mixed/nsm_from_opt_in.dart:16:16: Error: Class 'B2' inherits multiple members named 'method' with incompatible signatures.
+// Try adding a declaration of 'method' to 'B2'.
+// abstract class B2 extends A implements C2 {
+// ^^
+// pkg/front_end/testcases/nnbd_mixed/nsm_from_opt_in_lib.dart:6:7: Context: This is one of the inherited members.
+// int method(int? i) => i ?? 0;
+// ^^^^^^
+// pkg/front_end/testcases/nnbd_mixed/nsm_from_opt_in.dart:24:7: Context: This is one of the inherited members.
+// int method(int i, {optional});
+// ^^^^^^
+//
+// pkg/front_end/testcases/nnbd_mixed/nsm_from_opt_in.dart:16:16: Error: Class 'B2' inherits multiple members named 'genericMethod2' with incompatible signatures.
+// Try adding a declaration of 'genericMethod2' to 'B2'.
+// abstract class B2 extends A implements C2 {
+// ^^
+// pkg/front_end/testcases/nnbd_mixed/nsm_from_opt_in_lib.dart:8:5: Context: This is one of the inherited members.
+// T genericMethod2<T extends Object?>(T t) => t;
+// ^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd_mixed/nsm_from_opt_in.dart:26:5: Context: This is one of the inherited members.
+// T genericMethod2<T extends Object>(T t);
+// ^^^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+import "nsm_from_opt_in_lib.dart" as nsm;
+
+import "org-dartlang-testcase:///nsm_from_opt_in_lib.dart";
+
+abstract class A2 extends core::Object implements nsm::A {
+ synthetic constructor •() → self::A2
+ ;
+ @core::override
+ method noSuchMethod(core::Invocation invocation) → dynamic
+ ;
+}
+abstract class B2 extends nsm::A implements self::C2 {
+ synthetic constructor •() → self::B2
+ ;
+ @core::override
+ method noSuchMethod(core::Invocation invocation) → dynamic
+ ;
+}
+abstract class C2 extends core::Object {
+ synthetic constructor •() → self::C2
+ ;
+ abstract method method(core::int i, {dynamic optional}) → core::int;
+ abstract method genericMethod1<T extends core::Object? = dynamic>(self::C2::genericMethod1::T% t) → self::C2::genericMethod1::T%;
+ abstract method genericMethod2<T extends core::Object = core::Object>(self::C2::genericMethod2::T t) → self::C2::genericMethod2::T;
+ abstract method genericMethod3<T extends core::Object = core::Object>(self::C2::genericMethod3::T t) → self::C2::genericMethod3::T;
+}
+static method main() → dynamic
+ ;
+
+library /*isNonNullableByDefault*/;
+import self as nsm;
+import "dart:core" as core;
+
+class A extends core::Object {
+ synthetic constructor •() → nsm::A
+ ;
+ method method(core::int? i) → core::int
+ ;
+ method genericMethod1<T extends core::Object? = dynamic>(nsm::A::genericMethod1::T% t) → nsm::A::genericMethod1::T%
+ ;
+ method genericMethod2<T extends core::Object? = core::Object?>(nsm::A::genericMethod2::T% t) → nsm::A::genericMethod2::T%
+ ;
+ method genericMethod3<T extends core::Object = core::Object>(nsm::A::genericMethod3::T t) → nsm::A::genericMethod3::T
+ ;
+}
+abstract class B1 extends nsm::A implements nsm::C1 {
+ synthetic constructor •() → nsm::B1
+ ;
+ @core::override
+ method noSuchMethod(core::Invocation invocation) → dynamic
+ ;
+ abstract forwarding-stub method method(core::int? i, {dynamic optional}) → core::int;
+}
+abstract class C1 extends core::Object {
+ synthetic constructor •() → nsm::C1
+ ;
+ abstract method method(core::int? i, {dynamic optional}) → core::int;
+ abstract method genericMethod1<T extends core::Object? = dynamic>(nsm::C1::genericMethod1::T% t) → nsm::C1::genericMethod1::T%;
+ abstract method genericMethod2<T extends core::Object? = core::Object?>(nsm::C1::genericMethod2::T% t) → nsm::C1::genericMethod2::T%;
+ abstract method genericMethod3<T extends core::Object = core::Object>(nsm::C1::genericMethod3::T t) → nsm::C1::genericMethod3::T;
+}
diff --git a/pkg/front_end/testcases/nnbd/nsm_from_opt_in.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd_mixed/nsm_from_opt_in.dart.textual_outline.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/nsm_from_opt_in.dart.textual_outline.expect
rename to pkg/front_end/testcases/nnbd_mixed/nsm_from_opt_in.dart.textual_outline.expect
diff --git a/pkg/front_end/testcases/nnbd/nsm_from_opt_in.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd_mixed/nsm_from_opt_in.dart.textual_outline_modelled.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/nsm_from_opt_in.dart.textual_outline_modelled.expect
rename to pkg/front_end/testcases/nnbd_mixed/nsm_from_opt_in.dart.textual_outline_modelled.expect
diff --git a/pkg/front_end/testcases/nnbd/nsm_from_opt_in.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/nsm_from_opt_in.dart.weak.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/nsm_from_opt_in.dart.weak.expect
rename to pkg/front_end/testcases/nnbd_mixed/nsm_from_opt_in.dart.weak.expect
diff --git a/pkg/front_end/testcases/nnbd/nsm_from_opt_in.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/nsm_from_opt_in.dart.weak.transformed.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/nsm_from_opt_in.dart.weak.transformed.expect
rename to pkg/front_end/testcases/nnbd_mixed/nsm_from_opt_in.dart.weak.transformed.expect
diff --git a/pkg/front_end/testcases/nnbd/nsm_from_opt_in_lib.dart b/pkg/front_end/testcases/nnbd_mixed/nsm_from_opt_in_lib.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/nsm_from_opt_in_lib.dart
rename to pkg/front_end/testcases/nnbd_mixed/nsm_from_opt_in_lib.dart
diff --git a/pkg/front_end/testcases/nnbd/opt_out.dart b/pkg/front_end/testcases/nnbd_mixed/opt_out.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/opt_out.dart
rename to pkg/front_end/testcases/nnbd_mixed/opt_out.dart
diff --git a/pkg/front_end/testcases/nnbd_mixed/opt_out.dart.outline.expect b/pkg/front_end/testcases/nnbd_mixed/opt_out.dart.outline.expect
new file mode 100644
index 0000000..518b5fc
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd_mixed/opt_out.dart.outline.expect
@@ -0,0 +1,71 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/opt_out.dart:16:11: Error: Can't create typedef from nullable type.
+// typedef F = void Function()?;
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///opt_out_lib.dart";
+
+typedef F = invalid-type;
+class A<T extends core::Object? = dynamic> extends core::Object {
+ late field core::int field;
+ synthetic constructor •() → self::A<self::A::T%>
+ ;
+}
+class B extends self::A<core::String?> {
+ synthetic constructor •() → self::B
+ ;
+}
+static field core::List<core::String?> l;
+static field core::String? s;
+static field core::String t;
+late static field core::int field;
+static method method(() →? void f, {required core::int a}) → void
+ ;
+static method main() → dynamic
+ ;
+static method noErrors() → dynamic
+ ;
+
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart:5:1: Error: A library can't opt out of non-nullable by default, when in nnbd-strong mode.
+// // @dart=2.5
+// ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart:20:11: Error: Can't create typedef from nullable type.
+// typedef F = void Function()?;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart:28:29: Error: Optional parameter 'a' should have a default value because its type 'int' doesn't allow null.
+// void method(void f()?, {int a}) {}
+// ^
+//
+import self as self2;
+import "dart:core" as core;
+
+typedef F = invalid-type;
+class A<T extends core::Object? = dynamic> extends core::Object {
+ field core::int field;
+ synthetic constructor •() → self2::A<self2::A::T%>
+ ;
+}
+class B extends self2::A<core::String?> {
+ synthetic constructor •() → self2::B
+ ;
+}
+static field core::List<core::String?> l;
+static field core::String? s;
+static field core::String t;
+static field core::int field;
+static method method(() →? void f, {core::int a}) → void
+ ;
+static method errors() → dynamic
+ ;
diff --git a/pkg/front_end/testcases/nnbd/opt_out.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd_mixed/opt_out.dart.textual_outline.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/opt_out.dart.textual_outline.expect
rename to pkg/front_end/testcases/nnbd_mixed/opt_out.dart.textual_outline.expect
diff --git a/pkg/front_end/testcases/nnbd_mixed/opt_out.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/opt_out.dart.weak.expect
new file mode 100644
index 0000000..f5cfaf9
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd_mixed/opt_out.dart.weak.expect
@@ -0,0 +1,178 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/opt_out.dart:16:11: Error: Can't create typedef from nullable type.
+// typedef F = void Function()?;
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///opt_out_lib.dart";
+
+typedef F = invalid-type;
+class A<T extends core::Object? = dynamic> extends core::Object {
+ late field core::int field = 42;
+ synthetic constructor •() → self::A<self::A::T%>
+ : super core::Object::•()
+ ;
+}
+class B extends self::A<core::String?> {
+ synthetic constructor •() → self::B
+ : super self::A::•()
+ ;
+}
+static field core::List<core::String?> l = <core::String?>[];
+static field core::String? s = null;
+static field core::String t = self::s!;
+late static field core::int field = 42;
+static method method(() →? void f, {required core::int a = #C1}) → void {}
+static method main() → dynamic {}
+static method noErrors() → dynamic {
+ late core::int local = 42;
+ core::String? s = null;
+ dynamic c;
+ let final dynamic #t1 = c in #t1.{core::Object::==}(null) ?{dynamic} null : let final void #t2 = #t1.f in #t1;
+ let final dynamic #t3 = c in #t3.{core::Object::==}(null) ?{dynamic} null : #t3.[](0);
+}
+
+library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart:18:25: Error: Null safety features are disabled for this library.
+// Try removing the `@dart=` annotation or setting the language version higher.
+// class B extends A<String?> {}
+// ^
+// pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
+// // @dart=2.5
+// ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart:20:28: Error: Null safety features are disabled for this library.
+// Try removing the `@dart=` annotation or setting the language version higher.
+// typedef F = void Function()?;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
+// // @dart=2.5
+// ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart:20:11: Error: Can't create typedef from nullable type.
+// typedef F = void Function()?;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart:22:12: Error: Null safety features are disabled for this library.
+// Try removing the `@dart=` annotation or setting the language version higher.
+// List<String?> l = [];
+// ^
+// pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
+// // @dart=2.5
+// ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart:23:7: Error: Null safety features are disabled for this library.
+// Try removing the `@dart=` annotation or setting the language version higher.
+// String? s = null;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
+// // @dart=2.5
+// ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart:28:21: Error: Null safety features are disabled for this library.
+// Try removing the `@dart=` annotation or setting the language version higher.
+// void method(void f()?, {int a}) {}
+// ^
+// pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
+// // @dart=2.5
+// ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart:24:10: Error: Null safety features are disabled for this library.
+// Try removing the `@dart=` annotation or setting the language version higher.
+// var t = s!;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
+// // @dart=2.5
+// ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart:32:14: Error: Null safety features are disabled for this library.
+// Try removing the `@dart=` annotation or setting the language version higher.
+// List<String?> l = null;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
+// // @dart=2.5
+// ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart:33:9: Error: Null safety features are disabled for this library.
+// Try removing the `@dart=` annotation or setting the language version higher.
+// String? s = null;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
+// // @dart=2.5
+// ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart:34:12: Error: Null safety features are disabled for this library.
+// Try removing the `@dart=` annotation or setting the language version higher.
+// var t = s!;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
+// // @dart=2.5
+// ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart:36:6: Error: Expected an identifier, but got '.'.
+// c?..f;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart:36:6: Error: Expected an identifier, but got ''.
+// c?..f;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart:37:6: Error: Expected an identifier, but got '['.
+// c?.[0];
+// ^
+//
+import self as self2;
+import "dart:core" as core;
+
+typedef F = invalid-type;
+class A<T extends core::Object* = dynamic> extends core::Object {
+ field core::int* field = 42;
+ synthetic constructor •() → self2::A<self2::A::T*>*
+ : super core::Object::•()
+ ;
+ abstract member-signature get _identityHashCode() → core::int*;
+ abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+ abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+ abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+ abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+ abstract member-signature operator ==(dynamic other) → core::bool*;
+ abstract member-signature get hashCode() → core::int*;
+ abstract member-signature method toString() → core::String*;
+ abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+ abstract member-signature get runtimeType() → core::Type*;
+}
+class B extends self2::A<core::String?> {
+ synthetic constructor •() → self2::B*
+ : super self2::A::•()
+ ;
+}
+static field core::List<core::String?>* l = <core::String*>[];
+static field core::String? s = null;
+static field core::String* t = self2::s!;
+static field core::int* field = 42;
+static method method(() →? void f, {core::int* a = #C1}) → void {}
+static method errors() → dynamic {
+ core::int* local = 42;
+ core::List<core::String?>* l = null;
+ core::String? s = null;
+ core::String* t = s!;
+ dynamic c;
+ invalid-expression "pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart:36:6: Error: Expected an identifier, but got ''.
+ c?..f;
+ ^".f;
+ invalid-expression "pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart:37:6: Error: Expected an identifier, but got '['.
+ c?.[0];
+ ^";
+}
+
+constants {
+ #C1 = null
+}
diff --git a/pkg/front_end/testcases/nnbd_mixed/opt_out.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/opt_out.dart.weak.transformed.expect
new file mode 100644
index 0000000..f5cfaf9
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd_mixed/opt_out.dart.weak.transformed.expect
@@ -0,0 +1,178 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/opt_out.dart:16:11: Error: Can't create typedef from nullable type.
+// typedef F = void Function()?;
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///opt_out_lib.dart";
+
+typedef F = invalid-type;
+class A<T extends core::Object? = dynamic> extends core::Object {
+ late field core::int field = 42;
+ synthetic constructor •() → self::A<self::A::T%>
+ : super core::Object::•()
+ ;
+}
+class B extends self::A<core::String?> {
+ synthetic constructor •() → self::B
+ : super self::A::•()
+ ;
+}
+static field core::List<core::String?> l = <core::String?>[];
+static field core::String? s = null;
+static field core::String t = self::s!;
+late static field core::int field = 42;
+static method method(() →? void f, {required core::int a = #C1}) → void {}
+static method main() → dynamic {}
+static method noErrors() → dynamic {
+ late core::int local = 42;
+ core::String? s = null;
+ dynamic c;
+ let final dynamic #t1 = c in #t1.{core::Object::==}(null) ?{dynamic} null : let final void #t2 = #t1.f in #t1;
+ let final dynamic #t3 = c in #t3.{core::Object::==}(null) ?{dynamic} null : #t3.[](0);
+}
+
+library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart:18:25: Error: Null safety features are disabled for this library.
+// Try removing the `@dart=` annotation or setting the language version higher.
+// class B extends A<String?> {}
+// ^
+// pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
+// // @dart=2.5
+// ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart:20:28: Error: Null safety features are disabled for this library.
+// Try removing the `@dart=` annotation or setting the language version higher.
+// typedef F = void Function()?;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
+// // @dart=2.5
+// ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart:20:11: Error: Can't create typedef from nullable type.
+// typedef F = void Function()?;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart:22:12: Error: Null safety features are disabled for this library.
+// Try removing the `@dart=` annotation or setting the language version higher.
+// List<String?> l = [];
+// ^
+// pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
+// // @dart=2.5
+// ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart:23:7: Error: Null safety features are disabled for this library.
+// Try removing the `@dart=` annotation or setting the language version higher.
+// String? s = null;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
+// // @dart=2.5
+// ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart:28:21: Error: Null safety features are disabled for this library.
+// Try removing the `@dart=` annotation or setting the language version higher.
+// void method(void f()?, {int a}) {}
+// ^
+// pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
+// // @dart=2.5
+// ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart:24:10: Error: Null safety features are disabled for this library.
+// Try removing the `@dart=` annotation or setting the language version higher.
+// var t = s!;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
+// // @dart=2.5
+// ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart:32:14: Error: Null safety features are disabled for this library.
+// Try removing the `@dart=` annotation or setting the language version higher.
+// List<String?> l = null;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
+// // @dart=2.5
+// ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart:33:9: Error: Null safety features are disabled for this library.
+// Try removing the `@dart=` annotation or setting the language version higher.
+// String? s = null;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
+// // @dart=2.5
+// ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart:34:12: Error: Null safety features are disabled for this library.
+// Try removing the `@dart=` annotation or setting the language version higher.
+// var t = s!;
+// ^
+// pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
+// // @dart=2.5
+// ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart:36:6: Error: Expected an identifier, but got '.'.
+// c?..f;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart:36:6: Error: Expected an identifier, but got ''.
+// c?..f;
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart:37:6: Error: Expected an identifier, but got '['.
+// c?.[0];
+// ^
+//
+import self as self2;
+import "dart:core" as core;
+
+typedef F = invalid-type;
+class A<T extends core::Object* = dynamic> extends core::Object {
+ field core::int* field = 42;
+ synthetic constructor •() → self2::A<self2::A::T*>*
+ : super core::Object::•()
+ ;
+ abstract member-signature get _identityHashCode() → core::int*;
+ abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+ abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+ abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+ abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+ abstract member-signature operator ==(dynamic other) → core::bool*;
+ abstract member-signature get hashCode() → core::int*;
+ abstract member-signature method toString() → core::String*;
+ abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+ abstract member-signature get runtimeType() → core::Type*;
+}
+class B extends self2::A<core::String?> {
+ synthetic constructor •() → self2::B*
+ : super self2::A::•()
+ ;
+}
+static field core::List<core::String?>* l = <core::String*>[];
+static field core::String? s = null;
+static field core::String* t = self2::s!;
+static field core::int* field = 42;
+static method method(() →? void f, {core::int* a = #C1}) → void {}
+static method errors() → dynamic {
+ core::int* local = 42;
+ core::List<core::String?>* l = null;
+ core::String? s = null;
+ core::String* t = s!;
+ dynamic c;
+ invalid-expression "pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart:36:6: Error: Expected an identifier, but got ''.
+ c?..f;
+ ^".f;
+ invalid-expression "pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart:37:6: Error: Expected an identifier, but got '['.
+ c?.[0];
+ ^";
+}
+
+constants {
+ #C1 = null
+}
diff --git a/pkg/front_end/testcases/nnbd/opt_out_lib.dart b/pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/opt_out_lib.dart
rename to pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart
diff --git a/pkg/front_end/testcases/nnbd/regress_null_aware.dart b/pkg/front_end/testcases/nnbd_mixed/regress_null_aware.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/regress_null_aware.dart
rename to pkg/front_end/testcases/nnbd_mixed/regress_null_aware.dart
diff --git a/pkg/front_end/testcases/nnbd_mixed/regress_null_aware.dart.outline.expect b/pkg/front_end/testcases/nnbd_mixed/regress_null_aware.dart.outline.expect
new file mode 100644
index 0000000..87cde45
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd_mixed/regress_null_aware.dart.outline.expect
@@ -0,0 +1,20 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/regress_null_aware.dart:7:1: Error: A library can't opt out of non-nullable by default, when in nnbd-strong mode.
+// // @dart=2.6
+// ^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object {
+ field core::Map<core::String, core::Set<core::String>> map;
+ synthetic constructor •() → self::Class
+ ;
+ method method(core::String node, core::Set<core::String> set) → core::List<core::String>
+ ;
+}
+static method main(dynamic args) → dynamic
+ ;
diff --git a/pkg/front_end/testcases/nnbd/regress_null_aware.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd_mixed/regress_null_aware.dart.textual_outline.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/regress_null_aware.dart.textual_outline.expect
rename to pkg/front_end/testcases/nnbd_mixed/regress_null_aware.dart.textual_outline.expect
diff --git a/pkg/front_end/testcases/nnbd/regress_null_aware.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd_mixed/regress_null_aware.dart.textual_outline_modelled.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/regress_null_aware.dart.textual_outline_modelled.expect
rename to pkg/front_end/testcases/nnbd_mixed/regress_null_aware.dart.textual_outline_modelled.expect
diff --git a/pkg/front_end/testcases/nnbd/regress_null_aware.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/regress_null_aware.dart.weak.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/regress_null_aware.dart.weak.expect
rename to pkg/front_end/testcases/nnbd_mixed/regress_null_aware.dart.weak.expect
diff --git a/pkg/front_end/testcases/nnbd/regress_null_aware.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/regress_null_aware.dart.weak.transformed.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/regress_null_aware.dart.weak.transformed.expect
rename to pkg/front_end/testcases/nnbd_mixed/regress_null_aware.dart.weak.transformed.expect
diff --git a/pkg/front_end/testcases/nnbd/required_name_override.dart b/pkg/front_end/testcases/nnbd_mixed/required_name_override.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/required_name_override.dart
rename to pkg/front_end/testcases/nnbd_mixed/required_name_override.dart
diff --git a/pkg/front_end/testcases/nnbd_mixed/required_name_override.dart.outline.expect b/pkg/front_end/testcases/nnbd_mixed/required_name_override.dart.outline.expect
new file mode 100644
index 0000000..f629b08
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd_mixed/required_name_override.dart.outline.expect
@@ -0,0 +1,73 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/required_name_override.dart:13:36: Error: The required named parameter 'i' in method 'A.test_default' is not required in overridden method 'B.test_default'.
+// void test_default({required int? i}) {}
+// ^
+// pkg/front_end/testcases/nnbd_mixed/required_name_override.dart:8:8: Context: This is the overridden method ('test_default').
+// void test_default({int? i}) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/required_name_override.dart:14:39: Error: The required named parameter 'i' in method 'A.test_nondefault' is not required in overridden method 'B.test_nondefault'.
+// void test_nondefault({required int? i}) {}
+// ^
+// pkg/front_end/testcases/nnbd_mixed/required_name_override.dart:9:8: Context: This is the overridden method ('test_nondefault').
+// void test_nondefault({int? i = 1}) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd_mixed/required_name_override.dart:15:35: Error: The required named parameter 'i' in method 'A.test_legacy' is not required in overridden method 'C.test_legacy'.
+// void test_legacy({required int? i}) {}
+// ^
+// pkg/front_end/testcases/nnbd_mixed/required_name_override_lib.dart:8:8: Context: This is the overridden method ('test_legacy').
+// void test_legacy({int i}) {}
+// ^
+//
+import self as self;
+import "dart:core" as core;
+import "required_name_override_lib.dart" as req;
+
+import "org-dartlang-testcase:///required_name_override_lib.dart";
+
+class B extends core::Object {
+ synthetic constructor •() → self::B
+ ;
+ method test_default({core::int? i}) → void
+ ;
+ method test_nondefault({core::int? i = 1}) → void
+ ;
+}
+class A extends self::B implements req::C {
+ synthetic constructor •() → self::A
+ ;
+ method test_default({required core::int? i}) → void
+ ;
+ method test_nondefault({required core::int? i}) → void
+ ;
+ method test_legacy({required core::int? i}) → void
+ ;
+}
+static method main() → dynamic
+ ;
+
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/required_name_override_lib.dart:5:1: Error: A library can't opt out of non-nullable by default, when in nnbd-strong mode.
+// // @dart=2.5
+// ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd_mixed/required_name_override_lib.dart:8:25: Error: Optional parameter 'i' should have a default value because its type 'int' doesn't allow null.
+// void test_legacy({int i}) {}
+// ^
+//
+import self as req;
+import "dart:core" as core;
+
+class C extends core::Object {
+ synthetic constructor •() → req::C
+ ;
+ method test_legacy({core::int i}) → void
+ ;
+}
diff --git a/pkg/front_end/testcases/nnbd/required_name_override.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd_mixed/required_name_override.dart.textual_outline.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/required_name_override.dart.textual_outline.expect
rename to pkg/front_end/testcases/nnbd_mixed/required_name_override.dart.textual_outline.expect
diff --git a/pkg/front_end/testcases/nnbd/required_name_override.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd_mixed/required_name_override.dart.textual_outline_modelled.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/required_name_override.dart.textual_outline_modelled.expect
rename to pkg/front_end/testcases/nnbd_mixed/required_name_override.dart.textual_outline_modelled.expect
diff --git a/pkg/front_end/testcases/nnbd/required_name_override.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/required_name_override.dart.weak.expect
similarity index 72%
rename from pkg/front_end/testcases/nnbd/required_name_override.dart.weak.expect
rename to pkg/front_end/testcases/nnbd_mixed/required_name_override.dart.weak.expect
index 047c406..2d1b6db 100644
--- a/pkg/front_end/testcases/nnbd/required_name_override.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/required_name_override.dart.weak.expect
@@ -2,24 +2,24 @@
//
// Problems in library:
//
-// pkg/front_end/testcases/nnbd/required_name_override.dart:13:36: Error: The required named parameter 'i' in method 'A.test_default' is not required in overridden method 'B.test_default'.
+// pkg/front_end/testcases/nnbd_mixed/required_name_override.dart:13:36: Error: The required named parameter 'i' in method 'A.test_default' is not required in overridden method 'B.test_default'.
// void test_default({required int? i}) {}
// ^
-// pkg/front_end/testcases/nnbd/required_name_override.dart:8:8: Context: This is the overridden method ('test_default').
+// pkg/front_end/testcases/nnbd_mixed/required_name_override.dart:8:8: Context: This is the overridden method ('test_default').
// void test_default({int? i}) {}
// ^
//
-// pkg/front_end/testcases/nnbd/required_name_override.dart:14:39: Error: The required named parameter 'i' in method 'A.test_nondefault' is not required in overridden method 'B.test_nondefault'.
+// pkg/front_end/testcases/nnbd_mixed/required_name_override.dart:14:39: Error: The required named parameter 'i' in method 'A.test_nondefault' is not required in overridden method 'B.test_nondefault'.
// void test_nondefault({required int? i}) {}
// ^
-// pkg/front_end/testcases/nnbd/required_name_override.dart:9:8: Context: This is the overridden method ('test_nondefault').
+// pkg/front_end/testcases/nnbd_mixed/required_name_override.dart:9:8: Context: This is the overridden method ('test_nondefault').
// void test_nondefault({int? i = 1}) {}
// ^
//
-// pkg/front_end/testcases/nnbd/required_name_override.dart:15:35: Error: The required named parameter 'i' in method 'A.test_legacy' is not required in overridden method 'C.test_legacy'.
+// pkg/front_end/testcases/nnbd_mixed/required_name_override.dart:15:35: Error: The required named parameter 'i' in method 'A.test_legacy' is not required in overridden method 'C.test_legacy'.
// void test_legacy({required int? i}) {}
// ^
-// pkg/front_end/testcases/nnbd/required_name_override_lib.dart:8:8: Context: This is the overridden method ('test_legacy').
+// pkg/front_end/testcases/nnbd_mixed/required_name_override_lib.dart:8:8: Context: This is the overridden method ('test_legacy').
// void test_legacy({int i}) {}
// ^
//
diff --git a/pkg/front_end/testcases/nnbd/required_name_override.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/required_name_override.dart.weak.transformed.expect
similarity index 72%
rename from pkg/front_end/testcases/nnbd/required_name_override.dart.strong.transformed.expect
rename to pkg/front_end/testcases/nnbd_mixed/required_name_override.dart.weak.transformed.expect
index 047c406..2d1b6db 100644
--- a/pkg/front_end/testcases/nnbd/required_name_override.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/required_name_override.dart.weak.transformed.expect
@@ -2,24 +2,24 @@
//
// Problems in library:
//
-// pkg/front_end/testcases/nnbd/required_name_override.dart:13:36: Error: The required named parameter 'i' in method 'A.test_default' is not required in overridden method 'B.test_default'.
+// pkg/front_end/testcases/nnbd_mixed/required_name_override.dart:13:36: Error: The required named parameter 'i' in method 'A.test_default' is not required in overridden method 'B.test_default'.
// void test_default({required int? i}) {}
// ^
-// pkg/front_end/testcases/nnbd/required_name_override.dart:8:8: Context: This is the overridden method ('test_default').
+// pkg/front_end/testcases/nnbd_mixed/required_name_override.dart:8:8: Context: This is the overridden method ('test_default').
// void test_default({int? i}) {}
// ^
//
-// pkg/front_end/testcases/nnbd/required_name_override.dart:14:39: Error: The required named parameter 'i' in method 'A.test_nondefault' is not required in overridden method 'B.test_nondefault'.
+// pkg/front_end/testcases/nnbd_mixed/required_name_override.dart:14:39: Error: The required named parameter 'i' in method 'A.test_nondefault' is not required in overridden method 'B.test_nondefault'.
// void test_nondefault({required int? i}) {}
// ^
-// pkg/front_end/testcases/nnbd/required_name_override.dart:9:8: Context: This is the overridden method ('test_nondefault').
+// pkg/front_end/testcases/nnbd_mixed/required_name_override.dart:9:8: Context: This is the overridden method ('test_nondefault').
// void test_nondefault({int? i = 1}) {}
// ^
//
-// pkg/front_end/testcases/nnbd/required_name_override.dart:15:35: Error: The required named parameter 'i' in method 'A.test_legacy' is not required in overridden method 'C.test_legacy'.
+// pkg/front_end/testcases/nnbd_mixed/required_name_override.dart:15:35: Error: The required named parameter 'i' in method 'A.test_legacy' is not required in overridden method 'C.test_legacy'.
// void test_legacy({required int? i}) {}
// ^
-// pkg/front_end/testcases/nnbd/required_name_override_lib.dart:8:8: Context: This is the overridden method ('test_legacy').
+// pkg/front_end/testcases/nnbd_mixed/required_name_override_lib.dart:8:8: Context: This is the overridden method ('test_legacy').
// void test_legacy({int i}) {}
// ^
//
diff --git a/pkg/front_end/testcases/nnbd/required_name_override_lib.dart b/pkg/front_end/testcases/nnbd_mixed/required_name_override_lib.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/required_name_override_lib.dart
rename to pkg/front_end/testcases/nnbd_mixed/required_name_override_lib.dart
diff --git a/pkg/front_end/testcases/nnbd/sink_hierarchy.dart b/pkg/front_end/testcases/nnbd_mixed/sink_hierarchy.dart
similarity index 100%
rename from pkg/front_end/testcases/nnbd/sink_hierarchy.dart
rename to pkg/front_end/testcases/nnbd_mixed/sink_hierarchy.dart
diff --git a/pkg/front_end/testcases/nnbd_mixed/sink_hierarchy.dart.outline.expect b/pkg/front_end/testcases/nnbd_mixed/sink_hierarchy.dart.outline.expect
new file mode 100644
index 0000000..a415894
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd_mixed/sink_hierarchy.dart.outline.expect
@@ -0,0 +1,34 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/sink_hierarchy.dart:5:1: Error: A library can't opt out of non-nullable by default, when in nnbd-strong mode.
+// // @dart=2.6
+// ^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+import "dart:async" as asy;
+
+abstract class Sink<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::Sink<self::Sink::T%>
+ ;
+ abstract method close() → void;
+}
+abstract class EventSink<T extends core::Object? = dynamic> extends core::Object implements self::Sink<self::EventSink::T%> {
+ synthetic constructor •() → self::EventSink<self::EventSink::T%>
+ ;
+ abstract method close() → void;
+}
+abstract class StreamConsumer<S extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::StreamConsumer<self::StreamConsumer::S%>
+ ;
+ abstract method close() → asy::Future<dynamic>;
+}
+abstract class StreamSink<S extends core::Object? = dynamic> extends core::Object implements self::EventSink<self::StreamSink::S%>, self::StreamConsumer<self::StreamSink::S%> {
+ synthetic constructor •() → self::StreamSink<self::StreamSink::S%>
+ ;
+ abstract method close() → asy::Future<dynamic>;
+}
+static method main() → dynamic
+ ;
diff --git a/pkg/front_end/testcases/nnbd/sink_hierarchy.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd_mixed/sink_hierarchy.dart.textual_outline.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/sink_hierarchy.dart.textual_outline.expect
rename to pkg/front_end/testcases/nnbd_mixed/sink_hierarchy.dart.textual_outline.expect
diff --git a/pkg/front_end/testcases/nnbd/sink_hierarchy.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd_mixed/sink_hierarchy.dart.textual_outline_modelled.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/sink_hierarchy.dart.textual_outline_modelled.expect
rename to pkg/front_end/testcases/nnbd_mixed/sink_hierarchy.dart.textual_outline_modelled.expect
diff --git a/pkg/front_end/testcases/nnbd/sink_hierarchy.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/sink_hierarchy.dart.weak.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/sink_hierarchy.dart.weak.expect
rename to pkg/front_end/testcases/nnbd_mixed/sink_hierarchy.dart.weak.expect
diff --git a/pkg/front_end/testcases/nnbd/sink_hierarchy.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/sink_hierarchy.dart.weak.transformed.expect
similarity index 100%
rename from pkg/front_end/testcases/nnbd/sink_hierarchy.dart.weak.transformed.expect
rename to pkg/front_end/testcases/nnbd_mixed/sink_hierarchy.dart.weak.transformed.expect
diff --git a/pkg/front_end/testcases/nnbd_mixed/test.options b/pkg/front_end/testcases/nnbd_mixed/test.options
new file mode 100644
index 0000000..b552a65
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd_mixed/test.options
@@ -0,0 +1 @@
+--enable-experiment=non-nullable
\ No newline at end of file
diff --git a/pkg/front_end/testcases/outline.status b/pkg/front_end/testcases/outline.status
index 8103acb..cfe04cd 100644
--- a/pkg/front_end/testcases/outline.status
+++ b/pkg/front_end/testcases/outline.status
@@ -14,6 +14,7 @@
general_nnbd_opt_out/override_setter_with_field: TypeCheckError
general/abstract_members: TypeCheckError
general/bug30695: TypeCheckError
+general/covariant_field: TypeCheckError
general/infer_field_from_multiple: TypeCheckError
general/invalid_operator: TypeCheckError
general/issue41210a: TypeCheckError
@@ -39,11 +40,8 @@
inference/mixin_inference_outwards_4: TypeCheckError
inference/mixin_inference_unification_1: TypeCheckError
inference/mixin_inference_unification_2: TypeCheckError
-nnbd/inheritance_from_opt_in: TypeCheckError
-nnbd/issue41567: TypeCheckError
-nnbd/messages_with_types_opt_in: TypeCheckError
-nnbd/messages_with_types_opt_out: TypeCheckError
-nnbd/never_opt_out: TypeCheckError
+late_lowering/covariant_late_field: TypeCheckError
+nnbd/covariant_late_field: TypeCheckError
rasta/native_is_illegal: Pass # Issue 29763
runtime_checks_new/mixin_forwarding_stub_field: TypeCheckError
runtime_checks_new/mixin_forwarding_stub_setter: TypeCheckError
diff --git a/pkg/front_end/testcases/regress/ambiguous_builder_01.dart b/pkg/front_end/testcases/regress/ambiguous_builder_01.dart
index bc615ae..d3a38362 100644
--- a/pkg/front_end/testcases/regress/ambiguous_builder_01.dart
+++ b/pkg/front_end/testcases/regress/ambiguous_builder_01.dart
@@ -6,4 +6,7 @@
x.z = true;
void foo() {
if (x != null) {}
+ if (null != x) {}
}
+
+main() {}
diff --git a/pkg/front_end/testcases/regress/ambiguous_builder_01.dart.outline.expect b/pkg/front_end/testcases/regress/ambiguous_builder_01.dart.outline.expect
index 12324a6..e8152c0 100644
--- a/pkg/front_end/testcases/regress/ambiguous_builder_01.dart.outline.expect
+++ b/pkg/front_end/testcases/regress/ambiguous_builder_01.dart.outline.expect
@@ -54,3 +54,5 @@
;
static method foo() → void
;
+static method main() → dynamic
+ ;
diff --git a/pkg/front_end/testcases/regress/ambiguous_builder_01.dart.strong.expect b/pkg/front_end/testcases/regress/ambiguous_builder_01.dart.strong.expect
new file mode 100644
index 0000000..457d764
--- /dev/null
+++ b/pkg/front_end/testcases/regress/ambiguous_builder_01.dart.strong.expect
@@ -0,0 +1,72 @@
+library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/regress/ambiguous_builder_01.dart:5:1: Error: A function declaration needs an explicit list of parameters.
+// Try adding a parameter list to the function declaration.
+// x.y = 42;
+// ^
+//
+// pkg/front_end/testcases/regress/ambiguous_builder_01.dart:5:2: Error: Expected '{' before this.
+// x.y = 42;
+// ^
+//
+// pkg/front_end/testcases/regress/ambiguous_builder_01.dart:5:2: Error: Expected a declaration, but got '.'.
+// x.y = 42;
+// ^
+//
+// pkg/front_end/testcases/regress/ambiguous_builder_01.dart:5:3: Error: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+// Try adding the name of the type of the variable or the keyword 'var'.
+// x.y = 42;
+// ^
+//
+// pkg/front_end/testcases/regress/ambiguous_builder_01.dart:6:1: Error: A function declaration needs an explicit list of parameters.
+// Try adding a parameter list to the function declaration.
+// x.z = true;
+// ^
+//
+// pkg/front_end/testcases/regress/ambiguous_builder_01.dart:6:2: Error: Expected '{' before this.
+// x.z = true;
+// ^
+//
+// pkg/front_end/testcases/regress/ambiguous_builder_01.dart:6:1: Error: 'x' is already declared in this scope.
+// x.z = true;
+// ^
+// pkg/front_end/testcases/regress/ambiguous_builder_01.dart:5:1: Context: Previous declaration of 'x'.
+// x.y = 42;
+// ^
+//
+// pkg/front_end/testcases/regress/ambiguous_builder_01.dart:6:2: Error: Expected a declaration, but got '.'.
+// x.z = true;
+// ^
+//
+// pkg/front_end/testcases/regress/ambiguous_builder_01.dart:6:3: Error: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+// Try adding the name of the type of the variable or the keyword 'var'.
+// x.z = true;
+// ^
+//
+// pkg/front_end/testcases/regress/ambiguous_builder_01.dart:8:7: Error: Can't use 'x' because it is declared more than once.
+// if (x != null) {}
+// ^
+//
+// pkg/front_end/testcases/regress/ambiguous_builder_01.dart:9:15: Error: Can't use 'x' because it is declared more than once.
+// if (null != x) {}
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+static field core::int* y = 42;
+static field core::bool* z = true;
+static method x() → dynamic {}
+static method foo() → void {
+ if(!invalid-expression "pkg/front_end/testcases/regress/ambiguous_builder_01.dart:8:7: Error: Can't use 'x' because it is declared more than once.
+ if (x != null) {}
+ ^".{core::Object::==}(null)) {
+ }
+ if(!null.{core::Object::==}(invalid-expression "pkg/front_end/testcases/regress/ambiguous_builder_01.dart:9:15: Error: Can't use 'x' because it is declared more than once.
+ if (null != x) {}
+ ^")) {
+ }
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/regress/ambiguous_builder_01.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/ambiguous_builder_01.dart.strong.transformed.expect
new file mode 100644
index 0000000..457d764
--- /dev/null
+++ b/pkg/front_end/testcases/regress/ambiguous_builder_01.dart.strong.transformed.expect
@@ -0,0 +1,72 @@
+library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/regress/ambiguous_builder_01.dart:5:1: Error: A function declaration needs an explicit list of parameters.
+// Try adding a parameter list to the function declaration.
+// x.y = 42;
+// ^
+//
+// pkg/front_end/testcases/regress/ambiguous_builder_01.dart:5:2: Error: Expected '{' before this.
+// x.y = 42;
+// ^
+//
+// pkg/front_end/testcases/regress/ambiguous_builder_01.dart:5:2: Error: Expected a declaration, but got '.'.
+// x.y = 42;
+// ^
+//
+// pkg/front_end/testcases/regress/ambiguous_builder_01.dart:5:3: Error: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+// Try adding the name of the type of the variable or the keyword 'var'.
+// x.y = 42;
+// ^
+//
+// pkg/front_end/testcases/regress/ambiguous_builder_01.dart:6:1: Error: A function declaration needs an explicit list of parameters.
+// Try adding a parameter list to the function declaration.
+// x.z = true;
+// ^
+//
+// pkg/front_end/testcases/regress/ambiguous_builder_01.dart:6:2: Error: Expected '{' before this.
+// x.z = true;
+// ^
+//
+// pkg/front_end/testcases/regress/ambiguous_builder_01.dart:6:1: Error: 'x' is already declared in this scope.
+// x.z = true;
+// ^
+// pkg/front_end/testcases/regress/ambiguous_builder_01.dart:5:1: Context: Previous declaration of 'x'.
+// x.y = 42;
+// ^
+//
+// pkg/front_end/testcases/regress/ambiguous_builder_01.dart:6:2: Error: Expected a declaration, but got '.'.
+// x.z = true;
+// ^
+//
+// pkg/front_end/testcases/regress/ambiguous_builder_01.dart:6:3: Error: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+// Try adding the name of the type of the variable or the keyword 'var'.
+// x.z = true;
+// ^
+//
+// pkg/front_end/testcases/regress/ambiguous_builder_01.dart:8:7: Error: Can't use 'x' because it is declared more than once.
+// if (x != null) {}
+// ^
+//
+// pkg/front_end/testcases/regress/ambiguous_builder_01.dart:9:15: Error: Can't use 'x' because it is declared more than once.
+// if (null != x) {}
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+static field core::int* y = 42;
+static field core::bool* z = true;
+static method x() → dynamic {}
+static method foo() → void {
+ if(!invalid-expression "pkg/front_end/testcases/regress/ambiguous_builder_01.dart:8:7: Error: Can't use 'x' because it is declared more than once.
+ if (x != null) {}
+ ^".{core::Object::==}(null)) {
+ }
+ if(!null.{core::Object::==}(invalid-expression "pkg/front_end/testcases/regress/ambiguous_builder_01.dart:9:15: Error: Can't use 'x' because it is declared more than once.
+ if (null != x) {}
+ ^")) {
+ }
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/regress/ambiguous_builder_01.dart.textual_outline.expect b/pkg/front_end/testcases/regress/ambiguous_builder_01.dart.textual_outline.expect
index 1c27cf2..3452878 100644
--- a/pkg/front_end/testcases/regress/ambiguous_builder_01.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/regress/ambiguous_builder_01.dart.textual_outline.expect
@@ -5,3 +5,4 @@
.
z = true;
void foo() { }
+main() { }
diff --git a/pkg/front_end/testcases/strong.status b/pkg/front_end/testcases/strong.status
index 1dab5fd..bf4a5ea 100644
--- a/pkg/front_end/testcases/strong.status
+++ b/pkg/front_end/testcases/strong.status
@@ -25,6 +25,7 @@
general/candidate_found: TypeCheckError
general/cascade: RuntimeError
general/constructor_initializer_invalid: RuntimeError # Fails execution after recovery
+general/covariant_field: TypeCheckError
general/covariant_generic: RuntimeError
general/duplicated_declarations: TypeCheckError
general/duplicated_field_initializer: RuntimeError
@@ -167,15 +168,13 @@
inference_new/invalid_assignment_during_toplevel_inference: TypeCheckError
instantiate_to_bound/non_simple_class_parametrized_typedef_cycle: RuntimeError # Expected
instantiate_to_bound/non_simple_generic_function_in_bound_regress: RuntimeError # Expected
-nnbd/inheritance_from_opt_in: TypeCheckError
+late_lowering/covariant_late_field: TypeCheckError
+nnbd/covariant_late_field: TypeCheckError
nnbd/issue41180: RuntimeError # Strong mode runtime checking fails due to mixed strong mode.
-nnbd/issue41567: TypeCheckError
-nnbd/messages_with_types_opt_in: TypeCheckError
-nnbd/messages_with_types_opt_out: TypeCheckError
-nnbd/never_opt_out: TypeCheckError
nnbd/nullable_object_access: TypeCheckError
nnbd/nullable_receiver: TypeCheckError
nnbd/potentially_nullable_access: TypeCheckError
+nnbd/strong_lib_not_ok_from_dill/strong: RuntimeError
rasta/abstract_constructor: RuntimeError
rasta/bad_constructor_redirection: RuntimeError
rasta/bad_continue: RuntimeError
@@ -221,7 +220,6 @@
rasta/unresolved_constructor: RuntimeError
rasta/unresolved_for_in: RuntimeError
rasta/unresolved_recovery: TypeCheckError
-regress/ambiguous_builder_01: Crash
regress/issue_29976: RuntimeError # Tests runtime behavior of error recovery.
regress/issue_29982: RuntimeError # Tests runtime behavior of error recovery.
regress/issue_30836: RuntimeError # Issue 30836.
diff --git a/pkg/front_end/testcases/text_serialization.status b/pkg/front_end/testcases/text_serialization.status
index 4e96791..5b10647 100644
--- a/pkg/front_end/testcases/text_serialization.status
+++ b/pkg/front_end/testcases/text_serialization.status
@@ -25,6 +25,7 @@
general/candidate_found: TypeCheckError
general/cascade: RuntimeError
general/constructor_initializer_invalid: RuntimeError
+general/covariant_field: TypeCheckError
general/covariant_generic: RuntimeError
general/duplicated_declarations: TypeCheckError
general/duplicated_field_initializer: RuntimeError
@@ -165,15 +166,13 @@
inference_new/invalid_assignment_during_toplevel_inference: TypeCheckError
instantiate_to_bound/non_simple_class_parametrized_typedef_cycle: RuntimeError
instantiate_to_bound/non_simple_generic_function_in_bound_regress: RuntimeError
-nnbd/inheritance_from_opt_in: TypeCheckError
+late_lowering/covariant_late_field: TypeCheckError
+nnbd/covariant_late_field: TypeCheckError
nnbd/issue41180: RuntimeError
-nnbd/issue41567: TypeCheckError
-nnbd/messages_with_types_opt_in: TypeCheckError
-nnbd/messages_with_types_opt_out: TypeCheckError
-nnbd/never_opt_out: TypeCheckError
nnbd/nullable_object_access: TypeCheckError
nnbd/nullable_receiver: TypeCheckError
nnbd/potentially_nullable_access: TypeCheckError
+nnbd/strong_lib_not_ok_from_dill/strong: RuntimeError
rasta/abstract_constructor: RuntimeError
rasta/bad_constructor_redirection: RuntimeError
rasta/bad_continue: RuntimeError
@@ -219,7 +218,6 @@
rasta/unresolved_constructor: RuntimeError
rasta/unresolved_for_in: RuntimeError
rasta/unresolved_recovery: TypeCheckError
-regress/ambiguous_builder_01: Crash
regress/issue_29976: RuntimeError
regress/issue_29982: RuntimeError
regress/issue_30836: RuntimeError
diff --git a/pkg/front_end/testcases/textual_outline.status b/pkg/front_end/testcases/textual_outline.status
index 35cfe7a..288ca73 100644
--- a/pkg/front_end/testcases/textual_outline.status
+++ b/pkg/front_end/testcases/textual_outline.status
@@ -99,6 +99,7 @@
general/bug31124: FormatterCrash
general/clone_function_type: FormatterCrash
general/constructor_initializer_invalid: FormatterCrash
+general/covariant_field: FormatterCrash
general/duplicated_declarations: FormatterCrash
general/error_recovery/constructor_recovery_bad_name_general.crash: FormatterCrash
general/error_recovery/constructor_recovery_bad_name_get.crash: FormatterCrash
@@ -125,6 +126,7 @@
general/well_boundness_checks_in_outline: FormatterCrash
inference/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr1: FormatterCrash
inference/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr1: FormatterCrash
+late_lowering/covariant_late_field: FormatterCrash
late_lowering/infer_late_field_type: FormatterCrash
late_lowering/initializer_rewrite: FormatterCrash
late_lowering/instance_field_with_initializer: FormatterCrash
@@ -151,6 +153,7 @@
late_lowering/override_getter_setter: FormatterCrash
late_lowering/override: FormatterCrash
late_lowering/uninitialized_non_nullable_late_fields: FormatterCrash
+nnbd/covariant_late_field: FormatterCrash
nnbd/forbidden_supers: FormatterCrash
nnbd/infer_if_null: FormatterCrash
nnbd/inheritance_from_opt_in: FormatterCrash
diff --git a/pkg/front_end/testcases/weak.status b/pkg/front_end/testcases/weak.status
index 4de00b0..332439cd 100644
--- a/pkg/front_end/testcases/weak.status
+++ b/pkg/front_end/testcases/weak.status
@@ -58,12 +58,13 @@
general_nnbd_opt_out/type_variable_bound_access: TypeCheckError
general_nnbd_opt_out/unsound_promotion: TypeCheckError
general_nnbd_opt_out/void_methods: RuntimeError
-nnbd/inheritance_from_opt_in: TypeCheckError
-nnbd/issue41567: TypeCheckError
-nnbd/messages_with_types_opt_in: TypeCheckError
-nnbd/messages_with_types_opt_out: TypeCheckError
-nnbd/never_opt_out: TypeCheckError
+late_lowering/covariant_late_field: TypeCheckError
+nnbd/covariant_late_field: TypeCheckError
nnbd/nullable_object_access: TypeCheckError
nnbd/nullable_receiver: TypeCheckError
nnbd/potentially_nullable_access: TypeCheckError
-
+nnbd_mixed/inheritance_from_opt_in: TypeCheckError
+nnbd_mixed/issue41567: TypeCheckError
+nnbd_mixed/messages_with_types_opt_in: TypeCheckError
+nnbd_mixed/messages_with_types_opt_out: TypeCheckError
+nnbd_mixed/never_opt_out: TypeCheckError
diff --git a/pkg/front_end/testing.json b/pkg/front_end/testing.json
index a9488bf..3545e88 100644
--- a/pkg/front_end/testing.json
+++ b/pkg/front_end/testing.json
@@ -75,7 +75,10 @@
"/testcases/.*_lib[0-9]*\\.dart$",
"/testcases/dartino/",
"/testcases/shaker/",
- "/testcases/expression/"
+ "/testcases/expression/",
+ "/testcases/general_nnbd_opt_out/",
+ "/testcases/nnbd_mixed/",
+ "/testcases/nonfunction_type_aliases/"
]
},
{
@@ -93,7 +96,10 @@
"/testcases/.*_lib[0-9]*\\.dart$",
"/testcases/dartino/",
"/testcases/shaker/",
- "/testcases/expression/"
+ "/testcases/expression/",
+ "/testcases/general_nnbd_opt_out/",
+ "/testcases/nnbd_mixed/",
+ "/testcases/nonfunction_type_aliases/"
]
},
{
@@ -111,7 +117,10 @@
"/testcases/.*_lib[0-9]*\\.dart$",
"/testcases/dartino/",
"/testcases/shaker/",
- "/testcases/expression/"
+ "/testcases/expression/",
+ "/testcases/general_nnbd_opt_out/",
+ "/testcases/nnbd_mixed/",
+ "/testcases/nonfunction_type_aliases/"
]
},
{
@@ -129,7 +138,10 @@
"/testcases/.*_lib[0-9]*\\.dart$",
"/testcases/dartino/",
"/testcases/shaker/",
- "/testcases/expression/"
+ "/testcases/expression/",
+ "/testcases/general_nnbd_opt_out/",
+ "/testcases/nnbd_mixed/",
+ "/testcases/nonfunction_type_aliases/"
]
},
{
@@ -262,13 +274,15 @@
"name": "lint",
"kind": "Chain",
"source": "test/lint_suite.dart",
- "path": "lib/",
+ "path": "../",
"status": "test/lint_test.status",
"pattern": [
- ".*\\.dart$"
+ "_fe_analyzer_shared/lib/.*\\.dart$",
+ "front_end/lib/.*\\.dart$"
],
"exclude": [
- "src/fasta/fasta_codes_generated\\.dart$"
+ "_fe_analyzer_shared/lib/src/messages/codes_generated\\.dart$",
+ "front_end/lib/src/fasta/fasta_codes_cfe_generated\\.dart$"
]
},
{
diff --git a/pkg/front_end/tool/_fasta/command_line.dart b/pkg/front_end/tool/_fasta/command_line.dart
index 811f854..7433302 100644
--- a/pkg/front_end/tool/_fasta/command_line.dart
+++ b/pkg/front_end/tool/_fasta/command_line.dart
@@ -190,6 +190,7 @@
Flags.sdk: const UriValue(),
Flags.singleRootBase: const UriValue(),
Flags.singleRootScheme: const StringValue(),
+ Flags.nnbdWeakMode: const BoolValue(false),
Flags.nnbdStrongMode: const BoolValue(false),
Flags.nnbdAgnosticMode: const BoolValue(false),
Flags.target: const StringValue(),
@@ -283,6 +284,8 @@
final bool nnbdStrongMode = options[Flags.nnbdStrongMode];
+ final bool nnbdWeakMode = options[Flags.nnbdWeakMode];
+
final bool nnbdAgnosticMode = options[Flags.nnbdAgnosticMode];
final NnbdMode nnbdMode = nnbdAgnosticMode
@@ -291,12 +294,24 @@
final List<Uri> linkDependencies = options[Flags.linkDependencies] ?? [];
+ if (nnbdStrongMode && nnbdWeakMode) {
+ return throw new CommandLineProblem.deprecated(
+ "Can't specify both '${Flags.nnbdStrongMode}' and "
+ "'${Flags.nnbdWeakMode}'.");
+ }
+
if (nnbdStrongMode && nnbdAgnosticMode) {
return throw new CommandLineProblem.deprecated(
"Can't specify both '${Flags.nnbdStrongMode}' and "
"'${Flags.nnbdAgnosticMode}'.");
}
+ if (nnbdWeakMode && nnbdAgnosticMode) {
+ return throw new CommandLineProblem.deprecated(
+ "Can't specify both '${Flags.nnbdWeakMode}' and "
+ "'${Flags.nnbdAgnosticMode}'.");
+ }
+
FileSystem fileSystem = StandardFileSystem.instance;
if (singleRootScheme != null) {
fileSystem = new SchemeBasedFileSystem({
diff --git a/pkg/front_end/tool/smoke_test_quick.dart b/pkg/front_end/tool/smoke_test_quick.dart
index a9d4ae3..b6bd887 100644
--- a/pkg/front_end/tool/smoke_test_quick.dart
+++ b/pkg/front_end/tool/smoke_test_quick.dart
@@ -13,8 +13,9 @@
main(List<String> args) async {
Stopwatch stopwatch = new Stopwatch()..start();
List<Future> futures = new List<Future>();
- futures.add(
- run("pkg/front_end/test/explicit_creation_test.dart", [], filter: false));
+ futures.add(run(
+ "pkg/front_end/test/explicit_creation_test.dart", ["--front-end-only"],
+ filter: false));
futures.add(run(
"pkg/front_end/test/fasta/messages_suite.dart",
["-DfastOnly=true"],
@@ -22,7 +23,8 @@
futures.add(run("pkg/front_end/test/spelling_test_not_src_suite.dart", []));
futures.add(run("pkg/front_end/test/spelling_test_src_suite.dart",
["--", "spelling_test_src/front_end/..."]));
- futures.add(run("pkg/front_end/test/lint_suite.dart", []));
+ futures.add(
+ run("pkg/front_end/test/lint_suite.dart", ["--", "lint/front_end/..."]));
futures.add(run("pkg/front_end/test/deps_test.dart", [], filter: false));
await Future.wait(futures);
print("\n-----------------------\n");
diff --git a/pkg/frontend_server/lib/frontend_server.dart b/pkg/frontend_server/lib/frontend_server.dart
index 6571a7a..f5ccbf0 100644
--- a/pkg/frontend_server/lib/frontend_server.dart
+++ b/pkg/frontend_server/lib/frontend_server.dart
@@ -152,7 +152,7 @@
..addFlag('null-safety',
help:
'Respect the nullability of types at runtime in casts and instance checks.',
- defaultsTo: false)
+ defaultsTo: null)
..addMultiOption('enable-experiment',
help: 'Comma separated list of experimental features, eg set-literals.',
hide: true)
@@ -385,7 +385,8 @@
..experimentalFlags = parseExperimentalFlags(
parseExperimentalArguments(options['enable-experiment']),
onError: (msg) => errors.add(msg))
- ..nnbdMode = options['null-safety'] ? NnbdMode.Strong : NnbdMode.Weak
+ ..nnbdMode =
+ (options['null-safety'] == true) ? NnbdMode.Strong : NnbdMode.Weak
..onDiagnostic = (DiagnosticMessage message) {
bool printMessage;
switch (message.severity) {
@@ -446,6 +447,11 @@
}
}
+ if (options['null-safety'] == null &&
+ compilerOptions.experimentalFlags[ExperimentalFlag.nonNullable]) {
+ await autoDetectNullSafetyMode(_mainSource, compilerOptions);
+ }
+
compilerOptions.bytecode = options['gen-bytecode'];
final BytecodeOptions bytecodeOptions = BytecodeOptions(
enableAsserts: options['enable-asserts'],
@@ -459,7 +465,7 @@
compilerOptions.target = createFrontEndTarget(
options['target'],
trackWidgetCreation: options['track-widget-creation'],
- nullSafety: options['null-safety'],
+ nullSafety: compilerOptions.nnbdMode == NnbdMode.Strong,
);
if (compilerOptions.target == null) {
print('Failed to create front-end target ${options['target']}.');
diff --git a/pkg/js/CHANGELOG.md b/pkg/js/CHANGELOG.md
index 821443e..62b21c3 100644
--- a/pkg/js/CHANGELOG.md
+++ b/pkg/js/CHANGELOG.md
@@ -1,9 +1,6 @@
-## 0.6.3
+## 0.6.2-dev
-* Added promiseToFuture function.
-
-## 0.6.2
-
+* Opt in to null safety.
* Improved documentation.
## 0.6.1+1
diff --git a/pkg/js/pubspec.yaml b/pkg/js/pubspec.yaml
index d02009c..307f362 100644
--- a/pkg/js/pubspec.yaml
+++ b/pkg/js/pubspec.yaml
@@ -1,8 +1,7 @@
name: js
-version: 0.6.3
-author: Dart Team <misc@dartlang.org>
-description: Access JavaScript from Dart.
+version: 0.6.2-dev
+description: Annotations to create Dart interfaces for JavaScript APIs.
homepage: https://github.com/dart-lang/sdk/tree/master/pkg/js
environment:
- sdk: '>=2.0.0 <3.0.0'
+ sdk: '>=2.9.0 <3.0.0'
diff --git a/pkg/kernel/lib/ast.dart b/pkg/kernel/lib/ast.dart
index b87bc82..5032cc1 100644
--- a/pkg/kernel/lib/ast.dart
+++ b/pkg/kernel/lib/ast.dart
@@ -4674,7 +4674,7 @@
DartType operandType = operand.getStaticType(context);
return operandType == context.typeEnvironment.nullType
? const NeverType(Nullability.nonNullable)
- : operandType.withNullability(Nullability.nonNullable);
+ : operandType.withDeclaredNullability(Nullability.nonNullable);
}
R accept<R>(ExpressionVisitor<R> v) => v.visitNullCheck(this);
@@ -6642,6 +6642,24 @@
@override
bool operator ==(Object other);
+ /// The nullability declared on the type.
+ ///
+ /// For example, the declared nullability of `FutureOr<int?>` is
+ /// [Nullability.nonNullable], the declared nullability of `dynamic` is
+ /// [Nullability.nullable], the declared nullability of `int*` is
+ /// [Nullability.legacy], the declared nullability of the promoted type `X &
+ /// int` where `X extends Object?`
+ /// is [Nullability.undetermined].
+ Nullability get declaredNullability;
+
+ /// The nullability of the type as the property to contain null.
+ ///
+ /// For example, nullability-as-property of FutureOr<int?> is
+ /// [Nullability.nullable], nullability-as-property of dynamic is
+ /// [Nullability.nullable], nullability-as-property of int* is
+ /// [Nullability.legacy], nullability-as-property of the promoted type `X &
+ /// int` where `X extends Object?`
+ /// is [Nullability.nonNullable].
Nullability get nullability;
/// If this is a typedef type, repeatedly unfolds its type definition until
@@ -6654,11 +6672,11 @@
/// returns the type itself.
DartType get unaliasOnce => this;
- /// Creates a copy of the type with the given [nullability] if possible.
+ /// Creates a copy of the type with the given [declaredNullability].
///
/// Some types have fixed nullabilities, such as `dynamic`, `invalid-type`,
/// `void`, or `bottom`.
- DartType withNullability(Nullability nullability);
+ DartType withDeclaredNullability(Nullability declaredNullability);
/// Checks if the type is potentially nullable.
///
@@ -6708,10 +6726,15 @@
bool equals(Object other, Assumptions assumptions) => other is InvalidType;
@override
- Nullability get nullability => throw "InvalidType doesn't have nullability";
+ Nullability get declaredNullability {
+ throw "InvalidType doesn't have nullability.";
+ }
@override
- InvalidType withNullability(Nullability nullability) => this;
+ Nullability get nullability => throw "InvalidType doesn't have nullability.";
+
+ @override
+ InvalidType withDeclaredNullability(Nullability declaredNullability) => this;
@override
String toString() {
@@ -6747,10 +6770,13 @@
bool equals(Object other, Assumptions assumptions) => other is DynamicType;
@override
+ Nullability get declaredNullability => Nullability.nullable;
+
+ @override
Nullability get nullability => Nullability.nullable;
@override
- DynamicType withNullability(Nullability nullability) => this;
+ DynamicType withDeclaredNullability(Nullability declaredNullability) => this;
@override
String toString() {
@@ -6786,10 +6812,13 @@
bool equals(Object other, Assumptions assumptions) => other is VoidType;
@override
+ Nullability get declaredNullability => Nullability.nullable;
+
+ @override
Nullability get nullability => Nullability.nullable;
@override
- VoidType withNullability(Nullability nullability) => this;
+ VoidType withDeclaredNullability(Nullability declaredNullability) => this;
@override
String toString() {
@@ -6804,9 +6833,12 @@
class NeverType extends DartType {
@override
- final Nullability nullability;
+ final Nullability declaredNullability;
- const NeverType(this.nullability);
+ const NeverType(this.declaredNullability);
+
+ @override
+ Nullability get nullability => declaredNullability;
@override
int get hashCode {
@@ -6831,8 +6863,10 @@
other is NeverType && nullability == other.nullability;
@override
- NeverType withNullability(Nullability nullability) {
- return this.nullability == nullability ? this : new NeverType(nullability);
+ NeverType withDeclaredNullability(Nullability declaredNullability) {
+ return this.declaredNullability == declaredNullability
+ ? this
+ : new NeverType(declaredNullability);
}
@override
@@ -6842,7 +6876,7 @@
@override
String toStringInternal() {
- return "";
+ return "${nullabilityToString(nullability)}";
}
}
@@ -6869,10 +6903,13 @@
bool equals(Object other, Assumptions assumptions) => other is BottomType;
@override
+ Nullability get declaredNullability => Nullability.nonNullable;
+
+ @override
Nullability get nullability => Nullability.nonNullable;
@override
- BottomType withNullability(Nullability nullability) => this;
+ BottomType withDeclaredNullability(Nullability declaredNullability) => this;
@override
String toString() {
@@ -6889,23 +6926,26 @@
Reference className;
@override
- final Nullability nullability;
+ final Nullability declaredNullability;
final List<DartType> typeArguments;
/// The [typeArguments] list must not be modified after this call. If the
/// list is omitted, 'dynamic' type arguments are filled in.
- InterfaceType(Class classNode, Nullability nullability,
+ InterfaceType(Class classNode, Nullability declaredNullability,
[List<DartType> typeArguments])
- : this.byReference(getClassReference(classNode), nullability,
+ : this.byReference(getClassReference(classNode), declaredNullability,
typeArguments ?? _defaultTypeArguments(classNode));
InterfaceType.byReference(
- this.className, this.nullability, this.typeArguments)
- : assert(nullability != null);
+ this.className, this.declaredNullability, this.typeArguments)
+ : assert(declaredNullability != null);
Class get classNode => className.asClass;
+ @override
+ Nullability get nullability => declaredNullability;
+
static List<DartType> _defaultTypeArguments(Class classNode) {
if (classNode.typeParameters.length == 0) {
// Avoid allocating a list in this very common case.
@@ -6962,10 +7002,11 @@
}
@override
- InterfaceType withNullability(Nullability nullability) {
- return nullability == this.nullability
+ InterfaceType withDeclaredNullability(Nullability declaredNullability) {
+ return declaredNullability == this.declaredNullability
? this
- : new InterfaceType.byReference(className, nullability, typeArguments);
+ : new InterfaceType.byReference(
+ className, declaredNullability, typeArguments);
}
@override
@@ -7002,7 +7043,9 @@
final int requiredParameterCount;
final List<DartType> positionalParameters;
final List<NamedType> namedParameters; // Must be sorted.
- final Nullability nullability;
+
+ @override
+ final Nullability declaredNullability;
/// The [Typedef] this function type is created for.
final TypedefType typedefType;
@@ -7010,8 +7053,8 @@
final DartType returnType;
int _hashCode;
- FunctionType(
- List<DartType> positionalParameters, this.returnType, this.nullability,
+ FunctionType(List<DartType> positionalParameters, this.returnType,
+ this.declaredNullability,
{this.namedParameters: const <NamedType>[],
this.typeParameters: const <TypeParameter>[],
int requiredParameterCount,
@@ -7025,6 +7068,9 @@
Typedef get typedef => typedefReference?.asTypedef;
@override
+ Nullability get nullability => declaredNullability;
+
+ @override
R accept<R>(DartTypeVisitor<R> v) => v.visitFunctionType(this);
@override
@@ -7153,14 +7199,14 @@
}
@override
- FunctionType withNullability(Nullability nullability) {
- if (nullability == this.nullability) return this;
+ FunctionType withDeclaredNullability(Nullability declaredNullability) {
+ if (declaredNullability == this.declaredNullability) return this;
FunctionType result = FunctionType(
- positionalParameters, returnType, nullability,
+ positionalParameters, returnType, declaredNullability,
namedParameters: namedParameters,
typeParameters: typeParameters,
requiredParameterCount: requiredParameterCount,
- typedefType: typedefType?.withNullability(nullability));
+ typedefType: typedefType?.withDeclaredNullability(declaredNullability));
if (typeParameters.isEmpty) return result;
return getFreshTypeParameters(typeParameters).applyToFunctionType(result);
}
@@ -7216,7 +7262,7 @@
///
/// The underlying type can be extracted using [unalias].
class TypedefType extends DartType {
- final Nullability nullability;
+ final Nullability declaredNullability;
final Reference typedefReference;
final List<DartType> typeArguments;
@@ -7226,10 +7272,15 @@
typeArguments ?? const <DartType>[]);
TypedefType.byReference(
- this.typedefReference, this.nullability, this.typeArguments);
+ this.typedefReference, this.declaredNullability, this.typeArguments);
Typedef get typedefNode => typedefReference.asTypedef;
+ // TODO(dmitryas): Replace with uniteNullabilities(declaredNullability,
+ // typedefNode.type.nullability).
+ @override
+ Nullability get nullability => declaredNullability;
+
@override
R accept<R>(DartTypeVisitor<R> v) => v.visitTypedefType(this);
@@ -7247,7 +7298,7 @@
DartType get unaliasOnce {
DartType result =
Substitution.fromTypedefType(this).substituteType(typedefNode.type);
- return result.withNullability(
+ return result.withDeclaredNullability(
combineNullabilitiesForSubstitution(result.nullability, nullability));
}
@@ -7292,11 +7343,11 @@
}
@override
- TypedefType withNullability(Nullability nullability) {
- return nullability == this.nullability
+ TypedefType withDeclaredNullability(Nullability declaredNullability) {
+ return declaredNullability == this.declaredNullability
? this
: new TypedefType.byReference(
- typedefReference, nullability, typeArguments);
+ typedefReference, declaredNullability, typeArguments);
}
@override
@@ -7382,17 +7433,11 @@
/// viewed as representing an intersection type between the type-parameter type
/// and the promoted bound.
class TypeParameterType extends DartType {
- /// Nullability of the type-parameter type or of its part of the intersection.
+ /// The declared nullability of a type-parameter type.
///
- /// Declarations of type-parameter types can set the nullability of a
- /// type-parameter type to [Nullability.nullable] (if the `?` marker is used)
- /// or [Nullability.legacy] (if the type comes from a library opted out from
- /// NNBD). Otherwise, it's defined indirectly via the nullability of the
- /// bound of [parameter]. In cases when the [TypeParameterType] represents an
- /// intersection between a type-parameter type and [promotedBound],
- /// [typeParameterTypeNullability] represents the nullability of the left-hand
- /// side of the intersection.
- Nullability typeParameterTypeNullability;
+ /// When a [TypeParameterType] represents an intersection, [declaredNullability] is the nullability of the left-hand side.
+ @override
+ Nullability declaredNullability;
TypeParameter parameter;
@@ -7402,12 +7447,12 @@
/// is therefore the same as the bound of [parameter].
DartType promotedBound;
- TypeParameterType(this.parameter, this.typeParameterTypeNullability,
+ TypeParameterType(this.parameter, this.declaredNullability,
[this.promotedBound]);
/// Creates an intersection type between a type parameter and [promotedBound].
TypeParameterType.intersection(
- this.parameter, this.typeParameterTypeNullability, this.promotedBound);
+ this.parameter, this.declaredNullability, this.promotedBound);
/// Creates a type-parameter type to be used in alpha-renaming.
///
@@ -7429,7 +7474,7 @@
/// the bound of [parameter].
TypeParameterType.withDefaultNullabilityForLibrary(
this.parameter, Library library) {
- typeParameterTypeNullability = library.isNonNullableByDefault
+ declaredNullability = library.isNonNullableByDefault
? computeNullabilityFromBound(parameter)
: Nullability.legacy;
}
@@ -7517,24 +7562,24 @@
@override
Nullability get nullability {
return getNullability(
- typeParameterTypeNullability ?? computeNullabilityFromBound(parameter),
+ declaredNullability ?? computeNullabilityFromBound(parameter),
promotedBound);
}
/// Gets a new [TypeParameterType] with given [typeParameterTypeNullability].
///
- /// In contrast with other types, [TypeParameterType.withNullability] doesn't
- /// set the overall nullability of the returned type but sets that of the
- /// left-hand side of the intersection type. In case [promotedBound] is null,
- /// it is an equivalent of setting the overall nullability.
+ /// In contrast with other types, [TypeParameterType.withDeclaredNullability]
+ /// doesn't set the overall nullability of the returned type but sets that of
+ /// the left-hand side of the intersection type. In case [promotedBound] is
+ /// null, it is an equivalent of setting the overall nullability.
@override
- TypeParameterType withNullability(Nullability typeParameterTypeNullability) {
+ TypeParameterType withDeclaredNullability(Nullability declaredNullability) {
+ // TODO(dmitryas): Consider removing the assert.
assert(promotedBound == null,
"Can't change the nullability attribute of an intersection type.");
- return typeParameterTypeNullability == this.typeParameterTypeNullability
+ return declaredNullability == this.declaredNullability
? this
- : new TypeParameterType(
- parameter, typeParameterTypeNullability, promotedBound);
+ : new TypeParameterType(parameter, declaredNullability, promotedBound);
}
/// Gets the nullability of a type-parameter type based on the bound.
@@ -7551,6 +7596,30 @@
if (bound == null) {
throw new StateError("Can't compute nullability from an absent bound.");
}
+
+ // If a type parameter's nullability depends on itself, it is deemed 'undetermined'.
+ // Currently, it's possible if the type parameter has a possibly nested FutureOr containing that type parameter.
+ // If there are other ways for such a dependency to exist, they should be checked here.
+ bool nullabilityDependsOnItself = false;
+ {
+ DartType type = typeParameter.bound;
+ while (type is InterfaceType &&
+ type.classNode.name == "FutureOr" &&
+ type.classNode.enclosingLibrary.importUri.scheme == "dart" &&
+ type.classNode.enclosingLibrary.importUri.path == "async") {
+ type = (type as InterfaceType).typeArguments.single;
+ }
+ if (type is TypeParameterType && type.parameter == typeParameter) {
+ // Intersection types can't appear in the bound.
+ assert(type.promotedBound == null);
+
+ nullabilityDependsOnItself = true;
+ }
+ }
+ if (nullabilityDependsOnItself) {
+ return Nullability.undetermined;
+ }
+
Nullability boundNullability =
bound is InvalidType ? Nullability.undetermined : bound.nullability;
return boundNullability == Nullability.nullable ||
@@ -7652,12 +7721,12 @@
StringBuffer sb = new StringBuffer();
sb.write(qualifiedTypeParameterNameToString(parameter,
includeLibraryName: _verboseTypeToString));
- sb.write(nullabilityToString(typeParameterTypeNullability));
+ sb.write(nullabilityToString(declaredNullability));
if (promotedBound != null) {
sb.write(" & ");
sb.write(promotedBound.toStringInternal());
sb.write(" /* '");
- sb.write(nullabilityToString(typeParameterTypeNullability));
+ sb.write(nullabilityToString(declaredNullability));
sb.write("' & '");
if (promotedBound is InvalidType) {
sb.write(nullabilityToString(Nullability.undetermined));
diff --git a/pkg/kernel/lib/binary/ast_to_binary.dart b/pkg/kernel/lib/binary/ast_to_binary.dart
index c481d69..069076b 100644
--- a/pkg/kernel/lib/binary/ast_to_binary.dart
+++ b/pkg/kernel/lib/binary/ast_to_binary.dart
@@ -2119,7 +2119,7 @@
@override
void visitTypeParameterType(TypeParameterType node) {
writeByte(Tag.TypeParameterType);
- writeByte(node.typeParameterTypeNullability.index);
+ writeByte(node.declaredNullability.index);
writeUInt30(_typeParameterIndexer[node.parameter]);
writeOptionalNode(node.promotedBound);
}
diff --git a/pkg/kernel/lib/class_hierarchy.dart b/pkg/kernel/lib/class_hierarchy.dart
index 8bbae44..346f56d 100644
--- a/pkg/kernel/lib/class_hierarchy.dart
+++ b/pkg/kernel/lib/class_hierarchy.dart
@@ -671,7 +671,7 @@
: Substitution.fromInterfaceType(type2).substituteType(
info2.genericSuperType[next.classNode].asInterfaceType);
if (superType1 == superType2) {
- candidate = superType1.withNullability(
+ candidate = superType1.withDeclaredNullability(
uniteNullabilities(type1.nullability, type2.nullability));
++numCandidatesAtThisDepth;
}
diff --git a/pkg/kernel/lib/core_types.dart b/pkg/kernel/lib/core_types.dart
index 1ebce70..0c441d3 100644
--- a/pkg/kernel/lib/core_types.dart
+++ b/pkg/kernel/lib/core_types.dart
@@ -1232,7 +1232,8 @@
getAsTypeArguments(klass.typeParameters, klass.enclosingLibrary));
}
if (result.nullability != nullability) {
- return _thisInterfaceTypes[klass] = result.withNullability(nullability);
+ return _thisInterfaceTypes[klass] =
+ result.withDeclaredNullability(nullability);
}
return result;
}
@@ -1244,7 +1245,8 @@
getAsTypeArguments(typedef.typeParameters, typedef.enclosingLibrary));
}
if (result.nullability != nullability) {
- return _thisTypedefTypes[typedef] = result.withNullability(nullability);
+ return _thisTypedefTypes[typedef] =
+ result.withDeclaredNullability(nullability);
}
return result;
}
@@ -1264,7 +1266,8 @@
klass.typeParameters.length, const BottomType()));
}
if (result.nullability != nullability) {
- return _bottomInterfaceTypes[klass] = result.withNullability(nullability);
+ return _bottomInterfaceTypes[klass] =
+ result.withDeclaredNullability(nullability);
}
return result;
}
@@ -1286,7 +1289,8 @@
// TOP(T*) is true iff TOP(T) or OBJECT(T).
if (type.nullability == Nullability.nullable ||
type.nullability == Nullability.legacy) {
- DartType nonNullableType = type.withNullability(Nullability.nonNullable);
+ DartType nonNullableType =
+ type.withDeclaredNullability(Nullability.nonNullable);
assert(type != nonNullableType);
return isTop(nonNullableType) || isObject(nonNullableType);
}
@@ -1367,7 +1371,8 @@
// NULL(T*) is true iff NULL(T) or BOTTOM(T).
if (type.nullability == Nullability.nullable ||
type.nullability == Nullability.legacy) {
- DartType nonNullableType = type.withNullability(Nullability.nonNullable);
+ DartType nonNullableType =
+ type.withDeclaredNullability(Nullability.nonNullable);
return isBottom(nonNullableType);
}
diff --git a/pkg/kernel/lib/src/future_or.dart b/pkg/kernel/lib/src/future_or.dart
index d5f39db..eb8b729 100644
--- a/pkg/kernel/lib/src/future_or.dart
+++ b/pkg/kernel/lib/src/future_or.dart
@@ -48,7 +48,7 @@
DartType promotedBound = argument.promotedBound;
if (_isFutureOr(promotedBound, futureOrClass)) {
return uniteNullabilities(
- intersectNullabilities(argument.typeParameterTypeNullability,
+ intersectNullabilities(argument.declaredNullability,
computeNullabilityOfFutureOr(promotedBound, futureOrClass)),
futureOr.nullability);
}
diff --git a/pkg/kernel/lib/src/merge_visitor.dart b/pkg/kernel/lib/src/merge_visitor.dart
index 0053fa5..fe2cd6e 100644
--- a/pkg/kernel/lib/src/merge_visitor.dart
+++ b/pkg/kernel/lib/src/merge_visitor.dart
@@ -204,8 +204,8 @@
@override
DartType visitTypeParameterType(TypeParameterType a, DartType b) {
if (b is TypeParameterType && a.parameter == b.parameter) {
- Nullability nullability = mergeNullability(
- a.typeParameterTypeNullability, b.typeParameterTypeNullability);
+ Nullability nullability =
+ mergeNullability(a.declaredNullability, b.declaredNullability);
if (nullability == null) {
return null;
}
diff --git a/pkg/kernel/lib/src/norm.dart b/pkg/kernel/lib/src/norm.dart
index c434b90..dff554c 100644
--- a/pkg/kernel/lib/src/norm.dart
+++ b/pkg/kernel/lib/src/norm.dart
@@ -51,15 +51,15 @@
nullabilityAsProperty == Nullability.legacy);
// [typeArgument] is nullable because it's a top type. No need to unite
// the nullabilities of [node] and [typeArgument].
- return typeArgument.withNullability(nullabilityAsProperty);
+ return typeArgument.withDeclaredNullability(nullabilityAsProperty);
} else if (typeArgument is InterfaceType &&
typeArgument.classNode == coreTypes.objectClass &&
typeArgument.nullability == Nullability.nonNullable) {
assert(!coreTypes.isTop(typeArgument));
// [typeArgument] is non-nullable, so the union of that and the
// nullability of [node] is the nullability of [node].
- return typeArgument
- .withNullability(computeNullability(node, coreTypes.futureOrClass));
+ return typeArgument.withDeclaredNullability(
+ computeNullability(node, coreTypes.futureOrClass));
} else if (typeArgument is NeverType &&
typeArgument.nullability == Nullability.nonNullable) {
assert(!coreTypes.isTop(typeArgument));
@@ -89,9 +89,8 @@
computeNullability(node, coreTypes.futureOrClass),
<DartType>[typeArgument]);
}
- return super
- .visitInterfaceType(node)
- ?.withNullability(computeNullability(node, coreTypes.futureOrClass));
+ return super.visitInterfaceType(node)?.withDeclaredNullability(
+ computeNullability(node, coreTypes.futureOrClass));
}
@override
@@ -100,7 +99,7 @@
DartType bound = node.parameter.bound;
if (normalizesToNever(bound)) {
DartType result = new NeverType(Nullability.nonNullable)
- .withNullability(node.nullability);
+ .withDeclaredNullability(node.nullability);
return result.accept(this) ?? result;
}
assert(!coreTypes.isBottom(bound));
@@ -114,22 +113,18 @@
} else if (coreTypes.isTop(bound)) {
assert(!coreTypes.isBottom(bound));
assert(bound.nullability == Nullability.nullable);
- return new TypeParameterType(
- node.parameter, node.typeParameterTypeNullability);
+ return new TypeParameterType(node.parameter, node.declaredNullability);
} else if (bound is TypeParameterType &&
bound.parameter == node.parameter &&
- bound.typeParameterTypeNullability ==
- node.typeParameterTypeNullability &&
+ bound.declaredNullability == node.declaredNullability &&
bound.promotedBound == null) {
assert(!coreTypes.isBottom(bound));
assert(!coreTypes.isTop(bound));
- return new TypeParameterType(
- node.parameter, node.typeParameterTypeNullability);
+ return new TypeParameterType(node.parameter, node.declaredNullability);
} else if (bound == coreTypes.objectNonNullableRawType &&
norm(coreTypes, node.parameter.bound) ==
coreTypes.objectNonNullableRawType) {
- return new TypeParameterType(
- node.parameter, node.typeParameterTypeNullability);
+ return new TypeParameterType(node.parameter, node.declaredNullability);
} else if (identical(bound, node.promotedBound)) {
// If [bound] is identical to [node.promotedBound], then the NORM
// algorithms didn't change the promoted bound, so the [node] is
@@ -137,7 +132,7 @@
return null;
}
return new TypeParameterType(
- node.parameter, node.typeParameterTypeNullability, bound);
+ node.parameter, node.declaredNullability, bound);
}
}
diff --git a/pkg/kernel/lib/src/replacement_visitor.dart b/pkg/kernel/lib/src/replacement_visitor.dart
index c0a7c0d..c05bae0 100644
--- a/pkg/kernel/lib/src/replacement_visitor.dart
+++ b/pkg/kernel/lib/src/replacement_visitor.dart
@@ -214,7 +214,7 @@
} else {
return new TypeParameterType(
node.parameter,
- newNullability ?? node.typeParameterTypeNullability,
+ newNullability ?? node.declaredNullability,
newPromotedBound ?? node.promotedBound);
}
}
diff --git a/pkg/kernel/lib/src/types.dart b/pkg/kernel/lib/src/types.dart
index af97773..2ae3573 100644
--- a/pkg/kernel/lib/src/types.dart
+++ b/pkg/kernel/lib/src/types.dart
@@ -599,7 +599,8 @@
// Rule 12.
return types.performNullabilityAwareSubtypeCheck(
- intersection.promotedBound.withNullability(intersection.nullability),
+ intersection.promotedBound
+ .withDeclaredNullability(intersection.nullability),
t);
}
@@ -705,7 +706,7 @@
return types
// Rule 11.
.performNullabilityAwareSubtypeCheck(
- s, arguments.single.withNullability(unitedNullability))
+ s, arguments.single.withDeclaredNullability(unitedNullability))
// Rule 10.
.orSubtypeCheckFor(
s,
@@ -770,8 +771,8 @@
.performNullabilityAwareSubtypeCheck(sArgument, tFutureOfArgument)
.andSubtypeCheckFor(sFutureOfArgument, tArgument, types))
.and(new IsSubtypeOf.basedSolelyOnNullabilities(
- sFutureOr.withNullability(sNullability),
- tFutureOr.withNullability(tNullability),
+ sFutureOr.withDeclaredNullability(sNullability),
+ tFutureOr.withDeclaredNullability(tNullability),
types.futureOrClass));
}
@@ -782,7 +783,7 @@
DartType argument = futureOr.typeArguments.single;
return types.performNullabilityAwareSubtypeCheck(
s,
- argument.withNullability(computeNullabilityOfFutureOr(
+ argument.withDeclaredNullability(computeNullabilityOfFutureOr(
futureOr, types.hierarchy.coreTypes.futureOrClass)));
}
@@ -792,7 +793,7 @@
DartType argument = futureOr.typeArguments.single;
return types.performNullabilityAwareSubtypeCheck(
s,
- argument.withNullability(computeNullabilityOfFutureOr(
+ argument.withDeclaredNullability(computeNullabilityOfFutureOr(
futureOr, types.hierarchy.coreTypes.futureOrClass)));
}
@@ -806,10 +807,10 @@
return types
// Rule 11.
.performNullabilityAwareSubtypeCheck(
- s, arguments.single.withNullability(unitedNullability))
+ s, arguments.single.withDeclaredNullability(unitedNullability))
// Rule 13.
.orSubtypeCheckFor(
- s.parameter.bound.withNullability(
+ s.parameter.bound.withDeclaredNullability(
combineNullabilitiesForSubstitution(
s.parameter.bound.nullability, s.nullability)),
futureOr,
@@ -829,7 +830,7 @@
DartType argument = futureOr.typeArguments.single;
return types.performNullabilityAwareSubtypeCheck(
s,
- argument.withNullability(computeNullabilityOfFutureOr(
+ argument.withDeclaredNullability(computeNullabilityOfFutureOr(
futureOr, types.hierarchy.coreTypes.futureOrClass)));
}
diff --git a/pkg/kernel/lib/testing/type_parser_environment.dart b/pkg/kernel/lib/testing/type_parser_environment.dart
index 43b38d5..6789f0d 100644
--- a/pkg/kernel/lib/testing/type_parser_environment.dart
+++ b/pkg/kernel/lib/testing/type_parser_environment.dart
@@ -269,7 +269,7 @@
// the bound because it's not yet available, it will be set to null. In
// that case, put it to the list to be updated later, when the bound is
// available.
- if (type.typeParameterTypeNullability == null) {
+ if (type.declaredNullability == null) {
environment.pendingNullabilities.add(type);
}
return type;
@@ -444,7 +444,7 @@
}
for (TypeParameterType type in nestedEnvironment.pendingNullabilities) {
- type.typeParameterTypeNullability =
+ type.declaredNullability =
TypeParameterType.computeNullabilityFromBound(type.parameter);
}
nestedEnvironment.pendingNullabilities.clear();
diff --git a/pkg/kernel/lib/text/ast_to_text.dart b/pkg/kernel/lib/text/ast_to_text.dart
index bf443da..fb03e1f 100644
--- a/pkg/kernel/lib/text/ast_to_text.dart
+++ b/pkg/kernel/lib/text/ast_to_text.dart
@@ -2214,13 +2214,13 @@
visitTypeParameterType(TypeParameterType node) {
writeTypeParameterReference(node.parameter);
- writeNullability(node.typeParameterTypeNullability);
+ writeNullability(node.declaredNullability);
if (node.promotedBound != null) {
writeSpaced('&');
writeType(node.promotedBound);
writeWord("/* '");
- writeNullability(node.typeParameterTypeNullability, inComment: true);
+ writeNullability(node.declaredNullability, inComment: true);
writeWord("' & '");
writeDartTypeNullability(node.promotedBound, inComment: true);
writeWord("' = '");
diff --git a/pkg/kernel/lib/text/text_serialization_verifier.dart b/pkg/kernel/lib/text/text_serialization_verifier.dart
index 30aa8a8..cc40d2ae 100644
--- a/pkg/kernel/lib/text/text_serialization_verifier.dart
+++ b/pkg/kernel/lib/text/text_serialization_verifier.dart
@@ -323,75 +323,93 @@
}
static bool isDartTypeSupported(DartType node) =>
- node is InvalidType ||
- node is DynamicType ||
- node is VoidType ||
- node is BottomType ||
- node is FunctionType ||
- node is TypeParameterType ||
- node is InterfaceType;
+ !isDartTypeNotSupported(node);
+
+ static bool isDartTypeNotSupported(DartType node) =>
+ node is TypedefType || node is NeverType;
static bool isExpressionSupported(Expression node) =>
- node is StringLiteral ||
- node is SymbolLiteral ||
- node is IntLiteral ||
- node is DoubleLiteral ||
- node is BoolLiteral ||
- node is NullLiteral ||
- node is ListLiteral ||
- node is SetLiteral ||
- node is MapLiteral ||
- node is TypeLiteral ||
- node is InvalidExpression ||
- node is Not ||
- node is LogicalExpression ||
- node is StringConcatenation ||
- node is ThisExpression ||
- node is Rethrow ||
- node is Throw ||
- node is AwaitExpression ||
- node is ConditionalExpression ||
- node is IsExpression ||
- node is AsExpression ||
- node is Let ||
- node is PropertyGet ||
- node is PropertySet ||
- node is SuperPropertyGet ||
- node is SuperPropertySet ||
- node is MethodInvocation ||
- node is SuperMethodInvocation ||
- node is VariableGet ||
- node is VariableSet ||
- node is StaticGet ||
- node is StaticSet ||
- node is DirectPropertyGet ||
- node is DirectPropertySet ||
- node is StaticInvocation ||
- node is DirectMethodInvocation ||
- node is ConstructorInvocation ||
- node is FunctionExpression;
+ !isExpressionNotSupported(node);
+
+ static bool isExpressionNotSupported(Expression node) =>
+ node is SetConcatenation ||
+ node is MapConcatenation ||
+ node is InstanceCreation ||
+ node is FileUriExpression ||
+ node is BlockExpression ||
+ node is ListConcatenation ||
+ node is NullCheck ||
+ node is BasicLiteral ||
+ node is InvocationExpression ||
+ node is Instantiation ||
+ node is ConstantExpression ||
+ node is CheckLibraryIsLoaded ||
+ node is LoadLibrary;
static bool isStatementSupported(Statement node) =>
- node is ExpressionStatement ||
- node is ReturnStatement && node.expression != null ||
- node is Block ||
- node is VariableDeclaration &&
- node.parent is Block &&
- node.name != null ||
- node is YieldStatement ||
- node is IfStatement ||
- node is WhileStatement ||
- node is DoStatement ||
- node is ForStatement ||
- node is ForInStatement && !node.isAsync;
+ !isStatementNotSupported(node);
- static bool isSupported(Node node) =>
- node is DartType && isDartTypeSupported(node) ||
- node is Expression && isExpressionSupported(node) ||
- node is Statement && isStatementSupported(node) ||
- node is Arguments ||
- node is FunctionNode && node.body != null ||
- node is Procedure && node.isStatic && node.kind == ProcedureKind.Method;
+ static bool isStatementNotSupported(Statement node) =>
+ node is BreakStatement ||
+ node is AssertBlock ||
+ node is VariableDeclaration &&
+ (node.parent is! Block || node.name == null) ||
+ node is SwitchStatement ||
+ node is TryFinally ||
+ node is EmptyStatement ||
+ node is LabeledStatement ||
+ node is ForInStatement && node.isAsync ||
+ node is TryCatch ||
+ node is FunctionDeclaration ||
+ node is ContinueSwitchStatement ||
+ node is AssertStatement ||
+ node is ReturnStatement && node.expression == null;
+
+ static bool isSupported(Node node) => !isNotSupported(node);
+
+ static bool isNotSupported(Node node) =>
+ node is DartType && isDartTypeNotSupported(node) ||
+ node is Expression && isExpressionNotSupported(node) ||
+ node is Statement && isStatementNotSupported(node) ||
+ node is FunctionNode && node.body == null ||
+ node is Procedure &&
+ (!node.isStatic || node.kind != ProcedureKind.Method) ||
+ node is AssertInitializer ||
+ node is BoolConstant ||
+ node is Catch ||
+ node is Class ||
+ node is Combinator ||
+ node is Component ||
+ node is Constructor ||
+ node is DoubleConstant ||
+ node is Extension ||
+ node is Field ||
+ node is FieldInitializer ||
+ node is InstanceConstant ||
+ node is IntConstant ||
+ node is InvalidInitializer ||
+ node is Library ||
+ node is LibraryDependency ||
+ node is LibraryPart ||
+ node is ListConstant ||
+ node is LocalInitializer ||
+ node is MapConstant ||
+ node is Name && node.isPrivate ||
+ node is NullConstant ||
+ node is PartialInstantiationConstant ||
+ node is PrimitiveConstant ||
+ node is RedirectingFactoryConstructor ||
+ node is RedirectingInitializer ||
+ node is SetConstant ||
+ node is StringConstant ||
+ node is SuperInitializer ||
+ node is Supertype ||
+ node is SwitchCase ||
+ node is SymbolConstant ||
+ node is TearOffConstant ||
+ node is TypeLiteralConstant ||
+ node is Typedef ||
+ node is UnevaluatedConstant;
}
class TextSerializationVerifier extends RecursiveVisitor<void> {
@@ -522,6 +540,12 @@
makeRoundTrip<FunctionNode>(node, functionNodeSerializer);
} else if (node is Procedure) {
makeRoundTrip<Procedure>(node, procedureSerializer);
+ } else if (node is TypeParameter) {
+ makeRoundTrip<TypeParameter>(node, typeParameterSerializer);
+ } else if (node is NamedType) {
+ makeRoundTrip<NamedType>(node, namedTypeSerializer);
+ } else if (node is Name) {
+ makeRoundTrip<Name>(node, nameSerializer);
} else {
throw new StateError(
"Don't know how to make a round trip for a supported node "
diff --git a/pkg/kernel/lib/transformations/continuation.dart b/pkg/kernel/lib/transformations/continuation.dart
index b9d747f..9a57117 100644
--- a/pkg/kernel/lib/transformations/continuation.dart
+++ b/pkg/kernel/lib/transformations/continuation.dart
@@ -1151,7 +1151,7 @@
return null;
}
- defaultExpression(TreeNode node) => throw 'unreachable';
+ defaultExpression(TreeNode node) => throw 'unreachable $node';
}
class AsyncStarFunctionRewriter extends AsyncRewriterBase {
diff --git a/pkg/kernel/lib/transformations/track_widget_constructor_locations.dart b/pkg/kernel/lib/transformations/track_widget_constructor_locations.dart
index 3a0bc0dd..cca8d49 100644
--- a/pkg/kernel/lib/transformations/track_widget_constructor_locations.dart
+++ b/pkg/kernel/lib/transformations/track_widget_constructor_locations.dart
@@ -310,14 +310,10 @@
Class _widgetClass;
Class _locationClass;
- final ChangedStructureNotifier _changedStructureNotifier;
-
/// Marker interface indicating that a private _location field is
/// available.
Class _hasCreationLocationClass;
- WidgetCreatorTracker(this._changedStructureNotifier);
-
void _resolveFlutterClasses(Iterable<Library> libraries) {
// If the Widget or Debug location classes have been updated we need to get
// the latest version
@@ -353,7 +349,8 @@
///
/// This method should only be called for classes that implement but do not
/// extend [Widget].
- void _transformClassImplementingWidget(Class clazz) {
+ void _transformClassImplementingWidget(
+ Class clazz, ChangedStructureNotifier changedStructureNotifier) {
if (clazz.fields
.any((Field field) => field.name.name == _locationFieldName)) {
// This class has already been transformed. Skip
@@ -361,7 +358,7 @@
}
clazz.implementedTypes
.add(new Supertype(_hasCreationLocationClass, <DartType>[]));
- _changedStructureNotifier?.registerClassHierarchyChange(clazz);
+ changedStructureNotifier?.registerClassHierarchyChange(clazz);
// We intentionally use the library context of the _HasCreationLocation
// class for the private field even if [clazz] is in a different library
@@ -444,7 +441,8 @@
}
/// Transform the given [libraries].
- void transform(Component module, List<Library> libraries) {
+ void transform(Component module, List<Library> libraries,
+ ChangedStructureNotifier changedStructureNotifier) {
if (libraries.isEmpty) {
return;
}
@@ -466,6 +464,7 @@
librariesToTransform,
transformedClasses,
class_,
+ changedStructureNotifier,
);
}
}
@@ -497,8 +496,11 @@
return false;
}
- void _transformWidgetConstructors(Set<Library> librariesToBeTransformed,
- Set<Class> transformedClasses, Class clazz) {
+ void _transformWidgetConstructors(
+ Set<Library> librariesToBeTransformed,
+ Set<Class> transformedClasses,
+ Class clazz,
+ ChangedStructureNotifier changedStructureNotifier) {
if (!_isSubclassOfWidget(clazz) ||
!librariesToBeTransformed.contains(clazz.enclosingLibrary) ||
!transformedClasses.add(clazz)) {
@@ -512,6 +514,7 @@
librariesToBeTransformed,
transformedClasses,
clazz.superclass,
+ changedStructureNotifier,
);
}
@@ -530,7 +533,7 @@
// Handle the widget class and classes that implement but do not extend the
// widget class.
if (!_isSubclassOfWidget(clazz.superclass)) {
- _transformClassImplementingWidget(clazz);
+ _transformClassImplementingWidget(clazz, changedStructureNotifier);
return;
}
diff --git a/pkg/kernel/lib/type_algebra.dart b/pkg/kernel/lib/type_algebra.dart
index fbe87af..adfbd34 100644
--- a/pkg/kernel/lib/type_algebra.dart
+++ b/pkg/kernel/lib/type_algebra.dart
@@ -573,8 +573,9 @@
DartType replacement = getSubstitute(node.parameter);
if (replacement is InvalidType) return replacement;
if (replacement != null) {
- return replacement.withNullability(combineNullabilitiesForSubstitution(
- replacement.nullability, node.nullability));
+ return replacement.withDeclaredNullability(
+ combineNullabilitiesForSubstitution(
+ replacement.nullability, node.nullability));
}
return node;
}
@@ -747,8 +748,7 @@
if (type1 is TypeParameterType &&
type2 is TypeParameterType &&
type1.parameter == type2.parameter &&
- type1.typeParameterTypeNullability ==
- type2.typeParameterTypeNullability) {
+ type1.declaredNullability == type2.declaredNullability) {
return true;
}
if (type1 is TypeParameterType &&
diff --git a/pkg/native_stack_traces/CHANGELOG.md b/pkg/native_stack_traces/CHANGELOG.md
index 0d1a91d..f11bcb7 100644
--- a/pkg/native_stack_traces/CHANGELOG.md
+++ b/pkg/native_stack_traces/CHANGELOG.md
@@ -1,5 +1,10 @@
# Changelog
+## 0.3.5
+
+- Use virtual addresses in non-symbolic stack frames as a fallback if we cannot
+ retrieve an appropriate offset from the instructions section otherwise.
+
## 0.3.4
- Decoded Dart calls are now never considered internal, only VM stub calls.
diff --git a/pkg/native_stack_traces/lib/src/convert.dart b/pkg/native_stack_traces/lib/src/convert.dart
index f0a2d48..6ebde53 100644
--- a/pkg/native_stack_traces/lib/src/convert.dart
+++ b/pkg/native_stack_traces/lib/src/convert.dart
@@ -66,7 +66,8 @@
r')\+(?<offset>(?:0x)?[\da-f]+)';
final _symbolOffsetRE = RegExp(_symbolOffsetREString);
final _traceLineRE = RegExp(
- r' #(\d{2}) abs (?<address>[\da-f]+)(?: virt ([\da-f]+))? (?<rest>.*)$');
+ r' #(\d{2}) abs (?<absolute>[\da-f]+)(?: virt (?<virtual>[\da-f]+))? '
+ r'(?<rest>.*)$');
/// Parses strings of the format <static symbol>+<integer offset>, where
/// <static symbol> is one of the static symbols used for Dart instruction
@@ -115,10 +116,19 @@
// If we're parsing the absolute address, we can only convert it into
// a PCOffset if we saw the instructions line of the stack trace header.
if (header != null) {
- final addressString = match.namedGroup('address');
+ final addressString = match.namedGroup('absolute');
final address = int.tryParse(addressString, radix: 16);
return header.offsetOf(address);
}
+ // If all other cases failed, check for a virtual address. Until this package
+ // depends on a version of Dart which only prints virtual addresses when the
+ // virtual addresses in the snapshot are the same as in separately saved
+ // debugging information, the other methods should be tried first.
+ final virtualString = match.namedGroup('virtual');
+ if (virtualString != null) {
+ final address = int.tryParse(virtualString, radix: 16);
+ return PCOffset(address, InstructionsSection.none);
+ }
return null;
}
diff --git a/pkg/native_stack_traces/lib/src/dwarf.dart b/pkg/native_stack_traces/lib/src/dwarf.dart
index a6e842e..96b93c9 100644
--- a/pkg/native_stack_traces/lib/src/dwarf.dart
+++ b/pkg/native_stack_traces/lib/src/dwarf.dart
@@ -1106,7 +1106,7 @@
}
/// The instructions section in which a program counter address is located.
-enum InstructionsSection { vm, isolate }
+enum InstructionsSection { none, vm, isolate }
/// A program counter address viewed as an offset into the appropriate
/// instructions section of a Dart snapshot.
@@ -1239,6 +1239,9 @@
/// The virtual address in this DWARF information for the given [PCOffset].
int virtualAddressOf(PCOffset pcOffset) {
switch (pcOffset.section) {
+ case InstructionsSection.none:
+ // This address is already virtualized, so we don't need to change it.
+ return pcOffset.offset;
case InstructionsSection.vm:
return pcOffset.offset + vmStartAddress;
case InstructionsSection.isolate:
diff --git a/pkg/native_stack_traces/pubspec.yaml b/pkg/native_stack_traces/pubspec.yaml
index c7f8f15..ed4e44a 100644
--- a/pkg/native_stack_traces/pubspec.yaml
+++ b/pkg/native_stack_traces/pubspec.yaml
@@ -1,6 +1,6 @@
name: native_stack_traces
description: Utilities for working with non-symbolic stack traces.
-version: 0.3.4
+version: 0.3.5
homepage: https://github.com/dart-lang/sdk/tree/master/pkg/native_stack_traces
diff --git a/pkg/nnbd_migration/bin/migrate.dart b/pkg/nnbd_migration/bin/migrate.dart
index 1b87fa3..f8abb42 100644
--- a/pkg/nnbd_migration/bin/migrate.dart
+++ b/pkg/nnbd_migration/bin/migrate.dart
@@ -4,10 +4,17 @@
import 'dart:io';
+import 'package:args/src/arg_results.dart';
import 'package:nnbd_migration/migration_cli.dart';
main(List<String> args) async {
var cli = MigrationCli(binaryName: 'nnbd_migration');
- await cli.run(args);
+ ArgResults argResults;
+ try {
+ argResults = MigrationCli.createParser().parse(args);
+ } on FormatException catch (e) {
+ cli.handleArgParsingException(e);
+ }
+ if (cli.exitCode == null) await cli.run(argResults);
exit(cli.exitCode ?? 0);
}
diff --git a/pkg/nnbd_migration/lib/api_for_analysis_server/dartfix_listener_interface.dart b/pkg/nnbd_migration/lib/api_for_analysis_server/dartfix_listener_interface.dart
deleted file mode 100644
index c2505a2..0000000
--- a/pkg/nnbd_migration/lib/api_for_analysis_server/dartfix_listener_interface.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright (c) 2020, 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 'package:analyzer/src/generated/source.dart';
-import 'package:analyzer_plugin/protocol/protocol_common.dart';
-import 'package:nnbd_migration/api_for_analysis_server/driver_provider.dart';
-
-abstract class DartFixListenerInterface {
- DriverProvider get server;
-
- SourceChange get sourceChange;
-
- /// Add the given [detail] to the list of details to be returned to the
- /// client.
- void addDetail(String detail);
-
- /// Record an edit to be sent to the client.
- ///
- /// The associated suggestion should be separately added by calling
- /// [addSuggestion].
- void addEditWithoutSuggestion(Source source, SourceEdit edit);
-
- /// Record a recommendation to be sent to the client.
- void addRecommendation(String description, [Location location]);
-
- /// Record a source change to be sent to the client.
- void addSourceFileEdit(
- String description, Location location, SourceFileEdit fileEdit);
-
- /// Record a suggestion to be sent to the client.
- ///
- /// The associated edits should be separately added by calling
- /// [addEditWithoutRecommendation].
- void addSuggestion(String description, Location location);
-}
diff --git a/pkg/nnbd_migration/lib/api_for_analysis_server/driver_provider.dart b/pkg/nnbd_migration/lib/api_for_analysis_server/driver_provider.dart
deleted file mode 100644
index 2079378..0000000
--- a/pkg/nnbd_migration/lib/api_for_analysis_server/driver_provider.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright (c) 2020, 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 'package:analyzer/dart/analysis/session.dart';
-import 'package:analyzer/file_system/file_system.dart';
-
-abstract class DriverProvider {
- ResourceProvider get resourceProvider;
-
- /// Return the appropriate analysis session for the file with the given
- /// [path].
- AnalysisSession getAnalysisSession(String path);
-}
diff --git a/pkg/nnbd_migration/lib/api_for_analysis_server/http_preview_server.dart b/pkg/nnbd_migration/lib/api_for_analysis_server/http_preview_server.dart
deleted file mode 100644
index 4a409a01..0000000
--- a/pkg/nnbd_migration/lib/api_for_analysis_server/http_preview_server.dart
+++ /dev/null
@@ -1,6 +0,0 @@
-// Copyright (c) 2020, 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.
-
-export 'package:nnbd_migration/src/preview/http_preview_server.dart'
- show HttpPreviewServer;
diff --git a/pkg/nnbd_migration/lib/api_for_analysis_server/instrumentation_listener.dart b/pkg/nnbd_migration/lib/api_for_analysis_server/instrumentation_listener.dart
deleted file mode 100644
index dc2785e..0000000
--- a/pkg/nnbd_migration/lib/api_for_analysis_server/instrumentation_listener.dart
+++ /dev/null
@@ -1,6 +0,0 @@
-// Copyright (c) 2020, 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.
-
-export 'package:nnbd_migration/src/front_end/instrumentation_listener.dart'
- show InstrumentationListener;
diff --git a/pkg/nnbd_migration/lib/api_for_analysis_server/migration_state.dart b/pkg/nnbd_migration/lib/api_for_analysis_server/migration_state.dart
deleted file mode 100644
index dabbeed..0000000
--- a/pkg/nnbd_migration/lib/api_for_analysis_server/migration_state.dart
+++ /dev/null
@@ -1,6 +0,0 @@
-// Copyright (c) 2020, 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.
-
-export 'package:nnbd_migration/src/front_end/migration_state.dart'
- show MigrationState;
diff --git a/pkg/nnbd_migration/lib/api_for_analysis_server/nnbd_migration.dart b/pkg/nnbd_migration/lib/api_for_analysis_server/nnbd_migration.dart
deleted file mode 100644
index e888dfc..0000000
--- a/pkg/nnbd_migration/lib/api_for_analysis_server/nnbd_migration.dart
+++ /dev/null
@@ -1,6 +0,0 @@
-// Copyright (c) 2020, 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.
-
-export 'package:nnbd_migration/nnbd_migration.dart'
- show NullabilityMigration, NullabilityMigrationListener;
diff --git a/pkg/nnbd_migration/lib/instrumentation.dart b/pkg/nnbd_migration/lib/instrumentation.dart
index ba7f2e3..903f254 100644
--- a/pkg/nnbd_migration/lib/instrumentation.dart
+++ b/pkg/nnbd_migration/lib/instrumentation.dart
@@ -80,8 +80,19 @@
}
static String _computeNodeDeclarationName(AstNode node) {
- if (node is Declaration) {
- return node.declaredElement?.name;
+ if (node is FieldDeclaration) {
+ if (node.fields.variables.length == 1) {
+ return node.fields.variables.single.declaredElement?.name;
+ } else {
+ // TODO(srawlins): Handle multiple fields declared at once; likely in
+ // caller, not here.
+ return null;
+ }
+ } else if (node is ExtensionDeclaration) {
+ return node.declaredElement?.name ?? '<unnamed extension>';
+ } else if (node is Declaration) {
+ var name = node.declaredElement?.name;
+ return name == '' ? '<unnamed>' : name;
} else {
return null;
}
@@ -266,6 +277,33 @@
/// about a reason for a modification to the source file.
abstract class FixReasonInfo {}
+/// Enum describing the possible hints that can be performed on an edge or a
+/// node.
+///
+/// Which actions are available can be built by other visitors, and the hint can
+/// be applied by visitors such as EditPlanner when the user requests it from
+/// the front end.
+enum HintActionKind {
+ /// Add a `/*?*/` hint to a type.
+ addNullableHint,
+
+ /// Add a `/*!*/` hint to a type.
+ addNonNullableHint,
+}
+
+/// Abstract interface for assigning ids numbers to nodes, and performing
+/// lookups afterwards.
+abstract class NodeMapper extends NodeToIdMapper {
+ /// Gets the node corresponding to the given [id].
+ NullabilityNodeInfo nodeForId(int id);
+}
+
+/// Abstract interface for assigning ids numbers to nodes.
+abstract class NodeToIdMapper {
+ /// Gets the id corresponding to the given [node].
+ int idForNode(NullabilityNodeInfo node);
+}
+
/// Interface used by the migration engine to expose information to its client
/// about the decisions made during migration, and how those decisions relate to
/// the input source code.
@@ -358,6 +396,14 @@
/// available to query as well.
Iterable<EdgeInfo> get downstreamEdges;
+ /// The hint actions users can perform on this node, indexed by the type of
+ /// hint.
+ ///
+ /// Each edit is represented as a [Map<int, List<AtomicEdit>>] as is typical
+ /// of [AtomicEdit]s since they do not have an offset. See extensions
+ /// [AtomicEditMap] and [AtomicEditList] for usage.
+ Map<HintActionKind, Map<int, List<AtomicEdit>>> get hintActions;
+
/// After migration is complete, this getter can be used to query whether
/// the type associated with this node was determined to be "exact nullable."
bool get isExactNullable;
@@ -401,6 +447,26 @@
String get description;
}
+/// A simple implementation of [NodeMapper] that assigns ids to nodes as they
+/// are requested, backed by a map.
+///
+/// Be careful not to leak references to nodes by holding on to this beyond the
+/// lifetime of the nodes it maps.
+class SimpleNodeMapper extends NodeMapper {
+ final _nodeToId = <NullabilityNodeInfo, int>{};
+ final _idToNode = <int, NullabilityNodeInfo>{};
+
+ @override
+ int idForNode(NullabilityNodeInfo node) {
+ final id = _nodeToId.putIfAbsent(node, () => _nodeToId.length);
+ _idToNode.putIfAbsent(id, () => node);
+ return id;
+ }
+
+ @override
+ NullabilityNodeInfo nodeForId(int id) => _idToNode[id];
+}
+
/// Information exposed to the migration client about a node in the nullability
/// graph resulting from a type substitution.
abstract class SubstitutionNodeInfo extends NullabilityNodeInfo {
@@ -422,6 +488,8 @@
/// Information about a propagation step that occurred during upstream
/// propagation.
abstract class UpstreamPropagationStepInfo implements PropagationStepInfo {
+ bool get isStartingPoint;
+
/// The node whose nullability was changed.
///
/// Any propagation step that took effect should have a non-null value here.
@@ -432,3 +500,19 @@
UpstreamPropagationStepInfo get principalCause;
}
+
+/// Extension methods to make [HintActionKind] act as a smart enum.
+extension HintActionKindBehaviors on HintActionKind {
+ /// Get the text description of a [HintActionKind], for display to users.
+ String get description {
+ switch (this) {
+ case HintActionKind.addNullableHint:
+ return 'Add /*?*/ hint';
+ case HintActionKind.addNonNullableHint:
+ return 'Add /*!*/ hint';
+ }
+
+ assert(false);
+ return null;
+ }
+}
diff --git a/pkg/nnbd_migration/lib/migration_cli.dart b/pkg/nnbd_migration/lib/migration_cli.dart
index 1022433..f7bb4f6 100644
--- a/pkg/nnbd_migration/lib/migration_cli.dart
+++ b/pkg/nnbd_migration/lib/migration_cli.dart
@@ -5,8 +5,8 @@
import 'dart:async';
import 'dart:io' hide File;
+import 'package:analysis_server/src/api_for_nnbd_migration.dart';
import 'package:analysis_server/src/edit/fix/fix_code_task.dart';
-import 'package:analysis_server/src/edit/fix/non_nullable_fix.dart';
import 'package:analyzer/dart/analysis/analysis_context.dart';
import 'package:analyzer/dart/analysis/results.dart';
import 'package:analyzer/dart/analysis/session.dart';
@@ -16,17 +16,18 @@
show File, ResourceProvider;
import 'package:analyzer/file_system/physical_file_system.dart';
import 'package:analyzer/src/dart/analysis/analysis_context_collection.dart';
+import 'package:analyzer/src/dart/analysis/driver_based_analysis_context.dart';
import 'package:analyzer/src/error/codes.dart';
import 'package:analyzer/src/generated/source.dart';
import 'package:analyzer/src/util/sdk.dart';
import 'package:analyzer_plugin/protocol/protocol_common.dart'
hide AnalysisError;
import 'package:args/args.dart';
+import 'package:args/command_runner.dart';
import 'package:cli_util/cli_logging.dart';
import 'package:meta/meta.dart';
-import 'package:nnbd_migration/api_for_analysis_server/dartfix_listener_interface.dart';
-import 'package:nnbd_migration/api_for_analysis_server/driver_provider.dart';
import 'package:nnbd_migration/src/edit_plan.dart';
+import 'package:nnbd_migration/src/front_end/non_nullable_fix.dart';
import 'package:nnbd_migration/src/utilities/source_edit_diff_formatter.dart';
import 'package:path/path.dart' show Context;
@@ -75,6 +76,36 @@
@required this.webPreview});
}
+class MigrateCommand extends Command<dynamic> {
+ final bool verbose;
+
+ MigrateCommand({this.verbose = false}) {
+ MigrationCli._defineOptions(argParser, !verbose);
+ }
+
+ @override
+ String get description =>
+ 'Perform a null safety migration on a project or package.'
+ '\n\nThe migrate feature is in preview and not yet complete; we welcome '
+ 'feedback.\n\n'
+ 'https://github.com/dart-lang/sdk/tree/master/pkg/nnbd_migration#providing-feedback';
+
+ @override
+ String get invocation {
+ return '${super.invocation} [project or directory]';
+ }
+
+ @override
+ String get name => 'migrate';
+
+ @override
+ FutureOr<int> run() async {
+ var cli = MigrationCli(binaryName: 'dart $name');
+ await cli.run(argResults, isVerbose: verbose);
+ return cli.exitCode;
+ }
+}
+
/// Command-line API for the migration tool, with additional methods exposed for
/// testing.
class MigrationCli {
@@ -108,6 +139,10 @@
final Map<String, LineInfo> lineInfo = {};
+ _DartFixListener _dartFixListener;
+
+ _FixCodeProcessor _fixCodeProcessor;
+
MigrationCli(
{@required this.binaryName,
@visibleForTesting this.loggerFactory = _defaultLoggerFactory,
@@ -135,10 +170,9 @@
/// If no additional work should be done (e.g. because the user asked for
/// help, or supplied a bad option), a nonzero value is stored in [exitCode].
@visibleForTesting
- void parseCommandLineArgs(List<String> args) {
+ void decodeCommandLineArgs(ArgResults argResults, {bool isVerbose}) {
try {
- var argResults = _createParser().parse(args);
- var isVerbose = argResults[CommandLineOptions.verboseFlag] as bool;
+ isVerbose ??= argResults[CommandLineOptions.verboseFlag] as bool;
if (argResults[CommandLineOptions.helpFlag] as bool) {
_showUsage(isVerbose);
exitCode = 0;
@@ -191,25 +225,29 @@
logger = loggerFactory(true);
}
} on Object catch (exception) {
- String message;
- if (exception is FormatException) {
- message = exception.message;
- } else if (exception is _BadArgException) {
- message = exception.message;
- } else {
- message =
- 'Exception occurred while parsing command-line options: $exception';
- }
- logger.stderr(message);
- _showUsage(false);
- exitCode = 1;
- return;
+ handleArgParsingException(exception);
}
}
+ void handleArgParsingException(Object exception) {
+ String message;
+ if (exception is FormatException) {
+ message = exception.message;
+ } else if (exception is _BadArgException) {
+ message = exception.message;
+ } else {
+ message =
+ 'Exception occurred while parsing command-line options: $exception';
+ }
+ logger.stderr(message);
+ _showUsage(false);
+ exitCode = 1;
+ return;
+ }
+
/// Runs the full migration process.
- void run(List<String> args) async {
- parseCommandLineArgs(args);
+ void run(ArgResults argResults, {bool isVerbose}) async {
+ decodeCommandLineArgs(argResults, isVerbose: isVerbose);
if (exitCode != null) return;
logger.stdout('Migrating ${options.directory}');
@@ -217,39 +255,43 @@
List<String> previewUrls;
NonNullableFix nonNullableFix;
- _DartFixListener dartFixListener;
await _withProgress(
'${ansi.emphasized('Generating migration suggestions')}', () async {
var contextCollection = AnalysisContextCollectionImpl(
includedPaths: [options.directory],
resourceProvider: resourceProvider,
sdkPath: options.sdkPath);
- var context = contextCollection.contexts.single;
- var fixCodeProcessor = _FixCodeProcessor(context, this);
- dartFixListener = _DartFixListener(
- _DriverProvider(resourceProvider, context.currentSession));
- nonNullableFix = NonNullableFix(dartFixListener, resourceProvider,
+ DriverBasedAnalysisContext context =
+ contextCollection.contexts.single as DriverBasedAnalysisContext;
+ _fixCodeProcessor = _FixCodeProcessor(context, this);
+ _dartFixListener =
+ _DartFixListener(_DriverProvider(resourceProvider, context));
+ nonNullableFix = NonNullableFix(_dartFixListener, resourceProvider,
included: [options.directory],
preferredPort: options.previewPort,
enablePreview: options.webPreview,
summaryPath: options.summary);
- fixCodeProcessor.registerCodeTask(nonNullableFix);
+ nonNullableFix.rerunFunction = _rerunFunction;
+ _fixCodeProcessor.registerCodeTask(nonNullableFix);
+ _fixCodeProcessor.nonNullableFixTask = nonNullableFix;
+
try {
- await fixCodeProcessor.runFirstPhase();
+ await _fixCodeProcessor.runFirstPhase();
+ _fixCodeProcessor._progressBar.clear();
_checkForErrors();
} on StateError catch (e) {
logger.stdout(e.toString());
exitCode = 1;
}
if (exitCode != null) return;
- previewUrls = await fixCodeProcessor.runLaterPhases();
+ previewUrls = await _fixCodeProcessor.runLaterPhases();
});
if (exitCode != null) return;
if (options.applyChanges) {
logger.stdout(ansi.emphasized('Applying changes:'));
- var allEdits = dartFixListener.sourceChange.edits;
+ var allEdits = _dartFixListener.sourceChange.edits;
_applyMigrationSuggestions(allEdits);
logger.stdout('');
@@ -268,17 +310,13 @@
assert(previewUrls.length <= 1,
'Got unexpected extra preview URLs from server');
- logger.stdout(ansi.emphasized('View migration results:'));
-
- // TODO(devoncarew): Open a browser automatically.
+ // TODO(#41809): Open a browser automatically.
logger.stdout('''
-Visit:
-
+View the migration suggestions by visiting:
+
${ansi.emphasized(url)}
-to see the migration results. Use the interactive web view to review, improve, or apply
-the results (alternatively, to apply the results without using the web preview, re-run
-the tool with --${CommandLineOptions.applyChangesFlag}).
+Use this interactive web view to review, improve, or apply the results.
''');
logger.stdout('When finished with the preview, hit ctrl-c '
@@ -290,7 +328,7 @@
} else {
logger.stdout(ansi.emphasized('Summary of changes:'));
- _displayChangeSummary(dartFixListener);
+ _displayChangeSummary(_dartFixListener);
logger.stdout('');
logger.stdout('To apply these changes, re-run the tool with '
@@ -374,49 +412,6 @@
}
}
- ArgParser _createParser({bool hide = true}) {
- var parser = ArgParser();
- parser.addFlag(CommandLineOptions.applyChangesFlag,
- defaultsTo: false,
- negatable: false,
- help: 'Apply the proposed null safety changes to the files on disk.');
- parser.addFlag(CommandLineOptions.helpFlag,
- abbr: 'h',
- help:
- 'Display this help message. Add --verbose to show hidden options.',
- defaultsTo: false,
- negatable: false);
- parser.addFlag(
- CommandLineOptions.ignoreErrorsFlag,
- defaultsTo: false,
- negatable: false,
- help: 'Attempt to perform null safety analysis even if there are '
- 'analysis errors in the project.',
- );
- parser.addOption(CommandLineOptions.previewPortOption,
- help:
- 'Run the preview server on the specified port. If not specified, '
- 'dynamically allocate a port.');
- parser.addOption(CommandLineOptions.sdkPathOption,
- help: 'The path to the Dart SDK.', hide: hide);
- parser.addOption(CommandLineOptions.summaryOption,
- help:
- 'Output path for a machine-readable summary of migration changes');
- parser.addFlag(CommandLineOptions.verboseFlag,
- abbr: 'v',
- defaultsTo: false,
- help: 'Verbose output.',
- negatable: false);
- parser.addFlag(CommandLineOptions.webPreviewFlag,
- defaultsTo: true,
- negatable: true,
- help: 'Show an interactive preview of the proposed null safety changes '
- 'in a browser window.\n'
- 'With --no-web-preview, the proposed changes are instead printed to '
- 'the console.');
- return parser;
- }
-
void _displayChangeSummary(_DartFixListener migrationResults) {
Map<String, List<_DartFixSuggestion>> fileSuggestions = {};
for (_DartFixSuggestion suggestion in migrationResults.suggestions) {
@@ -472,11 +467,20 @@
bool _isUriError(AnalysisError error) =>
error.errorCode == CompileTimeErrorCode.URI_DOES_NOT_EXIST;
+ Future<void> _rerunFunction() async {
+ _dartFixListener.reset();
+ _fixCodeProcessor.prepareToRerun();
+ await _fixCodeProcessor.runFirstPhase();
+ // TODO(paulberry): check for errors (see
+ // https://github.com/dart-lang/sdk/issues/41712)
+ await _fixCodeProcessor.runLaterPhases();
+ }
+
void _showUsage(bool isVerbose) {
logger.stderr('Usage: $binaryName [options...] [<package directory>]');
logger.stderr('');
- logger.stderr(_createParser(hide: !isVerbose).usage);
+ logger.stderr(createParser(hide: !isVerbose).usage);
if (!isVerbose) {
logger.stderr('');
logger
@@ -504,6 +508,18 @@
}
}
+ static ArgParser createParser({bool hide = true}) {
+ var parser = ArgParser();
+ parser.addFlag(CommandLineOptions.helpFlag,
+ abbr: 'h',
+ help:
+ 'Display this help message. Add --verbose to show hidden options.',
+ defaultsTo: false,
+ negatable: false);
+ _defineOptions(parser, hide);
+ return parser;
+ }
+
static Logger _defaultLoggerFactory(bool isVerbose) {
var ansi = Ansi(Ansi.terminalSupportsAnsi);
if (isVerbose) {
@@ -513,6 +529,41 @@
}
}
+ static void _defineOptions(ArgParser parser, bool hide) {
+ parser.addFlag(CommandLineOptions.applyChangesFlag,
+ defaultsTo: false,
+ negatable: false,
+ help: 'Apply the proposed null safety changes to the files on disk.');
+ parser.addFlag(
+ CommandLineOptions.ignoreErrorsFlag,
+ defaultsTo: false,
+ negatable: false,
+ help: 'Attempt to perform null safety analysis even if there are '
+ 'analysis errors in the project.',
+ );
+ parser.addOption(CommandLineOptions.previewPortOption,
+ help:
+ 'Run the preview server on the specified port. If not specified, '
+ 'dynamically allocate a port.');
+ parser.addOption(CommandLineOptions.sdkPathOption,
+ help: 'The path to the Dart SDK.', hide: hide);
+ parser.addOption(CommandLineOptions.summaryOption,
+ help:
+ 'Output path for a machine-readable summary of migration changes');
+ parser.addFlag(CommandLineOptions.verboseFlag,
+ abbr: 'v',
+ defaultsTo: false,
+ help: 'Verbose output.',
+ negatable: false);
+ parser.addFlag(CommandLineOptions.webPreviewFlag,
+ defaultsTo: true,
+ negatable: true,
+ help: 'Show an interactive preview of the proposed null safety changes '
+ 'in a browser window.\n'
+ 'With --no-web-preview, the proposed changes are instead printed to '
+ 'the console.');
+ }
+
static Map<int, List<AtomicEdit>> _sourceEditsToAtomicEdits(
List<SourceEdit> edits) {
return {
@@ -567,6 +618,16 @@
void addSuggestion(String description, Location location) {
suggestions.add(_DartFixSuggestion(description, location: location));
}
+
+ /// Reset this listener so that it can accrue a new set of changes.
+ void reset() {
+ suggestions.clear();
+ sourceChange
+ ..edits.clear()
+ ..linkedEditGroups.clear()
+ ..selection = null
+ ..id = null;
+ }
}
class _DartFixSuggestion {
@@ -581,29 +642,38 @@
@override
final ResourceProvider resourceProvider;
- final AnalysisSession analysisSession;
+ final AnalysisContext analysisContext;
- _DriverProvider(this.resourceProvider, this.analysisSession);
+ _DriverProvider(this.resourceProvider, this.analysisContext);
@override
- AnalysisSession getAnalysisSession(String path) => analysisSession;
+ AnalysisSession getAnalysisSession(String path) =>
+ analysisContext.currentSession;
}
class _FixCodeProcessor extends Object with FixCodeProcessor {
- final AnalysisContext context;
+ final DriverBasedAnalysisContext context;
- final Set<String> pathsToProcess;
+ Set<String> pathsToProcess;
+
+ _ProgressBar _progressBar;
final MigrationCli _migrationCli;
+ /// The task used to migrate to NNBD.
+ NonNullableFix nonNullableFixTask;
+
_FixCodeProcessor(this.context, this._migrationCli)
- : pathsToProcess = context.contextRoot
- .analyzedFiles()
- .where((s) => s.endsWith('.dart'))
- .toSet();
+ : pathsToProcess = _computePathsToProcess(context);
+
+ void prepareToRerun() {
+ var driver = context.driver;
+ pathsToProcess = _computePathsToProcess(context);
+ pathsToProcess.forEach(driver.changeFile);
+ }
/// Call the supplied [process] function to process each compilation unit.
- Future processResources(
+ Future<void> processResources(
Future<void> Function(ResolvedUnitResult result) process) async {
var driver = context.currentSession;
var pathsProcessed = <String>{};
@@ -642,11 +712,15 @@
}
Future<void> runFirstPhase() async {
+ // All tasks should be registered; [numPhases] should be finalized.
+ _progressBar = _ProgressBar(pathsToProcess.length * numPhases);
+
// Process package
await processPackage(context.contextRoot.root);
// Process each source file.
await processResources((ResolvedUnitResult result) async {
+ _progressBar.tick();
List<AnalysisError> errors = result.errors
.where((error) => error.severity == Severity.error)
.toList();
@@ -664,13 +738,22 @@
Future<List<String>> runLaterPhases() async {
for (var phase = 1; phase < numPhases; phase++) {
await processResources((ResolvedUnitResult result) async {
+ _progressBar.tick();
await processCodeTasks(phase, result);
});
}
await finishCodeTasks();
+ _progressBar.complete();
return nonNullableFixTask.previewUrls;
}
+
+ static Set<String> _computePathsToProcess(
+ DriverBasedAnalysisContext context) =>
+ context.contextRoot
+ .analyzedFiles()
+ .where((s) => s.endsWith('.dart'))
+ .toSet();
}
/// Given a Logger and an analysis issue, render the issue to the logger.
@@ -712,3 +795,75 @@
return '???';
}
}
+
+/// A facility for drawing a progress bar in the terminal.
+///
+/// The bar is instantiated with the total number of "ticks" to be completed,
+/// and progress is made by calling [tick]. The bar is drawn across one entire
+/// line, like so:
+///
+/// [---------- ]
+///
+/// The hyphens represent completed progress, and the whitespace represents
+/// remaining progress.
+///
+/// If there is no terminal, the progress bar will not be drawn.
+class _ProgressBar {
+ /// Whether the progress bar should be drawn.
+ /*late*/ bool _shouldDrawProgress;
+
+ /// The width of the terminal, in terms of characters.
+ /*late*/ int _width;
+
+ /// The inner width of the terminal, in terms of characters.
+ ///
+ /// This represents the number of characters available for drawing progress.
+ /*late*/ int _innerWidth;
+
+ final int _totalTickCount;
+
+ int _tickCount = 0;
+
+ _ProgressBar(this._totalTickCount) {
+ if (!stdout.hasTerminal) {
+ _shouldDrawProgress = false;
+ } else {
+ _shouldDrawProgress = true;
+ _width = stdout.terminalColumns;
+ _innerWidth = stdout.terminalColumns - 2;
+ stdout.write('[' + ' ' * _innerWidth + ']');
+ }
+ }
+
+ /// Clear the progress bar from the terminal, allowing other logging to be
+ /// printed.
+ void clear() {
+ if (!_shouldDrawProgress) {
+ return;
+ }
+ stdout.write('\r' + ' ' * _width + '\r');
+ }
+
+ /// Draw the progress bar as complete, and print two newlines.
+ void complete() {
+ if (!_shouldDrawProgress) {
+ return;
+ }
+ stdout.write('\r[' + '-' * _innerWidth + ']\n\n');
+ }
+
+ /// Progress the bar by one tick.
+ void tick() {
+ if (!_shouldDrawProgress) {
+ return;
+ }
+ _tickCount++;
+ var fractionComplete = _tickCount * _innerWidth ~/ _totalTickCount - 1;
+ var remaining = _innerWidth - fractionComplete - 1;
+ stdout.write('\r[' + // Bring cursor back to the start of the line.
+ '-' * fractionComplete + // Print complete work.
+ AnsiProgress.kAnimationItems[_tickCount % 4] + // Print spinner.
+ ' ' * remaining + // Print remaining work.
+ ']');
+ }
+}
diff --git a/pkg/nnbd_migration/lib/src/fix_aggregator.dart b/pkg/nnbd_migration/lib/src/fix_aggregator.dart
index 09ccfc3..1a0cefd 100644
--- a/pkg/nnbd_migration/lib/src/fix_aggregator.dart
+++ b/pkg/nnbd_migration/lib/src/fix_aggregator.dart
@@ -809,11 +809,29 @@
EditPlan _apply(SimpleFormalParameter node, FixAggregator aggregator) {
var innerPlan = aggregator.innerPlanForNode(node);
if (addExplicitType == null) return innerPlan;
- return aggregator.planner.surround(innerPlan, prefix: [
- AtomicEdit.insert(
- addExplicitType.getDisplayString(withNullability: true)),
- AtomicEdit.insert(' ')
- ]);
+ var typeText = aggregator.typeToCode(addExplicitType);
+ if (node.keyword?.keyword == Keyword.VAR) {
+ // TODO(srawlins): Test instrumentation info.
+ var info =
+ AtomicEditInfo(NullabilityFixDescription.replaceVar(typeText), {});
+ return aggregator.planner.passThrough(node, innerPlans: [
+ aggregator.planner
+ .replaceToken(node, node.keyword, typeText, info: info),
+ ...aggregator.innerPlansForNode(node),
+ ]);
+ } else {
+ // TODO(srawlins): Test instrumentation info.
+ var info =
+ AtomicEditInfo(NullabilityFixDescription.addType(typeText), {});
+ // Skip past the offset of any metadata, a potential `final` keyword, and
+ // a potential `covariant` keyword.
+ var offset = node.type?.offset ?? node.identifier.offset;
+ return aggregator.planner.passThrough(node, innerPlans: [
+ aggregator.planner.insertText(node, offset,
+ [AtomicEdit.insert(typeText, info: info), AtomicEdit.insert(' ')]),
+ ...aggregator.innerPlansForNode(node),
+ ]);
+ }
}
}
@@ -941,7 +959,7 @@
[AtomicEdit.insert('late', info: info), AtomicEdit.insert(' ')]));
}
if (addExplicitType != null) {
- var typeText = addExplicitType.getDisplayString(withNullability: true);
+ var typeText = aggregator.typeToCode(addExplicitType);
if (node.keyword?.keyword == Keyword.VAR) {
var info =
AtomicEditInfo(NullabilityFixDescription.replaceVar(typeText), {});
diff --git a/pkg/nnbd_migration/lib/src/fix_builder.dart b/pkg/nnbd_migration/lib/src/fix_builder.dart
index 1d29015..8ac7da1 100644
--- a/pkg/nnbd_migration/lib/src/fix_builder.dart
+++ b/pkg/nnbd_migration/lib/src/fix_builder.dart
@@ -463,7 +463,7 @@
ParameterElement parameter, DartType type) {
var postMigrationType = parameter.type;
if (postMigrationType != type) {
- // TODO(paulberry): make sure we test all kinds of parameters
+ // TODO(paulberry): test field formal parameters.
_fixBuilder._addedParameterTypes[parameter] = postMigrationType;
return postMigrationType;
}
diff --git a/pkg/nnbd_migration/lib/src/front_end/info_builder.dart b/pkg/nnbd_migration/lib/src/front_end/info_builder.dart
index 23449dc..cc9580f 100644
--- a/pkg/nnbd_migration/lib/src/front_end/info_builder.dart
+++ b/pkg/nnbd_migration/lib/src/front_end/info_builder.dart
@@ -4,6 +4,7 @@
import 'dart:collection';
+import 'package:analysis_server/src/api_for_nnbd_migration.dart';
import 'package:analyzer/dart/analysis/results.dart';
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/file_system/file_system.dart';
@@ -13,8 +14,6 @@
import 'package:analyzer_plugin/src/utilities/navigation/navigation.dart';
import 'package:analyzer_plugin/utilities/navigation/navigation_dart.dart';
import 'package:meta/meta.dart';
-import 'package:nnbd_migration/api_for_analysis_server/dartfix_listener_interface.dart';
-import 'package:nnbd_migration/api_for_analysis_server/driver_provider.dart';
import 'package:nnbd_migration/fix_reason_target.dart';
import 'package:nnbd_migration/instrumentation.dart';
import 'package:nnbd_migration/nnbd_migration.dart';
@@ -25,6 +24,9 @@
/// A builder used to build the migration information for a library.
class InfoBuilder {
+ /// The node mapper for the migration state.
+ NodeMapper nodeMapper;
+
/// The resource provider used to access the file system.
ResourceProvider provider;
@@ -46,7 +48,7 @@
/// Initialize a newly created builder.
InfoBuilder(this.provider, this.includedPath, this.info, this.listener,
- this.migration);
+ this.migration, this.nodeMapper);
/// The provider used to get information about libraries.
DriverProvider get driverProvider => listener.server;
@@ -245,7 +247,7 @@
return;
}
assert(identical(step.node, node));
- while (step != null) {
+ while (step != null && !step.isStartingPoint) {
entries.add(_nodeToTraceEntry(step.node));
if (step.codeReference != null) {
entries.add(_stepToTraceEntry(step));
@@ -400,7 +402,8 @@
}
TraceEntryInfo _makeTraceEntry(
- String description, CodeReference codeReference) {
+ String description, CodeReference codeReference,
+ {List<HintAction> hintActions = const []}) {
var length = 1; // TODO(paulberry): figure out the correct value.
return TraceEntryInfo(
description,
@@ -408,13 +411,17 @@
codeReference == null
? null
: NavigationTarget(codeReference.path, codeReference.offset,
- codeReference.line, length));
+ codeReference.line, length),
+ hintActions: hintActions);
}
TraceEntryInfo _nodeToTraceEntry(NullabilityNodeInfo node,
{String description}) {
description ??= node.toString(); // TODO(paulberry): improve this message
- return _makeTraceEntry(description, node.codeReference);
+ return _makeTraceEntry(description, node.codeReference,
+ hintActions: node.hintActions.keys
+ .map((kind) => HintAction(kind, nodeMapper.idForNode(node)))
+ .toList());
}
TraceEntryInfo _stepToTraceEntry(PropagationStepInfo step) {
diff --git a/pkg/nnbd_migration/lib/src/front_end/migration_info.dart b/pkg/nnbd_migration/lib/src/front_end/migration_info.dart
index cafab98..afae8bd 100644
--- a/pkg/nnbd_migration/lib/src/front_end/migration_info.dart
+++ b/pkg/nnbd_migration/lib/src/front_end/migration_info.dart
@@ -7,6 +7,7 @@
import 'package:collection/collection.dart';
import 'package:crypto/crypto.dart';
import 'package:meta/meta.dart';
+import 'package:nnbd_migration/instrumentation.dart';
import 'package:nnbd_migration/nnbd_migration.dart';
import 'package:nnbd_migration/src/front_end/offset_mapper.dart';
import 'package:nnbd_migration/src/front_end/unit_link.dart';
@@ -38,6 +39,24 @@
sourceEdit.replacement);
}
+/// Everything the front end needs to know to tell the server to perform a hint
+/// action.
+class HintAction {
+ final HintActionKind kind;
+ final int nodeId;
+ HintAction(this.kind, this.nodeId);
+
+ HintAction.fromJson(Map<String, Object> json)
+ : nodeId = json['nodeId'] as int,
+ kind = HintActionKind.values
+ .singleWhere((action) => action.index == json['kind']);
+
+ Map<String, Object> toJson() => {
+ 'nodeId': nodeId,
+ 'kind': kind.index,
+ };
+}
+
/// A class storing rendering information for an entire migration report.
///
/// This generally provides one [InstrumentationRenderer] (for one library)
@@ -198,7 +217,12 @@
/// code location is known.
final NavigationTarget target;
- TraceEntryInfo(this.description, this.function, this.target);
+ /// The hint actions available on this trace entry, or `[]` if none.
+ final List<HintAction> hintActions;
+
+ TraceEntryInfo(this.description, this.function, this.target,
+ {this.hintActions = const []})
+ : assert(hintActions != null);
}
/// Information about a nullability trace.
@@ -278,12 +302,13 @@
final contentCopy = content;
final regionsCopy = List<RegionInfo>.from(regions);
final length = replacement.length;
- offset = offsetMapper.map(offset);
+ final migratedOffset = offsetMapper.map(offset);
try {
- content = content.replaceRange(offset, offset, replacement);
+ content =
+ content.replaceRange(migratedOffset, migratedOffset, replacement);
regions.clear();
regions.addAll(regionsCopy.map((region) {
- if (region.offset < offset) {
+ if (region.offset < migratedOffset) {
return region;
}
// TODO: perhaps this should be handled by offset mapper instead, since
@@ -302,7 +327,9 @@
}));
diskChangesOffsetMapper = OffsetMapper.sequence(
- diskChangesOffsetMapper, OffsetMapper.forInsertion(offset, length));
+ diskChangesOffsetMapper,
+ OffsetMapper.forInsertion(
+ diskChangesOffsetMapper.map(offset), length));
} catch (e) {
regions.clear();
regions.addAll(regionsCopy);
diff --git a/pkg/nnbd_migration/lib/src/front_end/migration_state.dart b/pkg/nnbd_migration/lib/src/front_end/migration_state.dart
index 1d714bd..f61a5fd 100644
--- a/pkg/nnbd_migration/lib/src/front_end/migration_state.dart
+++ b/pkg/nnbd_migration/lib/src/front_end/migration_state.dart
@@ -2,8 +2,9 @@
// 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 'package:nnbd_migration/api_for_analysis_server/dartfix_listener_interface.dart';
+import 'package:analysis_server/src/api_for_nnbd_migration.dart';
import 'package:nnbd_migration/nnbd_migration.dart';
+import 'package:nnbd_migration/instrumentation.dart';
import 'package:nnbd_migration/src/front_end/info_builder.dart';
import 'package:nnbd_migration/src/front_end/instrumentation_listener.dart';
import 'package:nnbd_migration/src/front_end/migration_info.dart';
@@ -19,6 +20,9 @@
/// The root directory that contains all of the files that were migrated.
final String includedRoot;
+ /// The mapper user to give nodes ids.
+ final NodeMapper nodeMapper = SimpleNodeMapper();
+
/// The listener used to collect fixes.
final DartFixListenerInterface listener;
@@ -52,7 +56,7 @@
assert(!hasBeenApplied);
var provider = listener.server.resourceProvider;
var infoBuilder = InfoBuilder(provider, includedRoot,
- instrumentationListener.data, listener, migration);
+ instrumentationListener.data, listener, migration, nodeMapper);
var unitInfos = await infoBuilder.explainMigration();
var pathContext = provider.pathContext;
migrationInfo = MigrationInfo(
diff --git a/pkg/analysis_server/lib/src/edit/fix/non_nullable_fix.dart b/pkg/nnbd_migration/lib/src/front_end/non_nullable_fix.dart
similarity index 94%
rename from pkg/analysis_server/lib/src/edit/fix/non_nullable_fix.dart
rename to pkg/nnbd_migration/lib/src/front_end/non_nullable_fix.dart
index 24c6bd1..e479335 100644
--- a/pkg/analysis_server/lib/src/edit/fix/non_nullable_fix.dart
+++ b/pkg/nnbd_migration/lib/src/front_end/non_nullable_fix.dart
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analysis_server/protocol/protocol_generated.dart';
+import 'package:analysis_server/src/api_for_nnbd_migration.dart';
import 'package:analysis_server/src/edit/fix/dartfix_listener.dart';
import 'package:analysis_server/src/edit/fix/dartfix_registrar.dart';
import 'package:analysis_server/src/edit/fix/fix_code_task.dart';
@@ -13,12 +14,11 @@
import 'package:analyzer_plugin/protocol/protocol_common.dart';
import 'package:charcode/charcode.dart';
import 'package:meta/meta.dart';
-import 'package:nnbd_migration/api_for_analysis_server/dartfix_listener_interface.dart';
-import 'package:nnbd_migration/api_for_analysis_server/http_preview_server.dart';
-import 'package:nnbd_migration/api_for_analysis_server/instrumentation_listener.dart';
-import 'package:nnbd_migration/api_for_analysis_server/migration_state.dart';
-import 'package:nnbd_migration/api_for_analysis_server/nnbd_migration.dart';
+import 'package:nnbd_migration/nnbd_migration.dart';
+import 'package:nnbd_migration/src/front_end/instrumentation_listener.dart';
+import 'package:nnbd_migration/src/front_end/migration_state.dart';
import 'package:nnbd_migration/src/front_end/migration_summary.dart';
+import 'package:nnbd_migration/src/preview/http_preview_server.dart';
import 'package:pub_semver/pub_semver.dart';
import 'package:source_span/source_span.dart';
import 'package:yaml/yaml.dart';
@@ -80,7 +80,7 @@
/// If this occurs, then don't update any code.
bool _packageIsNNBD = true;
- Future<void> Function([List<String>]) rerunFunction;
+ Future<void> Function() rerunFunction;
/// A list of the URLs corresponding to the included roots.
List<String> previewUrls;
@@ -147,7 +147,7 @@
return;
}
try {
- pubspecMap = loadYaml(pubspecContent);
+ pubspecMap = loadYaml(pubspecContent) as YamlNode;
} on YamlException catch (e) {
processYamlException('parse', pubspecFile.path, e);
return;
@@ -207,7 +207,7 @@
sdk: '$_intendedSdkVersionConstraint'""";
insertAfterParent(environmentOptions.span, content);
} else if (sdk is YamlScalar) {
- var currentConstraint = VersionConstraint.parse(sdk.value);
+ var currentConstraint = VersionConstraint.parse(sdk.value as String);
var minimumVersion = Version.parse(_intendedMinimumSdkVersion);
if (currentConstraint is VersionRange &&
currentConstraint.min >= minimumVersion) {
@@ -257,9 +257,9 @@
_packageIsNNBD = false;
}
- Future<MigrationState> rerun([List<String> changedPaths]) async {
+ Future<MigrationState> rerun() async {
reset();
- await rerunFunction(changedPaths);
+ await rerunFunction();
final state = MigrationState(
migration, includedRoot, listener, instrumentationListener);
await state.refresh();
diff --git a/pkg/nnbd_migration/lib/src/front_end/region_renderer.dart b/pkg/nnbd_migration/lib/src/front_end/region_renderer.dart
index 6b65c50..120d232 100644
--- a/pkg/nnbd_migration/lib/src/front_end/region_renderer.dart
+++ b/pkg/nnbd_migration/lib/src/front_end/region_renderer.dart
@@ -73,7 +73,8 @@
description: entry.description,
function: entry.function,
link:
- entry.target == null ? null : linkForTarget(entry.target))
+ entry.target == null ? null : linkForTarget(entry.target),
+ hintActions: entry.hintActions)
])
],
);
diff --git a/pkg/nnbd_migration/lib/src/front_end/resources/migration.css b/pkg/nnbd_migration/lib/src/front_end/resources/migration.css
index 41940da..0c21ff4 100644
--- a/pkg/nnbd_migration/lib/src/front_end/resources/migration.css
+++ b/pkg/nnbd_migration/lib/src/front_end/resources/migration.css
@@ -336,8 +336,12 @@
}
.region.informative-region {
- background-color: #888888;
- color: #000000;
+ background-color: #404549; /* #282b2e, lightened 10% */
+ border-bottom: solid rgba(255, 255, 0, 0.7) 1px;
+ display: inline-block;
+ height: 14px;
+ position: relative;
+ top: 1px;
}
.target {
@@ -483,7 +487,7 @@
transform: translate(-50%, -50%);
}
-p.trace .type-description {
+.edit-panel .type-description {
/* From HLJS's .hljs-keyword, .hljs-selector-tag, .hljs-deletion */
color: #cc7832;
font-family: monospace;
@@ -497,8 +501,6 @@
ul.trace li {
color: white;
- margin-left: 14px;
- text-indent: -14px;
}
ul.trace li .function {
@@ -508,6 +510,15 @@
font-weight: 600;
}
+ul.trace li p.drawer {
+ margin: 3px 0px;
+ padding: 0px 0px 0px 14px;
+}
+
+ul.trace li p.drawer button {
+ margin-right: 3px;
+}
+
.elevation-z4 {
box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2),
0px 4px 5px 0px rgba(0, 0, 0, 0.14),
diff --git a/pkg/nnbd_migration/lib/src/front_end/resources/resources.g.dart b/pkg/nnbd_migration/lib/src/front_end/resources/resources.g.dart
index 2cc1d7e..ffab306 100644
--- a/pkg/nnbd_migration/lib/src/front_end/resources/resources.g.dart
+++ b/pkg/nnbd_migration/lib/src/front_end/resources/resources.g.dart
@@ -327,7 +327,7 @@
''';
String _migration_css;
-// migration_css md5 is '3ac37808bdb8d07efd1c9ce21b67fccc'
+// migration_css md5 is '48272ee82aad7512b42c6445e21eec48'
String _migration_css_base64 = '''
LyogQ29weXJpZ2h0IChjKSAyMDE5LCB0aGUgRGFydCBwcm9qZWN0IGF1dGhvcnMuIFBsZWFzZSBzZWUg
dGhlIEFVVEhPUlMgZmlsZSAgKi8KLyogZm9yIGRldGFpbHMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFVz
@@ -418,68 +418,72 @@
ZWQtcmVnaW9uIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2NmZmNjOwogIGNvbG9yOiAjMDAzMzAwOwp9
CgoucmVnaW9uLnJlbW92ZWQtcmVnaW9uIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY2NjY2OwogIGNv
bG9yOiAjMDAxMTAwOwp9CgoucmVnaW9uLmluZm9ybWF0aXZlLXJlZ2lvbiB7CiAgYmFja2dyb3VuZC1j
-b2xvcjogIzg4ODg4ODsKICBjb2xvcjogIzAwMDAwMDsKfQoKLnRhcmdldCB7CiAgYmFja2dyb3VuZC1j
-b2xvcjogIzQ0NDsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgdmlzaWJpbGl0eTogdmlzaWJsZTsKICBm
-b250LXdlaWdodDogNjAwOwp9CgouaW5mby1wYW5lbCB7CiAgZmxleDogMSAyMDBweDsKICBtYXJnaW46
-IDA7CiAgaGVpZ2h0OiAxMDAlOwogIGRpc3BsYXk6IGZsZXg7CiAgZmxleC1kaXJlY3Rpb246IGNvbHVt
-bjsKfQoKLmluZm8tcGFuZWwgLmVkaXQtcGFuZWwgewogIGJhY2tncm91bmQtY29sb3I6ICMyODJiMmU7
-CiAgb3ZlcmZsb3c6IGF1dG87Cn0KCi5pbmZvLXBhbmVsIC5wYW5lbC1jb250ZW50IHsKICBwYWRkaW5n
-OiA3cHg7Cn0KCi5pbmZvLXBhbmVsIC5wYW5lbC1jb250ZW50PiA6Zmlyc3QtY2hpbGQgewogIG1hcmdp
-bi10b3A6IDA7Cn0KCi5pbmZvLXBhbmVsIC5ub3dyYXAgewogIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0K
-Ci5pbmZvLXBhbmVsIHVsLAouaW5mby1wYW5lbCBvbCB7CiAgcGFkZGluZy1sZWZ0OiAyMHB4Owp9Cgou
-aW5mby1wYW5lbCBsaSB7CiAgbWFyZ2luOiAwIDAgNXB4IDA7Cn0KCi5pbmZvLXBhbmVsIGEgewogIGNv
-bG9yOiAjMzNjY2ZmOwp9CgouaW5mby1wYW5lbCAuZWRpdC1saXN0IHsKICBiYWNrZ3JvdW5kLWNvbG9y
-OiAjMjgyYjJlOwogIG92ZXJmbG93OiBhdXRvOwp9CgouZWRpdC1wYW5lbCB7CiAgbWFyZ2luLXRvcDog
-NnB4OwogIGZsZXg6IDEgMTAwcHg7Cn0KCi5lZGl0LWxpc3QgewogIGZsZXg6IDIgMTAwcHg7Cn0KCi5l
-ZGl0LWxpc3QgLmVkaXQgewogIG1hcmdpbjogM3B4IDA7Cn0KCi5lZGl0LWxpc3QgLmVkaXQtbGluayB7
-CiAgY3Vyc29yOiBwb2ludGVyOwp9CgoucG9wdXAtcGFuZSB7CiAgZGlzcGxheTogbm9uZTsKICBwb3Np
-dGlvbjogZml4ZWQ7CiAgdG9wOiAxNTBweDsKICBsZWZ0OiAxNTBweDsKICByaWdodDogMTUwcHg7CiAg
-Ym90dG9tOiAxNTBweDsKICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKICBib3JkZXItdG9wOiAycHgg
-c29saWQgYmxhY2s7CiAgYm9yZGVyLXJhZGl1czogN3B4OwogIGJveC1zaGFkb3c6IDBweCAwcHggMjBw
-eCAycHggI2I0YmZjYjIyOwogIHotaW5kZXg6IDE7CiAgYmFja2dyb3VuZDogIzJiMzAzNjsKICBwYWRk
-aW5nOiAyMHB4Owp9CgoucG9wdXAtcGFuZSAuY2xvc2UgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBy
-aWdodDogMTBweDsKICB0b3A6IDEwcHg7CiAgY3Vyc29yOiBwb2ludGVyOwogIHRleHQtc2hhZG93OiAx
-cHggMXB4IDJweCAjODg4OwogIGJveC1zaGFkb3c6IDFweCAxcHggMnB4ICMxMTE7Cn0KCi5wb3B1cC1w
-YW5lIGgyIHsKICBwYWRkaW5nOiAyMXB4OwogIGhlaWdodDogMTAlOwogIG1hcmdpbjogMHB4OwogIGJv
-eC1zaXppbmc6IGJvcmRlci1ib3g7Cn0KCi5wb3B1cC1wYW5lIHAgewogIGhlaWdodDogMTAlOwogIGJv
-eC1zaXppbmc6IGJvcmRlci1ib3g7CiAgcGFkZGluZzogMHB4IDIwcHg7Cn0KCi5wb3B1cC1wYW5lIHBy
-ZSB7CiAgYmFja2dyb3VuZDogIzI4MmIyZTsKICBwYWRkaW5nOiAyMHB4OwogIGJvdHRvbTogMHB4Owog
-IG92ZXJmbG93OiBhdXRvIHNjcm9sbDsKICBoZWlnaHQ6IDY1JTsKICBtYXJnaW46IDBweDsKICBib3gt
-c2l6aW5nOiBib3JkZXItYm94Owp9CgoucG9wdXAtcGFuZSAuYnV0dG9uLmJvdHRvbSB7CiAgbWFyZ2lu
-OiAyMHB4IDBweDsKICBkaXNwbGF5OiBibG9jazsKICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi5yZXJ1
-bm5pbmctcGFuZSB7CiAgZGlzcGxheTogbm9uZTsKfQoKYm9keS5yZXJ1bm5pbmcgLnJlcnVubmluZy1w
-YW5lIHsKICBkaXNwbGF5OiBibG9jazsKICBwb3NpdGlvbjogZml4ZWQ7CiAgdG9wOiAwcHg7CiAgYm90
-dG9tOiAwcHg7CiAgbGVmdDogMHB4OwogIHJpZ2h0OiAwcHg7CiAgYmFja2dyb3VuZC1jb2xvcjogIzAw
-MDAwMEFBOyAvKiB0cmFuc2x1Y2VudCBibGFjayAqLwogIHotaW5kZXg6IDQwMDsKfQoKLnJlcnVubmlu
-Zy1wYW5lIGgxIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiA1MCU7CiAgbGVmdDogNTAlOwog
-IHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwp9CgpwLnRyYWNlIC50eXBlLWRlc2NyaXB0
-aW9uIHsKICAvKiBGcm9tIEhMSlMncyAuaGxqcy1rZXl3b3JkLCAuaGxqcy1zZWxlY3Rvci10YWcsIC5o
-bGpzLWRlbGV0aW9uICovCiAgY29sb3I6ICNjYzc4MzI7CiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsK
-fQoKdWwudHJhY2UgewogIGZvbnQtc2l6ZTogMTNweDsKICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7CiAg
-cGFkZGluZy1sZWZ0OiAwcHg7Cn0KCnVsLnRyYWNlIGxpIHsKICBjb2xvcjogd2hpdGU7CiAgbWFyZ2lu
-LWxlZnQ6IDE0cHg7CiAgdGV4dC1pbmRlbnQ6IC0xNHB4Owp9Cgp1bC50cmFjZSBsaSAuZnVuY3Rpb24g
-ewogIC8qIEZyb20gSExKUydzIC5obGpzLXNlY3Rpb24sIC5obGpzLXRpdGxlLCAuaGxqcy10eXBlICov
-CiAgY29sb3I6ICNmZmM2NmQ7CiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICBmb250LXdlaWdodDog
-NjAwOwp9CgouZWxldmF0aW9uLXo0IHsKICBib3gtc2hhZG93OiAwcHggMnB4IDRweCAtMXB4IHJnYmEo
-MCwgMCwgMCwgMC4yKSwKICAgICAgMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksCiAg
-ICAgIDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAuMTIpOwp9CgphIHsKICBjb2xvcjogI2Nj
-YzsKICBmaWxsOiAjY2NjOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQoKYTpob3ZlciB7CiAgY29s
-b3I6ICNmZmY7CiAgZmlsbDogI2ZmZjsKfQoKLmFkZC1oaW50LWxpbmsgewogIGRpc3BsYXk6IGlubGlu
-ZS1ibG9jazsKICBtYXJnaW46IDNweDsKfQoKYnV0dG9uLCBhLmJ1dHRvbiB7CiAgYmFja2dyb3VuZC1j
-b2xvcjogIzMzY2NmZjsKICBib3JkZXI6IDJweCBzb2xpZCAjMzdhZWRjOwogIGJvcmRlci1yYWRpdXM6
-IDNweDsKICBwYWRkaW5nOiA2cHggMTBweDsKICBmb250LXdlaWdodDogYm9sZDsKICBjb2xvcjogIzI4
-MjgyODsKfQoKYnV0dG9uOmhvdmVyLCAuYnV0dG9uOmhvdmVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAj
-ODBkZmZmOwogIGJvcmRlcjogMnB4IHNvbGlkICM1MmI4ZTA7CiAgY3Vyc29yOiBwb2ludGVyOwp9Cgpi
-dXR0b25bZGlzYWJsZWRdIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjN2FhOGI4OwogIGNvbG9yOiAjNTA3
-MTc3OwogIGJvcmRlcjogMnB4IHNvbGlkICM1MDcxNzc7CiAgY3Vyc29yOiBub3QtYWxsb3dlZDsKfQoK
-LnBsYWNlaG9sZGVyIHsKICBjb2xvcjogIzc3NzsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgbWFyZ2lu
-LXRvcDogM2VtICFpbXBvcnRhbnQ7Cn0KCi8qKgogKiBITEpTIE92ZXJyaWRlcwogKi8KLmhsanMgewog
-IC8qKgogICAqIFRoaXMgYWxsb3dzIHRoZSBwZXItbGluZSBoaWdobGlnaHRzIHRvIHNob3cuCiAgICov
-CiAgYmFja2dyb3VuZDogbm9uZTsKfQo=
+b2xvcjogIzQwNDU0OTsgLyogIzI4MmIyZSwgbGlnaHRlbmVkIDEwJSAqLwogIGJvcmRlci1ib3R0b206
+IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDAsIDAuNykgMXB4OwogIGRpc3BsYXk6IGlubGluZS1ibG9jazsK
+ICBoZWlnaHQ6IDE0cHg7IAogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB0b3A6IDFweDsKfQoKLnRhcmdl
+dCB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzQ0NDsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgdmlzaWJp
+bGl0eTogdmlzaWJsZTsKICBmb250LXdlaWdodDogNjAwOwp9CgouaW5mby1wYW5lbCB7CiAgZmxleDog
+MSAyMDBweDsKICBtYXJnaW46IDA7CiAgaGVpZ2h0OiAxMDAlOwogIGRpc3BsYXk6IGZsZXg7CiAgZmxl
+eC1kaXJlY3Rpb246IGNvbHVtbjsKfQoKLmluZm8tcGFuZWwgLmVkaXQtcGFuZWwgewogIGJhY2tncm91
+bmQtY29sb3I6ICMyODJiMmU7CiAgb3ZlcmZsb3c6IGF1dG87Cn0KCi5pbmZvLXBhbmVsIC5wYW5lbC1j
+b250ZW50IHsKICBwYWRkaW5nOiA3cHg7Cn0KCi5pbmZvLXBhbmVsIC5wYW5lbC1jb250ZW50PiA6Zmly
+c3QtY2hpbGQgewogIG1hcmdpbi10b3A6IDA7Cn0KCi5pbmZvLXBhbmVsIC5ub3dyYXAgewogIHdoaXRl
+LXNwYWNlOiBub3dyYXA7Cn0KCi5pbmZvLXBhbmVsIHVsLAouaW5mby1wYW5lbCBvbCB7CiAgcGFkZGlu
+Zy1sZWZ0OiAyMHB4Owp9CgouaW5mby1wYW5lbCBsaSB7CiAgbWFyZ2luOiAwIDAgNXB4IDA7Cn0KCi5p
+bmZvLXBhbmVsIGEgewogIGNvbG9yOiAjMzNjY2ZmOwp9CgouaW5mby1wYW5lbCAuZWRpdC1saXN0IHsK
+ICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjgyYjJlOwogIG92ZXJmbG93OiBhdXRvOwp9CgouZWRpdC1wYW5l
+bCB7CiAgbWFyZ2luLXRvcDogNnB4OwogIGZsZXg6IDEgMTAwcHg7Cn0KCi5lZGl0LWxpc3QgewogIGZs
+ZXg6IDIgMTAwcHg7Cn0KCi5lZGl0LWxpc3QgLmVkaXQgewogIG1hcmdpbjogM3B4IDA7Cn0KCi5lZGl0
+LWxpc3QgLmVkaXQtbGluayB7CiAgY3Vyc29yOiBwb2ludGVyOwp9CgoucG9wdXAtcGFuZSB7CiAgZGlz
+cGxheTogbm9uZTsKICBwb3NpdGlvbjogZml4ZWQ7CiAgdG9wOiAxNTBweDsKICBsZWZ0OiAxNTBweDsK
+ICByaWdodDogMTUwcHg7CiAgYm90dG9tOiAxNTBweDsKICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsK
+ICBib3JkZXItdG9wOiAycHggc29saWQgYmxhY2s7CiAgYm9yZGVyLXJhZGl1czogN3B4OwogIGJveC1z
+aGFkb3c6IDBweCAwcHggMjBweCAycHggI2I0YmZjYjIyOwogIHotaW5kZXg6IDE7CiAgYmFja2dyb3Vu
+ZDogIzJiMzAzNjsKICBwYWRkaW5nOiAyMHB4Owp9CgoucG9wdXAtcGFuZSAuY2xvc2UgewogIHBvc2l0
+aW9uOiBhYnNvbHV0ZTsKICByaWdodDogMTBweDsKICB0b3A6IDEwcHg7CiAgY3Vyc29yOiBwb2ludGVy
+OwogIHRleHQtc2hhZG93OiAxcHggMXB4IDJweCAjODg4OwogIGJveC1zaGFkb3c6IDFweCAxcHggMnB4
+ICMxMTE7Cn0KCi5wb3B1cC1wYW5lIGgyIHsKICBwYWRkaW5nOiAyMXB4OwogIGhlaWdodDogMTAlOwog
+IG1hcmdpbjogMHB4OwogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Cn0KCi5wb3B1cC1wYW5lIHAgewog
+IGhlaWdodDogMTAlOwogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgcGFkZGluZzogMHB4IDIwcHg7
+Cn0KCi5wb3B1cC1wYW5lIHByZSB7CiAgYmFja2dyb3VuZDogIzI4MmIyZTsKICBwYWRkaW5nOiAyMHB4
+OwogIGJvdHRvbTogMHB4OwogIG92ZXJmbG93OiBhdXRvIHNjcm9sbDsKICBoZWlnaHQ6IDY1JTsKICBt
+YXJnaW46IDBweDsKICBib3gtc2l6aW5nOiBib3JkZXItYm94Owp9CgoucG9wdXAtcGFuZSAuYnV0dG9u
+LmJvdHRvbSB7CiAgbWFyZ2luOiAyMHB4IDBweDsKICBkaXNwbGF5OiBibG9jazsKICB0ZXh0LWFsaWdu
+OiBjZW50ZXI7Cn0KCi5yZXJ1bm5pbmctcGFuZSB7CiAgZGlzcGxheTogbm9uZTsKfQoKYm9keS5yZXJ1
+bm5pbmcgLnJlcnVubmluZy1wYW5lIHsKICBkaXNwbGF5OiBibG9jazsKICBwb3NpdGlvbjogZml4ZWQ7
+CiAgdG9wOiAwcHg7CiAgYm90dG9tOiAwcHg7CiAgbGVmdDogMHB4OwogIHJpZ2h0OiAwcHg7CiAgYmFj
+a2dyb3VuZC1jb2xvcjogIzAwMDAwMEFBOyAvKiB0cmFuc2x1Y2VudCBibGFjayAqLwogIHotaW5kZXg6
+IDQwMDsKfQoKLnJlcnVubmluZy1wYW5lIGgxIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiA1
+MCU7CiAgbGVmdDogNTAlOwogIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwp9CgouZWRp
+dC1wYW5lbCAudHlwZS1kZXNjcmlwdGlvbiB7CiAgLyogRnJvbSBITEpTJ3MgLmhsanMta2V5d29yZCwg
+LmhsanMtc2VsZWN0b3ItdGFnLCAuaGxqcy1kZWxldGlvbiAqLwogIGNvbG9yOiAjY2M3ODMyOwogIGZv
+bnQtZmFtaWx5OiBtb25vc3BhY2U7Cn0KCnVsLnRyYWNlIHsKICBmb250LXNpemU6IDEzcHg7CiAgbGlz
+dC1zdHlsZS10eXBlOiBub25lOwogIHBhZGRpbmctbGVmdDogMHB4Owp9Cgp1bC50cmFjZSBsaSB7CiAg
+Y29sb3I6IHdoaXRlOwp9Cgp1bC50cmFjZSBsaSAuZnVuY3Rpb24gewogIC8qIEZyb20gSExKUydzIC5o
+bGpzLXNlY3Rpb24sIC5obGpzLXRpdGxlLCAuaGxqcy10eXBlICovCiAgY29sb3I6ICNmZmM2NmQ7CiAg
+Zm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICBmb250LXdlaWdodDogNjAwOwp9Cgp1bC50cmFjZSBsaSBw
+LmRyYXdlciB7CiAgbWFyZ2luOiAzcHggMHB4OwogIHBhZGRpbmc6IDBweCAwcHggMHB4IDE0cHg7Cn0K
+CnVsLnRyYWNlIGxpIHAuZHJhd2VyIGJ1dHRvbiB7CiAgbWFyZ2luLXJpZ2h0OiAzcHg7Cn0KCi5lbGV2
+YXRpb24tejQgewogIGJveC1zaGFkb3c6IDBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIp
+LAogICAgICAwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwKICAgICAgMHB4IDFweCAx
+MHB4IDBweCByZ2JhKDAsIDAsIDAsIC4xMik7Cn0KCmEgewogIGNvbG9yOiAjY2NjOwogIGZpbGw6ICNj
+Y2M7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9CgphOmhvdmVyIHsKICBjb2xvcjogI2ZmZjsKICBm
+aWxsOiAjZmZmOwp9CgouYWRkLWhpbnQtbGluayB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIG1h
+cmdpbjogM3B4Owp9CgpidXR0b24sIGEuYnV0dG9uIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzNjY2Zm
+OwogIGJvcmRlcjogMnB4IHNvbGlkICMzN2FlZGM7CiAgYm9yZGVyLXJhZGl1czogM3B4OwogIHBhZGRp
+bmc6IDZweCAxMHB4OwogIGZvbnQtd2VpZ2h0OiBib2xkOwogIGNvbG9yOiAjMjgyODI4Owp9CgpidXR0
+b246aG92ZXIsIC5idXR0b246aG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6ICM4MGRmZmY7CiAgYm9y
+ZGVyOiAycHggc29saWQgIzUyYjhlMDsKICBjdXJzb3I6IHBvaW50ZXI7Cn0KCmJ1dHRvbltkaXNhYmxl
+ZF0gewogIGJhY2tncm91bmQtY29sb3I6ICM3YWE4Yjg7CiAgY29sb3I6ICM1MDcxNzc7CiAgYm9yZGVy
+OiAycHggc29saWQgIzUwNzE3NzsKICBjdXJzb3I6IG5vdC1hbGxvd2VkOwp9CgoucGxhY2Vob2xkZXIg
+ewogIGNvbG9yOiAjNzc3OwogIHRleHQtYWxpZ246IGNlbnRlcjsKICBtYXJnaW4tdG9wOiAzZW0gIWlt
+cG9ydGFudDsKfQoKLyoqCiAqIEhMSlMgT3ZlcnJpZGVzCiAqLwouaGxqcyB7CiAgLyoqCiAgICogVGhp
+cyBhbGxvd3MgdGhlIHBlci1saW5lIGhpZ2hsaWdodHMgdG8gc2hvdy4KICAgKi8KICBiYWNrZ3JvdW5k
+OiBub25lOwp9Cg==
''';
String _migration_js;
-// migration_dart md5 is 'e7555609d8262090135a57dca0a0c687'
+// migration_dart md5 is 'a17b4fb1f36406ccc822638c6f0bd988'
String _migration_js_base64 = '''
KGZ1bmN0aW9uIGRhcnRQcm9ncmFtKCl7ZnVuY3Rpb24gY29weVByb3BlcnRpZXMoYSxiKXt2YXIgdD1P
YmplY3Qua2V5cyhhKQpmb3IodmFyIHM9MDtzPHQubGVuZ3RoO3MrKyl7dmFyIHI9dFtzXQpiW3JdPWFb
@@ -553,2167 +557,2250 @@
czpzZXRPclVwZGF0ZUxlYWZUYWdzfX0oKQpmdW5jdGlvbiBpbml0aWFsaXplRGVmZXJyZWRIdW5rKGEp
e3g9di50eXBlcy5sZW5ndGgKYShodW5rSGVscGVycyx2LHcsJCl9ZnVuY3Rpb24gZ2V0R2xvYmFsRnJv
bU5hbWUoYSl7Zm9yKHZhciB0PTA7dDx3Lmxlbmd0aDt0Kyspe2lmKHdbdF09PUMpY29udGludWUKaWYo
-d1t0XVthXSlyZXR1cm4gd1t0XVthXX19dmFyIEM9e30sSD17Rks6ZnVuY3Rpb24gRksoKXt9LAp5Ujpm
-dW5jdGlvbihhKXtyZXR1cm4gbmV3IEgubmQoYSl9LApvbzpmdW5jdGlvbihhKXt2YXIgdCxzPWFeNDgK
-aWYoczw9OSlyZXR1cm4gcwp0PWF8MzIKaWYoOTc8PXQmJnQ8PTEwMilyZXR1cm4gdC04NwpyZXR1cm4t
-MX0sCnFDOmZ1bmN0aW9uKGEsYixjLGQpe1AuazEoYiwic3RhcnQiKQppZihjIT1udWxsKXtQLmsxKGMs
-ImVuZCIpCmlmKGI+YylILnZoKFAuVEUoYiwwLGMsInN0YXJ0IixudWxsKSl9cmV0dXJuIG5ldyBILm5I
-KGEsYixjLGQuQygibkg8MD4iKSl9LApLMTpmdW5jdGlvbihhLGIsYyxkKXtpZih1Lmd3LmIoYSkpcmV0
-dXJuIG5ldyBILnh5KGEsYixjLkMoIkA8MD4iKS5LcShkKS5DKCJ4eTwxLDI+IikpCnJldHVybiBuZXcg
-SC5pMShhLGIsYy5DKCJAPDA+IikuS3EoZCkuQygiaTE8MSwyPiIpKX0sCldwOmZ1bmN0aW9uKCl7cmV0
-dXJuIG5ldyBQLmxqKCJObyBlbGVtZW50Iil9LApkVTpmdW5jdGlvbigpe3JldHVybiBuZXcgUC5saigi
-VG9vIG1hbnkgZWxlbWVudHMiKX0sCmFyOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBQLmxqKCJUb28gZmV3
-IGVsZW1lbnRzIil9LApuZDpmdW5jdGlvbiBuZChhKXt0aGlzLmE9YX0sCnFqOmZ1bmN0aW9uIHFqKGEp
-e3RoaXMuYT1hfSwKYlE6ZnVuY3Rpb24gYlEoKXt9LAphTDpmdW5jdGlvbiBhTCgpe30sCm5IOmZ1bmN0
-aW9uIG5IKGEsYixjLGQpe3ZhciBfPXRoaXMKXy5hPWEKXy5iPWIKXy5jPWMKXy4kdGk9ZH0sCmE3OmZ1
-bmN0aW9uIGE3KGEsYixjKXt2YXIgXz10aGlzCl8uYT1hCl8uYj1iCl8uYz0wCl8uZD1udWxsCl8uJHRp
-PWN9LAppMTpmdW5jdGlvbiBpMShhLGIsYyl7dGhpcy5hPWEKdGhpcy5iPWIKdGhpcy4kdGk9Y30sCnh5
-OmZ1bmN0aW9uIHh5KGEsYixjKXt0aGlzLmE9YQp0aGlzLmI9Ygp0aGlzLiR0aT1jfSwKTUg6ZnVuY3Rp
-b24gTUgoYSxiLGMpe3ZhciBfPXRoaXMKXy5hPW51bGwKXy5iPWEKXy5jPWIKXy4kdGk9Y30sCmxKOmZ1
-bmN0aW9uIGxKKGEsYixjKXt0aGlzLmE9YQp0aGlzLmI9Ygp0aGlzLiR0aT1jfSwKVTU6ZnVuY3Rpb24g
-VTUoYSxiLGMpe3RoaXMuYT1hCnRoaXMuYj1iCnRoaXMuJHRpPWN9LApTTzpmdW5jdGlvbiBTTyhhLGIs
-Yyl7dGhpcy5hPWEKdGhpcy5iPWIKdGhpcy4kdGk9Y30sClNVOmZ1bmN0aW9uIFNVKCl7fSwKUmU6ZnVu
-Y3Rpb24gUmUoKXt9LAp3MjpmdW5jdGlvbiB3Migpe30sCnd2OmZ1bmN0aW9uIHd2KGEpe3RoaXMuYT1h
-fSwKZGM6ZnVuY3Rpb24oKXt0aHJvdyBILmIoUC5MNCgiQ2Fubm90IG1vZGlmeSB1bm1vZGlmaWFibGUg
-TWFwIikpfSwKTlE6ZnVuY3Rpb24oYSl7dmFyIHQscz1ILkpnKGEpCmlmKHMhPW51bGwpcmV0dXJuIHMK
-dD0ibWluaWZpZWQ6IithCnJldHVybiB0fSwKd1Y6ZnVuY3Rpb24oYSxiKXt2YXIgdAppZihiIT1udWxs
-KXt0PWIueAppZih0IT1udWxsKXJldHVybiB0fXJldHVybiB1LmFVLmIoYSl9LApFajpmdW5jdGlvbihh
-KXt2YXIgdAppZih0eXBlb2YgYT09InN0cmluZyIpcmV0dXJuIGEKaWYodHlwZW9mIGE9PSJudW1iZXIi
-KXtpZihhIT09MClyZXR1cm4iIithfWVsc2UgaWYoITA9PT1hKXJldHVybiJ0cnVlIgplbHNlIGlmKCEx
-PT09YSlyZXR1cm4iZmFsc2UiCmVsc2UgaWYoYT09bnVsbClyZXR1cm4ibnVsbCIKdD1KLmooYSkKaWYo
-dHlwZW9mIHQhPSJzdHJpbmciKXRocm93IEguYihILnRMKGEpKQpyZXR1cm4gdH0sCmVROmZ1bmN0aW9u
-KGEpe3ZhciB0PWEuJGlkZW50aXR5SGFzaAppZih0PT1udWxsKXt0PU1hdGgucmFuZG9tKCkqMHgzZmZm
-ZmZmZnwwCmEuJGlkZW50aXR5SGFzaD10fXJldHVybiB0fSwKSHA6ZnVuY3Rpb24oYSxiKXt2YXIgdCxz
-LHIscSxwLG8sbj1udWxsCmlmKHR5cGVvZiBhIT0ic3RyaW5nIilILnZoKEgudEwoYSkpCnQ9L15ccypb
-Ky1dPygoMHhbYS1mMC05XSspfChcZCspfChbYS16MC05XSspKVxzKiQvaS5leGVjKGEpCmlmKHQ9PW51
-bGwpcmV0dXJuIG4KaWYoMz49dC5sZW5ndGgpcmV0dXJuIEguT0godCwzKQpzPUguaCh0WzNdKQppZihi
-PT1udWxsKXtpZihzIT1udWxsKXJldHVybiBwYXJzZUludChhLDEwKQppZih0WzJdIT1udWxsKXJldHVy
-biBwYXJzZUludChhLDE2KQpyZXR1cm4gbn1pZihiPDJ8fGI+MzYpdGhyb3cgSC5iKFAuVEUoYiwyLDM2
-LCJyYWRpeCIsbikpCmlmKGI9PT0xMCYmcyE9bnVsbClyZXR1cm4gcGFyc2VJbnQoYSwxMCkKaWYoYjwx
-MHx8cz09bnVsbCl7cj1iPD0xMD80NytiOjg2K2IKcT10WzFdCmZvcihwPXEubGVuZ3RoLG89MDtvPHA7
-KytvKWlmKChDLnhCLlcocSxvKXwzMik+cilyZXR1cm4gbn1yZXR1cm4gcGFyc2VJbnQoYSxiKX0sCk06
-ZnVuY3Rpb24oYSl7dmFyIHQ9SC5INShhKQpyZXR1cm4gdH0sCkg1OmZ1bmN0aW9uKGEpe3ZhciB0LHMs
-cgppZihhIGluc3RhbmNlb2YgUC5NaClyZXR1cm4gSC5kbShILnooYSksbnVsbCkKaWYoSi5pYShhKT09
-PUMuT2t8fHUuYWsuYihhKSl7dD1DLk80KGEpCmlmKEguQmUodCkpcmV0dXJuIHQKcz1hLmNvbnN0cnVj
-dG9yCmlmKHR5cGVvZiBzPT0iZnVuY3Rpb24iKXtyPXMubmFtZQppZih0eXBlb2Ygcj09InN0cmluZyIm
-JkguQmUocikpcmV0dXJuIHJ9fXJldHVybiBILmRtKEgueihhKSxudWxsKX0sCkJlOmZ1bmN0aW9uKGEp
-e3ZhciB0PWEhPT0iT2JqZWN0IiYmYSE9PSIiCnJldHVybiB0fSwKTTA6ZnVuY3Rpb24oKXtpZighIXNl
-bGYubG9jYXRpb24pcmV0dXJuIHNlbGYubG9jYXRpb24uaHJlZgpyZXR1cm4gbnVsbH0sClZLOmZ1bmN0
-aW9uKGEpe3ZhciB0LHMscixxLHA9YS5sZW5ndGgKaWYocDw9NTAwKXJldHVybiBTdHJpbmcuZnJvbUNo
-YXJDb2RlLmFwcGx5KG51bGwsYSkKZm9yKHQ9IiIscz0wO3M8cDtzPXIpe3I9cys1MDAKcT1yPHA/cjpw
-CnQrPVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxhLnNsaWNlKHMscSkpfXJldHVybiB0fSwK
-Q3E6ZnVuY3Rpb24oYSl7dmFyIHQscyxyLHE9SC5WTShbXSx1LnQpCmZvcih0PWEubGVuZ3RoLHM9MDtz
-PGEubGVuZ3RoO2EubGVuZ3RoPT09dHx8KDAsSC5saykoYSksKytzKXtyPWFbc10KaWYoIUgub2socikp
-dGhyb3cgSC5iKEgudEwocikpCmlmKHI8PTY1NTM1KUMuTm0uaShxLHIpCmVsc2UgaWYocjw9MTExNDEx
-MSl7Qy5ObS5pKHEsNTUyOTYrKEMuam4ud0coci02NTUzNiwxMCkmMTAyMykpCkMuTm0uaShxLDU2MzIw
-KyhyJjEwMjMpKX1lbHNlIHRocm93IEguYihILnRMKHIpKX1yZXR1cm4gSC5WSyhxKX0sCmVUOmZ1bmN0
+d1t0XVthXSlyZXR1cm4gd1t0XVthXX19dmFyIEM9e30sSD17Rks6ZnVuY3Rpb24gRksoKXt9LApvbzpm
+dW5jdGlvbihhKXt2YXIgdCxzPWFeNDgKaWYoczw9OSlyZXR1cm4gcwp0PWF8MzIKaWYoOTc8PXQmJnQ8
+PTEwMilyZXR1cm4gdC04NwpyZXR1cm4tMX0sCnFDOmZ1bmN0aW9uKGEsYixjLGQpe1AuazEoYiwic3Rh
+cnQiKQppZihjIT1udWxsKXtQLmsxKGMsImVuZCIpCmlmKGI+YylILnZoKFAuVEUoYiwwLGMsInN0YXJ0
+IixudWxsKSl9cmV0dXJuIG5ldyBILm5IKGEsYixjLGQuQygibkg8MD4iKSl9LApLMTpmdW5jdGlvbihh
+LGIsYyxkKXtpZih1Lmd3LmIoYSkpcmV0dXJuIG5ldyBILnh5KGEsYixjLkMoIkA8MD4iKS5LcShkKS5D
+KCJ4eTwxLDI+IikpCnJldHVybiBuZXcgSC5pMShhLGIsYy5DKCJAPDA+IikuS3EoZCkuQygiaTE8MSwy
+PiIpKX0sCldwOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBQLmxqKCJObyBlbGVtZW50Iil9LApkVTpmdW5j
+dGlvbigpe3JldHVybiBuZXcgUC5saigiVG9vIG1hbnkgZWxlbWVudHMiKX0sCmFyOmZ1bmN0aW9uKCl7
+cmV0dXJuIG5ldyBQLmxqKCJUb28gZmV3IGVsZW1lbnRzIil9LApxajpmdW5jdGlvbiBxaihhKXt0aGlz
+LmE9YX0sCmJROmZ1bmN0aW9uIGJRKCl7fSwKYUw6ZnVuY3Rpb24gYUwoKXt9LApuSDpmdW5jdGlvbiBu
+SChhLGIsYyxkKXt2YXIgXz10aGlzCl8uYT1hCl8uYj1iCl8uYz1jCl8uJHRpPWR9LAphNzpmdW5jdGlv
+biBhNyhhLGIsYyl7dmFyIF89dGhpcwpfLmE9YQpfLmI9YgpfLmM9MApfLmQ9bnVsbApfLiR0aT1jfSwK
+aTE6ZnVuY3Rpb24gaTEoYSxiLGMpe3RoaXMuYT1hCnRoaXMuYj1iCnRoaXMuJHRpPWN9LAp4eTpmdW5j
+dGlvbiB4eShhLGIsYyl7dGhpcy5hPWEKdGhpcy5iPWIKdGhpcy4kdGk9Y30sCk1IOmZ1bmN0aW9uIE1I
+KGEsYixjKXt2YXIgXz10aGlzCl8uYT1udWxsCl8uYj1hCl8uYz1iCl8uJHRpPWN9LApsSjpmdW5jdGlv
+biBsSihhLGIsYyl7dGhpcy5hPWEKdGhpcy5iPWIKdGhpcy4kdGk9Y30sClU1OmZ1bmN0aW9uIFU1KGEs
+YixjKXt0aGlzLmE9YQp0aGlzLmI9Ygp0aGlzLiR0aT1jfSwKdkc6ZnVuY3Rpb24gdkcoYSxiLGMpe3Ro
+aXMuYT1hCnRoaXMuYj1iCnRoaXMuJHRpPWN9LApTVTpmdW5jdGlvbiBTVSgpe30sClJlOmZ1bmN0aW9u
+IFJlKCl7fSwKdzI6ZnVuY3Rpb24gdzIoKXt9LAp3djpmdW5jdGlvbiB3dihhKXt0aGlzLmE9YX0sCmRj
+OmZ1bmN0aW9uKCl7dGhyb3cgSC5iKFAuTDQoIkNhbm5vdCBtb2RpZnkgdW5tb2RpZmlhYmxlIE1hcCIp
+KX0sCk5ROmZ1bmN0aW9uKGEpe3ZhciB0LHM9SC5KZyhhKQppZih0eXBlb2Ygcz09InN0cmluZyIpcmV0
+dXJuIHMKdD0ibWluaWZpZWQ6IithCnJldHVybiB0fSwKd1Y6ZnVuY3Rpb24oYSxiKXt2YXIgdAppZihi
+IT1udWxsKXt0PWIueAppZih0IT1udWxsKXJldHVybiB0fXJldHVybiB1LmFVLmIoYSl9LApkOmZ1bmN0
+aW9uKGEpe3ZhciB0CmlmKHR5cGVvZiBhPT0ic3RyaW5nIilyZXR1cm4gYQppZih0eXBlb2YgYT09Im51
+bWJlciIpe2lmKGEhPT0wKXJldHVybiIiK2F9ZWxzZSBpZighMD09PWEpcmV0dXJuInRydWUiCmVsc2Ug
+aWYoITE9PT1hKXJldHVybiJmYWxzZSIKZWxzZSBpZihhPT1udWxsKXJldHVybiJudWxsIgp0PUouQWMo
+YSkKaWYodHlwZW9mIHQhPSJzdHJpbmciKXRocm93IEguYihILkkoYSkpCnJldHVybiB0fSwKZVE6ZnVu
+Y3Rpb24oYSl7dmFyIHQ9YS4kaWRlbnRpdHlIYXNoCmlmKHQ9PW51bGwpe3Q9TWF0aC5yYW5kb20oKSow
+eDNmZmZmZmZmfDAKYS4kaWRlbnRpdHlIYXNoPXR9cmV0dXJuIHR9LApIcDpmdW5jdGlvbihhLGIpe3Zh
+ciB0LHMscixxLHAsbyxuPW51bGwKaWYodHlwZW9mIGEhPSJzdHJpbmciKUgudmgoSC5JKGEpKQp0PS9e
+XHMqWystXT8oKDB4W2EtZjAtOV0rKXwoXGQrKXwoW2EtejAtOV0rKSlccyokL2kuZXhlYyhhKQppZih0
+PT1udWxsKXJldHVybiBuCmlmKDM+PXQubGVuZ3RoKXJldHVybiBILmsodCwzKQpzPUguYyh0WzNdKQpp
+ZihiPT1udWxsKXtpZihzIT1udWxsKXJldHVybiBwYXJzZUludChhLDEwKQppZih0WzJdIT1udWxsKXJl
+dHVybiBwYXJzZUludChhLDE2KQpyZXR1cm4gbn1pZihiPDJ8fGI+MzYpdGhyb3cgSC5iKFAuVEUoYiwy
+LDM2LCJyYWRpeCIsbikpCmlmKGI9PT0xMCYmcyE9bnVsbClyZXR1cm4gcGFyc2VJbnQoYSwxMCkKaWYo
+YjwxMHx8cz09bnVsbCl7cj1iPD0xMD80NytiOjg2K2IKcT10WzFdCmZvcihwPXEubGVuZ3RoLG89MDtv
+PHA7KytvKWlmKChDLnhCLlcocSxvKXwzMik+cilyZXR1cm4gbn1yZXR1cm4gcGFyc2VJbnQoYSxiKX0s
+CmxoOmZ1bmN0aW9uKGEpe3ZhciB0PUguSDUoYSkKcmV0dXJuIHR9LApINTpmdW5jdGlvbihhKXt2YXIg
+dCxzLHIKaWYoYSBpbnN0YW5jZW9mIFAuTWgpcmV0dXJuIEguSihILnEoYSksbnVsbCkKaWYoSi5pYShh
+KT09PUMuT2t8fHUuYWsuYihhKSl7dD1DLndiKGEpCmlmKEguQmUodCkpcmV0dXJuIHQKcz1hLmNvbnN0
+cnVjdG9yCmlmKHR5cGVvZiBzPT0iZnVuY3Rpb24iKXtyPXMubmFtZQppZih0eXBlb2Ygcj09InN0cmlu
+ZyImJkguQmUocikpcmV0dXJuIHJ9fXJldHVybiBILkooSC5xKGEpLG51bGwpfSwKQmU6ZnVuY3Rpb24o
+YSl7dmFyIHQ9YSE9PSJPYmplY3QiJiZhIT09IiIKcmV0dXJuIHR9LApNMDpmdW5jdGlvbigpe2lmKCEh
+c2VsZi5sb2NhdGlvbilyZXR1cm4gc2VsZi5sb2NhdGlvbi5ocmVmCnJldHVybiBudWxsfSwKVks6ZnVu
+Y3Rpb24oYSl7dmFyIHQscyxyLHEscD1hLmxlbmd0aAppZihwPD01MDApcmV0dXJuIFN0cmluZy5mcm9t
+Q2hhckNvZGUuYXBwbHkobnVsbCxhKQpmb3IodD0iIixzPTA7czxwO3M9cil7cj1zKzUwMApxPXI8cD9y
+OnAKdCs9U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLGEuc2xpY2UocyxxKSl9cmV0dXJuIHR9
+LApDcTpmdW5jdGlvbihhKXt2YXIgdCxzLHIscT1ILlZNKFtdLHUudCkKZm9yKHQ9YS5sZW5ndGgscz0w
+O3M8YS5sZW5ndGg7YS5sZW5ndGg9PT10fHwoMCxILmxrKShhKSwrK3Mpe3I9YVtzXQppZighSC5vayhy
+KSl0aHJvdyBILmIoSC5JKHIpKQppZihyPD02NTUzNSlDLk5tLmkocSxyKQplbHNlIGlmKHI8PTExMTQx
+MTEpe0MuTm0uaShxLDU1Mjk2KyhDLmpuLndHKHItNjU1MzYsMTApJjEwMjMpKQpDLk5tLmkocSw1NjMy
+MCsociYxMDIzKSl9ZWxzZSB0aHJvdyBILmIoSC5JKHIpKX1yZXR1cm4gSC5WSyhxKX0sCmVUOmZ1bmN0
aW9uKGEpe3ZhciB0LHMscgpmb3IodD1hLmxlbmd0aCxzPTA7czx0Oysrcyl7cj1hW3NdCmlmKCFILm9r
-KHIpKXRocm93IEguYihILnRMKHIpKQppZihyPDApdGhyb3cgSC5iKEgudEwocikpCmlmKHI+NjU1MzUp
-cmV0dXJuIEguQ3EoYSl9cmV0dXJuIEguVksoYSl9LApmdzpmdW5jdGlvbihhLGIsYyl7dmFyIHQscyxy
-LHEKaWYoYzw9NTAwJiZiPT09MCYmYz09PWEubGVuZ3RoKXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2Rl
-LmFwcGx5KG51bGwsYSkKZm9yKHQ9YixzPSIiO3Q8Yzt0PXIpe3I9dCs1MDAKcT1yPGM/cjpjCnMrPVN0
-cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxhLnN1YmFycmF5KHQscSkpfXJldHVybiBzfSwKTHc6
-ZnVuY3Rpb24oYSl7dmFyIHQKaWYoMDw9YSl7aWYoYTw9NjU1MzUpcmV0dXJuIFN0cmluZy5mcm9tQ2hh
-ckNvZGUoYSkKaWYoYTw9MTExNDExMSl7dD1hLTY1NTM2CnJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2Rl
-KCg1NTI5NnxDLmpuLndHKHQsMTApKT4+PjAsNTYzMjB8dCYxMDIzKX19dGhyb3cgSC5iKFAuVEUoYSww
-LDExMTQxMTEsbnVsbCxudWxsKSl9LApvMjpmdW5jdGlvbihhKXtpZihhLmRhdGU9PT12b2lkIDApYS5k
-YXRlPW5ldyBEYXRlKGEuYSkKcmV0dXJuIGEuZGF0ZX0sCnRKOmZ1bmN0aW9uKGEpe3ZhciB0PUgubzIo
-YSkuZ2V0RnVsbFllYXIoKSswCnJldHVybiB0fSwKTlM6ZnVuY3Rpb24oYSl7dmFyIHQ9SC5vMihhKS5n
-ZXRNb250aCgpKzEKcmV0dXJuIHR9LApqQTpmdW5jdGlvbihhKXt2YXIgdD1ILm8yKGEpLmdldERhdGUo
-KSswCnJldHVybiB0fSwKSVg6ZnVuY3Rpb24oYSl7dmFyIHQ9SC5vMihhKS5nZXRIb3VycygpKzAKcmV0
-dXJuIHR9LApjaDpmdW5jdGlvbihhKXt2YXIgdD1ILm8yKGEpLmdldE1pbnV0ZXMoKSswCnJldHVybiB0
-fSwKSmQ6ZnVuY3Rpb24oYSl7dmFyIHQ9SC5vMihhKS5nZXRTZWNvbmRzKCkrMApyZXR1cm4gdH0sCm8x
-OmZ1bmN0aW9uKGEpe3ZhciB0PUgubzIoYSkuZ2V0TWlsbGlzZWNvbmRzKCkrMApyZXR1cm4gdH0sCnpv
-OmZ1bmN0aW9uKGEsYixjKXt2YXIgdCxzLHI9e30Kci5hPTAKdD1bXQpzPVtdCnIuYT1iLmxlbmd0aApD
-Lk5tLkZWKHQsYikKci5iPSIiCmlmKGMhPW51bGwmJmMuYSE9PTApYy5LKDAsbmV3IEguQ2oocixzLHQp
-KQoiIityLmEKcmV0dXJuIEouSnkoYSxuZXcgSC5MSShDLlRlLDAsdCxzLDApKX0sCkVrOmZ1bmN0aW9u
-KGEsYixjKXt2YXIgdCxzLHIscQppZihiIGluc3RhbmNlb2YgQXJyYXkpdD1jPT1udWxsfHxjLmE9PT0w
-CmVsc2UgdD0hMQppZih0KXtzPWIKcj1zLmxlbmd0aAppZihyPT09MCl7aWYoISFhLiQwKXJldHVybiBh
-LiQwKCl9ZWxzZSBpZihyPT09MSl7aWYoISFhLiQxKXJldHVybiBhLiQxKHNbMF0pfWVsc2UgaWYocj09
-PTIpe2lmKCEhYS4kMilyZXR1cm4gYS4kMihzWzBdLHNbMV0pfWVsc2UgaWYocj09PTMpe2lmKCEhYS4k
-MylyZXR1cm4gYS4kMyhzWzBdLHNbMV0sc1syXSl9ZWxzZSBpZihyPT09NCl7aWYoISFhLiQ0KXJldHVy
-biBhLiQ0KHNbMF0sc1sxXSxzWzJdLHNbM10pfWVsc2UgaWYocj09PTUpaWYoISFhLiQ1KXJldHVybiBh
-LiQ1KHNbMF0sc1sxXSxzWzJdLHNbM10sc1s0XSkKcT1hWyIiKyIkIityXQppZihxIT1udWxsKXJldHVy
-biBxLmFwcGx5KGEscyl9cmV0dXJuIEguZTEoYSxiLGMpfSwKZTE6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0
-LHMscixxLHAsbyxuLG0sbCxrPWIgaW5zdGFuY2VvZiBBcnJheT9iOlAuQ0goYiwhMCx1LnopLGo9ay5s
-ZW5ndGgsaT1hLiRSCmlmKGo8aSlyZXR1cm4gSC56byhhLGssYykKdD1hLiRECnM9dD09bnVsbApyPSFz
-P3QoKTpudWxsCnE9Si5pYShhKQpwPXEuJEMKaWYodHlwZW9mIHA9PSJzdHJpbmciKXA9cVtwXQppZihz
-KXtpZihjIT1udWxsJiZjLmEhPT0wKXJldHVybiBILnpvKGEsayxjKQppZihqPT09aSlyZXR1cm4gcC5h
-cHBseShhLGspCnJldHVybiBILnpvKGEsayxjKX1pZihyIGluc3RhbmNlb2YgQXJyYXkpe2lmKGMhPW51
-bGwmJmMuYSE9PTApcmV0dXJuIEguem8oYSxrLGMpCmlmKGo+aStyLmxlbmd0aClyZXR1cm4gSC56byhh
-LGssbnVsbCkKQy5ObS5GVihrLHIuc2xpY2Uoai1pKSkKcmV0dXJuIHAuYXBwbHkoYSxrKX1lbHNle2lm
-KGo+aSlyZXR1cm4gSC56byhhLGssYykKbz1PYmplY3Qua2V5cyhyKQppZihjPT1udWxsKWZvcihzPW8u
-bGVuZ3RoLG49MDtuPG8ubGVuZ3RoO28ubGVuZ3RoPT09c3x8KDAsSC5saykobyksKytuKUMuTm0uaShr
-LHJbSC5oKG9bbl0pXSkKZWxzZXtmb3Iocz1vLmxlbmd0aCxtPTAsbj0wO248by5sZW5ndGg7by5sZW5n
-dGg9PT1zfHwoMCxILmxrKShvKSwrK24pe2w9SC5oKG9bbl0pCmlmKGMueDQobCkpeysrbQpDLk5tLmko
-ayxjLnEoMCxsKSl9ZWxzZSBDLk5tLmkoayxyW2xdKX1pZihtIT09Yy5hKXJldHVybiBILnpvKGEsayxj
-KX1yZXR1cm4gcC5hcHBseShhLGspfX0sCnBZOmZ1bmN0aW9uKGEpe3Rocm93IEguYihILnRMKGEpKX0s
-Ck9IOmZ1bmN0aW9uKGEsYil7aWYoYT09bnVsbClKLkhtKGEpCnRocm93IEguYihILkhZKGEsYikpfSwK
-SFk6ZnVuY3Rpb24oYSxiKXt2YXIgdCxzPSJpbmRleCIKaWYoIUgub2soYikpcmV0dXJuIG5ldyBQLnUo
-ITAsYixzLG51bGwpCnQ9SC51UChKLkhtKGEpKQppZihiPDB8fGI+PXQpcmV0dXJuIFAuQ2YoYixhLHMs
-bnVsbCx0KQpyZXR1cm4gUC5PNyhiLHMpfSwKYXU6ZnVuY3Rpb24oYSxiLGMpe2lmKGE+YylyZXR1cm4g
-UC5URShhLDAsYywic3RhcnQiLG51bGwpCmlmKGIhPW51bGwpaWYoYjxhfHxiPmMpcmV0dXJuIFAuVEUo
-YixhLGMsImVuZCIsbnVsbCkKcmV0dXJuIG5ldyBQLnUoITAsYiwiZW5kIixudWxsKX0sCnRMOmZ1bmN0
-aW9uKGEpe3JldHVybiBuZXcgUC51KCEwLGEsbnVsbCxudWxsKX0sCmI6ZnVuY3Rpb24oYSl7dmFyIHQK
-aWYoYT09bnVsbClhPW5ldyBQLm4oKQp0PW5ldyBFcnJvcigpCnQuZGFydEV4Y2VwdGlvbj1hCmlmKCJk
-ZWZpbmVQcm9wZXJ0eSIgaW4gT2JqZWN0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwibWVzc2FnZSIs
-e2dldDpILnh9KQp0Lm5hbWU9IiJ9ZWxzZSB0LnRvU3RyaW5nPUgueApyZXR1cm4gdH0sCng6ZnVuY3Rp
-b24oKXtyZXR1cm4gSi5qKHRoaXMuZGFydEV4Y2VwdGlvbil9LAp2aDpmdW5jdGlvbihhKXt0aHJvdyBI
-LmIoYSl9LApsazpmdW5jdGlvbihhKXt0aHJvdyBILmIoUC5hNChhKSl9LApjTTpmdW5jdGlvbihhKXt2
-YXIgdCxzLHIscSxwLG8KYT1ILmVBKGEucmVwbGFjZShTdHJpbmcoe30pLCckcmVjZWl2ZXIkJykpCnQ9
-YS5tYXRjaCgvXFxcJFthLXpBLVpdK1xcXCQvZykKaWYodD09bnVsbCl0PUguVk0oW10sdS5zKQpzPXQu
-aW5kZXhPZigiXFwkYXJndW1lbnRzXFwkIikKcj10LmluZGV4T2YoIlxcJGFyZ3VtZW50c0V4cHJcXCQi
-KQpxPXQuaW5kZXhPZigiXFwkZXhwclxcJCIpCnA9dC5pbmRleE9mKCJcXCRtZXRob2RcXCQiKQpvPXQu
-aW5kZXhPZigiXFwkcmVjZWl2ZXJcXCQiKQpyZXR1cm4gbmV3IEguZjkoYS5yZXBsYWNlKG5ldyBSZWdF
-eHAoJ1xcXFxcXCRhcmd1bWVudHNcXFxcXFwkJywnZycpLCcoKD86eHxbXnhdKSopJykucmVwbGFjZShu
-ZXcgUmVnRXhwKCdcXFxcXFwkYXJndW1lbnRzRXhwclxcXFxcXCQnLCdnJyksJygoPzp4fFteeF0pKikn
-KS5yZXBsYWNlKG5ldyBSZWdFeHAoJ1xcXFxcXCRleHByXFxcXFxcJCcsJ2cnKSwnKCg/Onh8W154XSkq
-KScpLnJlcGxhY2UobmV3IFJlZ0V4cCgnXFxcXFxcJG1ldGhvZFxcXFxcXCQnLCdnJyksJygoPzp4fFte
-eF0pKiknKS5yZXBsYWNlKG5ldyBSZWdFeHAoJ1xcXFxcXCRyZWNlaXZlclxcXFxcXCQnLCdnJyksJygo
-Pzp4fFteeF0pKiknKSxzLHIscSxwLG8pfSwKUzc6ZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKCRl
-eHByJCl7dmFyICRhcmd1bWVudHNFeHByJD0nJGFyZ3VtZW50cyQnCnRyeXskZXhwciQuJG1ldGhvZCQo
-JGFyZ3VtZW50c0V4cHIkKX1jYXRjaCh0KXtyZXR1cm4gdC5tZXNzYWdlfX0oYSl9LApNajpmdW5jdGlv
-bihhKXtyZXR1cm4gZnVuY3Rpb24oJGV4cHIkKXt0cnl7JGV4cHIkLiRtZXRob2QkfWNhdGNoKHQpe3Jl
-dHVybiB0Lm1lc3NhZ2V9fShhKX0sCklqOmZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyBILlcwKGEsYj09
-bnVsbD9udWxsOmIubWV0aG9kKX0sClQzOmZ1bmN0aW9uKGEsYil7dmFyIHQ9Yj09bnVsbCxzPXQ/bnVs
-bDpiLm1ldGhvZApyZXR1cm4gbmV3IEguYXooYSxzLHQ/bnVsbDpiLnJlY2VpdmVyKX0sClJ1OmZ1bmN0
-aW9uKGEpe3ZhciB0LHMscixxLHAsbyxuLG0sbCxrLGosaSxoLGcsZj1udWxsLGU9bmV3IEguQW0oYSkK
-aWYoYT09bnVsbClyZXR1cm4gZgppZihhIGluc3RhbmNlb2YgSC5icSlyZXR1cm4gZS4kMShhLmEpCmlm
-KHR5cGVvZiBhIT09Im9iamVjdCIpcmV0dXJuIGEKaWYoImRhcnRFeGNlcHRpb24iIGluIGEpcmV0dXJu
-IGUuJDEoYS5kYXJ0RXhjZXB0aW9uKQplbHNlIGlmKCEoIm1lc3NhZ2UiIGluIGEpKXJldHVybiBhCnQ9
-YS5tZXNzYWdlCmlmKCJudW1iZXIiIGluIGEmJnR5cGVvZiBhLm51bWJlcj09Im51bWJlciIpe3M9YS5u
-dW1iZXIKcj1zJjY1NTM1CmlmKChDLmpuLndHKHMsMTYpJjgxOTEpPT09MTApc3dpdGNoKHIpe2Nhc2Ug
-NDM4OnJldHVybiBlLiQxKEguVDMoSC5Faih0KSsiIChFcnJvciAiK3IrIikiLGYpKQpjYXNlIDQ0NTpj
-YXNlIDUwMDc6cmV0dXJuIGUuJDEoSC5JaihILkVqKHQpKyIgKEVycm9yICIrcisiKSIsZikpfX1pZihh
-IGluc3RhbmNlb2YgVHlwZUVycm9yKXtxPSQuU24oKQpwPSQubHEoKQpvPSQuTjkoKQpuPSQuaUkoKQpt
-PSQuVU4oKQpsPSQuWmgoKQprPSQuck4oKQokLmMzKCkKaj0kLkhLKCkKaT0kLnIxKCkKaD1xLnFTKHQp
-CmlmKGghPW51bGwpcmV0dXJuIGUuJDEoSC5UMyhILmgodCksaCkpCmVsc2V7aD1wLnFTKHQpCmlmKGgh
-PW51bGwpe2gubWV0aG9kPSJjYWxsIgpyZXR1cm4gZS4kMShILlQzKEguaCh0KSxoKSl9ZWxzZXtoPW8u
-cVModCkKaWYoaD09bnVsbCl7aD1uLnFTKHQpCmlmKGg9PW51bGwpe2g9bS5xUyh0KQppZihoPT1udWxs
-KXtoPWwucVModCkKaWYoaD09bnVsbCl7aD1rLnFTKHQpCmlmKGg9PW51bGwpe2g9bi5xUyh0KQppZiho
-PT1udWxsKXtoPWoucVModCkKaWYoaD09bnVsbCl7aD1pLnFTKHQpCmc9aCE9bnVsbH1lbHNlIGc9ITB9
-ZWxzZSBnPSEwfWVsc2UgZz0hMH1lbHNlIGc9ITB9ZWxzZSBnPSEwfWVsc2UgZz0hMH1lbHNlIGc9ITAK
-aWYoZylyZXR1cm4gZS4kMShILklqKEguaCh0KSxoKSl9fXJldHVybiBlLiQxKG5ldyBILnZWKHR5cGVv
-ZiB0PT0ic3RyaW5nIj90OiIiKSl9aWYoYSBpbnN0YW5jZW9mIFJhbmdlRXJyb3Ipe2lmKHR5cGVvZiB0
-PT0ic3RyaW5nIiYmdC5pbmRleE9mKCJjYWxsIHN0YWNrIikhPT0tMSlyZXR1cm4gbmV3IFAuS1koKQp0
-PWZ1bmN0aW9uKGIpe3RyeXtyZXR1cm4gU3RyaW5nKGIpfWNhdGNoKGQpe31yZXR1cm4gbnVsbH0oYSkK
-cmV0dXJuIGUuJDEobmV3IFAudSghMSxmLGYsdHlwZW9mIHQ9PSJzdHJpbmciP3QucmVwbGFjZSgvXlJh
-bmdlRXJyb3I6XHMqLywiIik6dCkpfWlmKHR5cGVvZiBJbnRlcm5hbEVycm9yPT0iZnVuY3Rpb24iJiZh
-IGluc3RhbmNlb2YgSW50ZXJuYWxFcnJvcilpZih0eXBlb2YgdD09InN0cmluZyImJnQ9PT0idG9vIG11
-Y2ggcmVjdXJzaW9uIilyZXR1cm4gbmV3IFAuS1koKQpyZXR1cm4gYX0sCnRzOmZ1bmN0aW9uKGEpe3Zh
-ciB0CmlmKGEgaW5zdGFuY2VvZiBILmJxKXJldHVybiBhLmIKaWYoYT09bnVsbClyZXR1cm4gbmV3IEgu
-WE8oYSkKdD1hLiRjYWNoZWRUcmFjZQppZih0IT1udWxsKXJldHVybiB0CnJldHVybiBhLiRjYWNoZWRU
-cmFjZT1uZXcgSC5YTyhhKX0sCkI3OmZ1bmN0aW9uKGEsYil7dmFyIHQscyxyLHE9YS5sZW5ndGgKZm9y
-KHQ9MDt0PHE7dD1yKXtzPXQrMQpyPXMrMQpiLlkoMCxhW3RdLGFbc10pfXJldHVybiBifSwKZnQ6ZnVu
-Y3Rpb24oYSxiLGMsZCxlLGYpe3UuWS5hKGEpCnN3aXRjaChILnVQKGIpKXtjYXNlIDA6cmV0dXJuIGEu
-JDAoKQpjYXNlIDE6cmV0dXJuIGEuJDEoYykKY2FzZSAyOnJldHVybiBhLiQyKGMsZCkKY2FzZSAzOnJl
-dHVybiBhLiQzKGMsZCxlKQpjYXNlIDQ6cmV0dXJuIGEuJDQoYyxkLGUsZil9dGhyb3cgSC5iKG5ldyBQ
-LkNEKCJVbnN1cHBvcnRlZCBudW1iZXIgb2YgYXJndW1lbnRzIGZvciB3cmFwcGVkIGNsb3N1cmUiKSl9
-LAp0UjpmdW5jdGlvbihhLGIpe3ZhciB0CmlmKGE9PW51bGwpcmV0dXJuIG51bGwKdD1hLiRpZGVudGl0
-eQppZighIXQpcmV0dXJuIHQKdD1mdW5jdGlvbihjLGQsZSl7cmV0dXJuIGZ1bmN0aW9uKGYsZyxoLGkp
-e3JldHVybiBlKGMsZCxmLGcsaCxpKX19KGEsYixILmZ0KQphLiRpZGVudGl0eT10CnJldHVybiB0fSwK
-aUE6ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyl7dmFyIHQscyxyLHEscCxvLG4sbSxsPWJbMF0saz1sLiRj
-YWxsTmFtZSxqPWU/T2JqZWN0LmNyZWF0ZShuZXcgSC56eCgpLmNvbnN0cnVjdG9yLnByb3RvdHlwZSk6
-T2JqZWN0LmNyZWF0ZShuZXcgSC5yVChudWxsLG51bGwsbnVsbCwiIikuY29uc3RydWN0b3IucHJvdG90
-eXBlKQpqLiRpbml0aWFsaXplPWouY29uc3RydWN0b3IKaWYoZSl0PWZ1bmN0aW9uIHN0YXRpY190ZWFy
-X29mZigpe3RoaXMuJGluaXRpYWxpemUoKX0KZWxzZXtzPSQueWoKaWYodHlwZW9mIHMhPT0ibnVtYmVy
-IilyZXR1cm4gcy5oKCkKJC55aj1zKzEKcz1uZXcgRnVuY3Rpb24oImEsYixjLGQiK3MsInRoaXMuJGlu
-aXRpYWxpemUoYSxiLGMsZCIrcysiKSIpCnQ9c31qLmNvbnN0cnVjdG9yPXQKdC5wcm90b3R5cGU9agpp
-ZighZSl7cj1ILmJ4KGEsbCxmKQpyLiRyZWZsZWN0aW9uSW5mbz1kfWVsc2V7ai4kc3RhdGljX25hbWU9
-ZwpyPWx9cT1ILmltKGQsZSxmKQpqLiRTPXEKaltrXT1yCmZvcihwPXIsbz0xO288Yi5sZW5ndGg7Kytv
-KXtuPWJbb10KbT1uLiRjYWxsTmFtZQppZihtIT1udWxsKXtuPWU/bjpILmJ4KGEsbixmKQpqW21dPW59
-aWYobz09PWMpe24uJHJlZmxlY3Rpb25JbmZvPWQKcD1ufX1qLiRDPXAKai4kUj1sLiRSCmouJEQ9bC4k
-RApyZXR1cm4gdH0sCmltOmZ1bmN0aW9uKGEsYixjKXt2YXIgdAppZih0eXBlb2YgYT09Im51bWJlciIp
-cmV0dXJuIGZ1bmN0aW9uKGQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGQoZSl9fShILkJwLGEp
-CmlmKHR5cGVvZiBhPT0ic3RyaW5nIil7aWYoYil0aHJvdyBILmIoIkNhbm5vdCBjb21wdXRlIHNpZ25h
-dHVyZSBmb3Igc3RhdGljIHRlYXJvZmYuIikKdD1jP0guUFc6SC5UbgpyZXR1cm4gZnVuY3Rpb24oZCxl
-KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZSh0aGlzLGQpfX0oYSx0KX10aHJvdyBILmIoIkVycm9y
-IGluIGZ1bmN0aW9uVHlwZSBvZiB0ZWFyb2ZmIil9LAp2cTpmdW5jdGlvbihhLGIsYyxkKXt2YXIgdD1I
-LkRWCnN3aXRjaChiPy0xOmEpe2Nhc2UgMDpyZXR1cm4gZnVuY3Rpb24oZSxmKXtyZXR1cm4gZnVuY3Rp
-b24oKXtyZXR1cm4gZih0aGlzKVtlXSgpfX0oYyx0KQpjYXNlIDE6cmV0dXJuIGZ1bmN0aW9uKGUsZil7
-cmV0dXJuIGZ1bmN0aW9uKGcpe3JldHVybiBmKHRoaXMpW2VdKGcpfX0oYyx0KQpjYXNlIDI6cmV0dXJu
-IGZ1bmN0aW9uKGUsZil7cmV0dXJuIGZ1bmN0aW9uKGcsaCl7cmV0dXJuIGYodGhpcylbZV0oZyxoKX19
-KGMsdCkKY2FzZSAzOnJldHVybiBmdW5jdGlvbihlLGYpe3JldHVybiBmdW5jdGlvbihnLGgsaSl7cmV0
-dXJuIGYodGhpcylbZV0oZyxoLGkpfX0oYyx0KQpjYXNlIDQ6cmV0dXJuIGZ1bmN0aW9uKGUsZil7cmV0
-dXJuIGZ1bmN0aW9uKGcsaCxpLGope3JldHVybiBmKHRoaXMpW2VdKGcsaCxpLGopfX0oYyx0KQpjYXNl
-IDU6cmV0dXJuIGZ1bmN0aW9uKGUsZil7cmV0dXJuIGZ1bmN0aW9uKGcsaCxpLGosayl7cmV0dXJuIGYo
-dGhpcylbZV0oZyxoLGksaixrKX19KGMsdCkKZGVmYXVsdDpyZXR1cm4gZnVuY3Rpb24oZSxmKXtyZXR1
-cm4gZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseShmKHRoaXMpLGFyZ3VtZW50cyl9fShkLHQpfX0sCmJ4
-OmZ1bmN0aW9uKGEsYixjKXt2YXIgdCxzLHIscSxwLG8sbgppZihjKXJldHVybiBILkhmKGEsYikKdD1i
-LiRzdHViTmFtZQpzPWIubGVuZ3RoCnI9YVt0XQpxPWI9PW51bGw/cj09bnVsbDpiPT09cgpwPSFxfHxz
-Pj0yNwppZihwKXJldHVybiBILnZxKHMsIXEsdCxiKQppZihzPT09MCl7cT0kLnlqCmlmKHR5cGVvZiBx
-IT09Im51bWJlciIpcmV0dXJuIHEuaCgpCiQueWo9cSsxCm89InNlbGYiK3EKcmV0dXJuIG5ldyBGdW5j
-dGlvbigicmV0dXJuIGZ1bmN0aW9uKCl7dmFyICIrbysiID0gdGhpcy4iK0guRWooSC5vTigpKSsiO3Jl
-dHVybiAiK28rIi4iK0guRWoodCkrIigpO30iKSgpfW49ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6
-Ii5zcGxpdCgiIikuc3BsaWNlKDAscykuam9pbigiLCIpCnE9JC55agppZih0eXBlb2YgcSE9PSJudW1i
-ZXIiKXJldHVybiBxLmgoKQokLnlqPXErMQpuKz1xCnJldHVybiBuZXcgRnVuY3Rpb24oInJldHVybiBm
-dW5jdGlvbigiK24rIil7cmV0dXJuIHRoaXMuIitILkVqKEgub04oKSkrIi4iK0guRWoodCkrIigiK24r
-Iik7fSIpKCl9LApaNDpmdW5jdGlvbihhLGIsYyxkKXt2YXIgdD1ILkRWLHM9SC55Uwpzd2l0Y2goYj8t
-MTphKXtjYXNlIDA6dGhyb3cgSC5iKEguRWYoIkludGVyY2VwdGVkIGZ1bmN0aW9uIHdpdGggbm8gYXJn
-dW1lbnRzLiIpKQpjYXNlIDE6cmV0dXJuIGZ1bmN0aW9uKGUsZixnKXtyZXR1cm4gZnVuY3Rpb24oKXty
-ZXR1cm4gZih0aGlzKVtlXShnKHRoaXMpKX19KGMsdCxzKQpjYXNlIDI6cmV0dXJuIGZ1bmN0aW9uKGUs
-ZixnKXtyZXR1cm4gZnVuY3Rpb24oaCl7cmV0dXJuIGYodGhpcylbZV0oZyh0aGlzKSxoKX19KGMsdCxz
-KQpjYXNlIDM6cmV0dXJuIGZ1bmN0aW9uKGUsZixnKXtyZXR1cm4gZnVuY3Rpb24oaCxpKXtyZXR1cm4g
-Zih0aGlzKVtlXShnKHRoaXMpLGgsaSl9fShjLHQscykKY2FzZSA0OnJldHVybiBmdW5jdGlvbihlLGYs
-Zyl7cmV0dXJuIGZ1bmN0aW9uKGgsaSxqKXtyZXR1cm4gZih0aGlzKVtlXShnKHRoaXMpLGgsaSxqKX19
-KGMsdCxzKQpjYXNlIDU6cmV0dXJuIGZ1bmN0aW9uKGUsZixnKXtyZXR1cm4gZnVuY3Rpb24oaCxpLGos
-ayl7cmV0dXJuIGYodGhpcylbZV0oZyh0aGlzKSxoLGksaixrKX19KGMsdCxzKQpjYXNlIDY6cmV0dXJu
-IGZ1bmN0aW9uKGUsZixnKXtyZXR1cm4gZnVuY3Rpb24oaCxpLGosayxsKXtyZXR1cm4gZih0aGlzKVtl
-XShnKHRoaXMpLGgsaSxqLGssbCl9fShjLHQscykKZGVmYXVsdDpyZXR1cm4gZnVuY3Rpb24oZSxmLGcs
-aCl7cmV0dXJuIGZ1bmN0aW9uKCl7aD1bZyh0aGlzKV0KQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHko
-aCxhcmd1bWVudHMpCnJldHVybiBlLmFwcGx5KGYodGhpcyksaCl9fShkLHQscyl9fSwKSGY6ZnVuY3Rp
-b24oYSxiKXt2YXIgdCxzLHIscSxwLG8sbj1ILm9OKCksbT0kLlA0CmlmKG09PW51bGwpbT0kLlA0PUgu
-RTIoInJlY2VpdmVyIikKdD1iLiRzdHViTmFtZQpzPWIubGVuZ3RoCnI9YVt0XQpxPWI9PW51bGw/cj09
-bnVsbDpiPT09cgpwPSFxfHxzPj0yOAppZihwKXJldHVybiBILlo0KHMsIXEsdCxiKQppZihzPT09MSl7
-cT0icmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuIitILkVqKG4pKyIuIitILkVqKHQpKyIodGhp
-cy4iK20rIik7IgpwPSQueWoKaWYodHlwZW9mIHAhPT0ibnVtYmVyIilyZXR1cm4gcC5oKCkKJC55aj1w
-KzEKcmV0dXJuIG5ldyBGdW5jdGlvbihxK3ArIn0iKSgpfW89ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3
-eHl6Ii5zcGxpdCgiIikuc3BsaWNlKDAscy0xKS5qb2luKCIsIikKcT0icmV0dXJuIGZ1bmN0aW9uKCIr
-bysiKXtyZXR1cm4gdGhpcy4iK0guRWoobikrIi4iK0guRWoodCkrIih0aGlzLiIrbSsiLCAiK28rIik7
-IgpwPSQueWoKaWYodHlwZW9mIHAhPT0ibnVtYmVyIilyZXR1cm4gcC5oKCkKJC55aj1wKzEKcmV0dXJu
-IG5ldyBGdW5jdGlvbihxK3ArIn0iKSgpfSwKS3E6ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyl7cmV0dXJu
-IEguaUEoYSxiLGMsZCwhIWUsISFmLGcpfSwKVG46ZnVuY3Rpb24oYSxiKXtyZXR1cm4gSC5jRSh2LnR5
-cGVVbml2ZXJzZSxILnooYS5hKSxiKX0sClBXOmZ1bmN0aW9uKGEsYil7cmV0dXJuIEguY0Uodi50eXBl
-VW5pdmVyc2UsSC56KGEuYyksYil9LApEVjpmdW5jdGlvbihhKXtyZXR1cm4gYS5hfSwKeVM6ZnVuY3Rp
-b24oYSl7cmV0dXJuIGEuY30sCm9OOmZ1bmN0aW9uKCl7dmFyIHQ9JC5tSgpyZXR1cm4gdD09bnVsbD8k
-Lm1KPUguRTIoInNlbGYiKTp0fSwKRTI6ZnVuY3Rpb24oYSl7dmFyIHQscyxyLHE9bmV3IEguclQoInNl
-bGYiLCJ0YXJnZXQiLCJyZWNlaXZlciIsIm5hbWUiKSxwPUouRXAoT2JqZWN0LmdldE93blByb3BlcnR5
-TmFtZXMocSksdS56KQpmb3IodD1wLmxlbmd0aCxzPTA7czx0Oysrcyl7cj1wW3NdCmlmKHFbcl09PT1h
-KXJldHVybiByfXRocm93IEguYihQLnhZKCJGaWVsZCBuYW1lICIrYSsiIG5vdCBmb3VuZC4iKSl9LApv
-VDpmdW5jdGlvbihhKXtpZihhPT1udWxsKUguZk8oImJvb2xlYW4gZXhwcmVzc2lvbiBtdXN0IG5vdCBi
-ZSBudWxsIikKcmV0dXJuIGF9LApmTzpmdW5jdGlvbihhKXt0aHJvdyBILmIobmV3IEgua1koYSkpfSwK
-YWc6ZnVuY3Rpb24oYSl7dGhyb3cgSC5iKG5ldyBQLmMoYSkpfSwKRWY6ZnVuY3Rpb24oYSl7cmV0dXJu
-IG5ldyBILkVxKGEpfSwKWWc6ZnVuY3Rpb24oYSl7cmV0dXJuIHYuZ2V0SXNvbGF0ZVRhZyhhKX0sClZN
-OmZ1bmN0aW9uKGEsYil7YVt2LmFycmF5UnRpXT1iCnJldHVybiBhfSwKb1g6ZnVuY3Rpb24oYSl7aWYo
-YT09bnVsbClyZXR1cm4gbnVsbApyZXR1cm4gYS4kdGl9LApJTTpmdW5jdGlvbihhLGIsYyl7cmV0dXJu
-IEguWTkoYVsiJGEiK0guRWooYyldLEgub1goYikpfSwKWTk6ZnVuY3Rpb24oYSxiKXt2YXIgdAppZihh
-PT1udWxsKXJldHVybiBiCnQ9YS5hcHBseShudWxsLGIpCmlmKHQ9PW51bGwpcmV0dXJuIG51bGwKaWYo
-QXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gdAppZih0eXBlb2YgdD09ImZ1bmN0aW9uIilyZXR1cm4gdC5h
-cHBseShudWxsLGIpCnJldHVybiBifSwKSUc6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBhLmFwcGx5KGIs
-SC5JTShKLmlhKGIpLGIsYykpfSwKaXc6ZnVuY3Rpb24oYSxiLGMpe09iamVjdC5kZWZpbmVQcm9wZXJ0
-eShhLGIse3ZhbHVlOmMsZW51bWVyYWJsZTpmYWxzZSx3cml0YWJsZTp0cnVlLGNvbmZpZ3VyYWJsZTp0
-cnVlfSl9LAp3MzpmdW5jdGlvbihhKXt2YXIgdCxzLHIscSxwLG89SC5oKCQuTkYuJDEoYSkpLG49JC5u
-d1tvXQppZihuIT1udWxsKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoYSx2LmRpc3BhdGNoUHJvcGVydHlO
-YW1lLHt2YWx1ZTpuLGVudW1lcmFibGU6ZmFsc2Usd3JpdGFibGU6dHJ1ZSxjb25maWd1cmFibGU6dHJ1
-ZX0pCnJldHVybiBuLml9dD0kLnZ2W29dCmlmKHQhPW51bGwpcmV0dXJuIHQKcz12LmludGVyY2VwdG9y
-c0J5VGFnW29dCmlmKHM9PW51bGwpe3I9SC5rKCQuVFguJDIoYSxvKSkKaWYociE9bnVsbCl7bj0kLm53
-W3JdCmlmKG4hPW51bGwpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShhLHYuZGlzcGF0Y2hQcm9wZXJ0eU5h
-bWUse3ZhbHVlOm4sZW51bWVyYWJsZTpmYWxzZSx3cml0YWJsZTp0cnVlLGNvbmZpZ3VyYWJsZTp0cnVl
-fSkKcmV0dXJuIG4uaX10PSQudnZbcl0KaWYodCE9bnVsbClyZXR1cm4gdApzPXYuaW50ZXJjZXB0b3Jz
-QnlUYWdbcl0Kbz1yfX1pZihzPT1udWxsKXJldHVybiBudWxsCnQ9cy5wcm90b3R5cGUKcT1vWzBdCmlm
-KHE9PT0iISIpe249SC5WYSh0KQokLm53W29dPW4KT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsdi5kaXNw
-YXRjaFByb3BlcnR5TmFtZSx7dmFsdWU6bixlbnVtZXJhYmxlOmZhbHNlLHdyaXRhYmxlOnRydWUsY29u
-ZmlndXJhYmxlOnRydWV9KQpyZXR1cm4gbi5pfWlmKHE9PT0ifiIpeyQudnZbb109dApyZXR1cm4gdH1p
-ZihxPT09Ii0iKXtwPUguVmEodCkKT2JqZWN0LmRlZmluZVByb3BlcnR5KE9iamVjdC5nZXRQcm90b3R5
-cGVPZihhKSx2LmRpc3BhdGNoUHJvcGVydHlOYW1lLHt2YWx1ZTpwLGVudW1lcmFibGU6ZmFsc2Usd3Jp
-dGFibGU6dHJ1ZSxjb25maWd1cmFibGU6dHJ1ZX0pCnJldHVybiBwLml9aWYocT09PSIrIilyZXR1cm4g
-SC5MYyhhLHQpCmlmKHE9PT0iKiIpdGhyb3cgSC5iKFAuU1kobykpCmlmKHYubGVhZlRhZ3Nbb109PT10
-cnVlKXtwPUguVmEodCkKT2JqZWN0LmRlZmluZVByb3BlcnR5KE9iamVjdC5nZXRQcm90b3R5cGVPZihh
-KSx2LmRpc3BhdGNoUHJvcGVydHlOYW1lLHt2YWx1ZTpwLGVudW1lcmFibGU6ZmFsc2Usd3JpdGFibGU6
-dHJ1ZSxjb25maWd1cmFibGU6dHJ1ZX0pCnJldHVybiBwLml9ZWxzZSByZXR1cm4gSC5MYyhhLHQpfSwK
-TGM6ZnVuY3Rpb24oYSxiKXt2YXIgdD1PYmplY3QuZ2V0UHJvdG90eXBlT2YoYSkKT2JqZWN0LmRlZmlu
-ZVByb3BlcnR5KHQsdi5kaXNwYXRjaFByb3BlcnR5TmFtZSx7dmFsdWU6Si5RdShiLHQsbnVsbCxudWxs
-KSxlbnVtZXJhYmxlOmZhbHNlLHdyaXRhYmxlOnRydWUsY29uZmlndXJhYmxlOnRydWV9KQpyZXR1cm4g
-Yn0sClZhOmZ1bmN0aW9uKGEpe3JldHVybiBKLlF1KGEsITEsbnVsbCwhIWEuJGlYail9LApWRjpmdW5j
-dGlvbihhLGIsYyl7dmFyIHQ9Yi5wcm90b3R5cGUKaWYodi5sZWFmVGFnc1thXT09PXRydWUpcmV0dXJu
-IEguVmEodCkKZWxzZSByZXR1cm4gSi5RdSh0LGMsbnVsbCxudWxsKX0sClhEOmZ1bmN0aW9uKCl7aWYo
-ITA9PT0kLkJ2KXJldHVybgokLkJ2PSEwCkguWjEoKX0sCloxOmZ1bmN0aW9uKCl7dmFyIHQscyxyLHEs
-cCxvLG4sbQokLm53PU9iamVjdC5jcmVhdGUobnVsbCkKJC52dj1PYmplY3QuY3JlYXRlKG51bGwpCkgu
-a08oKQp0PXYuaW50ZXJjZXB0b3JzQnlUYWcKcz1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0KQpp
-Zih0eXBlb2Ygd2luZG93IT0idW5kZWZpbmVkIil7d2luZG93CnI9ZnVuY3Rpb24oKXt9CmZvcihxPTA7
-cTxzLmxlbmd0aDsrK3Epe3A9c1txXQpvPSQueDcuJDEocCkKaWYobyE9bnVsbCl7bj1ILlZGKHAsdFtw
-XSxvKQppZihuIT1udWxsKXtPYmplY3QuZGVmaW5lUHJvcGVydHkobyx2LmRpc3BhdGNoUHJvcGVydHlO
-YW1lLHt2YWx1ZTpuLGVudW1lcmFibGU6ZmFsc2Usd3JpdGFibGU6dHJ1ZSxjb25maWd1cmFibGU6dHJ1
-ZX0pCnIucHJvdG90eXBlPW99fX19Zm9yKHE9MDtxPHMubGVuZ3RoOysrcSl7cD1zW3FdCmlmKC9eW0Et
-WmEtel9dLy50ZXN0KHApKXttPXRbcF0KdFsiISIrcF09bQp0WyJ+IitwXT1tCnRbIi0iK3BdPW0KdFsi
-KyIrcF09bQp0WyIqIitwXT1tfX19LAprTzpmdW5jdGlvbigpe3ZhciB0LHMscixxLHAsbyxuPUMuWXEo
-KQpuPUgudWQoQy5LVSxILnVkKEMuZlEsSC51ZChDLmk3LEgudWQoQy5pNyxILnVkKEMueGksSC51ZChD
-LmRrLEgudWQoQy53YihDLk80KSxuKSkpKSkpKQppZih0eXBlb2YgZGFydE5hdGl2ZURpc3BhdGNoSG9v
-a3NUcmFuc2Zvcm1lciE9InVuZGVmaW5lZCIpe3Q9ZGFydE5hdGl2ZURpc3BhdGNoSG9va3NUcmFuc2Zv
-cm1lcgppZih0eXBlb2YgdD09ImZ1bmN0aW9uIil0PVt0XQppZih0LmNvbnN0cnVjdG9yPT1BcnJheSlm
-b3Iocz0wO3M8dC5sZW5ndGg7KytzKXtyPXRbc10KaWYodHlwZW9mIHI9PSJmdW5jdGlvbiIpbj1yKG4p
-fHxufX1xPW4uZ2V0VGFnCnA9bi5nZXRVbmtub3duVGFnCm89bi5wcm90b3R5cGVGb3JUYWcKJC5ORj1u
-ZXcgSC5kQyhxKQokLlRYPW5ldyBILndOKHApCiQueDc9bmV3IEguVlgobyl9LAp1ZDpmdW5jdGlvbihh
-LGIpe3JldHVybiBhKGIpfHxifSwKdjQ6ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciB0PWI/Im0iOiIi
-LHM9Yz8iIjoiaSIscj1kPyJ1IjoiIixxPWU/InMiOiIiLHA9Zj8iZyI6IiIsbz1mdW5jdGlvbihnLGgp
-e3RyeXtyZXR1cm4gbmV3IFJlZ0V4cChnLGgpfWNhdGNoKG4pe3JldHVybiBufX0oYSx0K3MrcitxK3Ap
-CmlmKG8gaW5zdGFuY2VvZiBSZWdFeHApcmV0dXJuIG8KdGhyb3cgSC5iKFAucnIoIklsbGVnYWwgUmVn
-RXhwIHBhdHRlcm4gKCIrU3RyaW5nKG8pKyIpIixhLG51bGwpKX0sCm0yOmZ1bmN0aW9uKGEsYixjKXt2
-YXIgdAppZih0eXBlb2YgYj09InN0cmluZyIpcmV0dXJuIGEuaW5kZXhPZihiLGMpPj0wCmVsc2UgaWYo
-YiBpbnN0YW5jZW9mIEguVlIpe3Q9Qy54Qi5HKGEsYykKcmV0dXJuIGIuYi50ZXN0KHQpfWVsc2V7dD1K
-LkZMKGIsQy54Qi5HKGEsYykpCnJldHVybiF0LmdsMCh0KX19LApBNDpmdW5jdGlvbihhKXtpZihhLmlu
-ZGV4T2YoIiQiLDApPj0wKXJldHVybiBhLnJlcGxhY2UoL1wkL2csIiQkJCQiKQpyZXR1cm4gYX0sCmVB
-OmZ1bmN0aW9uKGEpe2lmKC9bW1xde30oKSorPy5cXF4kfF0vLnRlc3QoYSkpcmV0dXJuIGEucmVwbGFj
-ZSgvW1tcXXt9KCkqKz8uXFxeJHxdL2csIlxcJCYiKQpyZXR1cm4gYX0sCnlzOmZ1bmN0aW9uKGEsYixj
-KXt2YXIgdD1ILm5NKGEsYixjKQpyZXR1cm4gdH0sCm5NOmZ1bmN0aW9uKGEsYixjKXt2YXIgdCxzLHIs
-cQppZihiPT09IiIpe2lmKGE9PT0iIilyZXR1cm4gYwp0PWEubGVuZ3RoCnM9IiIrYwpmb3Iocj0wO3I8
-dDsrK3Ipcz1zK2Fbcl0rYwpyZXR1cm4gcy5jaGFyQ29kZUF0KDApPT0wP3M6c31xPWEuaW5kZXhPZihi
-LDApCmlmKHE8MClyZXR1cm4gYQppZihhLmxlbmd0aDw1MDB8fGMuaW5kZXhPZigiJCIsMCk+PTApcmV0
-dXJuIGEuc3BsaXQoYikuam9pbihjKQpyZXR1cm4gYS5yZXBsYWNlKG5ldyBSZWdFeHAoSC5lQShiKSwn
-ZycpLEguQTQoYykpfSwKUEQ6ZnVuY3Rpb24gUEQoYSxiKXt0aGlzLmE9YQp0aGlzLiR0aT1ifSwKV1U6
-ZnVuY3Rpb24gV1UoKXt9LApMUDpmdW5jdGlvbiBMUChhLGIsYyxkKXt2YXIgXz10aGlzCl8uYT1hCl8u
-Yj1iCl8uYz1jCl8uJHRpPWR9LApYUjpmdW5jdGlvbiBYUihhLGIpe3RoaXMuYT1hCnRoaXMuJHRpPWJ9
-LApMSTpmdW5jdGlvbiBMSShhLGIsYyxkLGUpe3ZhciBfPXRoaXMKXy5hPWEKXy5jPWIKXy5kPWMKXy5l
-PWQKXy5mPWV9LApDajpmdW5jdGlvbiBDaihhLGIsYyl7dGhpcy5hPWEKdGhpcy5iPWIKdGhpcy5jPWN9
-LApmOTpmdW5jdGlvbiBmOShhLGIsYyxkLGUsZil7dmFyIF89dGhpcwpfLmE9YQpfLmI9YgpfLmM9Ywpf
-LmQ9ZApfLmU9ZQpfLmY9Zn0sClcwOmZ1bmN0aW9uIFcwKGEsYil7dGhpcy5hPWEKdGhpcy5iPWJ9LAph
-ejpmdW5jdGlvbiBheihhLGIsYyl7dGhpcy5hPWEKdGhpcy5iPWIKdGhpcy5jPWN9LAp2VjpmdW5jdGlv
-biB2VihhKXt0aGlzLmE9YX0sCmJxOmZ1bmN0aW9uIGJxKGEsYil7dGhpcy5hPWEKdGhpcy5iPWJ9LApB
-bTpmdW5jdGlvbiBBbShhKXt0aGlzLmE9YX0sClhPOmZ1bmN0aW9uIFhPKGEpe3RoaXMuYT1hCnRoaXMu
-Yj1udWxsfSwKdjpmdW5jdGlvbiB2KCl7fSwKbGM6ZnVuY3Rpb24gbGMoKXt9LAp6eDpmdW5jdGlvbiB6
-eCgpe30sCnJUOmZ1bmN0aW9uIHJUKGEsYixjLGQpe3ZhciBfPXRoaXMKXy5hPWEKXy5iPWIKXy5jPWMK
-Xy5kPWR9LApFcTpmdW5jdGlvbiBFcShhKXt0aGlzLmE9YX0sCmtZOmZ1bmN0aW9uIGtZKGEpe3RoaXMu
-YT1hfSwKTjU6ZnVuY3Rpb24gTjUoYSl7dmFyIF89dGhpcwpfLmE9MApfLmY9Xy5lPV8uZD1fLmM9Xy5i
-PW51bGwKXy5yPTAKXy4kdGk9YX0sCmRiOmZ1bmN0aW9uIGRiKGEsYil7dmFyIF89dGhpcwpfLmE9YQpf
-LmI9YgpfLmQ9Xy5jPW51bGx9LAppNTpmdW5jdGlvbiBpNShhLGIpe3RoaXMuYT1hCnRoaXMuJHRpPWJ9
-LApONjpmdW5jdGlvbiBONihhLGIsYyl7dmFyIF89dGhpcwpfLmE9YQpfLmI9YgpfLmQ9Xy5jPW51bGwK
-Xy4kdGk9Y30sCmRDOmZ1bmN0aW9uIGRDKGEpe3RoaXMuYT1hfSwKd046ZnVuY3Rpb24gd04oYSl7dGhp
-cy5hPWF9LApWWDpmdW5jdGlvbiBWWChhKXt0aGlzLmE9YX0sClZSOmZ1bmN0aW9uIFZSKGEsYil7dmFy
-IF89dGhpcwpfLmE9YQpfLmI9YgpfLmQ9Xy5jPW51bGx9LApFSzpmdW5jdGlvbiBFSyhhKXt0aGlzLmI9
-YX0sCktXOmZ1bmN0aW9uIEtXKGEsYixjKXt0aGlzLmE9YQp0aGlzLmI9Ygp0aGlzLmM9Y30sClBiOmZ1
-bmN0aW9uIFBiKGEsYixjKXt2YXIgXz10aGlzCl8uYT1hCl8uYj1iCl8uYz1jCl8uZD1udWxsfSwKdFE6
-ZnVuY3Rpb24gdFEoYSxiKXt0aGlzLmE9YQp0aGlzLmM9Yn0sCnVuOmZ1bmN0aW9uIHVuKGEsYixjKXt0
-aGlzLmE9YQp0aGlzLmI9Ygp0aGlzLmM9Y30sClNkOmZ1bmN0aW9uIFNkKGEsYixjKXt2YXIgXz10aGlz
-Cl8uYT1hCl8uYj1iCl8uYz1jCl8uZD1udWxsfSwKWEY6ZnVuY3Rpb24oYSl7cmV0dXJuIGF9LApvZDpm
-dW5jdGlvbihhLGIsYyl7aWYoYT4+PjAhPT1hfHxhPj1jKXRocm93IEguYihILkhZKGIsYSkpfSwKck06
-ZnVuY3Rpb24oYSxiLGMpe3ZhciB0CmlmKCEoYT4+PjAhPT1hKSl0PWI+Pj4wIT09Ynx8YT5ifHxiPmMK
-ZWxzZSB0PSEwCmlmKHQpdGhyb3cgSC5iKEguYXUoYSxiLGMpKQpyZXR1cm4gYn0sCkVUOmZ1bmN0aW9u
-IEVUKCl7fSwKYjA6ZnVuY3Rpb24gYjAoKXt9LApEZzpmdW5jdGlvbiBEZygpe30sClBnOmZ1bmN0aW9u
-IFBnKCl7fSwKeGo6ZnVuY3Rpb24geGooKXt9LApkRTpmdW5jdGlvbiBkRSgpe30sClpBOmZ1bmN0aW9u
-IFpBKCl7fSwKZFQ6ZnVuY3Rpb24gZFQoKXt9LApQcTpmdW5jdGlvbiBQcSgpe30sCmVFOmZ1bmN0aW9u
-IGVFKCl7fSwKVjY6ZnVuY3Rpb24gVjYoKXt9LApSRzpmdW5jdGlvbiBSRygpe30sClZQOmZ1bmN0aW9u
-IFZQKCl7fSwKV0I6ZnVuY3Rpb24gV0IoKXt9LApaRzpmdW5jdGlvbiBaRygpe30sCmN6OmZ1bmN0aW9u
-KGEsYil7dmFyIHQ9Yi5jCnJldHVybiB0PT1udWxsP2IuYz1ILkIoYSxiLnosITApOnR9LAp4WjpmdW5j
-dGlvbihhLGIpe3ZhciB0PWIuYwpyZXR1cm4gdD09bnVsbD9iLmM9SC5KKGEsImI4IixbYi56XSk6dH0s
-ClExOmZ1bmN0aW9uKGEpe3ZhciB0PWEueQppZih0PT09Nnx8dD09PTd8fHQ9PT04KXJldHVybiBILlEx
-KGEueikKcmV0dXJuIHQ9PT0xMXx8dD09PTEyfSwKbUQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuY3l9LApO
-MDpmdW5jdGlvbihhKXtyZXR1cm4gSC5FKHYudHlwZVVuaXZlcnNlLGEsITEpfSwKUEw6ZnVuY3Rpb24o
-YSxiLGMsYTApe3ZhciB0LHMscixxLHAsbyxuLG0sbCxrLGosaSxoLGcsZixlLGQ9Yi55CnN3aXRjaChk
-KXtjYXNlIDU6Y2FzZSAxOmNhc2UgMjpjYXNlIDM6Y2FzZSA0OnJldHVybiBiCmNhc2UgNjp0PWIuegpz
-PUguUEwoYSx0LGMsYTApCmlmKHM9PT10KXJldHVybiBiCnJldHVybiBILkMoYSxzLCEwKQpjYXNlIDc6
-dD1iLnoKcz1ILlBMKGEsdCxjLGEwKQppZihzPT09dClyZXR1cm4gYgpyZXR1cm4gSC5CKGEscywhMCkK
-Y2FzZSA4OnQ9Yi56CnM9SC5QTChhLHQsYyxhMCkKaWYocz09PXQpcmV0dXJuIGIKcmV0dXJuIEguZihh
-LHMsITApCmNhc2UgOTpyPWIuUQpxPUguYlooYSxyLGMsYTApCmlmKHE9PT1yKXJldHVybiBiCnJldHVy
-biBILkooYSxiLnoscSkKY2FzZSAxMDpwPWIuegpvPUguUEwoYSxwLGMsYTApCm49Yi5RCm09SC5iWihh
-LG4sYyxhMCkKaWYobz09PXAmJm09PT1uKXJldHVybiBiCnJldHVybiBILmEoYSxvLG0pCmNhc2UgMTE6
-bD1iLnoKaz1ILlBMKGEsbCxjLGEwKQpqPWIuUQppPUgucVQoYSxqLGMsYTApCmlmKGs9PT1sJiZpPT09
-ailyZXR1cm4gYgpyZXR1cm4gSC5kKGEsayxpKQpjYXNlIDEyOmg9Yi5RCmEwKz1oLmxlbmd0aApnPUgu
-YlooYSxoLGMsYTApCnA9Yi56Cm89SC5QTChhLHAsYyxhMCkKaWYoZz09PWgmJm89PT1wKXJldHVybiBi
-CnJldHVybiBILkQoYSxvLGcsITApCmNhc2UgMTM6Zj1iLnoKaWYoZjxhMClyZXR1cm4gYgplPWNbZi1h
-MF0KaWYoZT09bnVsbClyZXR1cm4gYgpyZXR1cm4gZQpkZWZhdWx0OnRocm93IEguYihQLmhWKCJBdHRl
-bXB0ZWQgdG8gc3Vic3RpdHV0ZSB1bmV4cGVjdGVkIFJUSSBraW5kICIrZCkpfX0sCmJaOmZ1bmN0aW9u
-KGEsYixjLGQpe3ZhciB0LHMscixxLHA9Yi5sZW5ndGgsbz1bXQpmb3IodD0hMSxzPTA7czxwOysrcyl7
-cj1iW3NdCnE9SC5QTChhLHIsYyxkKQppZihxIT09cil0PSEwCm8ucHVzaChxKX1yZXR1cm4gdD9vOmJ9
-LAp2TzpmdW5jdGlvbihhLGIsYyxkKXt2YXIgdCxzLHIscSxwLG89Yi5sZW5ndGgsbj1bXQpmb3IodD0h
-MSxzPTA7czxvO3MrPTIpe3I9YltzXQpxPWJbcysxXQpwPUguUEwoYSxxLGMsZCkKaWYocCE9PXEpdD0h
-MApuLnB1c2gocikKbi5wdXNoKHApfXJldHVybiB0P246Yn0sCnFUOmZ1bmN0aW9uKGEsYixjLGQpe3Zh
-ciB0LHM9Yi5hLHI9SC5iWihhLHMsYyxkKSxxPWIuYixwPUguYlooYSxxLGMsZCksbz1iLmMsbj1ILnZP
-KGEsbyxjLGQpCmlmKHI9PT1zJiZwPT09cSYmbj09PW8pcmV0dXJuIGIKdD1uZXcgSC5HKCkKdC5hPXIK
-dC5iPXAKdC5jPW4KcmV0dXJuIHR9LApKUzpmdW5jdGlvbihhKXt2YXIgdD1hLiRTCmlmKHQhPW51bGwp
-e2lmKHR5cGVvZiB0PT0ibnVtYmVyIilyZXR1cm4gSC5CcCh0KQpyZXR1cm4gYS4kUygpfXJldHVybiBu
-dWxsfSwKVWU6ZnVuY3Rpb24oYSxiKXt2YXIgdAppZihILlExKGIpKWlmKGEgaW5zdGFuY2VvZiBILnYp
-e3Q9SC5KUyhhKQppZih0IT1udWxsKXJldHVybiB0fXJldHVybiBILnooYSl9LAp6OmZ1bmN0aW9uKGEp
-e3ZhciB0CmlmKGEgaW5zdGFuY2VvZiBQLk1oKXt0PWEuJHRpCnJldHVybiB0IT1udWxsP3Q6SC5WVShh
-KX1pZihBcnJheS5pc0FycmF5KGEpKXJldHVybiBILnQ2KGEpCnJldHVybiBILlZVKEouaWEoYSkpfSwK
-dDY6ZnVuY3Rpb24oYSl7dmFyIHQ9YVt2LmFycmF5UnRpXSxzPXUuYgppZih0PT1udWxsKXJldHVybiBz
-CmlmKHQuY29uc3RydWN0b3IhPT1zLmNvbnN0cnVjdG9yKXJldHVybiBzCnJldHVybiB0fSwKTGg6ZnVu
-Y3Rpb24oYSl7dmFyIHQ9YS4kdGkKcmV0dXJuIHQhPW51bGw/dDpILlZVKGEpfSwKVlU6ZnVuY3Rpb24o
-YSl7dmFyIHQ9YS5jb25zdHJ1Y3RvcixzPXQuJGNjYWNoZQppZihzIT1udWxsKXJldHVybiBzCnJldHVy
-biBILnI5KGEsdCl9LApyOTpmdW5jdGlvbihhLGIpe3ZhciB0PWEgaW5zdGFuY2VvZiBILnY/YS5fX3By
-b3RvX18uX19wcm90b19fLmNvbnN0cnVjdG9yOmIscz1ILmFpKHYudHlwZVVuaXZlcnNlLHQubmFtZSkK
-Yi4kY2NhY2hlPXMKcmV0dXJuIHN9LApCcDpmdW5jdGlvbihhKXt2YXIgdCxzLHIKSC51UChhKQp0PXYu
-dHlwZXMKcz10W2FdCmlmKHR5cGVvZiBzPT0ic3RyaW5nIil7cj1ILkUodi50eXBlVW5pdmVyc2Uscywh
-MSkKdFthXT1yCnJldHVybiByfXJldHVybiBzfSwKSko6ZnVuY3Rpb24oYSl7dmFyIHQscyxyLHE9dGhp
-cwppZihxPT09dS5LKXJldHVybiBILlJFKHEsYSxILmtlKQppZihILkE4KHEpfHxxPT09dS5fKXJldHVy
-biBILlJFKHEsYSxILkl3KQp0PXEueQpzPXQ9PT02P3EuejpxCmlmKHM9PT11LlMpcj1ILm9rCmVsc2Ug
-aWYocz09PXUuZ1J8fHM9PT11LmRpKXI9SC5LSAplbHNlIGlmKHM9PT11Lk4pcj1ILk1NCmVsc2Ugcj1z
-PT09dS55P0gubDpudWxsCmlmKHIhPW51bGwpcmV0dXJuIEguUkUocSxhLHIpCmlmKHMueT09PTkpe3Q9
-cy56CmlmKHMuUS5ldmVyeShILmNjKSl7cS5yPSIkaSIrdApyZXR1cm4gSC5SRShxLGEsSC50NCl9fWVs
-c2UgaWYodD09PTcpcmV0dXJuIEguUkUocSxhLEguQVEpCnJldHVybiBILlJFKHEsYSxILllPKX0sClJF
-OmZ1bmN0aW9uKGEsYixjKXthLmI9YwpyZXR1cm4gYS5iKGIpfSwKQXU6ZnVuY3Rpb24oYSl7dmFyIHQs
-cz10aGlzCkguT3oKaWYoSC5BOChzKXx8cz09PXUuXyl0PUguaG4KZWxzZSBpZihzPT09dS5LKXQ9SC5U
-aQplbHNlIHQ9SC5sNApzLmE9dApyZXR1cm4gcy5hKGEpfSwKUWo6ZnVuY3Rpb24oYSl7dmFyIHQ9YS55
-CnJldHVybiBILkE4KGEpfHxhPT09dS5ffHxhPT09dS5hd3x8dD09PTd8fGE9PT11LlB9LApZTzpmdW5j
-dGlvbihhKXt2YXIgdD10aGlzCmlmKGE9PW51bGwpcmV0dXJuIEguUWoodCkKcmV0dXJuIEguV2Uodi50
-eXBlVW5pdmVyc2UsSC5VZShhLHQpLG51bGwsdCxudWxsKX0sCkFROmZ1bmN0aW9uKGEpe2lmKGE9PW51
-bGwpcmV0dXJuITAKcmV0dXJuIHRoaXMuei5iKGEpfSwKdDQ6ZnVuY3Rpb24oYSl7dmFyIHQ9dGhpcyxz
-PXQucgppZihhIGluc3RhbmNlb2YgUC5NaClyZXR1cm4hIWFbc10KcmV0dXJuISFKLmlhKGEpW3NdfSwK
-T3o6ZnVuY3Rpb24oYSl7dmFyIHQ9dGhpcwppZihhPT1udWxsKXJldHVybiBhCmVsc2UgaWYodC5iKGEp
-KXJldHVybiBhCkgubTQoYSx0KX0sCmw0OmZ1bmN0aW9uKGEpe3ZhciB0PXRoaXMKaWYoYT09bnVsbCly
-ZXR1cm4gYQppZih0LmIoYSkpcmV0dXJuIGEKSC5tNChhLHQpfSwKbTQ6ZnVuY3Rpb24oYSxiKXt0aHJv
-dyBILmIoSC5aYyhILldLKGEsSC5VZShhLGIpLEguZG0oYixudWxsKSkpKX0sCkRoOmZ1bmN0aW9uKGEs
-YixjLGQpe3ZhciB0PW51bGwKaWYoSC5XZSh2LnR5cGVVbml2ZXJzZSxhLHQsYix0KSlyZXR1cm4gYQp0
-aHJvdyBILmIoSC5aYygiVGhlIHR5cGUgYXJndW1lbnQgJyIrSC5FaihILmRtKGEsdCkpKyInIGlzIG5v
-dCBhIHN1YnR5cGUgb2YgdGhlIHR5cGUgdmFyaWFibGUgYm91bmQgJyIrSC5FaihILmRtKGIsdCkpKyIn
-IG9mIHR5cGUgdmFyaWFibGUgJyIrSC5FaihjKSsiJyBpbiAnIitILkVqKGQpKyInLiIpKX0sCldLOmZ1
-bmN0aW9uKGEsYixjKXt2YXIgdD1QLnAoYSkscz1ILmRtKGI9PW51bGw/SC56KGEpOmIsbnVsbCkKcmV0
-dXJuIHQrIjogdHlwZSAnIitILkVqKHMpKyInIGlzIG5vdCBhIHN1YnR5cGUgb2YgdHlwZSAnIitILkVq
-KGMpKyInIn0sClpjOmZ1bmN0aW9uKGEpe3JldHVybiBuZXcgSC5pTSgiVHlwZUVycm9yOiAiK2EpfSwK
-cTpmdW5jdGlvbihhLGIpe3JldHVybiBuZXcgSC5pTSgiVHlwZUVycm9yOiAiK0guV0soYSxudWxsLGIp
-KX0sCmtlOmZ1bmN0aW9uKGEpe3JldHVybiBhIT1udWxsfSwKVGk6ZnVuY3Rpb24oYSl7cmV0dXJuIGF9
-LApJdzpmdW5jdGlvbihhKXtyZXR1cm4hMH0sCmhuOmZ1bmN0aW9uKGEpe3JldHVybiBhfSwKbDpmdW5j
-dGlvbihhKXtyZXR1cm4hMD09PWF8fCExPT09YX0sCnA4OmZ1bmN0aW9uKGEpe2lmKCEwPT09YXx8ITE9
-PT1hKXJldHVybiBhCnRocm93IEguYihILnEoYSwiYm9vbCIpKX0sCnk4OmZ1bmN0aW9uKGEpe2lmKCEw
-PT09YXx8ITE9PT1hKXJldHVybiBhCmlmKGE9PW51bGwpcmV0dXJuIGEKdGhyb3cgSC5iKEgucShhLCJi
-b29sIikpfSwKQlI6ZnVuY3Rpb24oYSl7aWYoITA9PT1hfHwhMT09PWEpcmV0dXJuIGEKaWYoYT09bnVs
-bClyZXR1cm4gYQp0aHJvdyBILmIoSC5xKGEsImJvb2w/IikpfSwKRkc6ZnVuY3Rpb24oYSl7aWYodHlw
-ZW9mIGE9PSJudW1iZXIiKXJldHVybiBhCnRocm93IEguYihILnEoYSwiZG91YmxlIikpfSwKR0g6ZnVu
-Y3Rpb24oYSl7aWYodHlwZW9mIGE9PSJudW1iZXIiKXJldHVybiBhCmlmKGE9PW51bGwpcmV0dXJuIGEK
-dGhyb3cgSC5iKEgucShhLCJkb3VibGUiKSl9LApRazpmdW5jdGlvbihhKXtpZih0eXBlb2YgYT09Im51
-bWJlciIpcmV0dXJuIGEKaWYoYT09bnVsbClyZXR1cm4gYQp0aHJvdyBILmIoSC5xKGEsImRvdWJsZT8i
-KSl9LApvazpmdW5jdGlvbihhKXtyZXR1cm4gdHlwZW9mIGE9PSJudW1iZXIiJiZNYXRoLmZsb29yKGEp
-PT09YX0sCklaOmZ1bmN0aW9uKGEpe2lmKHR5cGVvZiBhPT0ibnVtYmVyIiYmTWF0aC5mbG9vcihhKT09
-PWEpcmV0dXJuIGEKdGhyb3cgSC5iKEgucShhLCJpbnQiKSl9LAp1UDpmdW5jdGlvbihhKXtpZih0eXBl
-b2YgYT09Im51bWJlciImJk1hdGguZmxvb3IoYSk9PT1hKXJldHVybiBhCmlmKGE9PW51bGwpcmV0dXJu
-IGEKdGhyb3cgSC5iKEgucShhLCJpbnQiKSl9LApVYzpmdW5jdGlvbihhKXtpZih0eXBlb2YgYT09Im51
-bWJlciImJk1hdGguZmxvb3IoYSk9PT1hKXJldHVybiBhCmlmKGE9PW51bGwpcmV0dXJuIGEKdGhyb3cg
-SC5iKEgucShhLCJpbnQ/IikpfSwKS0g6ZnVuY3Rpb24oYSl7cmV0dXJuIHR5cGVvZiBhPT0ibnVtYmVy
-In0sCno1OmZ1bmN0aW9uKGEpe2lmKHR5cGVvZiBhPT0ibnVtYmVyIilyZXR1cm4gYQp0aHJvdyBILmIo
-SC5xKGEsIm51bSIpKX0sCm9JOmZ1bmN0aW9uKGEpe2lmKHR5cGVvZiBhPT0ibnVtYmVyIilyZXR1cm4g
-YQppZihhPT1udWxsKXJldHVybiBhCnRocm93IEguYihILnEoYSwibnVtIikpfSwKY1U6ZnVuY3Rpb24o
-YSl7aWYodHlwZW9mIGE9PSJudW1iZXIiKXJldHVybiBhCmlmKGE9PW51bGwpcmV0dXJuIGEKdGhyb3cg
-SC5iKEgucShhLCJudW0/IikpfSwKTU06ZnVuY3Rpb24oYSl7cmV0dXJuIHR5cGVvZiBhPT0ic3RyaW5n
-In0sCkJ0OmZ1bmN0aW9uKGEpe2lmKHR5cGVvZiBhPT0ic3RyaW5nIilyZXR1cm4gYQp0aHJvdyBILmIo
-SC5xKGEsIlN0cmluZyIpKX0sCmg6ZnVuY3Rpb24oYSl7aWYodHlwZW9mIGE9PSJzdHJpbmciKXJldHVy
-biBhCmlmKGE9PW51bGwpcmV0dXJuIGEKdGhyb3cgSC5iKEgucShhLCJTdHJpbmciKSl9LAprOmZ1bmN0
-aW9uKGEpe2lmKHR5cGVvZiBhPT0ic3RyaW5nIilyZXR1cm4gYQppZihhPT1udWxsKXJldHVybiBhCnRo
-cm93IEguYihILnEoYSwiU3RyaW5nPyIpKX0sCmlvOmZ1bmN0aW9uKGEsYil7dmFyIHQscyxyCmZvcih0
-PSIiLHM9IiIscj0wO3I8YS5sZW5ndGg7KytyLHM9IiwgIil0Kz1DLnhCLmgocyxILmRtKGFbcl0sYikp
-CnJldHVybiB0fSwKYkk6ZnVuY3Rpb24oYTIsYTMsYTQpe3ZhciB0LHMscixxLHAsbyxuLG0sbCxrLGos
-aSxoLGcsZixlLGQsYyxiLGEsYTAsYTE9IiwgIgppZihhNCE9bnVsbCl7dD1hNC5sZW5ndGgKaWYoYTM9
-PW51bGwpe2EzPUguVk0oW10sdS5zKQpzPW51bGx9ZWxzZSBzPWEzLmxlbmd0aApyPWEzLmxlbmd0aApm
-b3IocT10O3E+MDstLXEpQy5ObS5pKGEzLCJUIisocitxKSkKZm9yKHA9dS5fLG89dS5LLG49IjwiLG09
-IiIscT0wO3E8dDsrK3EsbT1hMSl7bis9bQpsPWEzLmxlbmd0aAprPWwtMS1xCmlmKGs8MClyZXR1cm4g
-SC5PSChhMyxrKQpuPUMueEIuaChuLGEzW2tdKQpqPWE0W3FdCmlmKCEoSC5BOChqKXx8aj09PXApKWw9
-IShqPT09bykKZWxzZSBsPSExCmlmKGwpbis9Qy54Qi5oKCIgZXh0ZW5kcyAiLEguZG0oaixhMykpfW4r
-PSI+In1lbHNle249IiIKcz1udWxsfXA9YTIuegppPWEyLlEKaD1pLmEKZz1oLmxlbmd0aApmPWkuYgpl
-PWYubGVuZ3RoCmQ9aS5jCmM9ZC5sZW5ndGgKYj1ILmRtKHAsYTMpCmZvcihhPSIiLGEwPSIiLHE9MDtx
-PGc7KytxLGEwPWExKWErPUMueEIuaChhMCxILmRtKGhbcV0sYTMpKQppZihlPjApe2ErPWEwKyJbIgpm
-b3IoYTA9IiIscT0wO3E8ZTsrK3EsYTA9YTEpYSs9Qy54Qi5oKGEwLEguZG0oZltxXSxhMykpCmErPSJd
-In1pZihjPjApe2ErPWEwKyJ7Igpmb3IoYTA9IiIscT0wO3E8YztxKz0yLGEwPWExKWErPUMueEIuaChh
-MCxILmRtKGRbcSsxXSxhMykpKyIgIitkW3FdCmErPSJ9In1pZihzIT1udWxsKXthMy50b1N0cmluZwph
-My5sZW5ndGg9c31yZXR1cm4gbisiKCIrYSsiKSA9PiAiK0guRWooYil9LApkbTpmdW5jdGlvbihhLGIp
-e3ZhciB0LHMscixxLHAsbyxuLG09YS55CmlmKG09PT01KXJldHVybiJlcmFzZWQiCmlmKG09PT0yKXJl
-dHVybiJkeW5hbWljIgppZihtPT09MylyZXR1cm4idm9pZCIKaWYobT09PTEpcmV0dXJuIk5ldmVyIgpp
-ZihtPT09NClyZXR1cm4iYW55IgppZihtPT09Nil7dD1ILmRtKGEueixiKQpyZXR1cm4gdH1pZihtPT09
-Nyl7cz1hLnoKdD1ILmRtKHMsYikKcj1zLnkKcmV0dXJuIEouYmIocj09PTExfHxyPT09MTI/Qy54Qi5o
-KCIoIix0KSsiKSI6dCwiPyIpfWlmKG09PT04KXJldHVybiJGdXR1cmVPcjwiK0guRWooSC5kbShhLnos
-YikpKyI+IgppZihtPT09OSl7cT1ILm8zKGEueikKcD1hLlEKcmV0dXJuIHAubGVuZ3RoIT09MD9xKygi
-PCIrSC5pbyhwLGIpKyI+Iik6cX1pZihtPT09MTEpcmV0dXJuIEguYkkoYSxiLG51bGwpCmlmKG09PT0x
-MilyZXR1cm4gSC5iSShhLnosYixhLlEpCmlmKG09PT0xMyl7Yi50b1N0cmluZwpvPWEuegpuPWIubGVu
-Z3RoCm89bi0xLW8KaWYobzwwfHxvPj1uKXJldHVybiBILk9IKGIsbykKcmV0dXJuIGJbb119cmV0dXJu
-Ij8ifSwKbzM6ZnVuY3Rpb24oYSl7dmFyIHQscz1ILkpnKGEpCmlmKHMhPW51bGwpcmV0dXJuIHMKdD0i
-bWluaWZpZWQ6IithCnJldHVybiB0fSwKUW86ZnVuY3Rpb24oYSxiKXt2YXIgdD1hLnRSW2JdCmZvcig7
-dHlwZW9mIHQ9PSJzdHJpbmciOyl0PWEudFJbdF0KcmV0dXJuIHR9LAphaTpmdW5jdGlvbihhLGIpe3Zh
-ciB0LHMscixxLHAsbz1hLmVULG49b1tiXQppZihuPT1udWxsKXJldHVybiBILkUoYSxiLCExKQplbHNl
-IGlmKHR5cGVvZiBuPT0ibnVtYmVyIil7dD1uCnM9SC5tKGEsNSwiIyIpCnI9W10KZm9yKHE9MDtxPHQ7
-KytxKXIucHVzaChzKQpwPUguSihhLGIscikKb1tiXT1wCnJldHVybiBwfWVsc2UgcmV0dXJuIG59LAp4
-YjpmdW5jdGlvbihhLGIpe3JldHVybiBILkl4KGEudFIsYil9LApGRjpmdW5jdGlvbihhLGIpe3JldHVy
-biBILkl4KGEuZVQsYil9LApFOmZ1bmN0aW9uKGEsYixjKXt2YXIgdCxzPWEuZUMscj1zLmdldChiKQpp
-ZihyIT1udWxsKXJldHVybiByCnQ9SC5pKEgubyhhLG51bGwsYixjKSkKcy5zZXQoYix0KQpyZXR1cm4g
-dH0sCmNFOmZ1bmN0aW9uKGEsYixjKXt2YXIgdCxzLHI9Yi5jaAppZihyPT1udWxsKXI9Yi5jaD1uZXcg
-TWFwKCkKdD1yLmdldChjKQppZih0IT1udWxsKXJldHVybiB0CnM9SC5pKEgubyhhLGIsYywhMCkpCnIu
-c2V0KGMscykKcmV0dXJuIHN9LAp2NTpmdW5jdGlvbihhLGIsYyl7dmFyIHQscyxyLHE9Yi5jeAppZihx
-PT1udWxsKXE9Yi5jeD1uZXcgTWFwKCkKdD1jLmN5CnM9cS5nZXQodCkKaWYocyE9bnVsbClyZXR1cm4g
-cwpyPUguYShhLGIsYy55PT09MTA/Yy5ROltjXSkKcS5zZXQodCxyKQpyZXR1cm4gcn0sCkJEOmZ1bmN0
-aW9uKGEsYil7Yi5hPUguQXUKYi5iPUguSkoKcmV0dXJuIGJ9LAptOmZ1bmN0aW9uKGEsYixjKXt2YXIg
-dCxzLHI9YS5lQy5nZXQoYykKaWYociE9bnVsbClyZXR1cm4gcgp0PW5ldyBILkpjKG51bGwsbnVsbCkK
-dC55PWIKdC5jeT1jCnM9SC5CRChhLHQpCmEuZUMuc2V0KGMscykKcmV0dXJuIHN9LApDOmZ1bmN0aW9u
-KGEsYixjKXt2YXIgdCxzPWIuY3krIioiLHI9YS5lQy5nZXQocykKaWYociE9bnVsbClyZXR1cm4gcgp0
-PUguWjcoYSxiLHMsYykKYS5lQy5zZXQocyx0KQpyZXR1cm4gdH0sClo3OmZ1bmN0aW9uKGEsYixjLGQp
-e3ZhciB0LHMKaWYoZCl7dD1iLnkKaWYoSC5BOChiKXx8Yj09PXUuX3x8Yj09PXUuUHx8dD09PTd8fHQ9
-PT02KXJldHVybiBifXM9bmV3IEguSmMobnVsbCxudWxsKQpzLnk9NgpzLno9YgpzLmN5PWMKcmV0dXJu
-IEguQkQoYSxzKX0sCkI6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0LHM9Yi5jeSsiPyIscj1hLmVDLmdldChz
-KQppZihyIT1udWxsKXJldHVybiByCnQ9SC5sbChhLGIscyxjKQphLmVDLnNldChzLHQpCnJldHVybiB0
-fSwKbGw6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIHQscyxyLHEKaWYoZCl7dD1iLnkKaWYoIUguQTgoYikp
-aWYoIShiPT09dS5QKSlpZih0IT09NylzPXQ9PT04JiZILmxSKGIueikKZWxzZSBzPSEwCmVsc2Ugcz0h
-MAplbHNlIHM9ITAKaWYocylyZXR1cm4gYgplbHNlIGlmKHQ9PT0xfHxiPT09dS5hdylyZXR1cm4gdS5Q
-CmVsc2UgaWYodD09PTYpe3I9Yi56CmlmKHIueT09PTgmJkgubFIoci56KSlyZXR1cm4gcgplbHNlIHJl
-dHVybiBILmN6KGEsYil9fXE9bmV3IEguSmMobnVsbCxudWxsKQpxLnk9NwpxLno9YgpxLmN5PWMKcmV0
-dXJuIEguQkQoYSxxKX0sCmY6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0LHM9Yi5jeSsiLyIscj1hLmVDLmdl
-dChzKQppZihyIT1udWxsKXJldHVybiByCnQ9SC5lVihhLGIscyxjKQphLmVDLnNldChzLHQpCnJldHVy
-biB0fSwKZVY6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIHQscwppZihkKXt0PWIueQppZihILkE4KGIpfHxi
-PT09dS5ffHxiPT09dS5LKXJldHVybiBiCmVsc2UgaWYodD09PTEpcmV0dXJuIEguSihhLCJiOCIsW2Jd
-KQplbHNlIGlmKGI9PT11LlApcmV0dXJuIHUuYkd9cz1uZXcgSC5KYyhudWxsLG51bGwpCnMueT04CnMu
-ej1iCnMuY3k9YwpyZXR1cm4gSC5CRChhLHMpfSwKSDpmdW5jdGlvbihhLGIpe3ZhciB0LHMscj0iIiti
-KyJeIixxPWEuZUMuZ2V0KHIpCmlmKHEhPW51bGwpcmV0dXJuIHEKdD1uZXcgSC5KYyhudWxsLG51bGwp
-CnQueT0xMwp0Lno9Ygp0LmN5PXIKcz1ILkJEKGEsdCkKYS5lQy5zZXQocixzKQpyZXR1cm4gc30sClV4
-OmZ1bmN0aW9uKGEpe3ZhciB0LHMscixxPWEubGVuZ3RoCmZvcih0PSIiLHM9IiIscj0wO3I8cTsrK3Is
-cz0iLCIpdCs9cythW3JdLmN5CnJldHVybiB0fSwKUzQ6ZnVuY3Rpb24oYSl7dmFyIHQscyxyLHEscCxv
-PWEubGVuZ3RoCmZvcih0PSIiLHM9IiIscj0wO3I8bztyKz0yLHM9IiwiKXtxPWFbcl0KcD1hW3IrMV0u
-Y3kKdCs9cytxKyI6IitwfXJldHVybiB0fSwKSjpmdW5jdGlvbihhLGIsYyl7dmFyIHQscyxyLHE9Ygpp
-ZihjLmxlbmd0aCE9PTApcSs9IjwiK0guVXgoYykrIj4iCnQ9YS5lQy5nZXQocSkKaWYodCE9bnVsbCly
-ZXR1cm4gdApzPW5ldyBILkpjKG51bGwsbnVsbCkKcy55PTkKcy56PWIKcy5RPWMKaWYoYy5sZW5ndGg+
-MClzLmM9Y1swXQpzLmN5PXEKcj1ILkJEKGEscykKYS5lQy5zZXQocSxyKQpyZXR1cm4gcn0sCmE6ZnVu
-Y3Rpb24oYSxiLGMpe3ZhciB0LHMscixxLHAsbwppZihiLnk9PT0xMCl7dD1iLnoKcz1iLlEuY29uY2F0
-KGMpfWVsc2V7cz1jCnQ9Yn1yPXQuY3krIjsiKygiPCIrSC5VeChzKSsiPiIpCnE9YS5lQy5nZXQocikK
-aWYocSE9bnVsbClyZXR1cm4gcQpwPW5ldyBILkpjKG51bGwsbnVsbCkKcC55PTEwCnAuej10CnAuUT1z
-CnAuY3k9cgpvPUguQkQoYSxwKQphLmVDLnNldChyLG8pCnJldHVybiBvfSwKZDpmdW5jdGlvbihhLGIs
-Yyl7dmFyIHQscyxyLHEscD1iLmN5LG89Yy5hLG49by5sZW5ndGgsbT1jLmIsbD1tLmxlbmd0aCxrPWMu
-YyxqPWsubGVuZ3RoLGk9IigiK0guVXgobykKaWYobD4wKWkrPShuPjA/IiwiOiIiKSsiWyIrSC5VeCht
-KSsiXSIKaWYoaj4wKWkrPShuPjA/IiwiOiIiKSsieyIrSC5TNChrKSsifSIKdD1wKyhpKyIpIikKcz1h
-LmVDLmdldCh0KQppZihzIT1udWxsKXJldHVybiBzCnI9bmV3IEguSmMobnVsbCxudWxsKQpyLnk9MTEK
-ci56PWIKci5RPWMKci5jeT10CnE9SC5CRChhLHIpCmEuZUMuc2V0KHQscSkKcmV0dXJuIHF9LApEOmZ1
-bmN0aW9uKGEsYixjLGQpe3ZhciB0LHM9Yi5jeSsiPCIrSC5VeChjKSsiPiIscj1hLmVDLmdldChzKQpp
-ZihyIT1udWxsKXJldHVybiByCnQ9SC5odyhhLGIsYyxzLGQpCmEuZUMuc2V0KHMsdCkKcmV0dXJuIHR9
-LApodzpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciB0LHMscixxLHAsbyxuLG0KaWYoZSl7dD1jLmxlbmd0
-aApzPW5ldyBBcnJheSh0KQpmb3Iocj0wLHE9MDtxPHQ7KytxKXtwPWNbcV0KaWYocC55PT09MSl7c1tx
-XT1wOysrcn19aWYocj4wKXtvPUguUEwoYSxiLHMsMCkKbj1ILmJaKGEsYyxzLDApCnJldHVybiBILkQo
-YSxvLG4sYyE9PW4pfX1tPW5ldyBILkpjKG51bGwsbnVsbCkKbS55PTEyCm0uej1iCm0uUT1jCm0uY3k9
-ZApyZXR1cm4gSC5CRChhLG0pfSwKbzpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm57dTphLGU6YixyOmMs
-czpbXSxwOjAsbjpkfX0sCmk6ZnVuY3Rpb24oYSl7dmFyIHQscyxyLHEscCxvLG4sbSxsLGssaixpPWEu
-cixoPWEucwpmb3IodD1pLmxlbmd0aCxzPTA7czx0Oyl7cj1pLmNoYXJDb2RlQXQocykKaWYocj49NDgm
-JnI8PTU3KXM9SC5BKHMrMSxyLGksaCkKZWxzZSBpZigoKChyfDMyKT4+PjApLTk3JjY1NTM1KTwyNnx8
-cj09PTk1fHxyPT09MzYpcz1ILnQoYSxzLGksaCwhMSkKZWxzZSBpZihyPT09NDYpcz1ILnQoYSxzLGks
-aCwhMCkKZWxzZXsrK3MKc3dpdGNoKHIpe2Nhc2UgNDQ6YnJlYWsKY2FzZSA1ODpicmVhawpjYXNlIDU5
-OmgucHVzaChILksoYS51LGEuZSxoLnBvcCgpKSkKYnJlYWsKY2FzZSA5NDpoLnB1c2goSC5IKGEudSxo
-LnBvcCgpKSkKYnJlYWsKY2FzZSAzNTpoLnB1c2goSC5tKGEudSw1LCIjIikpCmJyZWFrCmNhc2UgNjQ6
-aC5wdXNoKEgubShhLnUsMiwiQCIpKQpicmVhawpjYXNlIDEyNjpoLnB1c2goSC5tKGEudSwzLCJ+Iikp
-CmJyZWFrCmNhc2UgNjA6aC5wdXNoKGEucCkKYS5wPWgubGVuZ3RoCmJyZWFrCmNhc2UgNjI6cT1hLnUK
-cD1oLnNwbGljZShhLnApCkgucihhLnUsYS5lLHApCmEucD1oLnBvcCgpCm89aC5wb3AoKQppZih0eXBl
-b2Ygbz09InN0cmluZyIpaC5wdXNoKEguSihxLG8scCkpCmVsc2V7bj1ILksocSxhLmUsbykKc3dpdGNo
-KG4ueSl7Y2FzZSAxMTpoLnB1c2goSC5EKHEsbixwLGEubikpCmJyZWFrCmRlZmF1bHQ6aC5wdXNoKEgu
-YShxLG4scCkpCmJyZWFrfX1icmVhawpjYXNlIDM4OkguSShhLGgpCmJyZWFrCmNhc2UgNDI6cT1hLnUK
-aC5wdXNoKEguQyhxLEguSyhxLGEuZSxoLnBvcCgpKSxhLm4pKQpicmVhawpjYXNlIDYzOnE9YS51Cmgu
-cHVzaChILkIocSxILksocSxhLmUsaC5wb3AoKSksYS5uKSkKYnJlYWsKY2FzZSA0NzpxPWEudQpoLnB1
-c2goSC5mKHEsSC5LKHEsYS5lLGgucG9wKCkpLGEubikpCmJyZWFrCmNhc2UgNDA6aC5wdXNoKGEucCkK
-YS5wPWgubGVuZ3RoCmJyZWFrCmNhc2UgNDE6cT1hLnUKbT1uZXcgSC5HKCkKbD1xLnNFQQprPXEuc0VB
-Cm89aC5wb3AoKQppZih0eXBlb2Ygbz09Im51bWJlciIpc3dpdGNoKG8pe2Nhc2UtMTpsPWgucG9wKCkK
-YnJlYWsKY2FzZS0yOms9aC5wb3AoKQpicmVhawpkZWZhdWx0OmgucHVzaChvKQpicmVha31lbHNlIGgu
-cHVzaChvKQpwPWguc3BsaWNlKGEucCkKSC5yKGEudSxhLmUscCkKYS5wPWgucG9wKCkKbS5hPXAKbS5i
-PWwKbS5jPWsKaC5wdXNoKEguZChxLEguSyhxLGEuZSxoLnBvcCgpKSxtKSkKYnJlYWsKY2FzZSA5MTpo
-LnB1c2goYS5wKQphLnA9aC5sZW5ndGgKYnJlYWsKY2FzZSA5MzpwPWguc3BsaWNlKGEucCkKSC5yKGEu
-dSxhLmUscCkKYS5wPWgucG9wKCkKaC5wdXNoKHApCmgucHVzaCgtMSkKYnJlYWsKY2FzZSAxMjM6aC5w
-dXNoKGEucCkKYS5wPWgubGVuZ3RoCmJyZWFrCmNhc2UgMTI1OnA9aC5zcGxpY2UoYS5wKQpILnkoYS51
-LGEuZSxwKQphLnA9aC5wb3AoKQpoLnB1c2gocCkKaC5wdXNoKC0yKQpicmVhawpkZWZhdWx0OnRocm93
-IkJhZCBjaGFyYWN0ZXIgIityfX19aj1oLnBvcCgpCnJldHVybiBILksoYS51LGEuZSxqKX0sCkE6ZnVu
-Y3Rpb24oYSxiLGMsZCl7dmFyIHQscyxyPWItNDgKZm9yKHQ9Yy5sZW5ndGg7YTx0OysrYSl7cz1jLmNo
-YXJDb2RlQXQoYSkKaWYoIShzPj00OCYmczw9NTcpKWJyZWFrCnI9cioxMCsocy00OCl9ZC5wdXNoKHIp
-CnJldHVybiBhfSwKdDpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciB0LHMscixxLHAsbyxuPWIrMQpmb3Io
-dD1jLmxlbmd0aDtuPHQ7KytuKXtzPWMuY2hhckNvZGVBdChuKQppZihzPT09NDYpe2lmKGUpYnJlYWsK
-ZT0hMH1lbHNle2lmKCEoKCgoc3wzMik+Pj4wKS05NyY2NTUzNSk8MjZ8fHM9PT05NXx8cz09PTM2KSly
-PXM+PTQ4JiZzPD01NwplbHNlIHI9ITAKaWYoIXIpYnJlYWt9fXE9Yy5zdWJzdHJpbmcoYixuKQppZihl
-KXt0PWEudQpwPWEuZQppZihwLnk9PT0xMClwPXAuegpvPUguUW8odCxwLnopW3FdCmlmKG89PW51bGwp
-SC52aCgnTm8gIicrcSsnIiBpbiAiJytILm1EKHApKyciJykKZC5wdXNoKEguY0UodCxwLG8pKX1lbHNl
-IGQucHVzaChxKQpyZXR1cm4gbn0sCkk6ZnVuY3Rpb24oYSxiKXt2YXIgdD1iLnBvcCgpCmlmKDA9PT10
-KXtiLnB1c2goSC5tKGEudSwxLCIwJiIpKQpyZXR1cm59aWYoMT09PXQpe2IucHVzaChILm0oYS51LDQs
-IjEmIikpCnJldHVybn10aHJvdyBILmIoUC5oVigiVW5leHBlY3RlZCBleHRlbmRlZCBvcGVyYXRpb24g
-IitILkVqKHQpKSl9LApLOmZ1bmN0aW9uKGEsYixjKXtpZih0eXBlb2YgYz09InN0cmluZyIpcmV0dXJu
-IEguSihhLGMsYS5zRUEpCmVsc2UgaWYodHlwZW9mIGM9PSJudW1iZXIiKXJldHVybiBILlRWKGEsYixj
-KQplbHNlIHJldHVybiBjfSwKcjpmdW5jdGlvbihhLGIsYyl7dmFyIHQscz1jLmxlbmd0aApmb3IodD0w
-O3Q8czsrK3QpY1t0XT1ILksoYSxiLGNbdF0pfSwKeTpmdW5jdGlvbihhLGIsYyl7dmFyIHQscz1jLmxl
-bmd0aApmb3IodD0xO3Q8czt0Kz0yKWNbdF09SC5LKGEsYixjW3RdKX0sClRWOmZ1bmN0aW9uKGEsYixj
-KXt2YXIgdCxzLHI9Yi55CmlmKHI9PT0xMCl7aWYoYz09PTApcmV0dXJuIGIuegp0PWIuUQpzPXQubGVu
-Z3RoCmlmKGM8PXMpcmV0dXJuIHRbYy0xXQpjLT1zCmI9Yi56CnI9Yi55fWVsc2UgaWYoYz09PTApcmV0
-dXJuIGIKaWYociE9PTkpdGhyb3cgSC5iKFAuaFYoIkluZGV4ZWQgYmFzZSBtdXN0IGJlIGFuIGludGVy
-ZmFjZSB0eXBlIikpCnQ9Yi5RCmlmKGM8PXQubGVuZ3RoKXJldHVybiB0W2MtMV0KdGhyb3cgSC5iKFAu
-aFYoIkJhZCBpbmRleCAiK2MrIiBmb3IgIitiLncoMCkpKX0sCldlOmZ1bmN0aW9uKGEsYixjLGQsZSl7
-dmFyIHQscyxyLHEscCxvLG4sbSxsLGsKaWYoYj09PWQpcmV0dXJuITAKaWYoSC5BOChkKXx8ZD09PXUu
-XylyZXR1cm4hMAp0PWIueQppZih0PT09NClyZXR1cm4hMAppZihILkE4KGIpKXJldHVybiExCmlmKGI9
-PT11LlApcmV0dXJuITAKcz10PT09MTMKaWYocylpZihILldlKGEsY1tiLnpdLGMsZCxlKSlyZXR1cm4h
-MApyPWQueQppZih0PT09NilyZXR1cm4gSC5XZShhLGIueixjLGQsZSkKaWYocj09PTYpe3E9ZC56CnJl
-dHVybiBILldlKGEsYixjLHEsZSl9aWYodD09PTgpe2lmKCFILldlKGEsYi56LGMsZCxlKSlyZXR1cm4h
-MQpyZXR1cm4gSC5XZShhLEgueFooYSxiKSxjLGQsZSl9aWYodD09PTcpe3E9SC5XZShhLGIueixjLGQs
-ZSkKcmV0dXJuIHF9aWYocj09PTgpe2lmKEguV2UoYSxiLGMsZC56LGUpKXJldHVybiEwCnJldHVybiBI
-LldlKGEsYixjLEgueFooYSxkKSxlKX1pZihyPT09Nyl7cT1ILldlKGEsYixjLGQueixlKQpyZXR1cm4g
-cX1pZihzKXJldHVybiExCnE9dCE9PTExCmlmKCghcXx8dD09PTEyKSYmZD09PXUuWSlyZXR1cm4hMApp
-ZihyPT09MTIpe2lmKGI9PT11LnIpcmV0dXJuITAKaWYodCE9PTEyKXJldHVybiExCnA9Yi5RCm89ZC5R
-Cm49cC5sZW5ndGgKaWYobiE9PW8ubGVuZ3RoKXJldHVybiExCmM9Yz09bnVsbD9wOnAuY29uY2F0KGMp
-CmU9ZT09bnVsbD9vOm8uY29uY2F0KGUpCmZvcihtPTA7bTxuOysrbSl7bD1wW21dCms9b1ttXQppZigh
-SC5XZShhLGwsYyxrLGUpfHwhSC5XZShhLGssZSxsLGMpKXJldHVybiExfXJldHVybiBILmJPKGEsYi56
-LGMsZC56LGUpfWlmKHI9PT0xMSl7aWYoYj09PXUucilyZXR1cm4hMAppZihxKXJldHVybiExCnJldHVy
-biBILmJPKGEsYixjLGQsZSl9aWYodD09PTkpe2lmKHIhPT05KXJldHVybiExCnJldHVybiBILnBHKGEs
-YixjLGQsZSl9cmV0dXJuITF9LApiTzpmdW5jdGlvbihhMCxhMSxhMixhMyxhNCl7dmFyIHQscyxyLHEs
-cCxvLG4sbSxsLGssaixpLGgsZyxmLGUsZCxjLGIsYQppZighSC5XZShhMCxhMS56LGEyLGEzLnosYTQp
-KXJldHVybiExCnQ9YTEuUQpzPWEzLlEKcj10LmEKcT1zLmEKcD1yLmxlbmd0aApvPXEubGVuZ3RoCmlm
-KHA+bylyZXR1cm4hMQpuPW8tcAptPXQuYgpsPXMuYgprPW0ubGVuZ3RoCmo9bC5sZW5ndGgKaWYocCtr
-PG8railyZXR1cm4hMQpmb3IoaT0wO2k8cDsrK2kpe2g9cltpXQppZighSC5XZShhMCxxW2ldLGE0LGgs
-YTIpKXJldHVybiExfWZvcihpPTA7aTxuOysraSl7aD1tW2ldCmlmKCFILldlKGEwLHFbcCtpXSxhNCxo
-LGEyKSlyZXR1cm4hMX1mb3IoaT0wO2k8ajsrK2kpe2g9bVtuK2ldCmlmKCFILldlKGEwLGxbaV0sYTQs
-aCxhMikpcmV0dXJuITF9Zz10LmMKZj1zLmMKZT1nLmxlbmd0aApkPWYubGVuZ3RoCmZvcihpPTAsYz0w
-O2M8ZDtjKz0yKXtiPWZbY10KZG97aWYoaT49ZSlyZXR1cm4hMQphPWdbaV0KaSs9Mn13aGlsZShhPGIp
-CmlmKGI8YSlyZXR1cm4hMQpoPWdbaS0xXQppZighSC5XZShhMCxmW2MrMV0sYTQsaCxhMikpcmV0dXJu
-ITF9cmV0dXJuITB9LApwRzpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciB0LHMscixxLHAsbyxuLG0sbD1i
-Lnosaz1kLnoKaWYobD09PWspe3Q9Yi5RCnM9ZC5RCnI9dC5sZW5ndGgKZm9yKHE9MDtxPHI7KytxKXtw
-PXRbcV0Kbz1zW3FdCmlmKCFILldlKGEscCxjLG8sZSkpcmV0dXJuITF9cmV0dXJuITB9aWYoZD09PXUu
-SylyZXR1cm4hMApuPUguUW8oYSxsKQppZihuPT1udWxsKXJldHVybiExCm09bltrXQppZihtPT1udWxs
-KXJldHVybiExCnI9bS5sZW5ndGgKcz1kLlEKZm9yKHE9MDtxPHI7KytxKWlmKCFILldlKGEsSC5jRShh
-LGIsbVtxXSksYyxzW3FdLGUpKXJldHVybiExCnJldHVybiEwfSwKbFI6ZnVuY3Rpb24oYSl7dmFyIHQs
-cz1hLnkKaWYoIShhPT09dS5QKSlpZighSC5BOChhKSlpZihzIT09NylpZighKHM9PT02JiZILmxSKGEu
-eikpKXQ9cz09PTgmJkgubFIoYS56KQplbHNlIHQ9ITAKZWxzZSB0PSEwCmVsc2UgdD0hMAplbHNlIHQ9
-ITAKcmV0dXJuIHR9LApjYzpmdW5jdGlvbihhKXtyZXR1cm4gSC5BOChhKXx8YT09PXUuX30sCkE4OmZ1
-bmN0aW9uKGEpe3ZhciB0LHM9YS55CmlmKHMhPT0yKWlmKHMhPT0zKWlmKHMhPT00KWlmKHMhPT01KXQ9
-YT09PXUuY0sKZWxzZSB0PSEwCmVsc2UgdD0hMAplbHNlIHQ9ITAKZWxzZSB0PSEwCnJldHVybiB0fSwK
-SXg6ZnVuY3Rpb24oYSxiKXt2YXIgdCxzLHI9T2JqZWN0LmtleXMoYikscT1yLmxlbmd0aApmb3IodD0w
-O3Q8cTsrK3Qpe3M9clt0XQphW3NdPWJbc119fSwKSmM6ZnVuY3Rpb24gSmMoYSxiKXt2YXIgXz10aGlz
-Cl8uYT1hCl8uYj1iCl8ueD1fLnI9Xy5jPW51bGwKXy55PTAKXy5jeT1fLmN4PV8uY2g9Xy5RPV8uej1u
-dWxsfSwKRzpmdW5jdGlvbiBHKCl7dGhpcy5jPXRoaXMuYj10aGlzLmE9bnVsbH0sCnU5OmZ1bmN0aW9u
-IHU5KCl7fSwKaU06ZnVuY3Rpb24gaU0oYSl7dGhpcy5hPWF9LApSOTpmdW5jdGlvbihhKXtyZXR1cm4g
-dS53LmIoYSl8fHUuQi5iKGEpfHx1LmR6LmIoYSl8fHUuSS5iKGEpfHx1LkEuYihhKXx8dS5nNC5iKGEp
-fHx1LmcyLmIoYSl9LApKZzpmdW5jdGlvbihhKXtyZXR1cm4gdi5tYW5nbGVkR2xvYmFsTmFtZXNbYV19
-fSxKPXsKUXU6ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJue2k6YSxwOmIsZTpjLHg6ZH19LAprczpmdW5j
-dGlvbihhKXt2YXIgdCxzLHIscSxwPWFbdi5kaXNwYXRjaFByb3BlcnR5TmFtZV0KaWYocD09bnVsbClp
-ZigkLkJ2PT1udWxsKXtILlhEKCkKcD1hW3YuZGlzcGF0Y2hQcm9wZXJ0eU5hbWVdfWlmKHAhPW51bGwp
-e3Q9cC5wCmlmKCExPT09dClyZXR1cm4gcC5pCmlmKCEwPT09dClyZXR1cm4gYQpzPU9iamVjdC5nZXRQ
-cm90b3R5cGVPZihhKQppZih0PT09cylyZXR1cm4gcC5pCmlmKHAuZT09PXMpdGhyb3cgSC5iKFAuU1ko
-IlJldHVybiBpbnRlcmNlcHRvciBmb3IgIitILkVqKHQoYSxwKSkpKX1yPWEuY29uc3RydWN0b3IKcT1y
-PT1udWxsP251bGw6cltKLlJQKCldCmlmKHEhPW51bGwpcmV0dXJuIHEKcT1ILnczKGEpCmlmKHEhPW51
-bGwpcmV0dXJuIHEKaWYodHlwZW9mIGE9PSJmdW5jdGlvbiIpcmV0dXJuIEMuREcKdD1PYmplY3QuZ2V0
-UHJvdG90eXBlT2YoYSkKaWYodD09bnVsbClyZXR1cm4gQy5aUQppZih0PT09T2JqZWN0LnByb3RvdHlw
-ZSlyZXR1cm4gQy5aUQppZih0eXBlb2Ygcj09ImZ1bmN0aW9uIil7T2JqZWN0LmRlZmluZVByb3BlcnR5
-KHIsSi5SUCgpLHt2YWx1ZTpDLnZCLGVudW1lcmFibGU6ZmFsc2Usd3JpdGFibGU6dHJ1ZSxjb25maWd1
-cmFibGU6dHJ1ZX0pCnJldHVybiBDLnZCfXJldHVybiBDLnZCfSwKUlA6ZnVuY3Rpb24oKXt2YXIgdD0k
-LnptCnJldHVybiB0PT1udWxsPyQuem09di5nZXRJc29sYXRlVGFnKCJfJGRhcnRfanMiKTp0fSwKUWk6
-ZnVuY3Rpb24oYSxiKXtpZihhPDB8fGE+NDI5NDk2NzI5NSl0aHJvdyBILmIoUC5URShhLDAsNDI5NDk2
-NzI5NSwibGVuZ3RoIixudWxsKSkKcmV0dXJuIEoucHkobmV3IEFycmF5KGEpLGIpfSwKS2g6ZnVuY3Rp
-b24oYSxiKXtpZihhPDApdGhyb3cgSC5iKFAueFkoIkxlbmd0aCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZl
-IGludGVnZXI6ICIrYSkpCnJldHVybiBILlZNKG5ldyBBcnJheShhKSxiLkMoImpkPDA+IikpfSwKcHk6
-ZnVuY3Rpb24oYSxiKXtyZXR1cm4gSi5FcChILlZNKGEsYi5DKCJqZDwwPiIpKSxiKX0sCkVwOmZ1bmN0
-aW9uKGEsYil7YS5maXhlZCRsZW5ndGg9QXJyYXkKcmV0dXJuIGF9LAp6QzpmdW5jdGlvbihhKXthLmZp
-eGVkJGxlbmd0aD1BcnJheQphLmltbXV0YWJsZSRsaXN0PUFycmF5CnJldHVybiBhfSwKR2E6ZnVuY3Rp
-b24oYSl7aWYoYTwyNTYpc3dpdGNoKGEpe2Nhc2UgOTpjYXNlIDEwOmNhc2UgMTE6Y2FzZSAxMjpjYXNl
-IDEzOmNhc2UgMzI6Y2FzZSAxMzM6Y2FzZSAxNjA6cmV0dXJuITAKZGVmYXVsdDpyZXR1cm4hMX1zd2l0
-Y2goYSl7Y2FzZSA1NzYwOmNhc2UgODE5MjpjYXNlIDgxOTM6Y2FzZSA4MTk0OmNhc2UgODE5NTpjYXNl
-IDgxOTY6Y2FzZSA4MTk3OmNhc2UgODE5ODpjYXNlIDgxOTk6Y2FzZSA4MjAwOmNhc2UgODIwMTpjYXNl
-IDgyMDI6Y2FzZSA4MjMyOmNhc2UgODIzMzpjYXNlIDgyMzk6Y2FzZSA4Mjg3OmNhc2UgMTIyODg6Y2Fz
-ZSA2NTI3OTpyZXR1cm4hMApkZWZhdWx0OnJldHVybiExfX0sCm1tOmZ1bmN0aW9uKGEsYil7dmFyIHQs
-cwpmb3IodD1hLmxlbmd0aDtiPHQ7KXtzPUMueEIuVyhhLGIpCmlmKHMhPT0zMiYmcyE9PTEzJiYhSi5H
-YShzKSlicmVhazsrK2J9cmV0dXJuIGJ9LApjMTpmdW5jdGlvbihhLGIpe3ZhciB0LHMKZm9yKDtiPjA7
-Yj10KXt0PWItMQpzPUMueEIubShhLHQpCmlmKHMhPT0zMiYmcyE9PTEzJiYhSi5HYShzKSlicmVha31y
-ZXR1cm4gYn0sClRKOmZ1bmN0aW9uKGEpe2lmKHR5cGVvZiBhPT0ibnVtYmVyIilyZXR1cm4gSi5xSS5w
-cm90b3R5cGUKaWYodHlwZW9mIGE9PSJzdHJpbmciKXJldHVybiBKLkRyLnByb3RvdHlwZQppZihhPT1u
-dWxsKXJldHVybiBhCmlmKGEuY29uc3RydWN0b3I9PUFycmF5KXJldHVybiBKLmpkLnByb3RvdHlwZQpp
-Zih0eXBlb2YgYSE9Im9iamVjdCIpe2lmKHR5cGVvZiBhPT0iZnVuY3Rpb24iKXJldHVybiBKLmM1LnBy
-b3RvdHlwZQpyZXR1cm4gYX1pZihhIGluc3RhbmNlb2YgUC5NaClyZXR1cm4gYQpyZXR1cm4gSi5rcyhh
-KX0sClU2OmZ1bmN0aW9uKGEpe2lmKHR5cGVvZiBhPT0ic3RyaW5nIilyZXR1cm4gSi5Eci5wcm90b3R5
-cGUKaWYoYT09bnVsbClyZXR1cm4gYQppZihhLmNvbnN0cnVjdG9yPT1BcnJheSlyZXR1cm4gSi5qZC5w
-cm90b3R5cGUKaWYodHlwZW9mIGEhPSJvYmplY3QiKXtpZih0eXBlb2YgYT09ImZ1bmN0aW9uIilyZXR1
-cm4gSi5jNS5wcm90b3R5cGUKcmV0dXJuIGF9aWYoYSBpbnN0YW5jZW9mIFAuTWgpcmV0dXJuIGEKcmV0
-dXJuIEoua3MoYSl9LApZRTpmdW5jdGlvbihhKXtpZihhPT1udWxsKXJldHVybiBhCmlmKHR5cGVvZiBh
-IT0ib2JqZWN0Iil7aWYodHlwZW9mIGE9PSJmdW5jdGlvbiIpcmV0dXJuIEouYzUucHJvdG90eXBlCnJl
-dHVybiBhfWlmKGEgaW5zdGFuY2VvZiBQLk1oKXJldHVybiBhCnJldHVybiBKLmtzKGEpfSwKaWE6ZnVu
-Y3Rpb24oYSl7aWYodHlwZW9mIGE9PSJudW1iZXIiKXtpZihNYXRoLmZsb29yKGEpPT1hKXJldHVybiBK
-LnVyLnByb3RvdHlwZQpyZXR1cm4gSi5WQS5wcm90b3R5cGV9aWYodHlwZW9mIGE9PSJzdHJpbmciKXJl
-dHVybiBKLkRyLnByb3RvdHlwZQppZihhPT1udWxsKXJldHVybiBKLndlLnByb3RvdHlwZQppZih0eXBl
-b2YgYT09ImJvb2xlYW4iKXJldHVybiBKLnlFLnByb3RvdHlwZQppZihhLmNvbnN0cnVjdG9yPT1BcnJh
-eSlyZXR1cm4gSi5qZC5wcm90b3R5cGUKaWYodHlwZW9mIGEhPSJvYmplY3QiKXtpZih0eXBlb2YgYT09
-ImZ1bmN0aW9uIilyZXR1cm4gSi5jNS5wcm90b3R5cGUKcmV0dXJuIGF9aWYoYSBpbnN0YW5jZW9mIFAu
-TWgpcmV0dXJuIGEKcmV0dXJuIEoua3MoYSl9LApyWTpmdW5jdGlvbihhKXtpZih0eXBlb2YgYT09InN0
-cmluZyIpcmV0dXJuIEouRHIucHJvdG90eXBlCmlmKGE9PW51bGwpcmV0dXJuIGEKaWYoIShhIGluc3Rh
-bmNlb2YgUC5NaCkpcmV0dXJuIEoua2QucHJvdG90eXBlCnJldHVybiBhfSwKdzE6ZnVuY3Rpb24oYSl7
-aWYoYT09bnVsbClyZXR1cm4gYQppZihhLmNvbnN0cnVjdG9yPT1BcnJheSlyZXR1cm4gSi5qZC5wcm90
-b3R5cGUKaWYodHlwZW9mIGEhPSJvYmplY3QiKXtpZih0eXBlb2YgYT09ImZ1bmN0aW9uIilyZXR1cm4g
-Si5jNS5wcm90b3R5cGUKcmV0dXJuIGF9aWYoYSBpbnN0YW5jZW9mIFAuTWgpcmV0dXJuIGEKcmV0dXJu
-IEoua3MoYSl9LApDTTpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gSi5ZRShhKS5kdShhLGIsYyxkKX0s
-CkVoOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gSi5ZRShhKS5tSyhhLGIsYyl9LApGTDpmdW5jdGlvbihh
-LGIpe3JldHVybiBKLnJZKGEpLmRkKGEsYil9LApHQTpmdW5jdGlvbihhLGIpe3JldHVybiBKLncxKGEp
-LkUoYSxiKX0sCkdyOmZ1bmN0aW9uKGEpe3JldHVybiBKLllFKGEpLmdtVyhhKX0sCkhtOmZ1bmN0aW9u
-KGEpe3JldHVybiBKLlU2KGEpLmdBKGEpfSwKSVQ6ZnVuY3Rpb24oYSl7cmV0dXJuIEoudzEoYSkuZ2t6
-KGEpfSwKSnk6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gSi5pYShhKS5lNyhhLGIpfSwKS1Y6ZnVuY3Rpb24o
-YSxiKXtyZXR1cm4gSi5yWShhKS5HKGEsYil9LApMdDpmdW5jdGlvbihhKXtyZXR1cm4gSi5ZRShhKS53
-ZyhhKX0sCk0xOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gSi53MShhKS5FMihhLGIsYyl9LApRejpmdW5j
-dGlvbihhLGIpe3JldHVybiBKLnJZKGEpLlcoYSxiKX0sClJNOmZ1bmN0aW9uKGEsYil7aWYoYT09bnVs
-bClyZXR1cm4gYj09bnVsbAppZih0eXBlb2YgYSE9Im9iamVjdCIpcmV0dXJuIGIhPW51bGwmJmE9PT1i
-CnJldHVybiBKLmlhKGEpLkROKGEsYil9LApUMDpmdW5jdGlvbihhKXtyZXR1cm4gSi5yWShhKS5iUyhh
-KX0sCmE2OmZ1bmN0aW9uKGEsYil7cmV0dXJuIEouclkoYSkubShhLGIpfSwKYlQ6ZnVuY3Rpb24oYSl7
-cmV0dXJuIEouWUUoYSkuRDQoYSl9LApiYjpmdW5jdGlvbihhLGIpe2lmKHR5cGVvZiBhPT0ibnVtYmVy
-IiYmdHlwZW9mIGI9PSJudW1iZXIiKXJldHVybiBhK2IKcmV0dXJuIEouVEooYSkuaChhLGIpfSwKY0g6
-ZnVuY3Rpb24oYSl7cmV0dXJuIEouclkoYSkuaGMoYSl9LApkUjpmdW5jdGlvbihhKXtyZXR1cm4gSi5Z
-RShhKS5nUChhKX0sCmRaOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBKLllFKGEpLk9uKGEsYixjLGQp
-fSwKZGc6ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIEouclkoYSkuaTcoYSxiLGMsZCl9LApkaDpmdW5j
-dGlvbihhKXtyZXR1cm4gSi5ZRShhKS5GRihhKX0sCmRyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIEouWUUo
-YSkuc2E0KGEsYil9LApoZjpmdW5jdGlvbihhKXtyZXR1cm4gSi5pYShhKS5naU8oYSl9LAppZzpmdW5j
-dGlvbihhKXtyZXR1cm4gSi5ZRShhKS5nUWcoYSl9LApqOmZ1bmN0aW9uKGEpe3JldHVybiBKLmlhKGEp
-LncoYSl9LApsNTpmdW5jdGlvbihhLGIpe3JldHVybiBKLllFKGEpLnNoZihhLGIpfSwKbGQ6ZnVuY3Rp
-b24oYSxiLGMpe3JldHVybiBKLnJZKGEpLk5qKGEsYixjKX0sCnA0OmZ1bmN0aW9uKGEsYil7cmV0dXJu
-IEouclkoYSkuVGMoYSxiKX0sCnEwOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gSi5yWShhKS5RaShhLGIs
-Yyl9LApxRjpmdW5jdGlvbihhKXtyZXR1cm4gSi5ZRShhKS5nVmwoYSl9LAp0SDpmdW5jdGlvbihhLGIs
-Yyl7cmV0dXJuIEouWUUoYSkucGsoYSxiLGMpfSwKd2Y6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gSi5ZRShh
-KS5zUk4oYSxiKX0sCng5OmZ1bmN0aW9uKGEsYil7aWYodHlwZW9mIGI9PT0ibnVtYmVyIilpZihhLmNv
-bnN0cnVjdG9yPT1BcnJheXx8dHlwZW9mIGE9PSJzdHJpbmcifHxILndWKGEsYVt2LmRpc3BhdGNoUHJv
-cGVydHlOYW1lXSkpaWYoYj4+PjA9PT1iJiZiPGEubGVuZ3RoKXJldHVybiBhW2JdCnJldHVybiBKLlU2
-KGEpLnEoYSxiKX0sCnpsOmZ1bmN0aW9uKGEsYil7cmV0dXJuIEouVTYoYSkudGcoYSxiKX0sCnZCOmZ1
-bmN0aW9uIHZCKCl7fSwKeUU6ZnVuY3Rpb24geUUoKXt9LAp3ZTpmdW5jdGlvbiB3ZSgpe30sCk1GOmZ1
-bmN0aW9uIE1GKCl7fSwKaUM6ZnVuY3Rpb24gaUMoKXt9LAprZDpmdW5jdGlvbiBrZCgpe30sCmM1OmZ1
-bmN0aW9uIGM1KCl7fSwKamQ6ZnVuY3Rpb24gamQoYSl7dGhpcy4kdGk9YX0sClBvOmZ1bmN0aW9uIFBv
-KGEpe3RoaXMuJHRpPWF9LAptMTpmdW5jdGlvbiBtMShhLGIsYyl7dmFyIF89dGhpcwpfLmE9YQpfLmI9
-YgpfLmM9MApfLmQ9bnVsbApfLiR0aT1jfSwKcUk6ZnVuY3Rpb24gcUkoKXt9LAp1cjpmdW5jdGlvbiB1
-cigpe30sClZBOmZ1bmN0aW9uIFZBKCl7fSwKRHI6ZnVuY3Rpb24gRHIoKXt9fSxQPXsKT2o6ZnVuY3Rp
-b24oKXt2YXIgdCxzLHI9e30KaWYoc2VsZi5zY2hlZHVsZUltbWVkaWF0ZSE9bnVsbClyZXR1cm4gUC5F
-WCgpCmlmKHNlbGYuTXV0YXRpb25PYnNlcnZlciE9bnVsbCYmc2VsZi5kb2N1bWVudCE9bnVsbCl7dD1z
-ZWxmLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpCnM9c2VsZi5kb2N1bWVudC5jcmVhdGVFbGVt
-ZW50KCJzcGFuIikKci5hPW51bGwKbmV3IHNlbGYuTXV0YXRpb25PYnNlcnZlcihILnRSKG5ldyBQLnRo
-KHIpLDEpKS5vYnNlcnZlKHQse2NoaWxkTGlzdDp0cnVlfSkKcmV0dXJuIG5ldyBQLmhhKHIsdCxzKX1l
-bHNlIGlmKHNlbGYuc2V0SW1tZWRpYXRlIT1udWxsKXJldHVybiBQLnl0KCkKcmV0dXJuIFAucVcoKX0s
-ClpWOmZ1bmN0aW9uKGEpe3NlbGYuc2NoZWR1bGVJbW1lZGlhdGUoSC50UihuZXcgUC5Wcyh1Lk0uYShh
-KSksMCkpfSwKb0E6ZnVuY3Rpb24oYSl7c2VsZi5zZXRJbW1lZGlhdGUoSC50UihuZXcgUC5GdCh1Lk0u
-YShhKSksMCkpfSwKQno6ZnVuY3Rpb24oYSl7dS5NLmEoYSkKUC5RTigwLGEpfSwKUU46ZnVuY3Rpb24o
-YSxiKXt2YXIgdD1uZXcgUC5XMygpCnQuQ1koYSxiKQpyZXR1cm4gdH0sCkZYOmZ1bmN0aW9uKGEpe3Jl
-dHVybiBuZXcgUC5paChuZXcgUC52cygkLlgzLGEuQygidnM8MD4iKSksYS5DKCJpaDwwPiIpKX0sCkRJ
-OmZ1bmN0aW9uKGEsYil7YS4kMigwLG51bGwpCmIuYj0hMApyZXR1cm4gYi5hfSwKalE6ZnVuY3Rpb24o
-YSxiKXtQLkplKGEsYil9LAp5QzpmdW5jdGlvbihhLGIpe2IuYU0oMCxhKX0sCmYzOmZ1bmN0aW9uKGEs
-Yil7Yi53MChILlJ1KGEpLEgudHMoYSkpfSwKSmU6ZnVuY3Rpb24oYSxiKXt2YXIgdCxzLHI9bmV3IFAu
-V00oYikscT1uZXcgUC5TWChiKQppZihhIGluc3RhbmNlb2YgUC52cylhLlFkKHIscSx1LnopCmVsc2V7
-dD11LnoKaWYodS5kLmIoYSkpYS5TcShyLHEsdCkKZWxzZXtzPW5ldyBQLnZzKCQuWDMsdS5jKQpzLmE9
-NApzLmM9YQpzLlFkKHIscSx0KX19fSwKbHo6ZnVuY3Rpb24oYSl7dmFyIHQ9ZnVuY3Rpb24oYixjKXty
-ZXR1cm4gZnVuY3Rpb24oZCxlKXt3aGlsZSh0cnVlKXRyeXtiKGQsZSkKYnJlYWt9Y2F0Y2gocyl7ZT1z
-CmQ9Y319fShhLDEpCnJldHVybiAkLlgzLkxqKG5ldyBQLkdzKHQpLHUuUCx1LlMsdS56KX0sCkdROmZ1
-bmN0aW9uKGEpe3JldHVybiBuZXcgUC5GeShhLDEpfSwKVGg6ZnVuY3Rpb24oKXtyZXR1cm4gQy53UX0s
-ClltOmZ1bmN0aW9uKGEpe3JldHVybiBuZXcgUC5GeShhLDMpfSwKbDA6ZnVuY3Rpb24oYSxiKXtyZXR1
-cm4gbmV3IFAucTQoYSxiLkMoInE0PDA+IikpfSwKazM6ZnVuY3Rpb24oYSxiKXt2YXIgdCxzLHIKYi5h
-PTEKdHJ5e2EuU3EobmV3IFAucFYoYiksbmV3IFAuVTcoYiksdS5QKX1jYXRjaChyKXt0PUguUnUocikK
-cz1ILnRzKHIpClAucmIobmV3IFAudnIoYix0LHMpKX19LApBOTpmdW5jdGlvbihhLGIpe3ZhciB0LHMs
-cgpmb3IodD11LmM7cz1hLmEscz09PTI7KWE9dC5hKGEuYykKaWYocz49NCl7cj1iLmFoKCkKYi5hPWEu
-YQpiLmM9YS5jClAuSFooYixyKX1lbHNle3I9dS5GLmEoYi5jKQpiLmE9MgpiLmM9YQphLmpRKHIpfX0s
-CkhaOmZ1bmN0aW9uKGEsYTApe3ZhciB0LHMscixxLHAsbyxuLG0sbCxrLGosaSxoLGcsZixlLGQ9bnVs
-bCxjPXt9LGI9Yy5hPWEKZm9yKHQ9dS5uLHM9dS5GLHI9dS5kOyEwOyl7cT17fQpwPWIuYT09PTgKaWYo
-YTA9PW51bGwpe2lmKHApe289dC5hKGIuYykKUC5MMihkLGQsYi5iLG8uYSxvLmIpfXJldHVybn1xLmE9
-YTAKbj1hMC5hCmZvcihiPWEwO24hPW51bGw7Yj1uLG49bSl7Yi5hPW51bGwKUC5IWihjLmEsYikKcS5h
-PW4KbT1uLmF9bD1jLmEKaz1sLmMKcS5iPXAKcS5jPWsKaj0hcAppZihqKXtpPWIuYwppPShpJjEpIT09
-MHx8KGkmMTUpPT09OH1lbHNlIGk9ITAKaWYoaSl7aD1iLmIuYgppZihwKXtpPWwuYj09PWgKaT0hKGl8
-fGkpfWVsc2UgaT0hMQppZihpKXt0LmEoaykKUC5MMihkLGQsbC5iLGsuYSxrLmIpCnJldHVybn1nPSQu
-WDMKaWYoZyE9PWgpJC5YMz1oCmVsc2UgZz1kCmI9Yi5jCmlmKChiJjE1KT09PTgpbmV3IFAuUlQocSxj
-LHApLiQwKCkKZWxzZSBpZihqKXtpZigoYiYxKSE9PTApbmV3IFAucnEocSxrKS4kMCgpfWVsc2UgaWYo
-KGImMikhPT0wKW5ldyBQLlJXKGMscSkuJDAoKQppZihnIT1udWxsKSQuWDM9ZwpiPXEuYwppZihyLmIo
-Yikpe2Y9cS5hLmIKaWYoYi5hPj00KXtlPXMuYShmLmMpCmYuYz1udWxsCmEwPWYuTjgoZSkKZi5hPWIu
-YQpmLmM9Yi5jCmMuYT1iCmNvbnRpbnVlfWVsc2UgUC5BOShiLGYpCnJldHVybn19Zj1xLmEuYgplPXMu
-YShmLmMpCmYuYz1udWxsCmEwPWYuTjgoZSkKYj1xLmIKbD1xLmMKaWYoIWIpe2YuJHRpLmMuYShsKQpm
-LmE9NApmLmM9bH1lbHNle3QuYShsKQpmLmE9OApmLmM9bH1jLmE9ZgpiPWZ9fSwKVkg6ZnVuY3Rpb24o
-YSxiKXt2YXIgdAppZih1LmFnLmIoYSkpcmV0dXJuIGIuTGooYSx1LnosdS5LLHUubCkKdD11LmJJCmlm
-KHQuYihhKSlyZXR1cm4gdC5hKGEpCnRocm93IEguYihQLkwzKGEsIm9uRXJyb3IiLCJFcnJvciBoYW5k
-bGVyIG11c3QgYWNjZXB0IG9uZSBPYmplY3Qgb3Igb25lIE9iamVjdCBhbmQgYSBTdGFja1RyYWNlIGFz
-IGFyZ3VtZW50cywgYW5kIHJldHVybiBhIGEgdmFsaWQgcmVzdWx0IikpfSwKcHU6ZnVuY3Rpb24oKXt2
-YXIgdCxzCmZvcih0PSQuUzY7dCE9bnVsbDt0PSQuUzYpeyQubWc9bnVsbApzPXQuYgokLlM2PXMKaWYo
-cz09bnVsbCkkLms4PW51bGwKdC5hLiQwKCl9fSwKZU46ZnVuY3Rpb24oKXskLlVEPSEwCnRyeXtQLnB1
-KCl9ZmluYWxseXskLm1nPW51bGwKJC5VRD0hMQppZigkLlM2IT1udWxsKSQudXQoKS4kMShQLlY5KCkp
-fX0sCmVXOmZ1bmN0aW9uKGEpe3ZhciB0PW5ldyBQLk9NKGEpLHM9JC5rOAppZihzPT1udWxsKXskLlM2
-PSQuazg9dAppZighJC5VRCkkLnV0KCkuJDEoUC5WOSgpKX1lbHNlICQuazg9cy5iPXR9LApyUjpmdW5j
-dGlvbihhKXt2YXIgdCxzLHIscT0kLlM2CmlmKHE9PW51bGwpe1AuZVcoYSkKJC5tZz0kLms4CnJldHVy
-bn10PW5ldyBQLk9NKGEpCnM9JC5tZwppZihzPT1udWxsKXt0LmI9cQokLlM2PSQubWc9dH1lbHNle3I9
-cy5iCnQuYj1yCiQubWc9cy5iPXQKaWYocj09bnVsbCkkLms4PXR9fSwKcmI6ZnVuY3Rpb24oYSl7dmFy
-IHQ9bnVsbCxzPSQuWDMKaWYoQy5OVT09PXMpe1AuVGsodCx0LEMuTlUsYSkKcmV0dXJufVAuVGsodCx0
-LHMsdS5NLmEocy5HWShhKSkpfSwKUXc6ZnVuY3Rpb24oYSxiKXtQLlVJKGEsInN0cmVhbSIsYi5DKCJx
-aDwwPiIpKQpyZXR1cm4gbmV3IFAueEkoYi5DKCJ4STwwPiIpKX0sClRsOmZ1bmN0aW9uKGEsYil7dmFy
-IHQ9Yj09bnVsbD9QLnYwKGEpOmIKUC5VSShhLCJlcnJvciIsdS5LKQpyZXR1cm4gbmV3IFAuQ3coYSx0
-KX0sCnYwOmZ1bmN0aW9uKGEpe3ZhciB0CmlmKHUuVy5iKGEpKXt0PWEuZ0lJKCkKaWYodCE9bnVsbCly
-ZXR1cm4gdH1yZXR1cm4gQy5wZH0sCkwyOmZ1bmN0aW9uKGEsYixjLGQsZSl7UC5yUihuZXcgUC5wSyhk
-LGUpKX0sClQ4OmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIHQscz0kLlgzCmlmKHM9PT1jKXJldHVybiBk
-LiQwKCkKJC5YMz1jCnQ9cwp0cnl7cz1kLiQwKCkKcmV0dXJuIHN9ZmluYWxseXskLlgzPXR9fSwKeXY6
-ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyl7dmFyIHQscz0kLlgzCmlmKHM9PT1jKXJldHVybiBkLiQxKGUp
-CiQuWDM9Ywp0PXMKdHJ5e3M9ZC4kMShlKQpyZXR1cm4gc31maW5hbGx5eyQuWDM9dH19LApReDpmdW5j
-dGlvbihhLGIsYyxkLGUsZixnLGgsaSl7dmFyIHQscz0kLlgzCmlmKHM9PT1jKXJldHVybiBkLiQyKGUs
-ZikKJC5YMz1jCnQ9cwp0cnl7cz1kLiQyKGUsZikKcmV0dXJuIHN9ZmluYWxseXskLlgzPXR9fSwKVGs6
-ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIHQKdS5NLmEoZCkKdD1DLk5VIT09YwppZih0KWQ9ISghdHx8ITEp
-P2MuR1koZCk6Yy5SVChkLHUuSCkKUC5lVyhkKX0sCnRoOmZ1bmN0aW9uIHRoKGEpe3RoaXMuYT1hfSwK
-aGE6ZnVuY3Rpb24gaGEoYSxiLGMpe3RoaXMuYT1hCnRoaXMuYj1iCnRoaXMuYz1jfSwKVnM6ZnVuY3Rp
-b24gVnMoYSl7dGhpcy5hPWF9LApGdDpmdW5jdGlvbiBGdChhKXt0aGlzLmE9YX0sClczOmZ1bmN0aW9u
-IFczKCl7fSwKeUg6ZnVuY3Rpb24geUgoYSxiKXt0aGlzLmE9YQp0aGlzLmI9Yn0sCmloOmZ1bmN0aW9u
-IGloKGEsYil7dGhpcy5hPWEKdGhpcy5iPSExCnRoaXMuJHRpPWJ9LApXTTpmdW5jdGlvbiBXTShhKXt0
-aGlzLmE9YX0sClNYOmZ1bmN0aW9uIFNYKGEpe3RoaXMuYT1hfSwKR3M6ZnVuY3Rpb24gR3MoYSl7dGhp
-cy5hPWF9LApGeTpmdW5jdGlvbiBGeShhLGIpe3RoaXMuYT1hCnRoaXMuYj1ifSwKR1Y6ZnVuY3Rpb24g
-R1YoYSxiKXt2YXIgXz10aGlzCl8uYT1hCl8uZD1fLmM9Xy5iPW51bGwKXy4kdGk9Yn0sCnE0OmZ1bmN0
-aW9uIHE0KGEsYil7dGhpcy5hPWEKdGhpcy4kdGk9Yn0sCmI4OmZ1bmN0aW9uIGI4KCl7fSwKUGY6ZnVu
-Y3Rpb24gUGYoKXt9LApaZjpmdW5jdGlvbiBaZihhLGIpe3RoaXMuYT1hCnRoaXMuJHRpPWJ9LApGZTpm
-dW5jdGlvbiBGZShhLGIsYyxkLGUpe3ZhciBfPXRoaXMKXy5hPW51bGwKXy5iPWEKXy5jPWIKXy5kPWMK
-Xy5lPWQKXy4kdGk9ZX0sCnZzOmZ1bmN0aW9uIHZzKGEsYil7dmFyIF89dGhpcwpfLmE9MApfLmI9YQpf
-LmM9bnVsbApfLiR0aT1ifSwKZGE6ZnVuY3Rpb24gZGEoYSxiKXt0aGlzLmE9YQp0aGlzLmI9Yn0sCm9R
-OmZ1bmN0aW9uIG9RKGEsYil7dGhpcy5hPWEKdGhpcy5iPWJ9LApwVjpmdW5jdGlvbiBwVihhKXt0aGlz
-LmE9YX0sClU3OmZ1bmN0aW9uIFU3KGEpe3RoaXMuYT1hfSwKdnI6ZnVuY3Rpb24gdnIoYSxiLGMpe3Ro
-aXMuYT1hCnRoaXMuYj1iCnRoaXMuYz1jfSwKcnQ6ZnVuY3Rpb24gcnQoYSxiKXt0aGlzLmE9YQp0aGlz
-LmI9Yn0sCktGOmZ1bmN0aW9uIEtGKGEsYil7dGhpcy5hPWEKdGhpcy5iPWJ9LApaTDpmdW5jdGlvbiBa
-TChhLGIsYyl7dGhpcy5hPWEKdGhpcy5iPWIKdGhpcy5jPWN9LApSVDpmdW5jdGlvbiBSVChhLGIsYyl7
-dGhpcy5hPWEKdGhpcy5iPWIKdGhpcy5jPWN9LApqWjpmdW5jdGlvbiBqWihhKXt0aGlzLmE9YX0sCnJx
-OmZ1bmN0aW9uIHJxKGEsYil7dGhpcy5hPWEKdGhpcy5iPWJ9LApSVzpmdW5jdGlvbiBSVyhhLGIpe3Ro
-aXMuYT1hCnRoaXMuYj1ifSwKT006ZnVuY3Rpb24gT00oYSl7dGhpcy5hPWEKdGhpcy5iPW51bGx9LApx
-aDpmdW5jdGlvbiBxaCgpe30sCkI1OmZ1bmN0aW9uIEI1KGEsYil7dGhpcy5hPWEKdGhpcy5iPWJ9LAp1
-TzpmdW5jdGlvbiB1TyhhLGIpe3RoaXMuYT1hCnRoaXMuYj1ifSwKTU86ZnVuY3Rpb24gTU8oKXt9LApr
-VDpmdW5jdGlvbiBrVCgpe30sCnhJOmZ1bmN0aW9uIHhJKGEpe3RoaXMuJHRpPWF9LApDdzpmdW5jdGlv
-biBDdyhhLGIpe3RoaXMuYT1hCnRoaXMuYj1ifSwKbTA6ZnVuY3Rpb24gbTAoKXt9LApwSzpmdW5jdGlv
-biBwSyhhLGIpe3RoaXMuYT1hCnRoaXMuYj1ifSwKSmk6ZnVuY3Rpb24gSmkoKXt9LApoajpmdW5jdGlv
-biBoaihhLGIsYyl7dGhpcy5hPWEKdGhpcy5iPWIKdGhpcy5jPWN9LApWcDpmdW5jdGlvbiBWcChhLGIp
-e3RoaXMuYT1hCnRoaXMuYj1ifSwKT1I6ZnVuY3Rpb24gT1IoYSxiLGMpe3RoaXMuYT1hCnRoaXMuYj1i
-CnRoaXMuYz1jfSwKRUY6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBiLkMoIkA8MD4iKS5LcShjKS5DKCJG
-bzwxLDI+IikuYShILkI3KGEsbmV3IEguTjUoYi5DKCJAPDA+IikuS3EoYykuQygiTjU8MSwyPiIpKSkp
-fSwKRmw6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IEguTjUoYS5DKCJAPDA+IikuS3EoYikuQygiTjU8
-MSwyPiIpKX0sCkxzOmZ1bmN0aW9uKGEpe3JldHVybiBuZXcgUC5iNihhLkMoImI2PDA+IikpfSwKVDI6
-ZnVuY3Rpb24oKXt2YXIgdD1PYmplY3QuY3JlYXRlKG51bGwpCnRbIjxub24taWRlbnRpZmllci1rZXk+
-Il09dApkZWxldGUgdFsiPG5vbi1pZGVudGlmaWVyLWtleT4iXQpyZXR1cm4gdH0sCnJqOmZ1bmN0aW9u
-KGEsYixjKXt2YXIgdD1uZXcgUC5sbShhLGIsYy5DKCJsbTwwPiIpKQp0LmM9YS5lCnJldHVybiB0fSwK
-RVA6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0LHMKaWYoUC5oQihhKSl7aWYoYj09PSIoIiYmYz09PSIpIily
-ZXR1cm4iKC4uLikiCnJldHVybiBiKyIuLi4iK2N9dD1ILlZNKFtdLHUucykKQy5ObS5pKCQueGcsYSkK
-dHJ5e1AuVnIoYSx0KX1maW5hbGx5e2lmKDA+PSQueGcubGVuZ3RoKXJldHVybiBILk9IKCQueGcsLTEp
-CiQueGcucG9wKCl9cz1QLnZnKGIsdS5tLmEodCksIiwgIikrYwpyZXR1cm4gcy5jaGFyQ29kZUF0KDAp
-PT0wP3M6c30sCldFOmZ1bmN0aW9uKGEsYixjKXt2YXIgdCxzCmlmKFAuaEIoYSkpcmV0dXJuIGIrIi4u
-LiIrYwp0PW5ldyBQLlJuKGIpCkMuTm0uaSgkLnhnLGEpCnRyeXtzPXQKcy5hPVAudmcocy5hLGEsIiwg
-Iil9ZmluYWxseXtpZigwPj0kLnhnLmxlbmd0aClyZXR1cm4gSC5PSCgkLnhnLC0xKQokLnhnLnBvcCgp
-fXQuYSs9YwpzPXQuYQpyZXR1cm4gcy5jaGFyQ29kZUF0KDApPT0wP3M6c30sCmhCOmZ1bmN0aW9uKGEp
-e3ZhciB0LHMKZm9yKHQ9JC54Zy5sZW5ndGgscz0wO3M8dDsrK3MpaWYoYT09PSQueGdbc10pcmV0dXJu
-ITAKcmV0dXJuITF9LApWcjpmdW5jdGlvbihhLGIpe3ZhciB0LHMscixxLHAsbyxuLG09YS5na3ooYSks
-bD0wLGs9MAp3aGlsZSghMCl7aWYoIShsPDgwfHxrPDMpKWJyZWFrCmlmKCFtLkYoKSlyZXR1cm4KdD1I
-LkVqKG0uZ2woKSkKQy5ObS5pKGIsdCkKbCs9dC5sZW5ndGgrMjsrK2t9aWYoIW0uRigpKXtpZihrPD01
-KXJldHVybgppZigwPj1iLmxlbmd0aClyZXR1cm4gSC5PSChiLC0xKQpzPWIucG9wKCkKaWYoMD49Yi5s
-ZW5ndGgpcmV0dXJuIEguT0goYiwtMSkKcj1iLnBvcCgpfWVsc2V7cT1tLmdsKCk7KytrCmlmKCFtLkYo
-KSl7aWYoazw9NCl7Qy5ObS5pKGIsSC5FaihxKSkKcmV0dXJufXM9SC5FaihxKQppZigwPj1iLmxlbmd0
-aClyZXR1cm4gSC5PSChiLC0xKQpyPWIucG9wKCkKbCs9cy5sZW5ndGgrMn1lbHNle3A9bS5nbCgpOysr
-awpmb3IoO20uRigpO3E9cCxwPW8pe289bS5nbCgpOysrawppZihrPjEwMCl7d2hpbGUoITApe2lmKCEo
-bD43NSYmaz4zKSlicmVhawppZigwPj1iLmxlbmd0aClyZXR1cm4gSC5PSChiLC0xKQpsLT1iLnBvcCgp
-Lmxlbmd0aCsyOy0ta31DLk5tLmkoYiwiLi4uIikKcmV0dXJufX1yPUguRWoocSkKcz1ILkVqKHApCmwr
-PXMubGVuZ3RoK3IubGVuZ3RoKzR9fWlmKGs+Yi5sZW5ndGgrMil7bCs9NQpuPSIuLi4ifWVsc2Ugbj1u
-dWxsCndoaWxlKCEwKXtpZighKGw+ODAmJmIubGVuZ3RoPjMpKWJyZWFrCmlmKDA+PWIubGVuZ3RoKXJl
-dHVybiBILk9IKGIsLTEpCmwtPWIucG9wKCkubGVuZ3RoKzIKaWYobj09bnVsbCl7bCs9NQpuPSIuLi4i
-fX1pZihuIT1udWxsKUMuTm0uaShiLG4pCkMuTm0uaShiLHIpCkMuTm0uaShiLHMpfSwKdE06ZnVuY3Rp
-b24oYSxiKXt2YXIgdCxzLHI9UC5McyhiKQpmb3IodD1hLmxlbmd0aCxzPTA7czxhLmxlbmd0aDthLmxl
-bmd0aD09PXR8fCgwLEgubGspKGEpLCsrcylyLmkoMCxiLmEoYVtzXSkpCnJldHVybiByfSwKbk86ZnVu
-Y3Rpb24oYSl7dmFyIHQscz17fQppZihQLmhCKGEpKXJldHVybiJ7Li4ufSIKdD1uZXcgUC5SbigiIikK
-dHJ5e0MuTm0uaSgkLnhnLGEpCnQuYSs9InsiCnMuYT0hMAphLksoMCxuZXcgUC5yYShzLHQpKQp0LmEr
-PSJ9In1maW5hbGx5e2lmKDA+PSQueGcubGVuZ3RoKXJldHVybiBILk9IKCQueGcsLTEpCiQueGcucG9w
-KCl9cz10LmEKcmV0dXJuIHMuY2hhckNvZGVBdCgwKT09MD9zOnN9LApiNjpmdW5jdGlvbiBiNihhKXt2
-YXIgXz10aGlzCl8uYT0wCl8uZj1fLmU9Xy5kPV8uYz1fLmI9bnVsbApfLnI9MApfLiR0aT1hfSwKYm46
-ZnVuY3Rpb24gYm4oYSl7dGhpcy5hPWEKdGhpcy5jPXRoaXMuYj1udWxsfSwKbG06ZnVuY3Rpb24gbG0o
-YSxiLGMpe3ZhciBfPXRoaXMKXy5hPWEKXy5iPWIKXy5kPV8uYz1udWxsCl8uJHRpPWN9LAptVzpmdW5j
-dGlvbiBtVygpe30sCkxVOmZ1bmN0aW9uIExVKCl7fSwKbEQ6ZnVuY3Rpb24gbEQoKXt9LAppbDpmdW5j
-dGlvbiBpbCgpe30sCnJhOmZ1bmN0aW9uIHJhKGEsYil7dGhpcy5hPWEKdGhpcy5iPWJ9LApZazpmdW5j
-dGlvbiBZaygpe30sCnlROmZ1bmN0aW9uIHlRKGEpe3RoaXMuYT1hfSwKS1A6ZnVuY3Rpb24gS1AoKXt9
-LApQbjpmdW5jdGlvbiBQbigpe30sCkdqOmZ1bmN0aW9uIEdqKGEsYil7dGhpcy5hPWEKdGhpcy4kdGk9
-Yn0sCk1hOmZ1bmN0aW9uIE1hKCl7fSwKVmo6ZnVuY3Rpb24gVmooKXt9LApYdjpmdW5jdGlvbiBYdigp
-e30sCm5ZOmZ1bmN0aW9uIG5ZKCl7fSwKV1k6ZnVuY3Rpb24gV1koKXt9LApSVTpmdW5jdGlvbiBSVSgp
-e30sCkJTOmZ1bmN0aW9uKGEsYil7dmFyIHQscyxyLHEKaWYodHlwZW9mIGEhPSJzdHJpbmciKXRocm93
-IEguYihILnRMKGEpKQp0PW51bGwKdHJ5e3Q9SlNPTi5wYXJzZShhKX1jYXRjaChyKXtzPUguUnUocikK
-cT1QLnJyKFN0cmluZyhzKSxudWxsLG51bGwpCnRocm93IEguYihxKX1xPVAuUWUodCkKcmV0dXJuIHF9
-LApRZTpmdW5jdGlvbihhKXt2YXIgdAppZihhPT1udWxsKXJldHVybiBudWxsCmlmKHR5cGVvZiBhIT0i
-b2JqZWN0IilyZXR1cm4gYQppZihPYmplY3QuZ2V0UHJvdG90eXBlT2YoYSkhPT1BcnJheS5wcm90b3R5
-cGUpcmV0dXJuIG5ldyBQLnV3KGEsT2JqZWN0LmNyZWF0ZShudWxsKSkKZm9yKHQ9MDt0PGEubGVuZ3Ro
-OysrdClhW3RdPVAuUWUoYVt0XSkKcmV0dXJuIGF9LApreTpmdW5jdGlvbihhLGIsYyxkKXtpZihiIGlu
-c3RhbmNlb2YgVWludDhBcnJheSlyZXR1cm4gUC5DRyghMSxiLGMsZCkKcmV0dXJuIG51bGx9LApDRzpm
-dW5jdGlvbihhLGIsYyxkKXt2YXIgdCxzLHI9JC5yZigpCmlmKHI9PW51bGwpcmV0dXJuIG51bGwKdD0w
-PT09YwppZih0JiYhMClyZXR1cm4gUC5PUShyLGIpCnM9Yi5sZW5ndGgKZD1QLmpCKGMsZCxzKQppZih0
-JiZkPT09cylyZXR1cm4gUC5PUShyLGIpCnJldHVybiBQLk9RKHIsYi5zdWJhcnJheShjLGQpKX0sCk9R
-OmZ1bmN0aW9uKGEsYil7aWYoUC5BaihiKSlyZXR1cm4gbnVsbApyZXR1cm4gUC5KaChhLGIpfSwKSmg6
-ZnVuY3Rpb24oYSxiKXt2YXIgdCxzCnRyeXt0PWEuZGVjb2RlKGIpCnJldHVybiB0fWNhdGNoKHMpe0gu
-UnUocyl9cmV0dXJuIG51bGx9LApBajpmdW5jdGlvbihhKXt2YXIgdCxzPWEubGVuZ3RoLTIKZm9yKHQ9
-MDt0PHM7Kyt0KWlmKGFbdF09PT0yMzcpaWYoKGFbdCsxXSYyMjQpPT09MTYwKXJldHVybiEwCnJldHVy
-biExfSwKY1A6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0LHMscgpmb3IodD1KLlU2KGEpLHM9YjtzPGM7Kytz
-KXtyPXQucShhLHMpCmlmKHR5cGVvZiByIT09Im51bWJlciIpcmV0dXJuIHIuek0oKQppZigociYxMjcp
-IT09cilyZXR1cm4gcy1ifXJldHVybiBjLWJ9LAp4TTpmdW5jdGlvbihhLGIsYyxkLGUsZil7aWYoQy5q
-bi56WShmLDQpIT09MCl0aHJvdyBILmIoUC5ycigiSW52YWxpZCBiYXNlNjQgcGFkZGluZywgcGFkZGVk
-IGxlbmd0aCBtdXN0IGJlIG11bHRpcGxlIG9mIGZvdXIsIGlzICIrZixhLGMpKQppZihkK2UhPT1mKXRo
-cm93IEguYihQLnJyKCJJbnZhbGlkIGJhc2U2NCBwYWRkaW5nLCAnPScgbm90IGF0IHRoZSBlbmQiLGEs
-YikpCmlmKGU+Mil0aHJvdyBILmIoUC5ycigiSW52YWxpZCBiYXNlNjQgcGFkZGluZywgbW9yZSB0aGFu
-IHR3byAnPScgY2hhcmFjdGVycyIsYSxiKSl9LAp1dzpmdW5jdGlvbiB1dyhhLGIpe3RoaXMuYT1hCnRo
-aXMuYj1iCnRoaXMuYz1udWxsfSwKaTg6ZnVuY3Rpb24gaTgoYSl7dGhpcy5hPWF9LApwZzpmdW5jdGlv
-biBwZygpe30sCkNWOmZ1bmN0aW9uIENWKCl7fSwKVTg6ZnVuY3Rpb24gVTgoKXt9LApVazpmdW5jdGlv
-biBVaygpe30sCndJOmZ1bmN0aW9uIHdJKCl7fSwKWmk6ZnVuY3Rpb24gWmkoKXt9LApieTpmdW5jdGlv
-biBieSgpe30sCk14OmZ1bmN0aW9uIE14KGEpe3RoaXMuYT1hfSwKdTU6ZnVuY3Rpb24gdTUoKXt9LApF
-MzpmdW5jdGlvbiBFMygpe30sClJ3OmZ1bmN0aW9uIFJ3KGEpe3RoaXMuYj0wCnRoaXMuYz1hfSwKR1k6
-ZnVuY3Rpb24gR1koYSl7dGhpcy5hPWF9LApiejpmdW5jdGlvbiBieihhLGIpe3ZhciBfPXRoaXMKXy5h
-PWEKXy5iPWIKXy5jPSEwCl8uZj1fLmU9Xy5kPTB9LApRQTpmdW5jdGlvbihhLGIpe3ZhciB0PUguSHAo
-YSxiKQppZih0IT1udWxsKXJldHVybiB0CnRocm93IEguYihQLnJyKGEsbnVsbCxudWxsKSl9LApGOmZ1
-bmN0aW9uKGEpe2lmKGEgaW5zdGFuY2VvZiBILnYpcmV0dXJuIGEudygwKQpyZXR1cm4iSW5zdGFuY2Ug
-b2YgJyIrSC5FaihILk0oYSkpKyInIn0sCk84OmZ1bmN0aW9uKGEsYixjLGQpe3ZhciB0LHM9Si5RaShh
-LGQpCmlmKGEhPT0wJiZiIT1udWxsKWZvcih0PTA7dDxzLmxlbmd0aDsrK3Qpc1t0XT1iCnJldHVybiBz
-fSwKQ0g6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0LHM9SC5WTShbXSxjLkMoImpkPDA+IikpCmZvcih0PUou
-SVQoYSk7dC5GKCk7KUMuTm0uaShzLGMuYSh0LmdsKCkpKQppZihiKXJldHVybiBzCnJldHVybiBKLkVw
-KHMsYyl9LApkSDpmdW5jdGlvbihhLGIsYyxkKXt2YXIgdCxzPUouS2goYSxkKQpmb3IodD0wO3Q8YTsr
-K3QpQy5ObS5ZKHMsdCxiLiQxKHQpKQpyZXR1cm4gc30sCkFGOmZ1bmN0aW9uKGEsYil7cmV0dXJuIEou
-ekMoUC5DSChhLCExLGIpKX0sCkhNOmZ1bmN0aW9uKGEsYixjKXt2YXIgdCxzCmlmKEFycmF5LmlzQXJy
-YXkoYSkpe3Q9YQpzPXQubGVuZ3RoCmM9UC5qQihiLGMscykKcmV0dXJuIEguZVQoYj4wfHxjPHM/dC5z
-bGljZShiLGMpOnQpfWlmKHUuYm0uYihhKSlyZXR1cm4gSC5mdyhhLGIsUC5qQihiLGMsYS5sZW5ndGgp
-KQpyZXR1cm4gUC5idyhhLGIsYyl9LApPbzpmdW5jdGlvbihhKXtyZXR1cm4gSC5MdyhhKX0sCmJ3OmZ1
-bmN0aW9uKGEsYixjKXt2YXIgdCxzLHIscSxwPW51bGwKaWYoYjwwKXRocm93IEguYihQLlRFKGIsMCxK
-LkhtKGEpLHAscCkpCnQ9Yz09bnVsbAppZighdCYmYzxiKXRocm93IEguYihQLlRFKGMsYixKLkhtKGEp
-LHAscCkpCnM9Si5JVChhKQpmb3Iocj0wO3I8YjsrK3IpaWYoIXMuRigpKXRocm93IEguYihQLlRFKGIs
-MCxyLHAscCkpCnE9W10KaWYodClmb3IoO3MuRigpOylxLnB1c2gocy5nbCgpKQplbHNlIGZvcihyPWI7
-cjxjOysrcil7aWYoIXMuRigpKXRocm93IEguYihQLlRFKGMsYixyLHAscCkpCnEucHVzaChzLmdsKCkp
-fXJldHVybiBILmVUKHEpfSwKbnU6ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBILlZSKGEsSC52NChhLCEx
-LCEwLCExLCExLCExKSl9LAp2ZzpmdW5jdGlvbihhLGIsYyl7dmFyIHQ9Si5JVChiKQppZighdC5GKCkp
-cmV0dXJuIGEKaWYoYy5sZW5ndGg9PT0wKXtkbyBhKz1ILkVqKHQuZ2woKSkKd2hpbGUodC5GKCkpfWVs
-c2V7YSs9SC5Faih0LmdsKCkpCmZvcig7dC5GKCk7KWE9YStjK0guRWoodC5nbCgpKX1yZXR1cm4gYX0s
-CmxyOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBuZXcgUC5tcChhLGIsYyxkKX0sCnVvOmZ1bmN0aW9u
-KCl7dmFyIHQ9SC5NMCgpCmlmKHQhPW51bGwpcmV0dXJuIFAuaEsodCkKdGhyb3cgSC5iKFAuTDQoIidV
-cmkuYmFzZScgaXMgbm90IHN1cHBvcnRlZCIpKX0sCmVQOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciB0LHMs
-cixxLHAsbyxuPSIwMTIzNDU2Nzg5QUJDREVGIgppZihjPT09Qy54TSl7dD0kLno0KCkuYgppZih0eXBl
-b2YgYiE9InN0cmluZyIpSC52aChILnRMKGIpKQp0PXQudGVzdChiKX1lbHNlIHQ9ITEKaWYodClyZXR1
-cm4gYgpILkxoKGMpLkMoIlVrLlMiKS5hKGIpCnM9Yy5nWkUoKS5XSihiKQpmb3IodD1zLmxlbmd0aCxy
-PTAscT0iIjtyPHQ7KytyKXtwPXNbcl0KaWYocDwxMjgpe289cD4+PjQKaWYobz49OClyZXR1cm4gSC5P
-SChhLG8pCm89KGFbb10mMTw8KHAmMTUpKSE9PTB9ZWxzZSBvPSExCmlmKG8pcSs9SC5MdyhwKQplbHNl
+KHIpKXRocm93IEguYihILkkocikpCmlmKHI8MCl0aHJvdyBILmIoSC5JKHIpKQppZihyPjY1NTM1KXJl
+dHVybiBILkNxKGEpfXJldHVybiBILlZLKGEpfSwKZnc6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0LHMscixx
+CmlmKGM8PTUwMCYmYj09PTAmJmM9PT1hLmxlbmd0aClyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5h
+cHBseShudWxsLGEpCmZvcih0PWIscz0iIjt0PGM7dD1yKXtyPXQrNTAwCnE9cjxjP3I6YwpzKz1TdHJp
+bmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsYS5zdWJhcnJheSh0LHEpKX1yZXR1cm4gc30sCkx3OmZ1
+bmN0aW9uKGEpe3ZhciB0CmlmKDA8PWEpe2lmKGE8PTY1NTM1KXJldHVybiBTdHJpbmcuZnJvbUNoYXJD
+b2RlKGEpCmlmKGE8PTExMTQxMTEpe3Q9YS02NTUzNgpyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSgo
+NTUyOTZ8Qy5qbi53Ryh0LDEwKSk+Pj4wLDU2MzIwfHQmMTAyMyl9fXRocm93IEguYihQLlRFKGEsMCwx
+MTE0MTExLG51bGwsbnVsbCkpfSwKbzI6ZnVuY3Rpb24oYSl7aWYoYS5kYXRlPT09dm9pZCAwKWEuZGF0
+ZT1uZXcgRGF0ZShhLmEpCnJldHVybiBhLmRhdGV9LAp0SjpmdW5jdGlvbihhKXt2YXIgdD1ILm8yKGEp
+LmdldEZ1bGxZZWFyKCkrMApyZXR1cm4gdH0sCk5TOmZ1bmN0aW9uKGEpe3ZhciB0PUgubzIoYSkuZ2V0
+TW9udGgoKSsxCnJldHVybiB0fSwKakE6ZnVuY3Rpb24oYSl7dmFyIHQ9SC5vMihhKS5nZXREYXRlKCkr
+MApyZXR1cm4gdH0sCklYOmZ1bmN0aW9uKGEpe3ZhciB0PUgubzIoYSkuZ2V0SG91cnMoKSswCnJldHVy
+biB0fSwKY2g6ZnVuY3Rpb24oYSl7dmFyIHQ9SC5vMihhKS5nZXRNaW51dGVzKCkrMApyZXR1cm4gdH0s
+CkpkOmZ1bmN0aW9uKGEpe3ZhciB0PUgubzIoYSkuZ2V0U2Vjb25kcygpKzAKcmV0dXJuIHR9LApWYTpm
+dW5jdGlvbihhKXt2YXIgdD1ILm8yKGEpLmdldE1pbGxpc2Vjb25kcygpKzAKcmV0dXJuIHR9LAp6bzpm
+dW5jdGlvbihhLGIsYyl7dmFyIHQscyxyPXt9CnIuYT0wCnQ9W10Kcz1bXQpyLmE9Yi5sZW5ndGgKQy5O
+bS5GVih0LGIpCnIuYj0iIgppZihjIT1udWxsJiZjLmEhPT0wKWMuSygwLG5ldyBILkNqKHIscyx0KSkK
+IiIrci5hCnJldHVybiBKLkp5KGEsbmV3IEguTEkoQy5UZSwwLHQscywwKSl9LApFazpmdW5jdGlvbihh
+LGIsYyl7dmFyIHQscyxyLHEKaWYoYiBpbnN0YW5jZW9mIEFycmF5KXQ9Yz09bnVsbHx8Yy5hPT09MApl
+bHNlIHQ9ITEKaWYodCl7cz1iCnI9cy5sZW5ndGgKaWYocj09PTApe2lmKCEhYS4kMClyZXR1cm4gYS4k
+MCgpfWVsc2UgaWYocj09PTEpe2lmKCEhYS4kMSlyZXR1cm4gYS4kMShzWzBdKX1lbHNlIGlmKHI9PT0y
+KXtpZighIWEuJDIpcmV0dXJuIGEuJDIoc1swXSxzWzFdKX1lbHNlIGlmKHI9PT0zKXtpZighIWEuJDMp
+cmV0dXJuIGEuJDMoc1swXSxzWzFdLHNbMl0pfWVsc2UgaWYocj09PTQpe2lmKCEhYS4kNClyZXR1cm4g
+YS4kNChzWzBdLHNbMV0sc1syXSxzWzNdKX1lbHNlIGlmKHI9PT01KWlmKCEhYS4kNSlyZXR1cm4gYS4k
+NShzWzBdLHNbMV0sc1syXSxzWzNdLHNbNF0pCnE9YVsiIisiJCIrcl0KaWYocSE9bnVsbClyZXR1cm4g
+cS5hcHBseShhLHMpfXJldHVybiBILkV3KGEsYixjKX0sCkV3OmZ1bmN0aW9uKGEsYixjKXt2YXIgdCxz
+LHIscSxwLG8sbixtLGwsaz1iIGluc3RhbmNlb2YgQXJyYXk/YjpQLkNIKGIsITAsdS56KSxqPWsubGVu
+Z3RoLGk9YS4kUgppZihqPGkpcmV0dXJuIEguem8oYSxrLGMpCnQ9YS4kRApzPXQ9PW51bGwKcj0hcz90
+KCk6bnVsbApxPUouaWEoYSkKcD1xLiRDCmlmKHR5cGVvZiBwPT0ic3RyaW5nIilwPXFbcF0KaWYocyl7
+aWYoYyE9bnVsbCYmYy5hIT09MClyZXR1cm4gSC56byhhLGssYykKaWYoaj09PWkpcmV0dXJuIHAuYXBw
+bHkoYSxrKQpyZXR1cm4gSC56byhhLGssYyl9aWYociBpbnN0YW5jZW9mIEFycmF5KXtpZihjIT1udWxs
+JiZjLmEhPT0wKXJldHVybiBILnpvKGEsayxjKQppZihqPmkrci5sZW5ndGgpcmV0dXJuIEguem8oYSxr
+LG51bGwpCkMuTm0uRlYoayxyLnNsaWNlKGotaSkpCnJldHVybiBwLmFwcGx5KGEsayl9ZWxzZXtpZihq
+PmkpcmV0dXJuIEguem8oYSxrLGMpCm89T2JqZWN0LmtleXMocikKaWYoYz09bnVsbClmb3Iocz1vLmxl
+bmd0aCxuPTA7bjxvLmxlbmd0aDtvLmxlbmd0aD09PXN8fCgwLEgubGspKG8pLCsrbilDLk5tLmkoayxy
+W0guYyhvW25dKV0pCmVsc2V7Zm9yKHM9by5sZW5ndGgsbT0wLG49MDtuPG8ubGVuZ3RoO28ubGVuZ3Ro
+PT09c3x8KDAsSC5saykobyksKytuKXtsPUguYyhvW25dKQppZihjLng0KGwpKXsrK20KQy5ObS5pKGss
+Yy5xKDAsbCkpfWVsc2UgQy5ObS5pKGsscltsXSl9aWYobSE9PWMuYSlyZXR1cm4gSC56byhhLGssYyl9
+cmV0dXJuIHAuYXBwbHkoYSxrKX19LApwWTpmdW5jdGlvbihhKXt0aHJvdyBILmIoSC5JKGEpKX0sCms6
+ZnVuY3Rpb24oYSxiKXtpZihhPT1udWxsKUouSChhKQp0aHJvdyBILmIoSC5IWShhLGIpKX0sCkhZOmZ1
+bmN0aW9uKGEsYil7dmFyIHQscyxyPSJpbmRleCIKaWYoIUgub2soYikpcmV0dXJuIG5ldyBQLkFUKCEw
+LGIscixudWxsKQp0PUguV1koSi5IKGEpKQppZighKGI8MCkpe2lmKHR5cGVvZiB0IT09Im51bWJlciIp
+cmV0dXJuIEgucFkodCkKcz1iPj10fWVsc2Ugcz0hMAppZihzKXJldHVybiBQLnQoYixhLHIsbnVsbCx0
+KQpyZXR1cm4gUC5PNyhiLHIpfSwKYXU6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0PSJJbnZhbGlkIHZhbHVl
+IgppZihhPmMpcmV0dXJuIG5ldyBQLmJKKDAsYywhMCxhLCJzdGFydCIsdCkKaWYoYiE9bnVsbCl7aWYo
+IUgub2soYikpcmV0dXJuIG5ldyBQLkFUKCEwLGIsImVuZCIsbnVsbCkKaWYoYjxhfHxiPmMpcmV0dXJu
+IG5ldyBQLmJKKGEsYywhMCxiLCJlbmQiLHQpfXJldHVybiBuZXcgUC5BVCghMCxiLCJlbmQiLG51bGwp
+fSwKSTpmdW5jdGlvbihhKXtyZXR1cm4gbmV3IFAuQVQoITAsYSxudWxsLG51bGwpfSwKYjpmdW5jdGlv
+bihhKXt2YXIgdAppZihhPT1udWxsKWE9bmV3IFAuTEsoKQp0PW5ldyBFcnJvcigpCnQuZGFydEV4Y2Vw
+dGlvbj1hCmlmKCJkZWZpbmVQcm9wZXJ0eSIgaW4gT2JqZWN0KXtPYmplY3QuZGVmaW5lUHJvcGVydHko
+dCwibWVzc2FnZSIse2dldDpILkp1fSkKdC5uYW1lPSIifWVsc2UgdC50b1N0cmluZz1ILkp1CnJldHVy
+biB0fSwKSnU6ZnVuY3Rpb24oKXtyZXR1cm4gSi5BYyh0aGlzLmRhcnRFeGNlcHRpb24pfSwKdmg6ZnVu
+Y3Rpb24oYSl7dGhyb3cgSC5iKGEpfSwKbGs6ZnVuY3Rpb24oYSl7dGhyb3cgSC5iKFAuYTQoYSkpfSwK
+Y006ZnVuY3Rpb24oYSl7dmFyIHQscyxyLHEscCxvCmE9SC5lQShhLnJlcGxhY2UoU3RyaW5nKHt9KSwn
+JHJlY2VpdmVyJCcpKQp0PWEubWF0Y2goL1xcXCRbYS16QS1aXStcXFwkL2cpCmlmKHQ9PW51bGwpdD1I
+LlZNKFtdLHUucykKcz10LmluZGV4T2YoIlxcJGFyZ3VtZW50c1xcJCIpCnI9dC5pbmRleE9mKCJcXCRh
+cmd1bWVudHNFeHByXFwkIikKcT10LmluZGV4T2YoIlxcJGV4cHJcXCQiKQpwPXQuaW5kZXhPZigiXFwk
+bWV0aG9kXFwkIikKbz10LmluZGV4T2YoIlxcJHJlY2VpdmVyXFwkIikKcmV0dXJuIG5ldyBILmY5KGEu
+cmVwbGFjZShuZXcgUmVnRXhwKCdcXFxcXFwkYXJndW1lbnRzXFxcXFxcJCcsJ2cnKSwnKCg/Onh8W154
+XSkqKScpLnJlcGxhY2UobmV3IFJlZ0V4cCgnXFxcXFxcJGFyZ3VtZW50c0V4cHJcXFxcXFwkJywnZycp
+LCcoKD86eHxbXnhdKSopJykucmVwbGFjZShuZXcgUmVnRXhwKCdcXFxcXFwkZXhwclxcXFxcXCQnLCdn
+JyksJygoPzp4fFteeF0pKiknKS5yZXBsYWNlKG5ldyBSZWdFeHAoJ1xcXFxcXCRtZXRob2RcXFxcXFwk
+JywnZycpLCcoKD86eHxbXnhdKSopJykucmVwbGFjZShuZXcgUmVnRXhwKCdcXFxcXFwkcmVjZWl2ZXJc
+XFxcXFwkJywnZycpLCcoKD86eHxbXnhdKSopJykscyxyLHEscCxvKX0sClM3OmZ1bmN0aW9uKGEpe3Jl
+dHVybiBmdW5jdGlvbigkZXhwciQpe3ZhciAkYXJndW1lbnRzRXhwciQ9JyRhcmd1bWVudHMkJwp0cnl7
+JGV4cHIkLiRtZXRob2QkKCRhcmd1bWVudHNFeHByJCl9Y2F0Y2godCl7cmV0dXJuIHQubWVzc2FnZX19
+KGEpfSwKTWo6ZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKCRleHByJCl7dHJ5eyRleHByJC4kbWV0
+aG9kJH1jYXRjaCh0KXtyZXR1cm4gdC5tZXNzYWdlfX0oYSl9LApJajpmdW5jdGlvbihhLGIpe3JldHVy
+biBuZXcgSC5XMChhLGI9PW51bGw/bnVsbDpiLm1ldGhvZCl9LApUMzpmdW5jdGlvbihhLGIpe3ZhciB0
+PWI9PW51bGwscz10P251bGw6Yi5tZXRob2QKcmV0dXJuIG5ldyBILmF6KGEscyx0P251bGw6Yi5yZWNl
+aXZlcil9LApSdTpmdW5jdGlvbihhKXt2YXIgdCxzLHIscSxwLG8sbixtLGwsayxqLGksaCxnLGY9bnVs
+bCxlPW5ldyBILkFtKGEpCmlmKGE9PW51bGwpcmV0dXJuIGYKaWYoYSBpbnN0YW5jZW9mIEguYnEpcmV0
+dXJuIGUuJDEoYS5hKQppZih0eXBlb2YgYSE9PSJvYmplY3QiKXJldHVybiBhCmlmKCJkYXJ0RXhjZXB0
+aW9uIiBpbiBhKXJldHVybiBlLiQxKGEuZGFydEV4Y2VwdGlvbikKZWxzZSBpZighKCJtZXNzYWdlIiBp
+biBhKSlyZXR1cm4gYQp0PWEubWVzc2FnZQppZigibnVtYmVyIiBpbiBhJiZ0eXBlb2YgYS5udW1iZXI9
+PSJudW1iZXIiKXtzPWEubnVtYmVyCnI9cyY2NTUzNQppZigoQy5qbi53RyhzLDE2KSY4MTkxKT09PTEw
+KXN3aXRjaChyKXtjYXNlIDQzODpyZXR1cm4gZS4kMShILlQzKEguZCh0KSsiIChFcnJvciAiK3IrIiki
+LGYpKQpjYXNlIDQ0NTpjYXNlIDUwMDc6cmV0dXJuIGUuJDEoSC5JaihILmQodCkrIiAoRXJyb3IgIity
+KyIpIixmKSl9fWlmKGEgaW5zdGFuY2VvZiBUeXBlRXJyb3Ipe3E9JC5TbigpCnA9JC5scSgpCm89JC5O
+OSgpCm49JC5pSSgpCm09JC5VTigpCmw9JC5aaCgpCms9JC5yTigpCiQuYzMoKQpqPSQuSEsoKQppPSQu
+cjEoKQpoPXEucVModCkKaWYoaCE9bnVsbClyZXR1cm4gZS4kMShILlQzKEguYyh0KSxoKSkKZWxzZXto
+PXAucVModCkKaWYoaCE9bnVsbCl7aC5tZXRob2Q9ImNhbGwiCnJldHVybiBlLiQxKEguVDMoSC5jKHQp
+LGgpKX1lbHNle2g9by5xUyh0KQppZihoPT1udWxsKXtoPW4ucVModCkKaWYoaD09bnVsbCl7aD1tLnFT
+KHQpCmlmKGg9PW51bGwpe2g9bC5xUyh0KQppZihoPT1udWxsKXtoPWsucVModCkKaWYoaD09bnVsbCl7
+aD1uLnFTKHQpCmlmKGg9PW51bGwpe2g9ai5xUyh0KQppZihoPT1udWxsKXtoPWkucVModCkKZz1oIT1u
+dWxsfWVsc2UgZz0hMH1lbHNlIGc9ITB9ZWxzZSBnPSEwfWVsc2UgZz0hMH1lbHNlIGc9ITB9ZWxzZSBn
+PSEwfWVsc2UgZz0hMAppZihnKXJldHVybiBlLiQxKEguSWooSC5jKHQpLGgpKX19cmV0dXJuIGUuJDEo
+bmV3IEgudlYodHlwZW9mIHQ9PSJzdHJpbmciP3Q6IiIpKX1pZihhIGluc3RhbmNlb2YgUmFuZ2VFcnJv
+cil7aWYodHlwZW9mIHQ9PSJzdHJpbmciJiZ0LmluZGV4T2YoImNhbGwgc3RhY2siKSE9PS0xKXJldHVy
+biBuZXcgUC5LWSgpCnQ9ZnVuY3Rpb24oYil7dHJ5e3JldHVybiBTdHJpbmcoYil9Y2F0Y2goZCl7fXJl
+dHVybiBudWxsfShhKQpyZXR1cm4gZS4kMShuZXcgUC5BVCghMSxmLGYsdHlwZW9mIHQ9PSJzdHJpbmci
+P3QucmVwbGFjZSgvXlJhbmdlRXJyb3I6XHMqLywiIik6dCkpfWlmKHR5cGVvZiBJbnRlcm5hbEVycm9y
+PT0iZnVuY3Rpb24iJiZhIGluc3RhbmNlb2YgSW50ZXJuYWxFcnJvcilpZih0eXBlb2YgdD09InN0cmlu
+ZyImJnQ9PT0idG9vIG11Y2ggcmVjdXJzaW9uIilyZXR1cm4gbmV3IFAuS1koKQpyZXR1cm4gYX0sCnRz
+OmZ1bmN0aW9uKGEpe3ZhciB0CmlmKGEgaW5zdGFuY2VvZiBILmJxKXJldHVybiBhLmIKaWYoYT09bnVs
+bClyZXR1cm4gbmV3IEguWE8oYSkKdD1hLiRjYWNoZWRUcmFjZQppZih0IT1udWxsKXJldHVybiB0CnJl
+dHVybiBhLiRjYWNoZWRUcmFjZT1uZXcgSC5YTyhhKX0sCkI3OmZ1bmN0aW9uKGEsYil7dmFyIHQscyxy
+LHE9YS5sZW5ndGgKZm9yKHQ9MDt0PHE7dD1yKXtzPXQrMQpyPXMrMQpiLlkoMCxhW3RdLGFbc10pfXJl
+dHVybiBifSwKZnQ6ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3UuWi5hKGEpCnN3aXRjaChILldZKGIpKXtj
+YXNlIDA6cmV0dXJuIGEuJDAoKQpjYXNlIDE6cmV0dXJuIGEuJDEoYykKY2FzZSAyOnJldHVybiBhLiQy
+KGMsZCkKY2FzZSAzOnJldHVybiBhLiQzKGMsZCxlKQpjYXNlIDQ6cmV0dXJuIGEuJDQoYyxkLGUsZil9
+dGhyb3cgSC5iKG5ldyBQLkNEKCJVbnN1cHBvcnRlZCBudW1iZXIgb2YgYXJndW1lbnRzIGZvciB3cmFw
+cGVkIGNsb3N1cmUiKSl9LAp0UjpmdW5jdGlvbihhLGIpe3ZhciB0CmlmKGE9PW51bGwpcmV0dXJuIG51
+bGwKdD1hLiRpZGVudGl0eQppZighIXQpcmV0dXJuIHQKdD1mdW5jdGlvbihjLGQsZSl7cmV0dXJuIGZ1
+bmN0aW9uKGYsZyxoLGkpe3JldHVybiBlKGMsZCxmLGcsaCxpKX19KGEsYixILmZ0KQphLiRpZGVudGl0
+eT10CnJldHVybiB0fSwKaUE6ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyl7dmFyIHQscyxyLHEscCxvLG4s
+bSxsPW51bGwsaz1iWzBdLGo9ay4kY2FsbE5hbWUsaT1lP09iamVjdC5jcmVhdGUobmV3IEguengoKS5j
+b25zdHJ1Y3Rvci5wcm90b3R5cGUpOk9iamVjdC5jcmVhdGUobmV3IEguankobCxsLGwsbCkuY29uc3Ry
+dWN0b3IucHJvdG90eXBlKQppLiRpbml0aWFsaXplPWkuY29uc3RydWN0b3IKaWYoZSl0PWZ1bmN0aW9u
+IHN0YXRpY190ZWFyX29mZigpe3RoaXMuJGluaXRpYWxpemUoKX0KZWxzZXtzPSQueWoKaWYodHlwZW9m
+IHMhPT0ibnVtYmVyIilyZXR1cm4gcy5oKCkKJC55aj1zKzEKcz1uZXcgRnVuY3Rpb24oImEsYixjLGQi
+K3MsInRoaXMuJGluaXRpYWxpemUoYSxiLGMsZCIrcysiKSIpCnQ9c31pLmNvbnN0cnVjdG9yPXQKdC5w
+cm90b3R5cGU9aQppZighZSl7cj1ILmJ4KGEsayxmKQpyLiRyZWZsZWN0aW9uSW5mbz1kfWVsc2V7aS4k
+c3RhdGljX25hbWU9ZwpyPWt9cT1ILmltKGQsZSxmKQppLiRTPXEKaVtqXT1yCmZvcihwPXIsbz0xO288
+Yi5sZW5ndGg7KytvKXtuPWJbb10KbT1uLiRjYWxsTmFtZQppZihtIT1udWxsKXtuPWU/bjpILmJ4KGEs
+bixmKQppW21dPW59aWYobz09PWMpe24uJHJlZmxlY3Rpb25JbmZvPWQKcD1ufX1pLiRDPXAKaS4kUj1r
+LiRSCmkuJEQ9ay4kRApyZXR1cm4gdH0sCmltOmZ1bmN0aW9uKGEsYixjKXt2YXIgdAppZih0eXBlb2Yg
+YT09Im51bWJlciIpcmV0dXJuIGZ1bmN0aW9uKGQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGQo
+ZSl9fShILkJwLGEpCmlmKHR5cGVvZiBhPT0ic3RyaW5nIil7aWYoYil0aHJvdyBILmIoIkNhbm5vdCBj
+b21wdXRlIHNpZ25hdHVyZSBmb3Igc3RhdGljIHRlYXJvZmYuIikKdD1jP0guUFc6SC5UbgpyZXR1cm4g
+ZnVuY3Rpb24oZCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZSh0aGlzLGQpfX0oYSx0KX10aHJv
+dyBILmIoIkVycm9yIGluIGZ1bmN0aW9uVHlwZSBvZiB0ZWFyb2ZmIil9LAp2cTpmdW5jdGlvbihhLGIs
+YyxkKXt2YXIgdD1ILkRWCnN3aXRjaChiPy0xOmEpe2Nhc2UgMDpyZXR1cm4gZnVuY3Rpb24oZSxmKXty
+ZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZih0aGlzKVtlXSgpfX0oYyx0KQpjYXNlIDE6cmV0dXJuIGZ1
+bmN0aW9uKGUsZil7cmV0dXJuIGZ1bmN0aW9uKGcpe3JldHVybiBmKHRoaXMpW2VdKGcpfX0oYyx0KQpj
+YXNlIDI6cmV0dXJuIGZ1bmN0aW9uKGUsZil7cmV0dXJuIGZ1bmN0aW9uKGcsaCl7cmV0dXJuIGYodGhp
+cylbZV0oZyxoKX19KGMsdCkKY2FzZSAzOnJldHVybiBmdW5jdGlvbihlLGYpe3JldHVybiBmdW5jdGlv
+bihnLGgsaSl7cmV0dXJuIGYodGhpcylbZV0oZyxoLGkpfX0oYyx0KQpjYXNlIDQ6cmV0dXJuIGZ1bmN0
+aW9uKGUsZil7cmV0dXJuIGZ1bmN0aW9uKGcsaCxpLGope3JldHVybiBmKHRoaXMpW2VdKGcsaCxpLGop
+fX0oYyx0KQpjYXNlIDU6cmV0dXJuIGZ1bmN0aW9uKGUsZil7cmV0dXJuIGZ1bmN0aW9uKGcsaCxpLGos
+ayl7cmV0dXJuIGYodGhpcylbZV0oZyxoLGksaixrKX19KGMsdCkKZGVmYXVsdDpyZXR1cm4gZnVuY3Rp
+b24oZSxmKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseShmKHRoaXMpLGFyZ3VtZW50cyl9
+fShkLHQpfX0sCmJ4OmZ1bmN0aW9uKGEsYixjKXt2YXIgdCxzLHIscSxwLG8sbgppZihjKXJldHVybiBI
+LkhmKGEsYikKdD1iLiRzdHViTmFtZQpzPWIubGVuZ3RoCnI9YVt0XQpxPWI9PW51bGw/cj09bnVsbDpi
+PT09cgpwPSFxfHxzPj0yNwppZihwKXJldHVybiBILnZxKHMsIXEsdCxiKQppZihzPT09MCl7cT0kLnlq
+CmlmKHR5cGVvZiBxIT09Im51bWJlciIpcmV0dXJuIHEuaCgpCiQueWo9cSsxCm89InNlbGYiK3EKcT0i
+cmV0dXJuIGZ1bmN0aW9uKCl7dmFyICIrbysiID0gdGhpcy4iCnA9JC5tSgpyZXR1cm4gbmV3IEZ1bmN0
+aW9uKHErSC5kKHA9PW51bGw/JC5tSj1ILkUyKCJzZWxmIik6cCkrIjtyZXR1cm4gIitvKyIuIitILmQo
+dCkrIigpO30iKSgpfW49ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Ii5zcGxpdCgiIikuc3BsaWNl
+KDAscykuam9pbigiLCIpCnE9JC55agppZih0eXBlb2YgcSE9PSJudW1iZXIiKXJldHVybiBxLmgoKQok
+LnlqPXErMQpuKz1xCnE9InJldHVybiBmdW5jdGlvbigiK24rIil7cmV0dXJuIHRoaXMuIgpwPSQubUoK
+cmV0dXJuIG5ldyBGdW5jdGlvbihxK0guZChwPT1udWxsPyQubUo9SC5FMigic2VsZiIpOnApKyIuIitI
+LmQodCkrIigiK24rIik7fSIpKCl9LApaNDpmdW5jdGlvbihhLGIsYyxkKXt2YXIgdD1ILkRWLHM9SC55
+Uwpzd2l0Y2goYj8tMTphKXtjYXNlIDA6dGhyb3cgSC5iKEguRWYoIkludGVyY2VwdGVkIGZ1bmN0aW9u
+IHdpdGggbm8gYXJndW1lbnRzLiIpKQpjYXNlIDE6cmV0dXJuIGZ1bmN0aW9uKGUsZixnKXtyZXR1cm4g
+ZnVuY3Rpb24oKXtyZXR1cm4gZih0aGlzKVtlXShnKHRoaXMpKX19KGMsdCxzKQpjYXNlIDI6cmV0dXJu
+IGZ1bmN0aW9uKGUsZixnKXtyZXR1cm4gZnVuY3Rpb24oaCl7cmV0dXJuIGYodGhpcylbZV0oZyh0aGlz
+KSxoKX19KGMsdCxzKQpjYXNlIDM6cmV0dXJuIGZ1bmN0aW9uKGUsZixnKXtyZXR1cm4gZnVuY3Rpb24o
+aCxpKXtyZXR1cm4gZih0aGlzKVtlXShnKHRoaXMpLGgsaSl9fShjLHQscykKY2FzZSA0OnJldHVybiBm
+dW5jdGlvbihlLGYsZyl7cmV0dXJuIGZ1bmN0aW9uKGgsaSxqKXtyZXR1cm4gZih0aGlzKVtlXShnKHRo
+aXMpLGgsaSxqKX19KGMsdCxzKQpjYXNlIDU6cmV0dXJuIGZ1bmN0aW9uKGUsZixnKXtyZXR1cm4gZnVu
+Y3Rpb24oaCxpLGosayl7cmV0dXJuIGYodGhpcylbZV0oZyh0aGlzKSxoLGksaixrKX19KGMsdCxzKQpj
+YXNlIDY6cmV0dXJuIGZ1bmN0aW9uKGUsZixnKXtyZXR1cm4gZnVuY3Rpb24oaCxpLGosayxsKXtyZXR1
+cm4gZih0aGlzKVtlXShnKHRoaXMpLGgsaSxqLGssbCl9fShjLHQscykKZGVmYXVsdDpyZXR1cm4gZnVu
+Y3Rpb24oZSxmLGcsaCl7cmV0dXJuIGZ1bmN0aW9uKCl7aD1bZyh0aGlzKV0KQXJyYXkucHJvdG90eXBl
+LnB1c2guYXBwbHkoaCxhcmd1bWVudHMpCnJldHVybiBlLmFwcGx5KGYodGhpcyksaCl9fShkLHQscyl9
+fSwKSGY6ZnVuY3Rpb24oYSxiKXt2YXIgdCxzLHIscSxwLG8sbixtPSQubUoKaWYobT09bnVsbCltPSQu
+bUo9SC5FMigic2VsZiIpCnQ9JC5QNAppZih0PT1udWxsKXQ9JC5QND1ILkUyKCJyZWNlaXZlciIpCnM9
+Yi4kc3R1Yk5hbWUKcj1iLmxlbmd0aApxPWFbc10KcD1iPT1udWxsP3E9PW51bGw6Yj09PXEKbz0hcHx8
+cj49MjgKaWYobylyZXR1cm4gSC5aNChyLCFwLHMsYikKaWYocj09PTEpe209InJldHVybiBmdW5jdGlv
+bigpe3JldHVybiB0aGlzLiIrSC5kKG0pKyIuIitILmQocykrIih0aGlzLiIrSC5kKHQpKyIpOyIKdD0k
+LnlqCmlmKHR5cGVvZiB0IT09Im51bWJlciIpcmV0dXJuIHQuaCgpCiQueWo9dCsxCnJldHVybiBuZXcg
+RnVuY3Rpb24obSt0KyJ9IikoKX1uPSJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIuc3BsaXQoIiIp
+LnNwbGljZSgwLHItMSkuam9pbigiLCIpCm09InJldHVybiBmdW5jdGlvbigiK24rIil7cmV0dXJuIHRo
+aXMuIitILmQobSkrIi4iK0guZChzKSsiKHRoaXMuIitILmQodCkrIiwgIituKyIpOyIKdD0kLnlqCmlm
+KHR5cGVvZiB0IT09Im51bWJlciIpcmV0dXJuIHQuaCgpCiQueWo9dCsxCnJldHVybiBuZXcgRnVuY3Rp
+b24obSt0KyJ9IikoKX0sCktxOmZ1bmN0aW9uKGEsYixjLGQsZSxmLGcpe3JldHVybiBILmlBKGEsYixj
+LGQsISFlLCEhZixnKX0sClRuOmZ1bmN0aW9uKGEsYil7cmV0dXJuIEguY0Uodi50eXBlVW5pdmVyc2Us
+SC5xKGEuYSksYil9LApQVzpmdW5jdGlvbihhLGIpe3JldHVybiBILmNFKHYudHlwZVVuaXZlcnNlLEgu
+cShhLmMpLGIpfSwKRFY6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuYX0sCnlTOmZ1bmN0aW9uKGEpe3JldHVy
+biBhLmN9LApFMjpmdW5jdGlvbihhKXt2YXIgdCxzLHIscT1uZXcgSC5qeSgic2VsZiIsInRhcmdldCIs
+InJlY2VpdmVyIiwibmFtZSIpLHA9Si5FcChPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhxKSkKZm9y
+KHQ9cC5sZW5ndGgscz0wO3M8dDsrK3Mpe3I9cFtzXQppZihxW3JdPT09YSlyZXR1cm4gcn19LApvVDpm
+dW5jdGlvbihhKXtpZihhPT1udWxsKUguZk8oImJvb2xlYW4gZXhwcmVzc2lvbiBtdXN0IG5vdCBiZSBu
+dWxsIikKcmV0dXJuIGF9LApmTzpmdW5jdGlvbihhKXt0aHJvdyBILmIobmV3IEgua1koYSkpfSwKYWc6
+ZnVuY3Rpb24oYSl7dGhyb3cgSC5iKG5ldyBQLnQ3KGEpKX0sCkVmOmZ1bmN0aW9uKGEpe3JldHVybiBu
+ZXcgSC5FcShhKX0sCllnOmZ1bmN0aW9uKGEpe3JldHVybiB2LmdldElzb2xhdGVUYWcoYSl9LApWTTpm
+dW5jdGlvbihhLGIpe2Fbdi5hcnJheVJ0aV09YgpyZXR1cm4gYX0sCm9YOmZ1bmN0aW9uKGEpe2lmKGE9
+PW51bGwpcmV0dXJuIG51bGwKcmV0dXJuIGEuJHRpfSwKSU06ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBI
+Llk5KGFbIiRhIitILmQoYyldLEgub1goYikpfSwKWTk6ZnVuY3Rpb24oYSxiKXtpZihhPT1udWxsKXJl
+dHVybiBiCmE9YS5hcHBseShudWxsLGIpCmlmKGE9PW51bGwpcmV0dXJuIG51bGwKaWYoQXJyYXkuaXNB
+cnJheShhKSlyZXR1cm4gYQppZih0eXBlb2YgYT09ImZ1bmN0aW9uIilyZXR1cm4gYS5hcHBseShudWxs
+LGIpCnJldHVybiBifSwKSUc6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBhLmFwcGx5KGIsSC5ZOShKLmlh
+KGIpWyIkYSIrSC5kKGMpXSxILm9YKGIpKSl9LAppdzpmdW5jdGlvbihhLGIsYyl7T2JqZWN0LmRlZmlu
+ZVByb3BlcnR5KGEsYix7dmFsdWU6YyxlbnVtZXJhYmxlOmZhbHNlLHdyaXRhYmxlOnRydWUsY29uZmln
+dXJhYmxlOnRydWV9KX0sCkc6ZnVuY3Rpb24oYSl7dmFyIHQscyxyLHEscD1ILmMoJC55LiQxKGEpKSxv
+PSQualtwXQppZihvIT1udWxsKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoYSx2LmRpc3BhdGNoUHJvcGVy
+dHlOYW1lLHt2YWx1ZTpvLGVudW1lcmFibGU6ZmFsc2Usd3JpdGFibGU6dHJ1ZSxjb25maWd1cmFibGU6
+dHJ1ZX0pCnJldHVybiBvLml9dD0kLnZbcF0KaWYodCE9bnVsbClyZXR1cm4gdApzPXYuaW50ZXJjZXB0
+b3JzQnlUYWdbcF0KaWYocz09bnVsbCl7cD1ILmMoJC51LiQyKGEscCkpCmlmKHAhPW51bGwpe289JC5q
+W3BdCmlmKG8hPW51bGwpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShhLHYuZGlzcGF0Y2hQcm9wZXJ0eU5h
+bWUse3ZhbHVlOm8sZW51bWVyYWJsZTpmYWxzZSx3cml0YWJsZTp0cnVlLGNvbmZpZ3VyYWJsZTp0cnVl
+fSkKcmV0dXJuIG8uaX10PSQudltwXQppZih0IT1udWxsKXJldHVybiB0CnM9di5pbnRlcmNlcHRvcnNC
+eVRhZ1twXX19aWYocz09bnVsbClyZXR1cm4gbnVsbAp0PXMucHJvdG90eXBlCnI9cFswXQppZihyPT09
+IiEiKXtvPUgubCh0KQokLmpbcF09bwpPYmplY3QuZGVmaW5lUHJvcGVydHkoYSx2LmRpc3BhdGNoUHJv
+cGVydHlOYW1lLHt2YWx1ZTpvLGVudW1lcmFibGU6ZmFsc2Usd3JpdGFibGU6dHJ1ZSxjb25maWd1cmFi
+bGU6dHJ1ZX0pCnJldHVybiBvLml9aWYocj09PSJ+Iil7JC52W3BdPXQKcmV0dXJuIHR9aWYocj09PSIt
+Iil7cT1ILmwodCkKT2JqZWN0LmRlZmluZVByb3BlcnR5KE9iamVjdC5nZXRQcm90b3R5cGVPZihhKSx2
+LmRpc3BhdGNoUHJvcGVydHlOYW1lLHt2YWx1ZTpxLGVudW1lcmFibGU6ZmFsc2Usd3JpdGFibGU6dHJ1
+ZSxjb25maWd1cmFibGU6dHJ1ZX0pCnJldHVybiBxLml9aWYocj09PSIrIilyZXR1cm4gSC5MYyhhLHQp
+CmlmKHI9PT0iKiIpdGhyb3cgSC5iKFAubihwKSkKaWYodi5sZWFmVGFnc1twXT09PXRydWUpe3E9SC5s
+KHQpCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShPYmplY3QuZ2V0UHJvdG90eXBlT2YoYSksdi5kaXNwYXRj
+aFByb3BlcnR5TmFtZSx7dmFsdWU6cSxlbnVtZXJhYmxlOmZhbHNlLHdyaXRhYmxlOnRydWUsY29uZmln
+dXJhYmxlOnRydWV9KQpyZXR1cm4gcS5pfWVsc2UgcmV0dXJuIEguTGMoYSx0KX0sCkxjOmZ1bmN0aW9u
+KGEsYil7dmFyIHQ9T2JqZWN0LmdldFByb3RvdHlwZU9mKGEpCk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0
+LHYuZGlzcGF0Y2hQcm9wZXJ0eU5hbWUse3ZhbHVlOkouUXUoYix0LG51bGwsbnVsbCksZW51bWVyYWJs
+ZTpmYWxzZSx3cml0YWJsZTp0cnVlLGNvbmZpZ3VyYWJsZTp0cnVlfSkKcmV0dXJuIGJ9LApsOmZ1bmN0
+aW9uKGEpe3JldHVybiBKLlF1KGEsITEsbnVsbCwhIWEuJGlYail9LApWRjpmdW5jdGlvbihhLGIsYyl7
+dmFyIHQ9Yi5wcm90b3R5cGUKaWYodi5sZWFmVGFnc1thXT09PXRydWUpcmV0dXJuIEgubCh0KQplbHNl
+IHJldHVybiBKLlF1KHQsYyxudWxsLG51bGwpfSwKTTpmdW5jdGlvbigpe2lmKCEwPT09JC5LKXJldHVy
+bgokLks9ITAKSC5EKCl9LApEOmZ1bmN0aW9uKCl7dmFyIHQscyxyLHEscCxvLG4sbQokLmo9T2JqZWN0
+LmNyZWF0ZShudWxsKQokLnY9T2JqZWN0LmNyZWF0ZShudWxsKQpILmEoKQp0PXYuaW50ZXJjZXB0b3Jz
+QnlUYWcKcz1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0KQppZih0eXBlb2Ygd2luZG93IT0idW5k
+ZWZpbmVkIil7d2luZG93CnI9ZnVuY3Rpb24oKXt9CmZvcihxPTA7cTxzLmxlbmd0aDsrK3Epe3A9c1tx
+XQpvPSQueDcuJDEocCkKaWYobyE9bnVsbCl7bj1ILlZGKHAsdFtwXSxvKQppZihuIT1udWxsKXtPYmpl
+Y3QuZGVmaW5lUHJvcGVydHkobyx2LmRpc3BhdGNoUHJvcGVydHlOYW1lLHt2YWx1ZTpuLGVudW1lcmFi
+bGU6ZmFsc2Usd3JpdGFibGU6dHJ1ZSxjb25maWd1cmFibGU6dHJ1ZX0pCnIucHJvdG90eXBlPW99fX19
+Zm9yKHE9MDtxPHMubGVuZ3RoOysrcSl7cD1zW3FdCmlmKC9eW0EtWmEtel9dLy50ZXN0KHApKXttPXRb
+cF0KdFsiISIrcF09bQp0WyJ+IitwXT1tCnRbIi0iK3BdPW0KdFsiKyIrcF09bQp0WyIqIitwXT1tfX19
+LAphOmZ1bmN0aW9uKCl7dmFyIHQscyxyLHEscCxvLG49Qy5PNCgpCm49SC5GKEMuWXEsSC5GKEMuS1Us
+SC5GKEMuZlEsSC5GKEMuZlEsSC5GKEMuaTcsSC5GKEMueGksSC5GKEMuZGsoQy53YiksbikpKSkpKSkK
+aWYodHlwZW9mIGRhcnROYXRpdmVEaXNwYXRjaEhvb2tzVHJhbnNmb3JtZXIhPSJ1bmRlZmluZWQiKXt0
+PWRhcnROYXRpdmVEaXNwYXRjaEhvb2tzVHJhbnNmb3JtZXIKaWYodHlwZW9mIHQ9PSJmdW5jdGlvbiIp
+dD1bdF0KaWYodC5jb25zdHJ1Y3Rvcj09QXJyYXkpZm9yKHM9MDtzPHQubGVuZ3RoOysrcyl7cj10W3Nd
+CmlmKHR5cGVvZiByPT0iZnVuY3Rpb24iKW49cihuKXx8bn19cT1uLmdldFRhZwpwPW4uZ2V0VW5rbm93
+blRhZwpvPW4ucHJvdG90eXBlRm9yVGFnCiQueT1uZXcgSC5yKHEpCiQudT1uZXcgSC5kQyhwKQokLng3
+PW5ldyBILndOKG8pfSwKRjpmdW5jdGlvbihhLGIpe3JldHVybiBhKGIpfHxifSwKdjQ6ZnVuY3Rpb24o
+YSxiLGMsZCxlLGYpe3ZhciB0PWI/Im0iOiIiLHM9Yz8iIjoiaSIscj1kPyJ1IjoiIixxPWU/InMiOiIi
+LHA9Zj8iZyI6IiIsbz1mdW5jdGlvbihnLGgpe3RyeXtyZXR1cm4gbmV3IFJlZ0V4cChnLGgpfWNhdGNo
+KG4pe3JldHVybiBufX0oYSx0K3MrcitxK3ApCmlmKG8gaW5zdGFuY2VvZiBSZWdFeHApcmV0dXJuIG8K
+dGhyb3cgSC5iKFAucnIoIklsbGVnYWwgUmVnRXhwIHBhdHRlcm4gKCIrU3RyaW5nKG8pKyIpIixhLG51
+bGwpKX0sCm0yOmZ1bmN0aW9uKGEsYixjKXt2YXIgdAppZih0eXBlb2YgYj09InN0cmluZyIpcmV0dXJu
+IGEuaW5kZXhPZihiLGMpPj0wCmVsc2UgaWYoYiBpbnN0YW5jZW9mIEguVlIpe3Q9Qy54Qi5HKGEsYykK
+cmV0dXJuIGIuYi50ZXN0KHQpfWVsc2V7dD1KLkZMKGIsQy54Qi5HKGEsYykpCnJldHVybiF0LmdsMCh0
+KX19LApBNDpmdW5jdGlvbihhKXtpZihhLmluZGV4T2YoIiQiLDApPj0wKXJldHVybiBhLnJlcGxhY2Uo
+L1wkL2csIiQkJCQiKQpyZXR1cm4gYX0sCmVBOmZ1bmN0aW9uKGEpe2lmKC9bW1xde30oKSorPy5cXF4k
+fF0vLnRlc3QoYSkpcmV0dXJuIGEucmVwbGFjZSgvW1tcXXt9KCkqKz8uXFxeJHxdL2csIlxcJCYiKQpy
+ZXR1cm4gYX0sCnlzOmZ1bmN0aW9uKGEsYixjKXt2YXIgdD1ILm5NKGEsYixjKQpyZXR1cm4gdH0sCm5N
+OmZ1bmN0aW9uKGEsYixjKXt2YXIgdCxzLHIscQppZihiPT09IiIpe2lmKGE9PT0iIilyZXR1cm4gYwp0
+PWEubGVuZ3RoCmZvcihzPWMscj0wO3I8dDsrK3Ipcz1zK2Fbcl0rYwpyZXR1cm4gcy5jaGFyQ29kZUF0
+KDApPT0wP3M6c31xPWEuaW5kZXhPZihiLDApCmlmKHE8MClyZXR1cm4gYQppZihhLmxlbmd0aDw1MDB8
+fGMuaW5kZXhPZigiJCIsMCk+PTApcmV0dXJuIGEuc3BsaXQoYikuam9pbihjKQpyZXR1cm4gYS5yZXBs
+YWNlKG5ldyBSZWdFeHAoSC5lQShiKSwnZycpLEguQTQoYykpfSwKUEQ6ZnVuY3Rpb24gUEQoYSxiKXt0
+aGlzLmE9YQp0aGlzLiR0aT1ifSwKV1U6ZnVuY3Rpb24gV1UoKXt9LApMUDpmdW5jdGlvbiBMUChhLGIs
+YyxkKXt2YXIgXz10aGlzCl8uYT1hCl8uYj1iCl8uYz1jCl8uJHRpPWR9LApYUjpmdW5jdGlvbiBYUihh
+LGIpe3RoaXMuYT1hCnRoaXMuJHRpPWJ9LApMSTpmdW5jdGlvbiBMSShhLGIsYyxkLGUpe3ZhciBfPXRo
+aXMKXy5hPWEKXy5jPWIKXy5kPWMKXy5lPWQKXy5mPWV9LApDajpmdW5jdGlvbiBDaihhLGIsYyl7dGhp
+cy5hPWEKdGhpcy5iPWIKdGhpcy5jPWN9LApmOTpmdW5jdGlvbiBmOShhLGIsYyxkLGUsZil7dmFyIF89
+dGhpcwpfLmE9YQpfLmI9YgpfLmM9YwpfLmQ9ZApfLmU9ZQpfLmY9Zn0sClcwOmZ1bmN0aW9uIFcwKGEs
+Yil7dGhpcy5hPWEKdGhpcy5iPWJ9LAphejpmdW5jdGlvbiBheihhLGIsYyl7dGhpcy5hPWEKdGhpcy5i
+PWIKdGhpcy5jPWN9LAp2VjpmdW5jdGlvbiB2VihhKXt0aGlzLmE9YX0sCmJxOmZ1bmN0aW9uIGJxKGEs
+Yil7dGhpcy5hPWEKdGhpcy5iPWJ9LApBbTpmdW5jdGlvbiBBbShhKXt0aGlzLmE9YX0sClhPOmZ1bmN0
+aW9uIFhPKGEpe3RoaXMuYT1hCnRoaXMuYj1udWxsfSwKVHA6ZnVuY3Rpb24gVHAoKXt9LApsYzpmdW5j
+dGlvbiBsYygpe30sCnp4OmZ1bmN0aW9uIHp4KCl7fSwKank6ZnVuY3Rpb24gankoYSxiLGMsZCl7dmFy
+IF89dGhpcwpfLmE9YQpfLmI9YgpfLmM9YwpfLmQ9ZH0sCkVxOmZ1bmN0aW9uIEVxKGEpe3RoaXMuYT1h
+fSwKa1k6ZnVuY3Rpb24ga1koYSl7dGhpcy5hPWF9LApONTpmdW5jdGlvbiBONShhKXt2YXIgXz10aGlz
+Cl8uYT0wCl8uZj1fLmU9Xy5kPV8uYz1fLmI9bnVsbApfLnI9MApfLiR0aT1hfSwKZGI6ZnVuY3Rpb24g
+ZGIoYSxiKXt2YXIgXz10aGlzCl8uYT1hCl8uYj1iCl8uZD1fLmM9bnVsbH0sCmk1OmZ1bmN0aW9uIGk1
+KGEsYil7dGhpcy5hPWEKdGhpcy4kdGk9Yn0sCk42OmZ1bmN0aW9uIE42KGEsYixjKXt2YXIgXz10aGlz
+Cl8uYT1hCl8uYj1iCl8uZD1fLmM9bnVsbApfLiR0aT1jfSwKcjpmdW5jdGlvbiByKGEpe3RoaXMuYT1h
+fSwKZEM6ZnVuY3Rpb24gZEMoYSl7dGhpcy5hPWF9LAp3TjpmdW5jdGlvbiB3TihhKXt0aGlzLmE9YX0s
+ClZSOmZ1bmN0aW9uIFZSKGEsYil7dmFyIF89dGhpcwpfLmE9YQpfLmI9YgpfLmQ9Xy5jPW51bGx9LApF
+SzpmdW5jdGlvbiBFSyhhKXt0aGlzLmI9YX0sCktXOmZ1bmN0aW9uIEtXKGEsYixjKXt0aGlzLmE9YQp0
+aGlzLmI9Ygp0aGlzLmM9Y30sClBiOmZ1bmN0aW9uIFBiKGEsYixjKXt2YXIgXz10aGlzCl8uYT1hCl8u
+Yj1iCl8uYz1jCl8uZD1udWxsfSwKdFE6ZnVuY3Rpb24gdFEoYSxiKXt0aGlzLmE9YQp0aGlzLmM9Yn0s
+Ck5GOmZ1bmN0aW9uIE5GKGEsYixjKXt0aGlzLmE9YQp0aGlzLmI9Ygp0aGlzLmM9Y30sClNkOmZ1bmN0
+aW9uIFNkKGEsYixjKXt2YXIgXz10aGlzCl8uYT1hCl8uYj1iCl8uYz1jCl8uZD1udWxsfSwKWEY6ZnVu
+Y3Rpb24oYSl7cmV0dXJuIGF9LApEUTpmdW5jdGlvbihhKXtyZXR1cm4gbmV3IEludDhBcnJheShhKX0s
+Cm9kOmZ1bmN0aW9uKGEsYixjKXtpZihhPj4+MCE9PWF8fGE+PWMpdGhyb3cgSC5iKEguSFkoYixhKSl9
+LApyTTpmdW5jdGlvbihhLGIsYyl7dmFyIHQKaWYoIShhPj4+MCE9PWEpKXQ9Yj4+PjAhPT1ifHxhPmJ8
+fGI+YwplbHNlIHQ9ITAKaWYodCl0aHJvdyBILmIoSC5hdShhLGIsYykpCnJldHVybiBifSwKcEY6ZnVu
+Y3Rpb24gcEYoKXt9LApMWjpmdW5jdGlvbiBMWigpe30sCkRnOmZ1bmN0aW9uIERnKCl7fSwKUGc6ZnVu
+Y3Rpb24gUGcoKXt9LAp4ajpmdW5jdGlvbiB4aigpe30sCmRFOmZ1bmN0aW9uIGRFKCl7fSwKWkE6ZnVu
+Y3Rpb24gWkEoKXt9LAp3ZjpmdW5jdGlvbiB3Zigpe30sClBxOmZ1bmN0aW9uIFBxKCl7fSwKZUU6ZnVu
+Y3Rpb24gZUUoKXt9LApWNjpmdW5jdGlvbiBWNigpe30sClJHOmZ1bmN0aW9uIFJHKCl7fSwKVlA6ZnVu
+Y3Rpb24gVlAoKXt9LApXQjpmdW5jdGlvbiBXQigpe30sClpHOmZ1bmN0aW9uIFpHKCl7fSwKY3o6ZnVu
+Y3Rpb24oYSxiKXt2YXIgdD1iLmMKcmV0dXJuIHQ9PW51bGw/Yi5jPUguQmMoYSxiLnosITApOnR9LAp4
+WjpmdW5jdGlvbihhLGIpe3ZhciB0PWIuYwpyZXR1cm4gdD09bnVsbD9iLmM9SC5RMihhLCJiOCIsW2Iu
+el0pOnR9LApRMTpmdW5jdGlvbihhKXt2YXIgdD1hLnkKaWYodD09PTZ8fHQ9PT03fHx0PT09OClyZXR1
+cm4gSC5RMShhLnopCnJldHVybiB0PT09MTF8fHQ9PT0xMn0sCm1EOmZ1bmN0aW9uKGEpe3JldHVybiBh
+LmN5fSwKTjA6ZnVuY3Rpb24oYSl7cmV0dXJuIEguRSh2LnR5cGVVbml2ZXJzZSxhLCExKX0sClBMOmZ1
+bmN0aW9uKGEsYixjLGEwKXt2YXIgdCxzLHIscSxwLG8sbixtLGwsayxqLGksaCxnLGYsZSxkPWIueQpz
+d2l0Y2goZCl7Y2FzZSA1OmNhc2UgMTpjYXNlIDI6Y2FzZSAzOmNhc2UgNDpyZXR1cm4gYgpjYXNlIDY6
+dD1iLnoKcz1ILlBMKGEsdCxjLGEwKQppZihzPT09dClyZXR1cm4gYgpyZXR1cm4gSC5TTyhhLHMsITAp
+CmNhc2UgNzp0PWIuegpzPUguUEwoYSx0LGMsYTApCmlmKHM9PT10KXJldHVybiBiCnJldHVybiBILkJj
+KGEscywhMCkKY2FzZSA4OnQ9Yi56CnM9SC5QTChhLHQsYyxhMCkKaWYocz09PXQpcmV0dXJuIGIKcmV0
+dXJuIEguTE4oYSxzLCEwKQpjYXNlIDk6cj1iLlEKcT1ILmJaKGEscixjLGEwKQppZihxPT09cilyZXR1
+cm4gYgpyZXR1cm4gSC5RMihhLGIueixxKQpjYXNlIDEwOnA9Yi56Cm89SC5QTChhLHAsYyxhMCkKbj1i
+LlEKbT1ILmJaKGEsbixjLGEwKQppZihvPT09cCYmbT09PW4pcmV0dXJuIGIKcmV0dXJuIEguYXAoYSxv
+LG0pCmNhc2UgMTE6bD1iLnoKaz1ILlBMKGEsbCxjLGEwKQpqPWIuUQppPUgucVQoYSxqLGMsYTApCmlm
+KGs9PT1sJiZpPT09ailyZXR1cm4gYgpyZXR1cm4gSC5OZihhLGssaSkKY2FzZSAxMjpoPWIuUQphMCs9
+aC5sZW5ndGgKZz1ILmJaKGEsaCxjLGEwKQpwPWIuegpvPUguUEwoYSxwLGMsYTApCmlmKGc9PT1oJiZv
+PT09cClyZXR1cm4gYgpyZXR1cm4gSC5EUyhhLG8sZywhMCkKY2FzZSAxMzpmPWIuegppZihmPGEwKXJl
+dHVybiBiCmU9Y1tmLWEwXQppZihlPT1udWxsKXJldHVybiBiCnJldHVybiBlCmRlZmF1bHQ6dGhyb3cg
+SC5iKFAuaFYoIkF0dGVtcHRlZCB0byBzdWJzdGl0dXRlIHVuZXhwZWN0ZWQgUlRJIGtpbmQgIitkKSl9
+fSwKYlo6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIHQscyxyLHEscD1iLmxlbmd0aCxvPVtdCmZvcih0PSEx
+LHM9MDtzPHA7KytzKXtyPWJbc10KcT1ILlBMKGEscixjLGQpCmlmKHEhPT1yKXQ9ITAKby5wdXNoKHEp
+fXJldHVybiB0P286Yn0sCnZPOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciB0LHMscixxLHAsbz1iLmxlbmd0
+aCxuPVtdCmZvcih0PSExLHM9MDtzPG87cys9Mil7cj1iW3NdCnE9YltzKzFdCnA9SC5QTChhLHEsYyxk
+KQppZihwIT09cSl0PSEwCm4ucHVzaChyKQpuLnB1c2gocCl9cmV0dXJuIHQ/bjpifSwKcVQ6ZnVuY3Rp
+b24oYSxiLGMsZCl7dmFyIHQscz1iLmEscj1ILmJaKGEscyxjLGQpLHE9Yi5iLHA9SC5iWihhLHEsYyxk
+KSxvPWIuYyxuPUgudk8oYSxvLGMsZCkKaWYocj09PXMmJnA9PT1xJiZuPT09bylyZXR1cm4gYgp0PW5l
+dyBILkVUKCkKdC5hPXIKdC5iPXAKdC5jPW4KcmV0dXJuIHR9LApKUzpmdW5jdGlvbihhKXt2YXIgdD1h
+LiRTCmlmKHQhPW51bGwpe2lmKHR5cGVvZiB0PT0ibnVtYmVyIilyZXR1cm4gSC5CcCh0KQpyZXR1cm4g
+YS4kUygpfXJldHVybiBudWxsfSwKVWU6ZnVuY3Rpb24oYSxiKXt2YXIgdAppZihILlExKGIpKWlmKGEg
+aW5zdGFuY2VvZiBILlRwKXt0PUguSlMoYSkKaWYodCE9bnVsbClyZXR1cm4gdH1yZXR1cm4gSC5xKGEp
+fSwKcTpmdW5jdGlvbihhKXt2YXIgdAppZihhIGluc3RhbmNlb2YgUC5NaCl7dD1hLiR0aQpyZXR1cm4g
+dCE9bnVsbD90OkguVlUoYSl9aWYoQXJyYXkuaXNBcnJheShhKSlyZXR1cm4gSC50NihhKQpyZXR1cm4g
+SC5WVShKLmlhKGEpKX0sCnQ2OmZ1bmN0aW9uKGEpe3ZhciB0PWFbdi5hcnJheVJ0aV0scz11Lm0KaWYo
+dD09bnVsbClyZXR1cm4gcwppZih0LmNvbnN0cnVjdG9yIT09cy5jb25zdHJ1Y3RvcilyZXR1cm4gcwpy
+ZXR1cm4gdH0sCkxoOmZ1bmN0aW9uKGEpe3ZhciB0PWEuJHRpCnJldHVybiB0IT1udWxsP3Q6SC5WVShh
+KX0sClZVOmZ1bmN0aW9uKGEpe3ZhciB0PWEuY29uc3RydWN0b3Iscz10LiRjY2FjaGUKaWYocyE9bnVs
+bClyZXR1cm4gcwpyZXR1cm4gSC5yOShhLHQpfSwKcjk6ZnVuY3Rpb24oYSxiKXt2YXIgdD1hIGluc3Rh
+bmNlb2YgSC5UcD9hLl9fcHJvdG9fXy5fX3Byb3RvX18uY29uc3RydWN0b3I6YixzPUguYWkodi50eXBl
+VW5pdmVyc2UsdC5uYW1lKQpiLiRjY2FjaGU9cwpyZXR1cm4gc30sCkJwOmZ1bmN0aW9uKGEpe3ZhciB0
+LHM9YSxyPXYudHlwZXMscT1yW3NdCmlmKHR5cGVvZiBxPT0ic3RyaW5nIil7dD1ILkUodi50eXBlVW5p
+dmVyc2UscSwhMSkKcltzXT10CnJldHVybiB0fXJldHVybiBxfSwKSko6ZnVuY3Rpb24oYSl7dmFyIHQ9
+dGhpcyxzPUguWU8scj11LksKaWYodD09PXIpe3M9SC5rZQp0LmE9SC5UaX1lbHNlIGlmKEguQTgodCl8
+fHQ9PT1yKXtzPUguSXcKdC5hPUguaG59ZWxzZSBpZih0PT09dS5xKXM9SC5vawplbHNlIGlmKHQ9PT11
+LmdSKXM9SC5LSAplbHNlIGlmKHQ9PT11LmRpKXM9SC5LSAplbHNlIGlmKHQ9PT11Lk4pcz1ILk1NCmVs
+c2UgaWYodD09PXUueSlzPUguclEKZWxzZSBpZih0Lnk9PT05KXtyPXQuegppZih0LlEuZXZlcnkoSC5j
+Yykpe3Qucj0iJGkiK3IKcz1ILnQ0fX10LmI9cwpyZXR1cm4gdC5iKGEpfSwKWU86ZnVuY3Rpb24oYSl7
+dmFyIHQ9dGhpcwpyZXR1cm4gSC5XZSh2LnR5cGVVbml2ZXJzZSxILlVlKGEsdCksbnVsbCx0LG51bGwp
+fSwKdDQ6ZnVuY3Rpb24oYSl7dmFyIHQ9dGhpcyxzPXQucgppZihhIGluc3RhbmNlb2YgUC5NaClyZXR1
+cm4hIWFbc10KcmV0dXJuISFKLmlhKGEpW3NdfSwKT3o6ZnVuY3Rpb24oYSl7dmFyIHQ9dGhpcwppZihh
+PT1udWxsKXJldHVybiBhCmVsc2UgaWYodC5iKGEpKXJldHVybiBhCnRocm93IEguYihILlpjKEgucChh
+LEguVWUoYSx0KSxILkoodCxudWxsKSkpKX0sCkRoOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciB0PW51bGwK
+aWYoSC5XZSh2LnR5cGVVbml2ZXJzZSxhLHQsYix0KSlyZXR1cm4gYQp0aHJvdyBILmIoSC5aYygiVGhl
+IHR5cGUgYXJndW1lbnQgJyIrSC5kKEguSihhLHQpKSsiJyBpcyBub3QgYSBzdWJ0eXBlIG9mIHRoZSB0
+eXBlIHZhcmlhYmxlIGJvdW5kICciK0guZChILkooYix0KSkrIicgb2YgdHlwZSB2YXJpYWJsZSAnIitj
+KyInIGluICciK0guZChkKSsiJy4iKSl9LApwOmZ1bmN0aW9uKGEsYixjKXt2YXIgdD1QLmgoYSkscz1I
+LkooYj09bnVsbD9ILnEoYSk6YixudWxsKQpyZXR1cm4gdCsiOiB0eXBlICciK0guZChzKSsiJyBpcyBu
+b3QgYSBzdWJ0eXBlIG9mIHR5cGUgJyIrSC5kKGMpKyInIn0sClpjOmZ1bmN0aW9uKGEpe3JldHVybiBu
+ZXcgSC54KCJUeXBlRXJyb3I6ICIrYSl9LApCOmZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyBILngoIlR5
+cGVFcnJvcjogIitILnAoYSxudWxsLGIpKX0sCmtlOmZ1bmN0aW9uKGEpe3JldHVybiEwfSwKVGk6ZnVu
+Y3Rpb24oYSl7cmV0dXJuIGF9LApJdzpmdW5jdGlvbihhKXtyZXR1cm4hMH0sCmhuOmZ1bmN0aW9uKGEp
+e3JldHVybiBhfSwKclE6ZnVuY3Rpb24oYSl7cmV0dXJuITA9PT1hfHwhMT09PWF9LApFOTpmdW5jdGlv
+bihhKXtpZighMD09PWF8fCExPT09YSlyZXR1cm4gYQppZihhPT1udWxsKXJldHVybiBhCnRocm93IEgu
+YihILkIoYSwiYm9vbCIpKX0sCmRqOmZ1bmN0aW9uKGEpe2lmKHR5cGVvZiBhPT0ibnVtYmVyIilyZXR1
+cm4gYQppZihhPT1udWxsKXJldHVybiBhCnRocm93IEguYihILkIoYSwiZG91YmxlIikpfSwKb2s6ZnVu
+Y3Rpb24oYSl7cmV0dXJuIHR5cGVvZiBhPT0ibnVtYmVyIiYmTWF0aC5mbG9vcihhKT09PWF9LApXWTpm
+dW5jdGlvbihhKXtpZih0eXBlb2YgYT09Im51bWJlciImJk1hdGguZmxvb3IoYSk9PT1hKXJldHVybiBh
+CmlmKGE9PW51bGwpcmV0dXJuIGEKdGhyb3cgSC5iKEguQihhLCJpbnQiKSl9LApLSDpmdW5jdGlvbihh
+KXtyZXR1cm4gdHlwZW9mIGE9PSJudW1iZXIifSwKdVU6ZnVuY3Rpb24oYSl7aWYodHlwZW9mIGE9PSJu
+dW1iZXIiKXJldHVybiBhCmlmKGE9PW51bGwpcmV0dXJuIGEKdGhyb3cgSC5iKEguQihhLCJudW0iKSl9
+LApNTTpmdW5jdGlvbihhKXtyZXR1cm4gdHlwZW9mIGE9PSJzdHJpbmcifSwKYzpmdW5jdGlvbihhKXtp
+Zih0eXBlb2YgYT09InN0cmluZyIpcmV0dXJuIGEKaWYoYT09bnVsbClyZXR1cm4gYQp0aHJvdyBILmIo
+SC5CKGEsIlN0cmluZyIpKX0sCnc6ZnVuY3Rpb24oYSxiKXt2YXIgdCxzLHIKZm9yKHQ9IiIscz0iIixy
+PTA7cjxhLmxlbmd0aDsrK3Iscz0iLCAiKXQrPUMueEIuaChzLEguSihhW3JdLGIpKQpyZXR1cm4gdH0s
+CmY6ZnVuY3Rpb24oYTEsYTIsYTMpe3ZhciB0LHMscixxLHAsbyxuLG0sbCxrLGosaSxoLGcsZixlLGQs
+YyxiLGEsYTA9IiwgIgppZihhMyE9bnVsbCl7dD1hMy5sZW5ndGgKaWYoYTI9PW51bGwpe2EyPUguVk0o
+W10sdS5zKQpzPW51bGx9ZWxzZSBzPWEyLmxlbmd0aApyPWEyLmxlbmd0aApmb3IocT10O3E+MDstLXEp
+Qy5ObS5pKGEyLCJUIisocitxKSkKZm9yKHA9dS5LLG89IjwiLG49IiIscT0wO3E8dDsrK3Esbj1hMCl7
+bys9bgptPWEyLmxlbmd0aApsPW0tMS1xCmlmKGw8MClyZXR1cm4gSC5rKGEyLGwpCm89Qy54Qi5oKG8s
+YTJbbF0pCms9YTNbcV0KaWYoIShILkE4KGspfHxrPT09cCkpbT0hKGs9PT1wKQplbHNlIG09ITEKaWYo
+bSlvKz1DLnhCLmgoIiBleHRlbmRzICIsSC5KKGssYTIpKX1vKz0iPiJ9ZWxzZXtvPSIiCnM9bnVsbH1w
+PWExLnoKaj1hMS5RCmk9ai5hCmg9aS5sZW5ndGgKZz1qLmIKZj1nLmxlbmd0aAplPWouYwpkPWUubGVu
+Z3RoCmM9SC5KKHAsYTIpCmZvcihiPSIiLGE9IiIscT0wO3E8aDsrK3EsYT1hMCliKz1DLnhCLmgoYSxI
+LkooaVtxXSxhMikpCmlmKGY+MCl7Yis9YSsiWyIKZm9yKGE9IiIscT0wO3E8ZjsrK3EsYT1hMCliKz1D
+LnhCLmgoYSxILkooZ1txXSxhMikpCmIrPSJdIn1pZihkPjApe2IrPWErInsiCmZvcihhPSIiLHE9MDtx
+PGQ7cSs9MixhPWEwKWIrPUMueEIuaChhLEguSihlW3ErMV0sYTIpKSsiICIrZVtxXQpiKz0ifSJ9aWYo
+cyE9bnVsbClhMi5sZW5ndGg9cwpyZXR1cm4gbysiKCIrYisiKSA9PiAiK0guZChjKX0sCko6ZnVuY3Rp
+b24oYSxiKXt2YXIgdCxzLHIscSxwLG8sbixtPWEueQppZihtPT09NSlyZXR1cm4iZXJhc2VkIgppZiht
+PT09MilyZXR1cm4iZHluYW1pYyIKaWYobT09PTMpcmV0dXJuInZvaWQiCmlmKG09PT0xKXJldHVybiJO
+ZXZlciIKaWYobT09PTQpcmV0dXJuImFueSIKaWYobT09PTYpe3Q9SC5KKGEueixiKQpyZXR1cm4gdH1p
+ZihtPT09Nyl7cz1hLnoKdD1ILkoocyxiKQpyPXMueQpyZXR1cm4gSi5tKHI9PT0xMXx8cj09PTEyP0Mu
+eEIuaCgiKCIsdCkrIikiOnQsIj8iKX1pZihtPT09OClyZXR1cm4iRnV0dXJlT3I8IitILmQoSC5KKGEu
+eixiKSkrIj4iCmlmKG09PT05KXtxPUguQyhhLnopCnA9YS5RCnJldHVybiBwLmxlbmd0aCE9PTA/cSso
+IjwiK0gudyhwLGIpKyI+Iik6cX1pZihtPT09MTEpcmV0dXJuIEguZihhLGIsbnVsbCkKaWYobT09PTEy
+KXJldHVybiBILmYoYS56LGIsYS5RKQppZihtPT09MTMpe289YS56Cm49Yi5sZW5ndGgKbz1uLTEtbwpp
+ZihvPDB8fG8+PW4pcmV0dXJuIEguayhiLG8pCnJldHVybiBiW29dfXJldHVybiI/In0sCkM6ZnVuY3Rp
+b24oYSl7dmFyIHQscz1ILkpnKGEpCmlmKHMhPW51bGwpcmV0dXJuIHMKdD0ibWluaWZpZWQ6IithCnJl
+dHVybiB0fSwKUW86ZnVuY3Rpb24oYSxiKXt2YXIgdD1hLnRSW2JdCmZvcig7dHlwZW9mIHQ9PSJzdHJp
+bmciOyl0PWEudFJbdF0KcmV0dXJuIHR9LAphaTpmdW5jdGlvbihhLGIpe3ZhciB0LHMscixxLHAsbz1h
+LmVULG49b1tiXQppZihuPT1udWxsKXJldHVybiBILkUoYSxiLCExKQplbHNlIGlmKHR5cGVvZiBuPT0i
+bnVtYmVyIil7dD1uCnM9SC5tWihhLDUsIiMiKQpyPVtdCmZvcihxPTA7cTx0OysrcSlyLnB1c2gocykK
+cD1ILlEyKGEsYixyKQpvW2JdPXAKcmV0dXJuIHB9ZWxzZSByZXR1cm4gbn0sCnhiOmZ1bmN0aW9uKGEs
+Yil7cmV0dXJuIEguSXgoYS50UixiKX0sCkZGOmZ1bmN0aW9uKGEsYil7cmV0dXJuIEguSXgoYS5lVCxi
+KX0sCkU6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0LHM9YS5lQyxyPXMuZ2V0KGIpCmlmKHIhPW51bGwpcmV0
+dXJuIHIKdD1ILnooYSxudWxsLGIsYykKcy5zZXQoYix0KQpyZXR1cm4gdH0sCmNFOmZ1bmN0aW9uKGEs
+YixjKXt2YXIgdCxzLHI9Yi5jaAppZihyPT1udWxsKXI9Yi5jaD1uZXcgTWFwKCkKdD1yLmdldChjKQpp
+Zih0IT1udWxsKXJldHVybiB0CnM9SC56KGEsYixjLCEwKQpyLnNldChjLHMpCnJldHVybiBzfSwKdjU6
+ZnVuY3Rpb24oYSxiLGMpe3ZhciB0LHMscixxPWIuY3gKaWYocT09bnVsbClxPWIuY3g9bmV3IE1hcCgp
+CnQ9Yy5jeQpzPXEuZ2V0KHQpCmlmKHMhPW51bGwpcmV0dXJuIHMKcj1ILmFwKGEsYixjLnk9PT0xMD9j
+LlE6W2NdKQpxLnNldCh0LHIpCnJldHVybiByfSwKejpmdW5jdGlvbihhLGIsYyxkKXt2YXIgdD1ILmko
+SC5vKGEsYixjLGQpKQppZih0IT1udWxsKXJldHVybiB0CnRocm93IEguYihQLm4oJ19Vbml2ZXJzZS5f
+cGFyc2VSZWNpcGUoIicrSC5kKGMpKyciKScpKX0sCkJEOmZ1bmN0aW9uKGEsYil7Yi5hPUguT3oKYi5i
+PUguSkoKcmV0dXJuIGJ9LAptWjpmdW5jdGlvbihhLGIsYyl7dmFyIHQscyxyPWEuZUMuZ2V0KGMpCmlm
+KHIhPW51bGwpcmV0dXJuIHIKdD1uZXcgSC5KYyhudWxsLG51bGwpCnQueT1iCnQuY3k9YwpzPUguQkQo
+YSx0KQphLmVDLnNldChjLHMpCnJldHVybiBzfSwKU086ZnVuY3Rpb24oYSxiLGMpe3ZhciB0LHM9Yi5j
+eSsiKiIscj1hLmVDLmdldChzKQppZihyIT1udWxsKXJldHVybiByCnQ9SC5aNyhhLGIscyxjKQphLmVD
+LnNldChzLHQpCnJldHVybiB0fSwKWjc6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIHQscwppZihkKXt0PWIu
+eQppZihILkE4KGIpfHxiPT09dS5LfHxiPT09dS5QfHx0PT09N3x8dD09PTYpcmV0dXJuIGJ9cz1uZXcg
+SC5KYyhudWxsLG51bGwpCnMueT02CnMuej1iCnMuY3k9YwpyZXR1cm4gSC5CRChhLHMpfSwKQmM6ZnVu
+Y3Rpb24oYSxiLGMpe3ZhciB0LHM9Yi5jeSsiPyIscj1hLmVDLmdldChzKQppZihyIT1udWxsKXJldHVy
+biByCnQ9SC5sbChhLGIscyxjKQphLmVDLnNldChzLHQpCnJldHVybiB0fSwKbGw6ZnVuY3Rpb24oYSxi
+LGMsZCl7dmFyIHQscyxyLHEscAppZihkKXt0PWIueQppZighSC5BOChiKSlpZighKGI9PT11LlApKWlm
+KHQhPT03KXM9dD09PTgmJkgubFIoYi56KQplbHNlIHM9ITAKZWxzZSBzPSEwCmVsc2Ugcz0hMAppZihz
+KXJldHVybiBiCmVsc2UgaWYodD09PTEpcmV0dXJuIHUuUAplbHNlIGlmKHQ9PT02KXtyPWIuegpxPXIu
+eQppZihxPT09MSlyZXR1cm4gdS5QCmVsc2UgaWYocT09PTgmJkgubFIoci56KSlyZXR1cm4gcgplbHNl
+IHJldHVybiBILmN6KGEsYil9fXA9bmV3IEguSmMobnVsbCxudWxsKQpwLnk9NwpwLno9YgpwLmN5PWMK
+cmV0dXJuIEguQkQoYSxwKX0sCkxOOmZ1bmN0aW9uKGEsYixjKXt2YXIgdCxzPWIuY3krIi8iLHI9YS5l
+Qy5nZXQocykKaWYociE9bnVsbClyZXR1cm4gcgp0PUguZVYoYSxiLHMsYykKYS5lQy5zZXQocyx0KQpy
+ZXR1cm4gdH0sCmVWOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciB0LHMKaWYoZCl7dD1iLnkKaWYoSC5BOChi
+KXx8Yj09PXUuS3x8Yj09PXUuSylyZXR1cm4gYgplbHNlIGlmKHQ9PT0xKXJldHVybiBILlEyKGEsImI4
+IixbYl0pCmVsc2UgaWYoYj09PXUuUClyZXR1cm4gdS5hUX1zPW5ldyBILkpjKG51bGwsbnVsbCkKcy55
+PTgKcy56PWIKcy5jeT1jCnJldHVybiBILkJEKGEscyl9LApIYzpmdW5jdGlvbihhLGIpe3ZhciB0LHMs
+cj0iIitiKyJeIixxPWEuZUMuZ2V0KHIpCmlmKHEhPW51bGwpcmV0dXJuIHEKdD1uZXcgSC5KYyhudWxs
+LG51bGwpCnQueT0xMwp0Lno9Ygp0LmN5PXIKcz1ILkJEKGEsdCkKYS5lQy5zZXQocixzKQpyZXR1cm4g
+c30sClV4OmZ1bmN0aW9uKGEpe3ZhciB0LHMscixxPWEubGVuZ3RoCmZvcih0PSIiLHM9IiIscj0wO3I8
+cTsrK3Iscz0iLCIpdCs9cythW3JdLmN5CnJldHVybiB0fSwKUzQ6ZnVuY3Rpb24oYSl7dmFyIHQscyxy
+LHEscCxvPWEubGVuZ3RoCmZvcih0PSIiLHM9IiIscj0wO3I8bztyKz0yLHM9IiwiKXtxPWFbcl0KcD1h
+W3IrMV0uY3kKdCs9cytxKyI6IitwfXJldHVybiB0fSwKUTI6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0LHMs
+cixxPWIKaWYoYy5sZW5ndGghPT0wKXErPSI8IitILlV4KGMpKyI+Igp0PWEuZUMuZ2V0KHEpCmlmKHQh
+PW51bGwpcmV0dXJuIHQKcz1uZXcgSC5KYyhudWxsLG51bGwpCnMueT05CnMuej1iCnMuUT1jCmlmKGMu
+bGVuZ3RoPjApcy5jPWNbMF0Kcy5jeT1xCnI9SC5CRChhLHMpCmEuZUMuc2V0KHEscikKcmV0dXJuIHJ9
+LAphcDpmdW5jdGlvbihhLGIsYyl7dmFyIHQscyxyLHEscCxvCmlmKGIueT09PTEwKXt0PWIuegpzPWIu
+US5jb25jYXQoYyl9ZWxzZXtzPWMKdD1ifXI9dC5jeSsiOyIrKCI8IitILlV4KHMpKyI+IikKcT1hLmVD
+LmdldChyKQppZihxIT1udWxsKXJldHVybiBxCnA9bmV3IEguSmMobnVsbCxudWxsKQpwLnk9MTAKcC56
+PXQKcC5RPXMKcC5jeT1yCm89SC5CRChhLHApCmEuZUMuc2V0KHIsbykKcmV0dXJuIG99LApOZjpmdW5j
+dGlvbihhLGIsYyl7dmFyIHQscyxyLHEscD1iLmN5LG89Yy5hLG49by5sZW5ndGgsbT1jLmIsbD1tLmxl
+bmd0aCxrPWMuYyxqPWsubGVuZ3RoLGk9IigiK0guVXgobykKaWYobD4wKWkrPShuPjA/IiwiOiIiKSsi
+WyIrSC5VeChtKSsiXSIKaWYoaj4wKWkrPShuPjA/IiwiOiIiKSsieyIrSC5TNChrKSsifSIKdD1wKyhp
+KyIpIikKcz1hLmVDLmdldCh0KQppZihzIT1udWxsKXJldHVybiBzCnI9bmV3IEguSmMobnVsbCxudWxs
+KQpyLnk9MTEKci56PWIKci5RPWMKci5jeT10CnE9SC5CRChhLHIpCmEuZUMuc2V0KHQscSkKcmV0dXJu
+IHF9LApEUzpmdW5jdGlvbihhLGIsYyxkKXt2YXIgdCxzPWIuY3krIjwiK0guVXgoYykrIj4iLHI9YS5l
+Qy5nZXQocykKaWYociE9bnVsbClyZXR1cm4gcgp0PUguaHcoYSxiLGMscyxkKQphLmVDLnNldChzLHQp
+CnJldHVybiB0fSwKaHc6ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgdCxzLHIscSxwLG8sbixtCmlmKGUp
+e3Q9Yy5sZW5ndGgKcz1uZXcgQXJyYXkodCkKZm9yKHI9MCxxPTA7cTx0OysrcSl7cD1jW3FdCmlmKHAu
+eT09PTEpe3NbcV09cDsrK3J9fWlmKHI+MCl7bz1ILlBMKGEsYixzLDApCm49SC5iWihhLGMscywwKQpy
+ZXR1cm4gSC5EUyhhLG8sbixjIT09bil9fW09bmV3IEguSmMobnVsbCxudWxsKQptLnk9MTIKbS56PWIK
+bS5RPWMKbS5jeT1kCnJldHVybiBILkJEKGEsbSl9LApvOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybnt1
+OmEsZTpiLHI6YyxzOltdLHA6MCxuOmR9fSwKaTpmdW5jdGlvbihhKXt2YXIgdCxzLHIscSxwLG8sbixt
+LGwsayxqLGksaD1hLnIsZz1hLnMKZm9yKHQ9aC5sZW5ndGgscz0wO3M8dDspe3I9aC5jaGFyQ29kZUF0
+KHMpCmlmKHI+PTQ4JiZyPD01NylzPUguQWwocysxLHIsaCxnKQplbHNlIGlmKCgoKHJ8MzIpPj4+MCkt
+OTcmNjU1MzUpPDI2fHxyPT09OTV8fHI9PT0zNilzPUguUjgoYSxzLGgsZywhMSkKZWxzZSBpZihyPT09
+NDYpcz1ILlI4KGEscyxoLGcsITApCmVsc2V7KytzCnN3aXRjaChyKXtjYXNlIDQ0OmJyZWFrCmNhc2Ug
+NTg6YnJlYWsKY2FzZSA1OTpnLnB1c2goSC5LUShhLnUsYS5lLGcucG9wKCkpKQpicmVhawpjYXNlIDk0
+OmcucHVzaChILkhjKGEudSxnLnBvcCgpKSkKYnJlYWsKY2FzZSAzNTpnLnB1c2goSC5tWihhLnUsNSwi
+IyIpKQpicmVhawpjYXNlIDY0OmcucHVzaChILm1aKGEudSwyLCJAIikpCmJyZWFrCmNhc2UgMTI2Omcu
+cHVzaChILm1aKGEudSwzLCJ+IikpCmJyZWFrCmNhc2UgNjA6Zy5wdXNoKGEucCkKYS5wPWcubGVuZ3Ro
+CmJyZWFrCmNhc2UgNjI6cT1hLnUKcD1nLnNwbGljZShhLnApCkguclQoYS51LGEuZSxwKQphLnA9Zy5w
+b3AoKQpvPWcucG9wKCkKaWYodHlwZW9mIG89PSJzdHJpbmciKWcucHVzaChILlEyKHEsbyxwKSkKZWxz
+ZXtuPUguS1EocSxhLmUsbykKc3dpdGNoKG4ueSl7Y2FzZSAxMTpnLnB1c2goSC5EUyhxLG4scCxhLm4p
+KQpicmVhawpkZWZhdWx0OmcucHVzaChILmFwKHEsbixwKSkKYnJlYWt9fWJyZWFrCmNhc2UgMzg6SC5J
+MyhhLGcpCmJyZWFrCmNhc2UgNDI6bT1hLnUKZy5wdXNoKEguU08obSxILktRKG0sYS5lLGcucG9wKCkp
+LGEubikpCmJyZWFrCmNhc2UgNjM6bT1hLnUKZy5wdXNoKEguQmMobSxILktRKG0sYS5lLGcucG9wKCkp
+LGEubikpCmJyZWFrCmNhc2UgNDc6bT1hLnUKZy5wdXNoKEguTE4obSxILktRKG0sYS5lLGcucG9wKCkp
+LGEubikpCmJyZWFrCmNhc2UgNDA6Zy5wdXNoKGEucCkKYS5wPWcubGVuZ3RoCmJyZWFrCmNhc2UgNDE6
+cT1hLnUKbD1uZXcgSC5FVCgpCms9cS5zRUEKaj1xLnNFQQpvPWcucG9wKCkKaWYodHlwZW9mIG89PSJu
+dW1iZXIiKXN3aXRjaChvKXtjYXNlLTE6az1nLnBvcCgpCmJyZWFrCmNhc2UtMjpqPWcucG9wKCkKYnJl
+YWsKZGVmYXVsdDpnLnB1c2gobykKYnJlYWt9ZWxzZSBnLnB1c2gobykKcD1nLnNwbGljZShhLnApCkgu
+clQoYS51LGEuZSxwKQphLnA9Zy5wb3AoKQpsLmE9cApsLmI9awpsLmM9agpnLnB1c2goSC5OZihxLEgu
+S1EocSxhLmUsZy5wb3AoKSksbCkpCmJyZWFrCmNhc2UgOTE6Zy5wdXNoKGEucCkKYS5wPWcubGVuZ3Ro
+CmJyZWFrCmNhc2UgOTM6cD1nLnNwbGljZShhLnApCkguclQoYS51LGEuZSxwKQphLnA9Zy5wb3AoKQpn
+LnB1c2gocCkKZy5wdXNoKC0xKQpicmVhawpjYXNlIDEyMzpnLnB1c2goYS5wKQphLnA9Zy5sZW5ndGgK
+YnJlYWsKY2FzZSAxMjU6cD1nLnNwbGljZShhLnApCkguV1MoYS51LGEuZSxwKQphLnA9Zy5wb3AoKQpn
+LnB1c2gocCkKZy5wdXNoKC0yKQpicmVhawpkZWZhdWx0OnRocm93IkJhZCBjaGFyYWN0ZXIgIityfX19
+aT1nLnBvcCgpCnJldHVybiBILktRKGEudSxhLmUsaSl9LApBbDpmdW5jdGlvbihhLGIsYyxkKXt2YXIg
+dCxzLHI9Yi00OApmb3IodD1jLmxlbmd0aDthPHQ7KythKXtzPWMuY2hhckNvZGVBdChhKQppZighKHM+
+PTQ4JiZzPD01NykpYnJlYWsKcj1yKjEwKyhzLTQ4KX1kLnB1c2gocikKcmV0dXJuIGF9LApSODpmdW5j
+dGlvbihhLGIsYyxkLGUpe3ZhciB0LHMscixxLHAsbyxuPWIrMQpmb3IodD1jLmxlbmd0aDtuPHQ7Kytu
+KXtzPWMuY2hhckNvZGVBdChuKQppZihzPT09NDYpe2lmKGUpYnJlYWsKZT0hMH1lbHNle2lmKCEoKCgo
+c3wzMik+Pj4wKS05NyY2NTUzNSk8MjZ8fHM9PT05NXx8cz09PTM2KSlyPXM+PTQ4JiZzPD01NwplbHNl
+IHI9ITAKaWYoIXIpYnJlYWt9fXE9Yy5zdWJzdHJpbmcoYixuKQppZihlKXt0PWEudQpwPWEuZQppZihw
+Lnk9PT0xMClwPXAuegpvPUguUW8odCxwLnopW3FdCmlmKG89PW51bGwpSC52aCgnTm8gIicrcSsnIiBp
+biAiJytILm1EKHApKyciJykKZC5wdXNoKEguY0UodCxwLG8pKX1lbHNlIGQucHVzaChxKQpyZXR1cm4g
+bn0sCkkzOmZ1bmN0aW9uKGEsYil7dmFyIHQ9Yi5wb3AoKQppZigwPT09dCl7Yi5wdXNoKEgubVooYS51
+LDEsIjAmIikpCnJldHVybn1pZigxPT09dCl7Yi5wdXNoKEgubVooYS51LDQsIjEmIikpCnJldHVybn10
+aHJvdyBILmIoUC5oVigiVW5leHBlY3RlZCBleHRlbmRlZCBvcGVyYXRpb24gIitILmQodCkpKX0sCktR
+OmZ1bmN0aW9uKGEsYixjKXtpZih0eXBlb2YgYz09InN0cmluZyIpcmV0dXJuIEguUTIoYSxjLGEuc0VB
+KQplbHNlIGlmKHR5cGVvZiBjPT0ibnVtYmVyIilyZXR1cm4gSC5UVihhLGIsYykKZWxzZSByZXR1cm4g
+Y30sCnJUOmZ1bmN0aW9uKGEsYixjKXt2YXIgdCxzPWMubGVuZ3RoCmZvcih0PTA7dDxzOysrdCljW3Rd
+PUguS1EoYSxiLGNbdF0pfSwKV1M6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0LHM9Yy5sZW5ndGgKZm9yKHQ9
+MTt0PHM7dCs9MiljW3RdPUguS1EoYSxiLGNbdF0pfSwKVFY6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0LHMs
+cj1iLnkKaWYocj09PTEwKXtpZihjPT09MClyZXR1cm4gYi56CnQ9Yi5RCnM9dC5sZW5ndGgKaWYoYzw9
+cylyZXR1cm4gdFtjLTFdCmMtPXMKYj1iLnoKcj1iLnl9ZWxzZSBpZihjPT09MClyZXR1cm4gYgppZihy
+IT09OSl0aHJvdyBILmIoUC5oVigiSW5kZXhlZCBiYXNlIG11c3QgYmUgYW4gaW50ZXJmYWNlIHR5cGUi
+KSkKdD1iLlEKaWYoYzw9dC5sZW5ndGgpcmV0dXJuIHRbYy0xXQp0aHJvdyBILmIoUC5oVigiQmFkIGlu
+ZGV4ICIrYysiIGZvciAiK2IuWigwKSkpfSwKV2U6ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgdCxzLHIs
+cSxwLG8sbixtLGwsawppZihiPT09ZClyZXR1cm4hMAppZihILkE4KGQpfHxkPT09dS5LKXJldHVybiEw
+CnQ9Yi55CmlmKHQ9PT00KXJldHVybiEwCmlmKEguQTgoYikpcmV0dXJuITEKaWYoYj09PXUuUClyZXR1
+cm4hMApzPXQ9PT0xMwppZihzKWlmKEguV2UoYSxjW2Iuel0sYyxkLGUpKXJldHVybiEwCnI9ZC55Cmlm
+KHQ9PT02KXJldHVybiBILldlKGEsYi56LGMsZCxlKQppZihyPT09Nil7cT1kLnoKcmV0dXJuIEguV2Uo
+YSxiLGMscSxlKX1pZih0PT09OCl7aWYoIUguV2UoYSxiLnosYyxkLGUpKXJldHVybiExCnJldHVybiBI
+LldlKGEsSC54WihhLGIpLGMsZCxlKX1pZih0PT09Nyl7cT1ILldlKGEsYi56LGMsZCxlKQpyZXR1cm4g
+cX1pZihyPT09OCl7aWYoSC5XZShhLGIsYyxkLnosZSkpcmV0dXJuITAKcmV0dXJuIEguV2UoYSxiLGMs
+SC54WihhLGQpLGUpfWlmKHI9PT03KXtxPUguV2UoYSxiLGMsZC56LGUpCnJldHVybiBxfWlmKHMpcmV0
+dXJuITEKcT10IT09MTEKaWYoKCFxfHx0PT09MTIpJiZkPT09dS5aKXJldHVybiEwCmlmKHI9PT0xMil7
+aWYoYj09PXUuZylyZXR1cm4hMAppZih0IT09MTIpcmV0dXJuITEKcD1iLlEKbz1kLlEKbj1wLmxlbmd0
+aAppZihuIT09by5sZW5ndGgpcmV0dXJuITEKYz1jPT1udWxsP3A6cC5jb25jYXQoYykKZT1lPT1udWxs
+P286by5jb25jYXQoZSkKZm9yKHE9dS5hdixtPTA7bTxuOysrbSl7bD1wW21dCms9b1ttXQpxLmEobCkK
+cS5hKGspCmlmKCFILldlKGEsbCxjLGssZSl8fCFILldlKGEsayxlLGwsYykpcmV0dXJuITF9cmV0dXJu
+IEguYk8oYSxiLnosYyxkLnosZSl9aWYocj09PTExKXtpZihiPT09dS5nKXJldHVybiEwCmlmKHEpcmV0
+dXJuITEKcmV0dXJuIEguYk8oYSxiLGMsZCxlKX1pZih0PT09OSl7aWYociE9PTkpcmV0dXJuITEKcmV0
+dXJuIEgucEcoYSxiLGMsZCxlKX1yZXR1cm4hMX0sCmJPOmZ1bmN0aW9uKGEwLGExLGEyLGEzLGE0KXt2
+YXIgdCxzLHIscSxwLG8sbixtLGwsayxqLGksaCxnLGYsZSxkLGMsYixhCmlmKCFILldlKGEwLGExLnos
+YTIsYTMueixhNCkpcmV0dXJuITEKdD1hMS5RCnM9YTMuUQpyPXQuYQpxPXMuYQpwPXIubGVuZ3RoCm89
+cS5sZW5ndGgKaWYocD5vKXJldHVybiExCm49by1wCm09dC5iCmw9cy5iCms9bS5sZW5ndGgKaj1sLmxl
+bmd0aAppZihwK2s8bytqKXJldHVybiExCmZvcihpPTA7aTxwOysraSl7aD1yW2ldCmlmKCFILldlKGEw
+LHFbaV0sYTQsaCxhMikpcmV0dXJuITF9Zm9yKGk9MDtpPG47KytpKXtoPW1baV0KaWYoIUguV2UoYTAs
+cVtwK2ldLGE0LGgsYTIpKXJldHVybiExfWZvcihpPTA7aTxqOysraSl7aD1tW24raV0KaWYoIUguV2Uo
+YTAsbFtpXSxhNCxoLGEyKSlyZXR1cm4hMX1nPXQuYwpmPXMuYwplPWcubGVuZ3RoCmQ9Zi5sZW5ndGgK
+Zm9yKGk9MCxjPTA7YzxkO2MrPTIpe2I9ZltjXQpkb3tpZihpPj1lKXJldHVybiExCmE9Z1tpXQppKz0y
+fXdoaWxlKGE8YikKaWYoYjxhKXJldHVybiExCmg9Z1tpLTFdCmlmKCFILldlKGEwLGZbYysxXSxhNCxo
+LGEyKSlyZXR1cm4hMX1yZXR1cm4hMH0sCnBHOmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIHQscyxyLHEs
+cCxvLG4sbSxsPWIueixrPWQuegppZihsPT09ayl7dD1iLlEKcz1kLlEKcj10Lmxlbmd0aApmb3IocT0w
+O3E8cjsrK3Epe3A9dFtxXQpvPXNbcV0KaWYoIUguV2UoYSxwLGMsbyxlKSlyZXR1cm4hMX1yZXR1cm4h
+MH1pZihkPT09dS5LKXJldHVybiEwCm49SC5RbyhhLGwpCmlmKG49PW51bGwpcmV0dXJuITEKbT1uW2td
+CmlmKG09PW51bGwpcmV0dXJuITEKcj1tLmxlbmd0aApzPWQuUQpmb3IocT0wO3E8cjsrK3EpaWYoIUgu
+V2UoYSxILmNFKGEsYixtW3FdKSxjLHNbcV0sZSkpcmV0dXJuITEKcmV0dXJuITB9LApsUjpmdW5jdGlv
+bihhKXt2YXIgdCxzPWEueQppZighKGE9PT11LlApKWlmKCFILkE4KGEpKWlmKHMhPT03KWlmKCEocz09
+PTYmJkgubFIoYS56KSkpdD1zPT09OCYmSC5sUihhLnopCmVsc2UgdD0hMAplbHNlIHQ9ITAKZWxzZSB0
+PSEwCmVsc2UgdD0hMApyZXR1cm4gdH0sCmNjOmZ1bmN0aW9uKGEpe3JldHVybiBILkE4KGEpfHxhPT09
+dS5LfSwKQTg6ZnVuY3Rpb24oYSl7dmFyIHQscz1hLnkscj1zCmlmKHIhPT0yKWlmKHIhPT0zKWlmKHIh
+PT00KWlmKHIhPT01KXt0PXUuSwppZighKGE9PT10KSlzPXM9PT03JiZhLno9PT10CmVsc2Ugcz0hMH1l
+bHNlIHM9ITAKZWxzZSBzPSEwCmVsc2Ugcz0hMAplbHNlIHM9ITAKcmV0dXJuIHN9LApJeDpmdW5jdGlv
+bihhLGIpe3ZhciB0LHMscj1PYmplY3Qua2V5cyhiKSxxPXIubGVuZ3RoCmZvcih0PTA7dDxxOysrdCl7
+cz1yW3RdCmFbc109YltzXX19LApKYzpmdW5jdGlvbiBKYyhhLGIpe3ZhciBfPXRoaXMKXy5hPWEKXy5i
+PWIKXy54PV8ucj1fLmM9bnVsbApfLnk9MApfLmN5PV8uY3g9Xy5jaD1fLlE9Xy56PW51bGx9LApFVDpm
+dW5jdGlvbiBFVCgpe3RoaXMuYz10aGlzLmI9dGhpcy5hPW51bGx9LAp1OTpmdW5jdGlvbiB1OSgpe30s
+Cng6ZnVuY3Rpb24geChhKXt0aGlzLmE9YX0sClI5OmZ1bmN0aW9uKGEpe3JldHVybiB1LmQuYihhKXx8
+dS5CLmIoYSl8fHUuZHouYihhKXx8dS5JLmIoYSl8fHUuQS5iKGEpfHx1Lmc0LmIoYSl8fHUuZzIuYihh
+KX0sCkpnOmZ1bmN0aW9uKGEpe3JldHVybiB2Lm1hbmdsZWRHbG9iYWxOYW1lc1thXX19LEo9ewpRdTpm
+dW5jdGlvbihhLGIsYyxkKXtyZXR1cm57aTphLHA6YixlOmMseDpkfX0sCmtzOmZ1bmN0aW9uKGEpe3Zh
+ciB0LHMscixxLHA9YVt2LmRpc3BhdGNoUHJvcGVydHlOYW1lXQppZihwPT1udWxsKWlmKCQuSz09bnVs
+bCl7SC5NKCkKcD1hW3YuZGlzcGF0Y2hQcm9wZXJ0eU5hbWVdfWlmKHAhPW51bGwpe3Q9cC5wCmlmKCEx
+PT09dClyZXR1cm4gcC5pCmlmKCEwPT09dClyZXR1cm4gYQpzPU9iamVjdC5nZXRQcm90b3R5cGVPZihh
+KQppZih0PT09cylyZXR1cm4gcC5pCmlmKHAuZT09PXMpdGhyb3cgSC5iKFAubigiUmV0dXJuIGludGVy
+Y2VwdG9yIGZvciAiK0guZCh0KGEscCkpKSl9cj1hLmNvbnN0cnVjdG9yCnE9cj09bnVsbD9udWxsOnJb
+JC5BKCldCmlmKHEhPW51bGwpcmV0dXJuIHEKcT1ILkcoYSkKaWYocSE9bnVsbClyZXR1cm4gcQppZih0
+eXBlb2YgYT09ImZ1bmN0aW9uIilyZXR1cm4gQy5ERwp0PU9iamVjdC5nZXRQcm90b3R5cGVPZihhKQpp
+Zih0PT1udWxsKXJldHVybiBDLlpRCmlmKHQ9PT1PYmplY3QucHJvdG90eXBlKXJldHVybiBDLlpRCmlm
+KHR5cGVvZiByPT0iZnVuY3Rpb24iKXtPYmplY3QuZGVmaW5lUHJvcGVydHkociwkLkEoKSx7dmFsdWU6
+Qy52QixlbnVtZXJhYmxlOmZhbHNlLHdyaXRhYmxlOnRydWUsY29uZmlndXJhYmxlOnRydWV9KQpyZXR1
+cm4gQy52Qn1yZXR1cm4gQy52Qn0sClFpOmZ1bmN0aW9uKGEsYil7aWYoYTwwfHxhPjQyOTQ5NjcyOTUp
+dGhyb3cgSC5iKFAuVEUoYSwwLDQyOTQ5NjcyOTUsImxlbmd0aCIsbnVsbCkpCnJldHVybiBKLnB5KG5l
+dyBBcnJheShhKSxiKX0sCnB5OmZ1bmN0aW9uKGEsYil7cmV0dXJuIEouRXAoSC5WTShhLGIuQygiamQ8
+MD4iKSkpfSwKRXA6ZnVuY3Rpb24oYSl7YS5maXhlZCRsZW5ndGg9QXJyYXkKcmV0dXJuIGF9LAp1bjpm
+dW5jdGlvbihhKXthLmZpeGVkJGxlbmd0aD1BcnJheQphLmltbXV0YWJsZSRsaXN0PUFycmF5CnJldHVy
+biBhfSwKR2E6ZnVuY3Rpb24oYSl7aWYoYTwyNTYpc3dpdGNoKGEpe2Nhc2UgOTpjYXNlIDEwOmNhc2Ug
+MTE6Y2FzZSAxMjpjYXNlIDEzOmNhc2UgMzI6Y2FzZSAxMzM6Y2FzZSAxNjA6cmV0dXJuITAKZGVmYXVs
+dDpyZXR1cm4hMX1zd2l0Y2goYSl7Y2FzZSA1NzYwOmNhc2UgODE5MjpjYXNlIDgxOTM6Y2FzZSA4MTk0
+OmNhc2UgODE5NTpjYXNlIDgxOTY6Y2FzZSA4MTk3OmNhc2UgODE5ODpjYXNlIDgxOTk6Y2FzZSA4MjAw
+OmNhc2UgODIwMTpjYXNlIDgyMDI6Y2FzZSA4MjMyOmNhc2UgODIzMzpjYXNlIDgyMzk6Y2FzZSA4Mjg3
+OmNhc2UgMTIyODg6Y2FzZSA2NTI3OTpyZXR1cm4hMApkZWZhdWx0OnJldHVybiExfX0sCm1tOmZ1bmN0
+aW9uKGEsYil7dmFyIHQscwpmb3IodD1hLmxlbmd0aDtiPHQ7KXtzPUMueEIuVyhhLGIpCmlmKHMhPT0z
+MiYmcyE9PTEzJiYhSi5HYShzKSlicmVhazsrK2J9cmV0dXJuIGJ9LApjMTpmdW5jdGlvbihhLGIpe3Zh
+ciB0LHMKZm9yKDtiPjA7Yj10KXt0PWItMQpzPUMueEIubShhLHQpCmlmKHMhPT0zMiYmcyE9PTEzJiYh
+Si5HYShzKSlicmVha31yZXR1cm4gYn0sClJFOmZ1bmN0aW9uKGEpe2lmKGE9PW51bGwpcmV0dXJuIGEK
+aWYodHlwZW9mIGEhPSJvYmplY3QiKXtpZih0eXBlb2YgYT09ImZ1bmN0aW9uIilyZXR1cm4gSi5jNS5w
+cm90b3R5cGUKcmV0dXJuIGF9aWYoYSBpbnN0YW5jZW9mIFAuTWgpcmV0dXJuIGEKcmV0dXJuIEoua3Mo
+YSl9LApUSjpmdW5jdGlvbihhKXtpZih0eXBlb2YgYT09Im51bWJlciIpcmV0dXJuIEoucUkucHJvdG90
+eXBlCmlmKHR5cGVvZiBhPT0ic3RyaW5nIilyZXR1cm4gSi5Eci5wcm90b3R5cGUKaWYoYT09bnVsbCly
+ZXR1cm4gYQppZihhLmNvbnN0cnVjdG9yPT1BcnJheSlyZXR1cm4gSi5qZC5wcm90b3R5cGUKaWYodHlw
+ZW9mIGEhPSJvYmplY3QiKXtpZih0eXBlb2YgYT09ImZ1bmN0aW9uIilyZXR1cm4gSi5jNS5wcm90b3R5
+cGUKcmV0dXJuIGF9aWYoYSBpbnN0YW5jZW9mIFAuTWgpcmV0dXJuIGEKcmV0dXJuIEoua3MoYSl9LApV
+NjpmdW5jdGlvbihhKXtpZih0eXBlb2YgYT09InN0cmluZyIpcmV0dXJuIEouRHIucHJvdG90eXBlCmlm
+KGE9PW51bGwpcmV0dXJuIGEKaWYoYS5jb25zdHJ1Y3Rvcj09QXJyYXkpcmV0dXJuIEouamQucHJvdG90
+eXBlCmlmKHR5cGVvZiBhIT0ib2JqZWN0Iil7aWYodHlwZW9mIGE9PSJmdW5jdGlvbiIpcmV0dXJuIEou
+YzUucHJvdG90eXBlCnJldHVybiBhfWlmKGEgaW5zdGFuY2VvZiBQLk1oKXJldHVybiBhCnJldHVybiBK
+LmtzKGEpfSwKaWE6ZnVuY3Rpb24oYSl7aWYodHlwZW9mIGE9PSJudW1iZXIiKXtpZihNYXRoLmZsb29y
+KGEpPT1hKXJldHVybiBKLnVyLnByb3RvdHlwZQpyZXR1cm4gSi5WQS5wcm90b3R5cGV9aWYodHlwZW9m
+IGE9PSJzdHJpbmciKXJldHVybiBKLkRyLnByb3RvdHlwZQppZihhPT1udWxsKXJldHVybiBKLllFLnBy
+b3RvdHlwZQppZih0eXBlb2YgYT09ImJvb2xlYW4iKXJldHVybiBKLnlFLnByb3RvdHlwZQppZihhLmNv
+bnN0cnVjdG9yPT1BcnJheSlyZXR1cm4gSi5qZC5wcm90b3R5cGUKaWYodHlwZW9mIGEhPSJvYmplY3Qi
+KXtpZih0eXBlb2YgYT09ImZ1bmN0aW9uIilyZXR1cm4gSi5jNS5wcm90b3R5cGUKcmV0dXJuIGF9aWYo
+YSBpbnN0YW5jZW9mIFAuTWgpcmV0dXJuIGEKcmV0dXJuIEoua3MoYSl9LApyWTpmdW5jdGlvbihhKXtp
+Zih0eXBlb2YgYT09InN0cmluZyIpcmV0dXJuIEouRHIucHJvdG90eXBlCmlmKGE9PW51bGwpcmV0dXJu
+IGEKaWYoIShhIGluc3RhbmNlb2YgUC5NaCkpcmV0dXJuIEoua2QucHJvdG90eXBlCnJldHVybiBhfSwK
+dzE6ZnVuY3Rpb24oYSl7aWYoYT09bnVsbClyZXR1cm4gYQppZihhLmNvbnN0cnVjdG9yPT1BcnJheSly
+ZXR1cm4gSi5qZC5wcm90b3R5cGUKaWYodHlwZW9mIGEhPSJvYmplY3QiKXtpZih0eXBlb2YgYT09ImZ1
+bmN0aW9uIilyZXR1cm4gSi5jNS5wcm90b3R5cGUKcmV0dXJuIGF9aWYoYSBpbnN0YW5jZW9mIFAuTWgp
+cmV0dXJuIGEKcmV0dXJuIEoua3MoYSl9LApBYzpmdW5jdGlvbihhKXtyZXR1cm4gSi5pYShhKS5aKGEp
+fSwKQ006ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIEouUkUoYSkuZHUoYSxiLGMsZCl9LApDaTpmdW5j
+dGlvbihhKXtyZXR1cm4gSi5VNihhKS5nbDAoYSl9LApGTDpmdW5jdGlvbihhLGIpe3JldHVybiBKLnJZ
+KGEpLmRkKGEsYil9LApHQTpmdW5jdGlvbihhLGIpe3JldHVybiBKLncxKGEpLkUoYSxiKX0sCkdyOmZ1
+bmN0aW9uKGEpe3JldHVybiBKLlJFKGEpLmdtVyhhKX0sCkg6ZnVuY3Rpb24oYSl7cmV0dXJuIEouVTYo
+YSkuZ0EoYSl9LApJVDpmdW5jdGlvbihhKXtyZXR1cm4gSi53MShhKS5na3ooYSl9LApKeTpmdW5jdGlv
+bihhLGIpe3JldHVybiBKLmlhKGEpLmU3KGEsYil9LApLVjpmdW5jdGlvbihhLGIpe3JldHVybiBKLnJZ
+KGEpLkcoYSxiKX0sCkx0OmZ1bmN0aW9uKGEpe3JldHVybiBKLlJFKGEpLndnKGEpfSwKTTE6ZnVuY3Rp
+b24oYSxiLGMpe3JldHVybiBKLncxKGEpLkUyKGEsYixjKX0sCk11OmZ1bmN0aW9uKGEsYil7cmV0dXJu
+IEouUkUoYSkuc1AoYSxiKX0sClF6OmZ1bmN0aW9uKGEsYil7cmV0dXJuIEouclkoYSkuVyhhLGIpfSwK
+Uk06ZnVuY3Rpb24oYSxiKXtpZihhPT1udWxsKXJldHVybiBiPT1udWxsCmlmKHR5cGVvZiBhIT0ib2Jq
+ZWN0IilyZXR1cm4gYiE9bnVsbCYmYT09PWIKcmV0dXJuIEouaWEoYSkuRE4oYSxiKX0sClQwOmZ1bmN0
+aW9uKGEpe3JldHVybiBKLnJZKGEpLmJTKGEpfSwKYTY6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gSi5yWShh
+KS5tKGEsYil9LApiVDpmdW5jdGlvbihhKXtyZXR1cm4gSi5SRShhKS5ENChhKX0sCmNIOmZ1bmN0aW9u
+KGEpe3JldHVybiBKLnJZKGEpLmhjKGEpfSwKZFI6ZnVuY3Rpb24oYSl7cmV0dXJuIEouUkUoYSkuZ1Ao
+YSl9LApkWjpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gSi5SRShhKS5PbihhLGIsYyxkKX0sCmRnOmZ1
+bmN0aW9uKGEsYixjLGQpe3JldHVybiBKLnJZKGEpLmk3KGEsYixjLGQpfSwKZGg6ZnVuY3Rpb24oYSl7
+cmV0dXJuIEouUkUoYSkuRkYoYSl9LApoZjpmdW5jdGlvbihhKXtyZXR1cm4gSi5pYShhKS5naU8oYSl9
+LAppZzpmdW5jdGlvbihhKXtyZXR1cm4gSi5SRShhKS5nUWcoYSl9LApsNTpmdW5jdGlvbihhLGIpe3Jl
+dHVybiBKLlJFKGEpLnNoZihhLGIpfSwKbGQ6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBKLnJZKGEpLk5q
+KGEsYixjKX0sCm06ZnVuY3Rpb24oYSxiKXtpZih0eXBlb2YgYT09Im51bWJlciImJnR5cGVvZiBiPT0i
+bnVtYmVyIilyZXR1cm4gYStiCnJldHVybiBKLlRKKGEpLmgoYSxiKX0sCnA0OmZ1bmN0aW9uKGEsYil7
+cmV0dXJuIEouclkoYSkuVGMoYSxiKX0sCnEwOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gSi5yWShhKS5R
+aShhLGIsYyl9LApxRjpmdW5jdGlvbihhKXtyZXR1cm4gSi5SRShhKS5nVmwoYSl9LAp0SDpmdW5jdGlv
+bihhLGIsYyl7cmV0dXJuIEouUkUoYSkucGsoYSxiLGMpfSwKeDk6ZnVuY3Rpb24oYSxiKXtpZih0eXBl
+b2YgYj09PSJudW1iZXIiKWlmKGEuY29uc3RydWN0b3I9PUFycmF5fHx0eXBlb2YgYT09InN0cmluZyJ8
+fEgud1YoYSxhW3YuZGlzcGF0Y2hQcm9wZXJ0eU5hbWVdKSlpZihiPj4+MD09PWImJmI8YS5sZW5ndGgp
+cmV0dXJuIGFbYl0KcmV0dXJuIEouVTYoYSkucShhLGIpfSwKemw6ZnVuY3Rpb24oYSxiKXtyZXR1cm4g
+Si5VNihhKS50ZyhhLGIpfSwKdkI6ZnVuY3Rpb24gdkIoKXt9LAp5RTpmdW5jdGlvbiB5RSgpe30sCllF
+OmZ1bmN0aW9uIFlFKCl7fSwKTUY6ZnVuY3Rpb24gTUYoKXt9LAppQzpmdW5jdGlvbiBpQygpe30sCmtk
+OmZ1bmN0aW9uIGtkKCl7fSwKYzU6ZnVuY3Rpb24gYzUoKXt9LApqZDpmdW5jdGlvbiBqZChhKXt0aGlz
+LiR0aT1hfSwKUG86ZnVuY3Rpb24gUG8oYSl7dGhpcy4kdGk9YX0sCm0xOmZ1bmN0aW9uIG0xKGEsYixj
+KXt2YXIgXz10aGlzCl8uYT1hCl8uYj1iCl8uYz0wCl8uZD1udWxsCl8uJHRpPWN9LApxSTpmdW5jdGlv
+biBxSSgpe30sCnVyOmZ1bmN0aW9uIHVyKCl7fSwKVkE6ZnVuY3Rpb24gVkEoKXt9LApEcjpmdW5jdGlv
+biBEcigpe319LFA9ewpPajpmdW5jdGlvbigpe3ZhciB0LHMscj17fQppZihzZWxmLnNjaGVkdWxlSW1t
+ZWRpYXRlIT1udWxsKXJldHVybiBQLkVYKCkKaWYoc2VsZi5NdXRhdGlvbk9ic2VydmVyIT1udWxsJiZz
+ZWxmLmRvY3VtZW50IT1udWxsKXt0PXNlbGYuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikKcz1z
+ZWxmLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKQpyLmE9bnVsbApuZXcgc2VsZi5NdXRhdGlv
+bk9ic2VydmVyKEgudFIobmV3IFAudGgociksMSkpLm9ic2VydmUodCx7Y2hpbGRMaXN0OnRydWV9KQpy
+ZXR1cm4gbmV3IFAuaGEocix0LHMpfWVsc2UgaWYoc2VsZi5zZXRJbW1lZGlhdGUhPW51bGwpcmV0dXJu
+IFAueXQoKQpyZXR1cm4gUC5xVygpfSwKWlY6ZnVuY3Rpb24oYSl7c2VsZi5zY2hlZHVsZUltbWVkaWF0
+ZShILnRSKG5ldyBQLlZzKHUuTS5hKGEpKSwwKSl9LApvQTpmdW5jdGlvbihhKXtzZWxmLnNldEltbWVk
+aWF0ZShILnRSKG5ldyBQLkZ0KHUuTS5hKGEpKSwwKSl9LApCejpmdW5jdGlvbihhKXt1Lk0uYShhKQpQ
+LlFOKDAsYSl9LApRTjpmdW5jdGlvbihhLGIpe3ZhciB0PW5ldyBQLlczKCkKdC5DWShhLGIpCnJldHVy
+biB0fSwKRlg6ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBQLmloKG5ldyBQLnZzKCQuWDMsYS5DKCJ2czww
+PiIpKSxhLkMoImloPDA+IikpfSwKREk6ZnVuY3Rpb24oYSxiKXthLiQyKDAsbnVsbCkKYi5iPSEwCnJl
+dHVybiBiLmF9LApqUTpmdW5jdGlvbihhLGIpe1AuSmUoYSxiKX0sCnlDOmZ1bmN0aW9uKGEsYil7Yi5h
+TSgwLGEpfSwKZjM6ZnVuY3Rpb24oYSxiKXtiLncwKEguUnUoYSksSC50cyhhKSl9LApKZTpmdW5jdGlv
+bihhLGIpe3ZhciB0LHMscj1uZXcgUC5XTShiKSxxPW5ldyBQLlNYKGIpCmlmKGEgaW5zdGFuY2VvZiBQ
+LnZzKWEuUWQocixxLHUueikKZWxzZXt0PXUuegppZih1LmMuYihhKSlhLlNxKHIscSx0KQplbHNle3M9
+bmV3IFAudnMoJC5YMyx1Ll8pCnMuYT00CnMuYz1hCnMuUWQocixxLHQpfX19LApsejpmdW5jdGlvbihh
+KXt2YXIgdD1mdW5jdGlvbihiLGMpe3JldHVybiBmdW5jdGlvbihkLGUpe3doaWxlKHRydWUpdHJ5e2Io
+ZCxlKQpicmVha31jYXRjaChzKXtlPXMKZD1jfX19KGEsMSkKcmV0dXJuICQuWDMuTGoobmV3IFAuR3Mo
+dCksdS5QLHUucSx1LnopfSwKR1E6ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBQLkZ5KGEsMSl9LApUaDpm
+dW5jdGlvbigpe3JldHVybiBDLndRfSwKWW06ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBQLkZ5KGEsMyl9
+LApsMDpmdW5jdGlvbihhLGIpe3JldHVybiBuZXcgUC5xNChhLGIuQygicTQ8MD4iKSl9LAprMzpmdW5j
+dGlvbihhLGIpe3ZhciB0LHMscgpiLmE9MQp0cnl7YS5TcShuZXcgUC5wVihiKSxuZXcgUC5VNyhiKSx1
+LlApfWNhdGNoKHIpe3Q9SC5SdShyKQpzPUgudHMocikKUC5yYihuZXcgUC52cihiLHQscykpfX0sCkE5
+OmZ1bmN0aW9uKGEsYil7dmFyIHQscyxyCmZvcih0PXUuXztzPWEuYSxzPT09MjspYT10LmEoYS5jKQpp
+ZihzPj00KXtyPWIuYWgoKQpiLmE9YS5hCmIuYz1hLmMKUC5IWihiLHIpfWVsc2V7cj11LnguYShiLmMp
+CmIuYT0yCmIuYz1hCmEualEocil9fSwKSFo6ZnVuY3Rpb24oYSxiKXt2YXIgdCxzLHIscSxwLG8sbixt
+LGwsayxqLGksaCxnLGYsZT1udWxsLGQ9e30sYz1kLmE9YQpmb3IodD11Lm4scz11Lngscj11LmM7ITA7
+KXtxPXt9CnA9Yy5hPT09OAppZihiPT1udWxsKXtpZihwKXtvPXQuYShjLmMpClAuTDIoZSxlLGMuYixv
+LmEsby5iKX1yZXR1cm59Zm9yKDtuPWIuYSxuIT1udWxsO2I9bil7Yi5hPW51bGwKUC5IWihkLmEsYil9
+Yz1kLmEKbT1jLmMKcS5hPXAKcS5iPW0KbD0hcAppZihsKXtrPWIuYwprPShrJjEpIT09MHx8KGsmMTUp
+PT09OH1lbHNlIGs9ITAKaWYoayl7az1iLmIKaj1rLmIKaWYocCl7aT1jLmI9PT1qCmk9IShpfHxpKX1l
+bHNlIGk9ITEKaWYoaSl7dC5hKG0pClAuTDIoZSxlLGMuYixtLmEsbS5iKQpyZXR1cm59aD0kLlgzCmlm
+KGghPT1qKSQuWDM9agplbHNlIGg9ZQpjPWIuYwppZigoYyYxNSk9PT04KW5ldyBQLlJUKGQscSxiLHAp
+LiQwKCkKZWxzZSBpZihsKXtpZigoYyYxKSE9PTApbmV3IFAucnEocSxiLG0pLiQwKCl9ZWxzZSBpZigo
+YyYyKSE9PTApbmV3IFAuUlcoZCxxLGIpLiQwKCkKaWYoaCE9bnVsbCkkLlgzPWgKYz1xLmIKaWYoci5i
+KGMpKXtpZihjLmE+PTQpe2c9cy5hKGsuYykKay5jPW51bGwKYj1rLk44KGcpCmsuYT1jLmEKay5jPWMu
+YwpkLmE9Ywpjb250aW51ZX1lbHNlIFAuQTkoYyxrKQpyZXR1cm59fWY9Yi5iCmc9cy5hKGYuYykKZi5j
+PW51bGwKYj1mLk44KGcpCmM9cS5hCmw9cS5iCmlmKCFjKXtmLiR0aS5jLmEobCkKZi5hPTQKZi5jPWx9
+ZWxzZXt0LmEobCkKZi5hPTgKZi5jPWx9ZC5hPWYKYz1mfX0sClZIOmZ1bmN0aW9uKGEsYil7dmFyIHQK
+aWYodS5hZy5iKGEpKXJldHVybiBiLkxqKGEsdS56LHUuSyx1LmwpCnQ9dS5iSQppZih0LmIoYSkpcmV0
+dXJuIHQuYShhKQp0aHJvdyBILmIoUC5MMyhhLCJvbkVycm9yIiwiRXJyb3IgaGFuZGxlciBtdXN0IGFj
+Y2VwdCBvbmUgT2JqZWN0IG9yIG9uZSBPYmplY3QgYW5kIGEgU3RhY2tUcmFjZSBhcyBhcmd1bWVudHMs
+IGFuZCByZXR1cm4gYSBhIHZhbGlkIHJlc3VsdCIpKX0sCnB1OmZ1bmN0aW9uKCl7dmFyIHQscwpmb3Io
+O3Q9JC5TNix0IT1udWxsOyl7JC5tZz1udWxsCnM9dC5iCiQuUzY9cwppZihzPT1udWxsKSQuazg9bnVs
+bAp0LmEuJDAoKX19LAplTjpmdW5jdGlvbigpeyQuVUQ9ITAKdHJ5e1AucHUoKX1maW5hbGx5eyQubWc9
+bnVsbAokLlVEPSExCmlmKCQuUzYhPW51bGwpJC51dCgpLiQxKFAuVjkoKSl9fSwKZVc6ZnVuY3Rpb24o
+YSl7dmFyIHQ9bmV3IFAuT00oYSkKaWYoJC5TNj09bnVsbCl7JC5TNj0kLms4PXQKaWYoISQuVUQpJC51
+dCgpLiQxKFAuVjkoKSl9ZWxzZSAkLms4PSQuazguYj10fSwKclI6ZnVuY3Rpb24oYSl7dmFyIHQscyxy
+PSQuUzYKaWYocj09bnVsbCl7UC5lVyhhKQokLm1nPSQuazgKcmV0dXJufXQ9bmV3IFAuT00oYSkKcz0k
+Lm1nCmlmKHM9PW51bGwpe3QuYj1yCiQuUzY9JC5tZz10fWVsc2V7dC5iPXMuYgokLm1nPXMuYj10Cmlm
+KHQuYj09bnVsbCkkLms4PXR9fSwKcmI6ZnVuY3Rpb24oYSl7dmFyIHQ9bnVsbCxzPSQuWDMKaWYoQy5O
+VT09PXMpe1AuVGsodCx0LEMuTlUsYSkKcmV0dXJufVAuVGsodCx0LHMsdS5NLmEocy5HWShhKSkpfSwK
+UXc6ZnVuY3Rpb24oYSxiKXtpZihhPT1udWxsKUgudmgoUC5FZSgic3RyZWFtIikpCnJldHVybiBuZXcg
+UC54SShiLkMoInhJPDA+IikpfSwKVGw6ZnVuY3Rpb24oYSxiKXt2YXIgdD1iPT1udWxsP1AudjAoYSk6
+YgpQLlVJKGEsImVycm9yIix1LkspCnJldHVybiBuZXcgUC5PSChhLHQpfSwKdjA6ZnVuY3Rpb24oYSl7
+dmFyIHQKaWYodS5XLmIoYSkpe3Q9YS5nSUkoKQppZih0IT1udWxsKXJldHVybiB0fXJldHVybiBDLnBk
+fSwKTDI6ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgdD17fQp0LmE9ZAp0LmI9ZQppZihkPT1udWxsKXt0
+LmE9bmV3IFAuQVQoITEsbnVsbCwiZXJyb3IiLCJNdXN0IG5vdCBiZSBudWxsIikKdC5iPVAuWmIoKX1Q
+LnJSKG5ldyBQLnBLKHQpKX0sClQ4OmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIHQscz0kLlgzCmlmKHM9
+PT1jKXJldHVybiBkLiQwKCkKJC5YMz1jCnQ9cwp0cnl7cz1kLiQwKCkKcmV0dXJuIHN9ZmluYWxseXsk
+LlgzPXR9fSwKeXY6ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyl7dmFyIHQscz0kLlgzCmlmKHM9PT1jKXJl
+dHVybiBkLiQxKGUpCiQuWDM9Ywp0PXMKdHJ5e3M9ZC4kMShlKQpyZXR1cm4gc31maW5hbGx5eyQuWDM9
+dH19LApReDpmdW5jdGlvbihhLGIsYyxkLGUsZixnLGgsaSl7dmFyIHQscz0kLlgzCmlmKHM9PT1jKXJl
+dHVybiBkLiQyKGUsZikKJC5YMz1jCnQ9cwp0cnl7cz1kLiQyKGUsZikKcmV0dXJuIHN9ZmluYWxseXsk
+LlgzPXR9fSwKVGs6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIHQKdS5NLmEoZCkKdD1DLk5VIT09YwppZih0
+KWQ9ISghdHx8ITEpP2MuR1koZCk6Yy5SVChkLHUuSCkKUC5lVyhkKX0sCnRoOmZ1bmN0aW9uIHRoKGEp
+e3RoaXMuYT1hfSwKaGE6ZnVuY3Rpb24gaGEoYSxiLGMpe3RoaXMuYT1hCnRoaXMuYj1iCnRoaXMuYz1j
+fSwKVnM6ZnVuY3Rpb24gVnMoYSl7dGhpcy5hPWF9LApGdDpmdW5jdGlvbiBGdChhKXt0aGlzLmE9YX0s
+ClczOmZ1bmN0aW9uIFczKCl7fSwKeUg6ZnVuY3Rpb24geUgoYSxiKXt0aGlzLmE9YQp0aGlzLmI9Yn0s
+CmloOmZ1bmN0aW9uIGloKGEsYil7dGhpcy5hPWEKdGhpcy5iPSExCnRoaXMuJHRpPWJ9LApXTTpmdW5j
+dGlvbiBXTShhKXt0aGlzLmE9YX0sClNYOmZ1bmN0aW9uIFNYKGEpe3RoaXMuYT1hfSwKR3M6ZnVuY3Rp
+b24gR3MoYSl7dGhpcy5hPWF9LApGeTpmdW5jdGlvbiBGeShhLGIpe3RoaXMuYT1hCnRoaXMuYj1ifSwK
+R1Y6ZnVuY3Rpb24gR1YoYSxiKXt2YXIgXz10aGlzCl8uYT1hCl8uZD1fLmM9Xy5iPW51bGwKXy4kdGk9
+Yn0sCnE0OmZ1bmN0aW9uIHE0KGEsYil7dGhpcy5hPWEKdGhpcy4kdGk9Yn0sCmI4OmZ1bmN0aW9uIGI4
+KCl7fSwKUGY6ZnVuY3Rpb24gUGYoKXt9LApaZjpmdW5jdGlvbiBaZihhLGIpe3RoaXMuYT1hCnRoaXMu
+JHRpPWJ9LApGZTpmdW5jdGlvbiBGZShhLGIsYyxkLGUpe3ZhciBfPXRoaXMKXy5hPW51bGwKXy5iPWEK
+Xy5jPWIKXy5kPWMKXy5lPWQKXy4kdGk9ZX0sCnZzOmZ1bmN0aW9uIHZzKGEsYil7dmFyIF89dGhpcwpf
+LmE9MApfLmI9YQpfLmM9bnVsbApfLiR0aT1ifSwKZGE6ZnVuY3Rpb24gZGEoYSxiKXt0aGlzLmE9YQp0
+aGlzLmI9Yn0sCm9ROmZ1bmN0aW9uIG9RKGEsYil7dGhpcy5hPWEKdGhpcy5iPWJ9LApwVjpmdW5jdGlv
+biBwVihhKXt0aGlzLmE9YX0sClU3OmZ1bmN0aW9uIFU3KGEpe3RoaXMuYT1hfSwKdnI6ZnVuY3Rpb24g
+dnIoYSxiLGMpe3RoaXMuYT1hCnRoaXMuYj1iCnRoaXMuYz1jfSwKckg6ZnVuY3Rpb24gckgoYSxiKXt0
+aGlzLmE9YQp0aGlzLmI9Yn0sCktGOmZ1bmN0aW9uIEtGKGEsYil7dGhpcy5hPWEKdGhpcy5iPWJ9LApa
+TDpmdW5jdGlvbiBaTChhLGIsYyl7dGhpcy5hPWEKdGhpcy5iPWIKdGhpcy5jPWN9LApSVDpmdW5jdGlv
+biBSVChhLGIsYyxkKXt2YXIgXz10aGlzCl8uYT1hCl8uYj1iCl8uYz1jCl8uZD1kfSwKalo6ZnVuY3Rp
+b24galooYSl7dGhpcy5hPWF9LApycTpmdW5jdGlvbiBycShhLGIsYyl7dGhpcy5hPWEKdGhpcy5iPWIK
+dGhpcy5jPWN9LApSVzpmdW5jdGlvbiBSVyhhLGIsYyl7dGhpcy5hPWEKdGhpcy5iPWIKdGhpcy5jPWN9
+LApPTTpmdW5jdGlvbiBPTShhKXt0aGlzLmE9YQp0aGlzLmI9bnVsbH0sCnFoOmZ1bmN0aW9uIHFoKCl7
+fSwKQjU6ZnVuY3Rpb24gQjUoYSxiKXt0aGlzLmE9YQp0aGlzLmI9Yn0sCnVPOmZ1bmN0aW9uIHVPKGEs
+Yil7dGhpcy5hPWEKdGhpcy5iPWJ9LApNTzpmdW5jdGlvbiBNTygpe30sCmtUOmZ1bmN0aW9uIGtUKCl7
+fSwKeEk6ZnVuY3Rpb24geEkoYSl7dGhpcy4kdGk9YX0sCk9IOmZ1bmN0aW9uIE9IKGEsYil7dGhpcy5h
+PWEKdGhpcy5iPWJ9LAptMDpmdW5jdGlvbiBtMCgpe30sCnBLOmZ1bmN0aW9uIHBLKGEpe3RoaXMuYT1h
+fSwKSmk6ZnVuY3Rpb24gSmkoKXt9LApoajpmdW5jdGlvbiBoaihhLGIsYyl7dGhpcy5hPWEKdGhpcy5i
+PWIKdGhpcy5jPWN9LApWcDpmdW5jdGlvbiBWcChhLGIpe3RoaXMuYT1hCnRoaXMuYj1ifSwKT1I6ZnVu
+Y3Rpb24gT1IoYSxiLGMpe3RoaXMuYT1hCnRoaXMuYj1iCnRoaXMuYz1jfSwKRUY6ZnVuY3Rpb24oYSxi
+LGMpe3JldHVybiBiLkMoIkA8MD4iKS5LcShjKS5DKCJGbzwxLDI+IikuYShILkI3KGEsbmV3IEguTjUo
+Yi5DKCJAPDA+IikuS3EoYykuQygiTjU8MSwyPiIpKSkpfSwKRmw6ZnVuY3Rpb24oYSxiKXtyZXR1cm4g
+bmV3IEguTjUoYS5DKCJAPDA+IikuS3EoYikuQygiTjU8MSwyPiIpKX0sCkxzOmZ1bmN0aW9uKGEpe3Jl
+dHVybiBuZXcgUC5iNihhLkMoImI2PDA+IikpfSwKVDI6ZnVuY3Rpb24oKXt2YXIgdD1PYmplY3QuY3Jl
+YXRlKG51bGwpCnRbIjxub24taWRlbnRpZmllci1rZXk+Il09dApkZWxldGUgdFsiPG5vbi1pZGVudGlm
+aWVyLWtleT4iXQpyZXR1cm4gdH0sCnJqOmZ1bmN0aW9uKGEsYixjKXt2YXIgdD1uZXcgUC5sbShhLGIs
+Yy5DKCJsbTwwPiIpKQp0LmM9YS5lCnJldHVybiB0fSwKRVA6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0LHMK
+aWYoUC5oQihhKSl7aWYoYj09PSIoIiYmYz09PSIpIilyZXR1cm4iKC4uLikiCnJldHVybiBiKyIuLi4i
+K2N9dD1ILlZNKFtdLHUucykKQy5ObS5pKCQueGcsYSkKdHJ5e1AuVnIoYSx0KX1maW5hbGx5e2lmKDA+
+PSQueGcubGVuZ3RoKXJldHVybiBILmsoJC54ZywtMSkKJC54Zy5wb3AoKX1zPVAudmcoYix1LlIuYSh0
+KSwiLCAiKStjCnJldHVybiBzLmNoYXJDb2RlQXQoMCk9PTA/czpzfSwKV0U6ZnVuY3Rpb24oYSxiLGMp
+e3ZhciB0LHMKaWYoUC5oQihhKSlyZXR1cm4gYisiLi4uIitjCnQ9bmV3IFAuUm4oYikKQy5ObS5pKCQu
+eGcsYSkKdHJ5e3M9dApzLmE9UC52ZyhzLmEsYSwiLCAiKX1maW5hbGx5e2lmKDA+PSQueGcubGVuZ3Ro
+KXJldHVybiBILmsoJC54ZywtMSkKJC54Zy5wb3AoKX10LmErPWMKcz10LmEKcmV0dXJuIHMuY2hhckNv
+ZGVBdCgwKT09MD9zOnN9LApoQjpmdW5jdGlvbihhKXt2YXIgdCxzCmZvcih0PSQueGcubGVuZ3RoLHM9
+MDtzPHQ7KytzKWlmKGE9PT0kLnhnW3NdKXJldHVybiEwCnJldHVybiExfSwKVnI6ZnVuY3Rpb24oYSxi
+KXt2YXIgdCxzLHIscSxwLG8sbixtPWEuZ2t6KGEpLGw9MCxrPTAKd2hpbGUoITApe2lmKCEobDw4MHx8
+azwzKSlicmVhawppZighbS5GKCkpcmV0dXJuCnQ9SC5kKG0uZ2woKSkKQy5ObS5pKGIsdCkKbCs9dC5s
+ZW5ndGgrMjsrK2t9aWYoIW0uRigpKXtpZihrPD01KXJldHVybgppZigwPj1iLmxlbmd0aClyZXR1cm4g
+SC5rKGIsLTEpCnM9Yi5wb3AoKQppZigwPj1iLmxlbmd0aClyZXR1cm4gSC5rKGIsLTEpCnI9Yi5wb3Ao
+KX1lbHNle3E9bS5nbCgpOysrawppZighbS5GKCkpe2lmKGs8PTQpe0MuTm0uaShiLEguZChxKSkKcmV0
+dXJufXM9SC5kKHEpCmlmKDA+PWIubGVuZ3RoKXJldHVybiBILmsoYiwtMSkKcj1iLnBvcCgpCmwrPXMu
+bGVuZ3RoKzJ9ZWxzZXtwPW0uZ2woKTsrK2sKZm9yKDttLkYoKTtxPXAscD1vKXtvPW0uZ2woKTsrK2sK
+aWYoaz4xMDApe3doaWxlKCEwKXtpZighKGw+NzUmJms+MykpYnJlYWsKaWYoMD49Yi5sZW5ndGgpcmV0
+dXJuIEguayhiLC0xKQpsLT1iLnBvcCgpLmxlbmd0aCsyOy0ta31DLk5tLmkoYiwiLi4uIikKcmV0dXJu
+fX1yPUguZChxKQpzPUguZChwKQpsKz1zLmxlbmd0aCtyLmxlbmd0aCs0fX1pZihrPmIubGVuZ3RoKzIp
+e2wrPTUKbj0iLi4uIn1lbHNlIG49bnVsbAp3aGlsZSghMCl7aWYoIShsPjgwJiZiLmxlbmd0aD4zKSli
+cmVhawppZigwPj1iLmxlbmd0aClyZXR1cm4gSC5rKGIsLTEpCmwtPWIucG9wKCkubGVuZ3RoKzIKaWYo
+bj09bnVsbCl7bCs9NQpuPSIuLi4ifX1pZihuIT1udWxsKUMuTm0uaShiLG4pCkMuTm0uaShiLHIpCkMu
+Tm0uaShiLHMpfSwKdE06ZnVuY3Rpb24oYSxiKXt2YXIgdCxzLHI9UC5McyhiKQpmb3IodD1hLmxlbmd0
+aCxzPTA7czxhLmxlbmd0aDthLmxlbmd0aD09PXR8fCgwLEgubGspKGEpLCsrcylyLmkoMCxiLmEoYVtz
+XSkpCnJldHVybiByfSwKbk86ZnVuY3Rpb24oYSl7dmFyIHQscz17fQppZihQLmhCKGEpKXJldHVybiJ7
+Li4ufSIKdD1uZXcgUC5SbigiIikKdHJ5e0MuTm0uaSgkLnhnLGEpCnQuYSs9InsiCnMuYT0hMAphLkso
+MCxuZXcgUC5yYShzLHQpKQp0LmErPSJ9In1maW5hbGx5e2lmKDA+PSQueGcubGVuZ3RoKXJldHVybiBI
+LmsoJC54ZywtMSkKJC54Zy5wb3AoKX1zPXQuYQpyZXR1cm4gcy5jaGFyQ29kZUF0KDApPT0wP3M6c30s
+CmI2OmZ1bmN0aW9uIGI2KGEpe3ZhciBfPXRoaXMKXy5hPTAKXy5mPV8uZT1fLmQ9Xy5jPV8uYj1udWxs
+Cl8ucj0wCl8uJHRpPWF9LApibjpmdW5jdGlvbiBibihhKXt0aGlzLmE9YQp0aGlzLmM9dGhpcy5iPW51
+bGx9LApsbTpmdW5jdGlvbiBsbShhLGIsYyl7dmFyIF89dGhpcwpfLmE9YQpfLmI9YgpfLmQ9Xy5jPW51
+bGwKXy4kdGk9Y30sCm1XOmZ1bmN0aW9uIG1XKCl7fSwKTFU6ZnVuY3Rpb24gTFUoKXt9LApsRDpmdW5j
+dGlvbiBsRCgpe30sCmlsOmZ1bmN0aW9uIGlsKCl7fSwKcmE6ZnVuY3Rpb24gcmEoYSxiKXt0aGlzLmE9
+YQp0aGlzLmI9Yn0sCllrOmZ1bmN0aW9uIFlrKCl7fSwKeVE6ZnVuY3Rpb24geVEoYSl7dGhpcy5hPWF9
+LApLUDpmdW5jdGlvbiBLUCgpe30sClBuOmZ1bmN0aW9uIFBuKCl7fSwKR2o6ZnVuY3Rpb24gR2ooYSxi
+KXt0aGlzLmE9YQp0aGlzLiR0aT1ifSwKTWE6ZnVuY3Rpb24gTWEoKXt9LApWajpmdW5jdGlvbiBWaigp
+e30sClh2OmZ1bmN0aW9uIFh2KCl7fSwKblk6ZnVuY3Rpb24gblkoKXt9LApUQzpmdW5jdGlvbiBUQygp
+e30sClJVOmZ1bmN0aW9uIFJVKCl7fSwKQlM6ZnVuY3Rpb24oYSxiKXt2YXIgdCxzLHIscQppZih0eXBl
+b2YgYSE9InN0cmluZyIpdGhyb3cgSC5iKEguSShhKSkKdD1udWxsCnRyeXt0PUpTT04ucGFyc2UoYSl9
+Y2F0Y2gocil7cz1ILlJ1KHIpCnE9UC5ycihTdHJpbmcocyksbnVsbCxudWxsKQp0aHJvdyBILmIocSl9
+cT1QLlFlKHQpCnJldHVybiBxfSwKUWU6ZnVuY3Rpb24oYSl7dmFyIHQKaWYoYT09bnVsbClyZXR1cm4g
+bnVsbAppZih0eXBlb2YgYSE9Im9iamVjdCIpcmV0dXJuIGEKaWYoT2JqZWN0LmdldFByb3RvdHlwZU9m
+KGEpIT09QXJyYXkucHJvdG90eXBlKXJldHVybiBuZXcgUC51dyhhLE9iamVjdC5jcmVhdGUobnVsbCkp
+CmZvcih0PTA7dDxhLmxlbmd0aDsrK3QpYVt0XT1QLlFlKGFbdF0pCnJldHVybiBhfSwKa3k6ZnVuY3Rp
+b24oYSxiLGMsZCl7aWYoYiBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpcmV0dXJuIFAuUlAoITEsYixjLGQp
+CnJldHVybiBudWxsfSwKUlA6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIHQscyxyPSQudEwoKQppZihyPT1u
+dWxsKXJldHVybiBudWxsCnQ9MD09PWMKaWYodCYmITApcmV0dXJuIFAuT1EocixiKQpzPWIubGVuZ3Ro
+CmQ9UC5qQihjLGQscykKaWYodCYmZD09PXMpcmV0dXJuIFAuT1EocixiKQpyZXR1cm4gUC5PUShyLGIu
+c3ViYXJyYXkoYyxkKSl9LApPUTpmdW5jdGlvbihhLGIpe2lmKFAuQWooYikpcmV0dXJuIG51bGwKcmV0
+dXJuIFAuSmgoYSxiKX0sCkpoOmZ1bmN0aW9uKGEsYil7dmFyIHQscwp0cnl7dD1hLmRlY29kZShiKQpy
+ZXR1cm4gdH1jYXRjaChzKXtILlJ1KHMpfXJldHVybiBudWxsfSwKQWo6ZnVuY3Rpb24oYSl7dmFyIHQs
+cz1hLmxlbmd0aC0yCmZvcih0PTA7dDxzOysrdClpZihhW3RdPT09MjM3KWlmKChhW3QrMV0mMjI0KT09
+PTE2MClyZXR1cm4hMApyZXR1cm4hMX0sCldJOmZ1bmN0aW9uKCl7dmFyIHQscwp0cnl7dD1uZXcgVGV4
+dERlY29kZXIoInV0Zi04Iix7ZmF0YWw6dHJ1ZX0pCnJldHVybiB0fWNhdGNoKHMpe0guUnUocyl9cmV0
+dXJuIG51bGx9LApjUDpmdW5jdGlvbihhLGIsYyl7dmFyIHQscyxyCmZvcih0PUouVTYoYSkscz1iO3M8
+YzsrK3Mpe3I9dC5xKGEscykKaWYodHlwZW9mIHIhPT0ibnVtYmVyIilyZXR1cm4gci56TSgpCmlmKChy
+JjEyNykhPT1yKXJldHVybiBzLWJ9cmV0dXJuIGMtYn0sCnhNOmZ1bmN0aW9uKGEsYixjLGQsZSxmKXtp
+ZihDLmpuLnpZKGYsNCkhPT0wKXRocm93IEguYihQLnJyKCJJbnZhbGlkIGJhc2U2NCBwYWRkaW5nLCBw
+YWRkZWQgbGVuZ3RoIG11c3QgYmUgbXVsdGlwbGUgb2YgZm91ciwgaXMgIitmLGEsYykpCmlmKGQrZSE9
+PWYpdGhyb3cgSC5iKFAucnIoIkludmFsaWQgYmFzZTY0IHBhZGRpbmcsICc9JyBub3QgYXQgdGhlIGVu
+ZCIsYSxiKSkKaWYoZT4yKXRocm93IEguYihQLnJyKCJJbnZhbGlkIGJhc2U2NCBwYWRkaW5nLCBtb3Jl
+IHRoYW4gdHdvICc9JyBjaGFyYWN0ZXJzIixhLGIpKX0sCkd5OmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4g
+bmV3IFAuVWQoYSxiKX0sCk5DOmZ1bmN0aW9uKGEpe3JldHVybiBhLkx0KCl9LAp1WDpmdW5jdGlvbihh
+LGIsYyl7dmFyIHQscz1uZXcgUC5SbigiIikscj1uZXcgUC50dShzLFtdLFAuQ3koKSkKci5pVShhKQp0
+PXMuYQpyZXR1cm4gdC5jaGFyQ29kZUF0KDApPT0wP3Q6dH0sCnV3OmZ1bmN0aW9uIHV3KGEsYil7dGhp
+cy5hPWEKdGhpcy5iPWIKdGhpcy5jPW51bGx9LAppODpmdW5jdGlvbiBpOChhKXt0aGlzLmE9YX0sCkNW
+OmZ1bmN0aW9uIENWKCl7fSwKVTg6ZnVuY3Rpb24gVTgoKXt9LApVazpmdW5jdGlvbiBVaygpe30sCndJ
+OmZ1bmN0aW9uIHdJKCl7fSwKWmk6ZnVuY3Rpb24gWmkoKXt9LApVZDpmdW5jdGlvbiBVZChhLGIpe3Ro
+aXMuYT1hCnRoaXMuYj1ifSwKSzg6ZnVuY3Rpb24gSzgoYSxiKXt0aGlzLmE9YQp0aGlzLmI9Yn0sCmJ5
+OmZ1bmN0aW9uIGJ5KCl7fSwKb2o6ZnVuY3Rpb24gb2ooYSl7dGhpcy5iPWF9LApNeDpmdW5jdGlvbiBN
+eChhKXt0aGlzLmE9YX0sClNoOmZ1bmN0aW9uIFNoKCl7fSwKdGk6ZnVuY3Rpb24gdGkoYSxiKXt0aGlz
+LmE9YQp0aGlzLmI9Yn0sCnR1OmZ1bmN0aW9uIHR1KGEsYixjKXt0aGlzLmM9YQp0aGlzLmE9Ygp0aGlz
+LmI9Y30sCnU1OmZ1bmN0aW9uIHU1KCl7fSwKRTM6ZnVuY3Rpb24gRTMoKXt9LApSdzpmdW5jdGlvbiBS
+dyhhKXt0aGlzLmI9MAp0aGlzLmM9YX0sCkdZOmZ1bmN0aW9uIEdZKGEpe3RoaXMuYT1hfSwKYno6ZnVu
+Y3Rpb24gYnooYSxiKXt2YXIgXz10aGlzCl8uYT1hCl8uYj1iCl8uYz0hMApfLmY9Xy5lPV8uZD0wfSwK
+UUE6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0PUguSHAoYSxjKQppZih0IT1udWxsKXJldHVybiB0CmlmKGIh
+PW51bGwpcmV0dXJuIGIuJDEoYSkKdGhyb3cgSC5iKFAucnIoYSxudWxsLG51bGwpKX0sCm9zOmZ1bmN0
+aW9uKGEpe2lmKGEgaW5zdGFuY2VvZiBILlRwKXJldHVybiBhLlooMCkKcmV0dXJuIkluc3RhbmNlIG9m
+ICciK0guZChILmxoKGEpKSsiJyJ9LApPODpmdW5jdGlvbihhLGIsYyl7dmFyIHQscz1KLlFpKGEsYykK
+aWYoYSE9PTAmJiEwKWZvcih0PTA7dDxzLmxlbmd0aDsrK3QpQy5ObS5ZKHMsdCxiKQpyZXR1cm4gc30s
+CkNIOmZ1bmN0aW9uKGEsYixjKXt2YXIgdCxzPUguVk0oW10sYy5DKCJqZDwwPiIpKQpmb3IodD1KLklU
+KGEpO3QuRigpOylDLk5tLmkocyxjLmEodC5nbCgpKSkKaWYoYilyZXR1cm4gcwpyZXR1cm4gYy5DKCJ6
+TTwwPiIpLmEoSi5FcChzKSl9LApBRjpmdW5jdGlvbihhLGIpe3JldHVybiBiLkMoInpNPDA+IikuYShK
+LnVuKFAuQ0goYSwhMSxiKSkpfSwKSE06ZnVuY3Rpb24oYSxiLGMpe3ZhciB0CmlmKEFycmF5LmlzQXJy
+YXkoYSkpe3UudC5hKGEpCnQ9YS5sZW5ndGgKYz1QLmpCKGIsYyx0KQpyZXR1cm4gSC5lVChiPjB8fGM8
+dD9DLk5tLkQ2KGEsYixjKTphKX1pZih1LmJtLmIoYSkpcmV0dXJuIEguZncoYSxiLFAuakIoYixjLGEu
+bGVuZ3RoKSkKcmV0dXJuIFAuYncoYSxiLGMpfSwKT286ZnVuY3Rpb24oYSl7cmV0dXJuIEguTHcoYSl9
+LApidzpmdW5jdGlvbihhLGIsYyl7dmFyIHQscyxyLHEscD1udWxsCmlmKGI8MCl0aHJvdyBILmIoUC5U
+RShiLDAsSi5IKGEpLHAscCkpCnQ9Yz09bnVsbAppZighdCYmYzxiKXRocm93IEguYihQLlRFKGMsYixK
+LkgoYSkscCxwKSkKcz1KLklUKGEpCmZvcihyPTA7cjxiOysrcilpZighcy5GKCkpdGhyb3cgSC5iKFAu
+VEUoYiwwLHIscCxwKSkKcT1bXQppZih0KWZvcig7cy5GKCk7KXEucHVzaChzLmdsKCkpCmVsc2UgZm9y
+KHI9YjtyPGM7KytyKXtpZighcy5GKCkpdGhyb3cgSC5iKFAuVEUoYyxiLHIscCxwKSkKcS5wdXNoKHMu
+Z2woKSl9cmV0dXJuIEguZVQocSl9LApudTpmdW5jdGlvbihhKXtyZXR1cm4gbmV3IEguVlIoYSxILnY0
+KGEsITEsITAsITEsITEsITEpKX0sCnZnOmZ1bmN0aW9uKGEsYixjKXt2YXIgdD1KLklUKGIpCmlmKCF0
+LkYoKSlyZXR1cm4gYQppZihjLmxlbmd0aD09PTApe2RvIGErPUguZCh0LmdsKCkpCndoaWxlKHQuRigp
+KX1lbHNle2ErPUguZCh0LmdsKCkpCmZvcig7dC5GKCk7KWE9YStjK0guZCh0LmdsKCkpfXJldHVybiBh
+fSwKbHI6ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIG5ldyBQLm1wKGEsYixjLGQpfSwKdW86ZnVuY3Rp
+b24oKXt2YXIgdD1ILk0wKCkKaWYodCE9bnVsbClyZXR1cm4gUC5oSyh0KQp0aHJvdyBILmIoUC5MNCgi
+J1VyaS5iYXNlJyBpcyBub3Qgc3VwcG9ydGVkIikpfSwKZVA6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIHQs
+cyxyLHEscCxvLG49IjAxMjM0NTY3ODlBQkNERUYiCmlmKGM9PT1DLnhNKXt0PSQuejQoKS5iCmlmKHR5
+cGVvZiBiIT0ic3RyaW5nIilILnZoKEguSShiKSkKdD10LnRlc3QoYil9ZWxzZSB0PSExCmlmKHQpcmV0
+dXJuIGIKSC5MaChjKS5DKCJVay5TIikuYShiKQpzPWMuZ1pFKCkuV0ooYikKZm9yKHQ9cy5sZW5ndGgs
+cj0wLHE9IiI7cjx0Oysrcil7cD1zW3JdCmlmKHA8MTI4KXtvPXA+Pj40CmlmKG8+PTgpcmV0dXJuIEgu
+ayhhLG8pCm89KGFbb10mMTw8KHAmMTUpKSE9PTB9ZWxzZSBvPSExCmlmKG8pcSs9SC5MdyhwKQplbHNl
IHE9ZCYmcD09PTMyP3ErIisiOnErIiUiK25bcD4+PjQmMTVdK25bcCYxNV19cmV0dXJuIHEuY2hhckNv
-ZGVBdCgwKT09MD9xOnF9LApHcTpmdW5jdGlvbihhKXt2YXIgdD1NYXRoLmFicyhhKSxzPWE8MD8iLSI6
+ZGVBdCgwKT09MD9xOnF9LApaYjpmdW5jdGlvbigpe3ZhciB0LHMKaWYoSC5vVCgkLnA2KCkpKXJldHVy
+biBILnRzKG5ldyBFcnJvcigpKQp0cnl7dGhyb3cgSC5iKCIiKX1jYXRjaChzKXtILlJ1KHMpCnQ9SC50
+cyhzKQpyZXR1cm4gdH19LApHcTpmdW5jdGlvbihhKXt2YXIgdD1NYXRoLmFicyhhKSxzPWE8MD8iLSI6
IiIKaWYodD49MTAwMClyZXR1cm4iIithCmlmKHQ+PTEwMClyZXR1cm4gcysiMCIrdAppZih0Pj0xMCly
ZXR1cm4gcysiMDAiK3QKcmV0dXJuIHMrIjAwMCIrdH0sClZ4OmZ1bmN0aW9uKGEpe2lmKGE+PTEwMCly
ZXR1cm4iIithCmlmKGE+PTEwKXJldHVybiIwIithCnJldHVybiIwMCIrYX0sCmgwOmZ1bmN0aW9uKGEp
-e2lmKGE+PTEwKXJldHVybiIiK2EKcmV0dXJuIjAiK2F9LApwOmZ1bmN0aW9uKGEpe2lmKHR5cGVvZiBh
-PT0ibnVtYmVyInx8SC5sKGEpfHxudWxsPT1hKXJldHVybiBKLmooYSkKaWYodHlwZW9mIGE9PSJzdHJp
-bmciKXJldHVybiBKU09OLnN0cmluZ2lmeShhKQpyZXR1cm4gUC5GKGEpfSwKaFY6ZnVuY3Rpb24oYSl7
-cmV0dXJuIG5ldyBQLkM2KGEpfSwKeFk6ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBQLnUoITEsbnVsbCxu
-dWxsLGEpfSwKTDM6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBuZXcgUC51KCEwLGEsYixjKX0sClVJOmZ1
-bmN0aW9uKGEsYixjKXtpZihhPT1udWxsKXRocm93IEguYihuZXcgUC51KCExLG51bGwsYiwiTXVzdCBu
-b3QgYmUgbnVsbCIpKQpyZXR1cm4gYX0sCk83OmZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyBQLmJKKG51
-bGwsbnVsbCwhMCxhLGIsIlZhbHVlIG5vdCBpbiByYW5nZSIpfSwKVEU6ZnVuY3Rpb24oYSxiLGMsZCxl
-KXtyZXR1cm4gbmV3IFAuYkooYixjLCEwLGEsZCwiSW52YWxpZCB2YWx1ZSIpfSwKd0E6ZnVuY3Rpb24o
-YSxiLGMsZCl7aWYoYTxifHxhPmMpdGhyb3cgSC5iKFAuVEUoYSxiLGMsZCxudWxsKSkKcmV0dXJuIGF9
-LApqQjpmdW5jdGlvbihhLGIsYyl7aWYoMD5hfHxhPmMpdGhyb3cgSC5iKFAuVEUoYSwwLGMsInN0YXJ0
-IixudWxsKSkKaWYoYiE9bnVsbCl7aWYoYT5ifHxiPmMpdGhyb3cgSC5iKFAuVEUoYixhLGMsImVuZCIs
-bnVsbCkpCnJldHVybiBifXJldHVybiBjfSwKazE6ZnVuY3Rpb24oYSxiKXtpZihhPDApdGhyb3cgSC5i
-KFAuVEUoYSwwLG51bGwsYixudWxsKSkKcmV0dXJuIGF9LApDZjpmdW5jdGlvbihhLGIsYyxkLGUpe3Zh
-ciB0PUgudVAoZT09bnVsbD9KLkhtKGIpOmUpCnJldHVybiBuZXcgUC5lWSh0LCEwLGEsYywiSW5kZXgg
-b3V0IG9mIHJhbmdlIil9LApMNDpmdW5jdGlvbihhKXtyZXR1cm4gbmV3IFAudWIoYSl9LApTWTpmdW5j
-dGlvbihhKXtyZXR1cm4gbmV3IFAuZHMoYSl9LApQVjpmdW5jdGlvbihhKXtyZXR1cm4gbmV3IFAubGoo
-YSl9LAphNDpmdW5jdGlvbihhKXtyZXR1cm4gbmV3IFAuVVYoYSl9LApycjpmdW5jdGlvbihhLGIsYyl7
-cmV0dXJuIG5ldyBQLmFFKGEsYixjKX0sCmhLOmZ1bmN0aW9uKGE0KXt2YXIgdCxzLHIscSxwLG8sbixt
-LGwsayxqLGksaCxnLGYsZSxkLGMsYixhLGEwLGExLGEyPW51bGwsYTM9YTQubGVuZ3RoCmlmKGEzPj01
-KXt0PSgoSi5ReihhNCw0KV41OCkqM3xDLnhCLlcoYTQsMCleMTAwfEMueEIuVyhhNCwxKV45N3xDLnhC
-LlcoYTQsMileMTE2fEMueEIuVyhhNCwzKV45Nyk+Pj4wCmlmKHQ9PT0wKXJldHVybiBQLktEKGEzPGEz
-P0MueEIuTmooYTQsMCxhMyk6YTQsNSxhMikuZ2xSKCkKZWxzZSBpZih0PT09MzIpcmV0dXJuIFAuS0Qo
-Qy54Qi5OaihhNCw1LGEzKSwwLGEyKS5nbFIoKX1zPVAuTzgoOCwwLCExLHUuUykKQy5ObS5ZKHMsMCww
-KQpDLk5tLlkocywxLC0xKQpDLk5tLlkocywyLC0xKQpDLk5tLlkocyw3LC0xKQpDLk5tLlkocywzLDAp
-CkMuTm0uWShzLDQsMCkKQy5ObS5ZKHMsNSxhMykKQy5ObS5ZKHMsNixhMykKaWYoUC5VQihhNCwwLGEz
-LDAscyk+PTE0KUMuTm0uWShzLDcsYTMpCmlmKDE+PXMubGVuZ3RoKXJldHVybiBILk9IKHMsMSkKcj1z
-WzFdCmlmKHI+PTApaWYoUC5VQihhNCwwLHIsMjAscyk9PT0yMCl7aWYoNz49cy5sZW5ndGgpcmV0dXJu
-IEguT0gocyw3KQpzWzddPXJ9cT1zLmxlbmd0aAppZigyPj1xKXJldHVybiBILk9IKHMsMikKcD1zWzJd
-KzEKaWYoMz49cSlyZXR1cm4gSC5PSChzLDMpCm89c1szXQppZig0Pj1xKXJldHVybiBILk9IKHMsNCkK
-bj1zWzRdCmlmKDU+PXEpcmV0dXJuIEguT0gocyw1KQptPXNbNV0KaWYoNj49cSlyZXR1cm4gSC5PSChz
-LDYpCmw9c1s2XQppZihsPG0pbT1sCmlmKG48cCluPW0KZWxzZSBpZihuPD1yKW49cisxCmlmKG88cClv
-PW4KaWYoNz49cSlyZXR1cm4gSC5PSChzLDcpCms9c1s3XTwwCmlmKGspaWYocD5yKzMpe2o9YTIKaz0h
-MX1lbHNle3E9bz4wCmlmKHEmJm8rMT09PW4pe2o9YTIKaz0hMX1lbHNle2lmKCEobTxhMyYmbT09PW4r
-MiYmSi5xMChhNCwiLi4iLG4pKSlpPW0+bisyJiZKLnEwKGE0LCIvLi4iLG0tMykKZWxzZSBpPSEwCmlm
-KGkpe2o9YTIKaz0hMX1lbHNle2lmKHI9PT00KWlmKEoucTAoYTQsImZpbGUiLDApKXtpZihwPD0wKXtp
-ZighQy54Qi5RaShhNCwiLyIsbikpe2g9ImZpbGU6Ly8vIgp0PTN9ZWxzZXtoPSJmaWxlOi8vIgp0PTJ9
-YTQ9aCtDLnhCLk5qKGE0LG4sYTMpCnItPTAKcT10LTAKbSs9cQpsKz1xCmEzPWE0Lmxlbmd0aApwPTcK
-bz03Cm49N31lbHNlIGlmKG49PT1tKXsrK2wKZz1tKzEKYTQ9Qy54Qi5pNyhhNCxuLG0sIi8iKTsrK2Ez
-Cm09Z31qPSJmaWxlIn1lbHNlIGlmKEMueEIuUWkoYTQsImh0dHAiLDApKXtpZihxJiZvKzM9PT1uJiZD
-LnhCLlFpKGE0LCI4MCIsbysxKSl7bC09MwpmPW4tMwptLT0zCmE0PUMueEIuaTcoYTQsbyxuLCIiKQph
-My09MwpuPWZ9aj0iaHR0cCJ9ZWxzZSBqPWEyCmVsc2UgaWYocj09PTUmJkoucTAoYTQsImh0dHBzIiww
-KSl7aWYocSYmbys0PT09biYmSi5xMChhNCwiNDQzIixvKzEpKXtsLT00CmY9bi00Cm0tPTQKYTQ9Si5k
-ZyhhNCxvLG4sIiIpCmEzLT0zCm49Zn1qPSJodHRwcyJ9ZWxzZSBqPWEyCms9ITB9fX1lbHNlIGo9YTIK
-aWYoayl7cT1hNC5sZW5ndGgKaWYoYTM8cSl7YTQ9Si5sZChhNCwwLGEzKQpyLT0wCnAtPTAKby09MApu
-LT0wCm0tPTAKbC09MH1yZXR1cm4gbmV3IFAuVWYoYTQscixwLG8sbixtLGwsail9aWYoaj09bnVsbClp
-ZihyPjApaj1QLlBpKGE0LDAscikKZWxzZXtpZihyPT09MClQLlIzKGE0LDAsIkludmFsaWQgZW1wdHkg
-c2NoZW1lIikKaj0iIn1pZihwPjApe2U9ciszCmQ9ZTxwP1AuelIoYTQsZSxwLTEpOiIiCmM9UC5PZShh
-NCxwLG8sITEpCnE9bysxCmlmKHE8bil7Yj1ILkhwKEoubGQoYTQscSxuKSxhMikKYT1QLndCKGI9PW51
-bGw/SC52aChQLnJyKCJJbnZhbGlkIHBvcnQiLGE0LHEpKTpiLGopfWVsc2UgYT1hMn1lbHNle2E9YTIK
-Yz1hCmQ9IiJ9YTA9UC5rYShhNCxuLG0sYTIsaixjIT1udWxsKQphMT1tPGw/UC5sZShhNCxtKzEsbCxh
-Mik6YTIKcmV0dXJuIG5ldyBQLkRuKGosZCxjLGEsYTAsYTEsbDxhMz9QLnRHKGE0LGwrMSxhMyk6YTIp
-fSwKTXQ6ZnVuY3Rpb24oYSl7SC5oKGEpCnJldHVybiBQLmt1KGEsMCxhLmxlbmd0aCxDLnhNLCExKX0s
-CldYOmZ1bmN0aW9uKGEpe3ZhciB0PXUuTgpyZXR1cm4gQy5ObS5OMChILlZNKGEuc3BsaXQoIiYiKSx1
-LnMpLFAuRmwodCx0KSxuZXcgUC5uMShDLnhNKSx1LmYpfSwKSGg6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0
-LHMscixxLHAsbyxuLG09IklQdjQgYWRkcmVzcyBzaG91bGQgY29udGFpbiBleGFjdGx5IDQgcGFydHMi
-LGw9ImVhY2ggcGFydCBtdXN0IGJlIGluIHRoZSByYW5nZSAwLi4yNTUiLGs9bmV3IFAuY1MoYSksaj1u
-ZXcgVWludDhBcnJheSg0KQpmb3IodD1qLmxlbmd0aCxzPWIscj1zLHE9MDtzPGM7KytzKXtwPUMueEIu
-bShhLHMpCmlmKHAhPT00Nil7aWYoKHBeNDgpPjkpay4kMigiaW52YWxpZCBjaGFyYWN0ZXIiLHMpfWVs
-c2V7aWYocT09PTMpay4kMihtLHMpCm89UC5RQShDLnhCLk5qKGEscixzKSxudWxsKQppZih0eXBlb2Yg
-byE9PSJudW1iZXIiKXJldHVybiBvLm9zKCkKaWYobz4yNTUpay4kMihsLHIpCm49cSsxCmlmKHE+PXQp
-cmV0dXJuIEguT0goaixxKQpqW3FdPW8Kcj1zKzEKcT1ufX1pZihxIT09MylrLiQyKG0sYykKbz1QLlFB
-KEMueEIuTmooYSxyLGMpLG51bGwpCmlmKHR5cGVvZiBvIT09Im51bWJlciIpcmV0dXJuIG8ub3MoKQpp
-ZihvPjI1NSlrLiQyKGwscikKaWYocT49dClyZXR1cm4gSC5PSChqLHEpCmpbcV09bwpyZXR1cm4gan0s
-CmVnOmZ1bmN0aW9uKGEsYixhMCl7dmFyIHQscyxyLHEscCxvLG4sbSxsLGssaixpLGgsZyxmLGUsZD1u
-ZXcgUC5WQyhhKSxjPW5ldyBQLkpUKGQsYSkKaWYoYS5sZW5ndGg8MilkLiQxKCJhZGRyZXNzIGlzIHRv
-byBzaG9ydCIpCnQ9SC5WTShbXSx1LnQpCmZvcihzPWIscj1zLHE9ITEscD0hMTtzPGEwOysrcyl7bz1D
-LnhCLm0oYSxzKQppZihvPT09NTgpe2lmKHM9PT1iKXsrK3MKaWYoQy54Qi5tKGEscykhPT01OClkLiQy
-KCJpbnZhbGlkIHN0YXJ0IGNvbG9uLiIscykKcj1zfWlmKHM9PT1yKXtpZihxKWQuJDIoIm9ubHkgb25l
-IHdpbGRjYXJkIGA6OmAgaXMgYWxsb3dlZCIscykKQy5ObS5pKHQsLTEpCnE9ITB9ZWxzZSBDLk5tLmko
-dCxjLiQyKHIscykpCnI9cysxfWVsc2UgaWYobz09PTQ2KXA9ITB9aWYodC5sZW5ndGg9PT0wKWQuJDEo
-InRvbyBmZXcgcGFydHMiKQpuPXI9PT1hMAptPUMuTm0uZ3JaKHQpCmlmKG4mJm0hPT0tMSlkLiQyKCJl
-eHBlY3RlZCBhIHBhcnQgYWZ0ZXIgbGFzdCBgOmAiLGEwKQppZighbilpZighcClDLk5tLmkodCxjLiQy
-KHIsYTApKQplbHNle2w9UC5IaChhLHIsYTApCkMuTm0uaSh0LChsWzBdPDw4fGxbMV0pPj4+MCkKQy5O
-bS5pKHQsKGxbMl08PDh8bFszXSk+Pj4wKX1pZihxKXtpZih0Lmxlbmd0aD43KWQuJDEoImFuIGFkZHJl
-c3Mgd2l0aCBhIHdpbGRjYXJkIG11c3QgaGF2ZSBsZXNzIHRoYW4gNyBwYXJ0cyIpfWVsc2UgaWYodC5s
-ZW5ndGghPT04KWQuJDEoImFuIGFkZHJlc3Mgd2l0aG91dCBhIHdpbGRjYXJkIG11c3QgY29udGFpbiBl
-eGFjdGx5IDggcGFydHMiKQprPW5ldyBVaW50OEFycmF5KDE2KQpmb3IobT10Lmxlbmd0aCxqPWsubGVu
-Z3RoLGk9OS1tLHM9MCxoPTA7czxtOysrcyl7Zz10W3NdCmlmKGc9PT0tMSlmb3IoZj0wO2Y8aTsrK2Yp
-e2lmKGg8MHx8aD49ailyZXR1cm4gSC5PSChrLGgpCmtbaF09MAplPWgrMQppZihlPj1qKXJldHVybiBI
-Lk9IKGssZSkKa1tlXT0wCmgrPTJ9ZWxzZXtlPUMuam4ud0coZyw4KQppZihoPDB8fGg+PWopcmV0dXJu
-IEguT0goayxoKQprW2hdPWUKZT1oKzEKaWYoZT49ailyZXR1cm4gSC5PSChrLGUpCmtbZV09ZyYyNTUK
-aCs9Mn19cmV0dXJuIGt9LApLTDpmdW5jdGlvbihhLGIsYyxkLGUsZixnKXt2YXIgdCxzLHIscSxwLG8K
-Zj1mPT1udWxsPyIiOlAuUGkoZiwwLGYubGVuZ3RoKQpnPVAuelIoZywwLGc9PW51bGw/MDpnLmxlbmd0
-aCkKYT1QLk9lKGEsMCxhPT1udWxsPzA6YS5sZW5ndGgsITEpCnQ9UC5sZShudWxsLDAsMCxlKQpzPVAu
-dEcobnVsbCwwLDApCmQ9UC53QihkLGYpCnI9Zj09PSJmaWxlIgppZihhPT1udWxsKXE9Zy5sZW5ndGgh
-PT0wfHxkIT1udWxsfHxyCmVsc2UgcT0hMQppZihxKWE9IiIKcT1hPT1udWxsCnA9IXEKYj1QLmthKGIs
-MCxiPT1udWxsPzA6Yi5sZW5ndGgsYyxmLHApCm89Zi5sZW5ndGg9PT0wCmlmKG8mJnEmJiFDLnhCLm4o
-YiwiLyIpKWI9UC53RihiLCFvfHxwKQplbHNlIGI9UC54ZShiKQpyZXR1cm4gbmV3IFAuRG4oZixnLHEm
-JkMueEIubihiLCIvLyIpPyIiOmEsZCxiLHQscyl9LAp3SzpmdW5jdGlvbihhKXtpZihhPT09Imh0dHAi
-KXJldHVybiA4MAppZihhPT09Imh0dHBzIilyZXR1cm4gNDQzCnJldHVybiAwfSwKUjM6ZnVuY3Rpb24o
-YSxiLGMpe3Rocm93IEguYihQLnJyKGMsYSxiKSl9LApYZDpmdW5jdGlvbihhLGIsYyxkKXt2YXIgdCxz
-LHIscSxwLG8sbixtLGwsayxqLGk9bnVsbCxoPWIubGVuZ3RoCmlmKGghPT0wKXtyPTAKd2hpbGUoITAp
-e2lmKCEocjxoKSl7dD0iIgpzPTAKYnJlYWt9aWYoQy54Qi5XKGIscik9PT02NCl7dD1DLnhCLk5qKGIs
-MCxyKQpzPXIrMQpicmVha30rK3J9aWYoczxoJiZDLnhCLlcoYixzKT09PTkxKXtmb3IocT1zLHA9LTE7
-cTxoOysrcSl7bz1DLnhCLlcoYixxKQppZihvPT09MzcmJnA8MCl7bj1DLnhCLlFpKGIsIjI1IixxKzEp
-P3ErMjpxCnA9cQpxPW59ZWxzZSBpZihvPT09OTMpYnJlYWt9aWYocT09PWgpdGhyb3cgSC5iKFAucnIo
-IkludmFsaWQgSVB2NiBob3N0IGVudHJ5LiIsYixzKSkKbT1wPDA/cTpwClAuZWcoYixzKzEsbSk7Kytx
-CmlmKHEhPT1oJiZDLnhCLlcoYixxKSE9PTU4KXRocm93IEguYihQLnJyKCJJbnZhbGlkIGVuZCBvZiBh
-dXRob3JpdHkiLGIscSkpfWVsc2UgcT1zCndoaWxlKCEwKXtpZighKHE8aCkpe2w9aQpicmVha31pZihD
-LnhCLlcoYixxKT09PTU4KXtrPUMueEIuRyhiLHErMSkKbD1rLmxlbmd0aCE9PTA/UC5RQShrLGkpOmkK
-YnJlYWt9KytxfWo9Qy54Qi5OaihiLHMscSl9ZWxzZXtsPWkKaj1sCnQ9IiJ9cmV0dXJuIFAuS0woaixp
-LEguVk0oYy5zcGxpdCgiLyIpLHUucyksbCxkLGEsdCl9LAprRTpmdW5jdGlvbihhLGIpe3ZhciB0LHMs
-cixxLHAKZm9yKHQ9YS5sZW5ndGgscz0wO3M8dDsrK3Mpe3I9YVtzXQpyLnRvU3RyaW5nCnE9Si5VNihy
-KQpwPXEuZ0EocikKaWYoMD5wKUgudmgoUC5URSgwLDAscS5nQShyKSxudWxsLG51bGwpKQppZihILm0y
-KHIsIi8iLDApKXt0PVAuTDQoIklsbGVnYWwgcGF0aCBjaGFyYWN0ZXIgIitILkVqKHIpKQp0aHJvdyBI
-LmIodCl9fX0sCkhOOmZ1bmN0aW9uKGEsYixjKXt2YXIgdCxzLHIKZm9yKHQ9SC5xQyhhLGMsbnVsbCxI
-LnQ2KGEpLmMpLHQ9bmV3IEguYTcodCx0LmdBKHQpLHQuJHRpLkMoImE3PGFMLkU+IikpO3QuRigpOyl7
-cz10LmQKcj1QLm51KCdbIiovOjw+P1xcXFx8XScpCnMudG9TdHJpbmcKaWYoSC5tMihzLHIsMCkpe3Q9
-UC5MNCgiSWxsZWdhbCBjaGFyYWN0ZXIgaW4gcGF0aDogIitzKQp0aHJvdyBILmIodCl9fX0sCnJnOmZ1
-bmN0aW9uKGEsYil7dmFyIHQKaWYoISg2NTw9YSYmYTw9OTApKXQ9OTc8PWEmJmE8PTEyMgplbHNlIHQ9
-ITAKaWYodClyZXR1cm4KdD1QLkw0KCJJbGxlZ2FsIGRyaXZlIGxldHRlciAiK1AuT28oYSkpCnRocm93
-IEguYih0KX0sCndCOmZ1bmN0aW9uKGEsYil7aWYoYSE9bnVsbCYmYT09PVAud0soYikpcmV0dXJuIG51
-bGwKcmV0dXJuIGF9LApPZTpmdW5jdGlvbihhLGIsYyxkKXt2YXIgdCxzLHIscSxwLG8KaWYoYT09bnVs
-bClyZXR1cm4gbnVsbAppZihiPT09YylyZXR1cm4iIgppZihDLnhCLm0oYSxiKT09PTkxKXt0PWMtMQpp
-ZihDLnhCLm0oYSx0KSE9PTkzKVAuUjMoYSxiLCJNaXNzaW5nIGVuZCBgXWAgdG8gbWF0Y2ggYFtgIGlu
-IGhvc3QiKQpzPWIrMQpyPVAudG8oYSxzLHQpCmlmKHI8dCl7cT1yKzEKcD1QLk9BKGEsQy54Qi5RaShh
-LCIyNSIscSk/ciszOnEsdCwiJTI1Iil9ZWxzZSBwPSIiClAuZWcoYSxzLHIpCnJldHVybiBDLnhCLk5q
-KGEsYixyKS50b0xvd2VyQ2FzZSgpK3ArIl0ifWZvcihvPWI7bzxjOysrbylpZihDLnhCLm0oYSxvKT09
-PTU4KXtyPUMueEIuWFUoYSwiJSIsYikKcj1yPj1iJiZyPGM/cjpjCmlmKHI8Yyl7cT1yKzEKcD1QLk9B
-KGEsQy54Qi5RaShhLCIyNSIscSk/ciszOnEsYywiJTI1Iil9ZWxzZSBwPSIiClAuZWcoYSxiLHIpCnJl
-dHVybiJbIitDLnhCLk5qKGEsYixyKStwKyJdIn1yZXR1cm4gUC5PTChhLGIsYyl9LAp0bzpmdW5jdGlv
-bihhLGIsYyl7dmFyIHQ9Qy54Qi5YVShhLCIlIixiKQpyZXR1cm4gdD49YiYmdDxjP3Q6Y30sCk9BOmZ1
-bmN0aW9uKGEsYixjLGQpe3ZhciB0LHMscixxLHAsbyxuLG0sbCxrLGo9ZCE9PSIiP25ldyBQLlJuKGQp
-Om51bGwKZm9yKHQ9YixzPXQscj0hMDt0PGM7KXtxPUMueEIubShhLHQpCmlmKHE9PT0zNyl7cD1QLnJ2
-KGEsdCwhMCkKbz1wPT1udWxsCmlmKG8mJnIpe3QrPTMKY29udGludWV9aWYoaj09bnVsbClqPW5ldyBQ
-LlJuKCIiKQpuPWouYSs9Qy54Qi5OaihhLHMsdCkKaWYobylwPUMueEIuTmooYSx0LHQrMykKZWxzZSBp
-ZihwPT09IiUiKVAuUjMoYSx0LCJab25lSUQgc2hvdWxkIG5vdCBjb250YWluICUgYW55bW9yZSIpCmou
-YT1uK3AKdCs9MwpzPXQKcj0hMH1lbHNle2lmKHE8MTI3KXtvPXE+Pj40CmlmKG8+PTgpcmV0dXJuIEgu
-T0goQy5GMyxvKQpvPShDLkYzW29dJjE8PChxJjE1KSkhPT0wfWVsc2Ugbz0hMQppZihvKXtpZihyJiY2
-NTw9cSYmOTA+PXEpe2lmKGo9PW51bGwpaj1uZXcgUC5SbigiIikKaWYoczx0KXtqLmErPUMueEIuTmoo
-YSxzLHQpCnM9dH1yPSExfSsrdH1lbHNle2lmKChxJjY0NTEyKT09PTU1Mjk2JiZ0KzE8Yyl7bT1DLnhC
-Lm0oYSx0KzEpCmlmKChtJjY0NTEyKT09PTU2MzIwKXtxPTY1NTM2fChxJjEwMjMpPDwxMHxtJjEwMjMK
-bD0yfWVsc2UgbD0xfWVsc2UgbD0xCms9Qy54Qi5OaihhLHMsdCkKaWYoaj09bnVsbCl7aj1uZXcgUC5S
-bigiIikKbz1qfWVsc2Ugbz1qCm8uYSs9awpvLmErPVAuelgocSkKdCs9bApzPXR9fX1pZihqPT1udWxs
-KXJldHVybiBDLnhCLk5qKGEsYixjKQppZihzPGMpai5hKz1DLnhCLk5qKGEscyxjKQpvPWouYQpyZXR1
-cm4gby5jaGFyQ29kZUF0KDApPT0wP286b30sCk9MOmZ1bmN0aW9uKGEsYixjKXt2YXIgdCxzLHIscSxw
-LG8sbixtLGwsayxqCmZvcih0PWIscz10LHI9bnVsbCxxPSEwO3Q8Yzspe3A9Qy54Qi5tKGEsdCkKaWYo
-cD09PTM3KXtvPVAucnYoYSx0LCEwKQpuPW89PW51bGwKaWYobiYmcSl7dCs9Mwpjb250aW51ZX1pZihy
-PT1udWxsKXI9bmV3IFAuUm4oIiIpCm09Qy54Qi5OaihhLHMsdCkKbD1yLmErPSFxP20udG9Mb3dlckNh
-c2UoKTptCmlmKG4pe289Qy54Qi5OaihhLHQsdCszKQprPTN9ZWxzZSBpZihvPT09IiUiKXtvPSIlMjUi
-Cms9MX1lbHNlIGs9MwpyLmE9bCtvCnQrPWsKcz10CnE9ITB9ZWxzZXtpZihwPDEyNyl7bj1wPj4+NApp
-ZihuPj04KXJldHVybiBILk9IKEMuZWEsbikKbj0oQy5lYVtuXSYxPDwocCYxNSkpIT09MH1lbHNlIG49
-ITEKaWYobil7aWYocSYmNjU8PXAmJjkwPj1wKXtpZihyPT1udWxsKXI9bmV3IFAuUm4oIiIpCmlmKHM8
-dCl7ci5hKz1DLnhCLk5qKGEscyx0KQpzPXR9cT0hMX0rK3R9ZWxzZXtpZihwPD05Myl7bj1wPj4+NApp
-ZihuPj04KXJldHVybiBILk9IKEMuYWssbikKbj0oQy5ha1tuXSYxPDwocCYxNSkpIT09MH1lbHNlIG49
-ITEKaWYobilQLlIzKGEsdCwiSW52YWxpZCBjaGFyYWN0ZXIiKQplbHNle2lmKChwJjY0NTEyKT09PTU1
-Mjk2JiZ0KzE8Yyl7aj1DLnhCLm0oYSx0KzEpCmlmKChqJjY0NTEyKT09PTU2MzIwKXtwPTY1NTM2fChw
-JjEwMjMpPDwxMHxqJjEwMjMKaz0yfWVsc2Ugaz0xfWVsc2Ugaz0xCm09Qy54Qi5OaihhLHMsdCkKaWYo
-IXEpbT1tLnRvTG93ZXJDYXNlKCkKaWYocj09bnVsbCl7cj1uZXcgUC5SbigiIikKbj1yfWVsc2Ugbj1y
-Cm4uYSs9bQpuLmErPVAuelgocCkKdCs9awpzPXR9fX19aWYocj09bnVsbClyZXR1cm4gQy54Qi5Oaihh
-LGIsYykKaWYoczxjKXttPUMueEIuTmooYSxzLGMpCnIuYSs9IXE/bS50b0xvd2VyQ2FzZSgpOm19bj1y
-LmEKcmV0dXJuIG4uY2hhckNvZGVBdCgwKT09MD9uOm59LApQaTpmdW5jdGlvbihhLGIsYyl7dmFyIHQs
-cyxyLHEKaWYoYj09PWMpcmV0dXJuIiIKaWYoIVAuRXQoSi5yWShhKS5XKGEsYikpKVAuUjMoYSxiLCJT
-Y2hlbWUgbm90IHN0YXJ0aW5nIHdpdGggYWxwaGFiZXRpYyBjaGFyYWN0ZXIiKQpmb3IodD1iLHM9ITE7
-dDxjOysrdCl7cj1DLnhCLlcoYSx0KQppZihyPDEyOCl7cT1yPj4+NAppZihxPj04KXJldHVybiBILk9I
-KEMubUsscSkKcT0oQy5tS1txXSYxPDwociYxNSkpIT09MH1lbHNlIHE9ITEKaWYoIXEpUC5SMyhhLHQs
-IklsbGVnYWwgc2NoZW1lIGNoYXJhY3RlciIpCmlmKDY1PD1yJiZyPD05MClzPSEwfWE9Qy54Qi5Oaihh
-LGIsYykKcmV0dXJuIFAuWWEocz9hLnRvTG93ZXJDYXNlKCk6YSl9LApZYTpmdW5jdGlvbihhKXtpZihh
-PT09Imh0dHAiKXJldHVybiJodHRwIgppZihhPT09ImZpbGUiKXJldHVybiJmaWxlIgppZihhPT09Imh0
-dHBzIilyZXR1cm4iaHR0cHMiCmlmKGE9PT0icGFja2FnZSIpcmV0dXJuInBhY2thZ2UiCnJldHVybiBh
-fSwKelI6ZnVuY3Rpb24oYSxiLGMpe2lmKGE9PW51bGwpcmV0dXJuIiIKcmV0dXJuIFAuUEkoYSxiLGMs
-Qy50bywhMSl9LAprYTpmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIHQscyxyPWU9PT0iZmlsZSIscT1y
-fHxmCmlmKGE9PW51bGwpe2lmKGQ9PW51bGwpcmV0dXJuIHI/Ii8iOiIiCnQ9SC50NihkKQpzPW5ldyBI
-LmxKKGQsdC5DKCJxVSgxKSIpLmEobmV3IFAuUlooKSksdC5DKCJsSjwxLHFVPiIpKS56VigwLCIvIil9
-ZWxzZSBpZihkIT1udWxsKXRocm93IEguYihQLnhZKCJCb3RoIHBhdGggYW5kIHBhdGhTZWdtZW50cyBz
-cGVjaWZpZWQiKSkKZWxzZSBzPVAuUEkoYSxiLGMsQy5XZCwhMCkKaWYocy5sZW5ndGg9PT0wKXtpZihy
-KXJldHVybiIvIn1lbHNlIGlmKHEmJiFDLnhCLm4ocywiLyIpKXM9Ii8iK3MKcmV0dXJuIFAuSnIocyxl
-LGYpfSwKSnI6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0PWIubGVuZ3RoPT09MAppZih0JiYhYyYmIUMueEIu
-bihhLCIvIikpcmV0dXJuIFAud0YoYSwhdHx8YykKcmV0dXJuIFAueGUoYSl9LApsZTpmdW5jdGlvbihh
-LGIsYyxkKXt2YXIgdCxzPXt9CmlmKGEhPW51bGwpe2lmKGQhPW51bGwpdGhyb3cgSC5iKFAueFkoIkJv
-dGggcXVlcnkgYW5kIHF1ZXJ5UGFyYW1ldGVycyBzcGVjaWZpZWQiKSkKcmV0dXJuIFAuUEkoYSxiLGMs
-Qy5WQywhMCl9aWYoZD09bnVsbClyZXR1cm4gbnVsbAp0PW5ldyBQLlJuKCIiKQpzLmE9IiIKZC5LKDAs
-bmV3IFAueTUobmV3IFAuTUUocyx0KSkpCnM9dC5hCnJldHVybiBzLmNoYXJDb2RlQXQoMCk9PTA/czpz
-fSwKdEc6ZnVuY3Rpb24oYSxiLGMpe2lmKGE9PW51bGwpcmV0dXJuIG51bGwKcmV0dXJuIFAuUEkoYSxi
-LGMsQy5WQywhMCl9LApydjpmdW5jdGlvbihhLGIsYyl7dmFyIHQscyxyLHEscCxvPWIrMgppZihvPj1h
-Lmxlbmd0aClyZXR1cm4iJSIKdD1DLnhCLm0oYSxiKzEpCnM9Qy54Qi5tKGEsbykKcj1ILm9vKHQpCnE9
-SC5vbyhzKQppZihyPDB8fHE8MClyZXR1cm4iJSIKcD1yKjE2K3EKaWYocDwxMjcpe289Qy5qbi53Ryhw
-LDQpCmlmKG8+PTgpcmV0dXJuIEguT0goQy5GMyxvKQpvPShDLkYzW29dJjE8PChwJjE1KSkhPT0wfWVs
-c2Ugbz0hMQppZihvKXJldHVybiBILkx3KGMmJjY1PD1wJiY5MD49cD8ocHwzMik+Pj4wOnApCmlmKHQ+
-PTk3fHxzPj05NylyZXR1cm4gQy54Qi5OaihhLGIsYiszKS50b1VwcGVyQ2FzZSgpCnJldHVybiBudWxs
-fSwKelg6ZnVuY3Rpb24oYSl7dmFyIHQscyxyLHEscCxvLG4sbSxsPSIwMTIzNDU2Nzg5QUJDREVGIgpp
-ZihhPDEyOCl7dD1uZXcgVWludDhBcnJheSgzKQpzPXQubGVuZ3RoCmlmKDA+PXMpcmV0dXJuIEguT0go
-dCwwKQp0WzBdPTM3CnI9Qy54Qi5XKGwsYT4+PjQpCmlmKDE+PXMpcmV0dXJuIEguT0godCwxKQp0WzFd
-PXIKcj1DLnhCLlcobCxhJjE1KQppZigyPj1zKXJldHVybiBILk9IKHQsMikKdFsyXT1yfWVsc2V7aWYo
-YT4yMDQ3KWlmKGE+NjU1MzUpe3E9MjQwCnA9NH1lbHNle3E9MjI0CnA9M31lbHNle3E9MTkyCnA9Mn10
-PW5ldyBVaW50OEFycmF5KDMqcCkKZm9yKHM9dC5sZW5ndGgsbz0wOy0tcCxwPj0wO3E9MTI4KXtuPUMu
-am4uYmYoYSw2KnApJjYzfHEKaWYobz49cylyZXR1cm4gSC5PSCh0LG8pCnRbb109MzcKcj1vKzEKbT1D
-LnhCLlcobCxuPj4+NCkKaWYocj49cylyZXR1cm4gSC5PSCh0LHIpCnRbcl09bQptPW8rMgpyPUMueEIu
-VyhsLG4mMTUpCmlmKG0+PXMpcmV0dXJuIEguT0godCxtKQp0W21dPXIKbys9M319cmV0dXJuIFAuSE0o
-dCwwLG51bGwpfSwKUEk6ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgdD1QLlVsKGEsYixjLGQsZSkKcmV0
-dXJuIHQ9PW51bGw/Qy54Qi5OaihhLGIsYyk6dH0sClVsOmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIHQs
-cyxyLHEscCxvLG4sbSxsLGs9bnVsbApmb3IodD0hZSxzPWIscj1zLHE9aztzPGM7KXtwPUMueEIubShh
-LHMpCmlmKHA8MTI3KXtvPXA+Pj40CmlmKG8+PTgpcmV0dXJuIEguT0goZCxvKQpvPShkW29dJjE8PChw
-JjE1KSkhPT0wfWVsc2Ugbz0hMQppZihvKSsrcwplbHNle2lmKHA9PT0zNyl7bj1QLnJ2KGEscywhMSkK
-aWYobj09bnVsbCl7cys9Mwpjb250aW51ZX1pZigiJSI9PT1uKXtuPSIlMjUiCm09MX1lbHNlIG09M31l
-bHNle2lmKHQpaWYocDw9OTMpe289cD4+PjQKaWYobz49OClyZXR1cm4gSC5PSChDLmFrLG8pCm89KEMu
-YWtbb10mMTw8KHAmMTUpKSE9PTB9ZWxzZSBvPSExCmVsc2Ugbz0hMQppZihvKXtQLlIzKGEscywiSW52
-YWxpZCBjaGFyYWN0ZXIiKQptPWsKbj1tfWVsc2V7aWYoKHAmNjQ1MTIpPT09NTUyOTYpe289cysxCmlm
-KG88Yyl7bD1DLnhCLm0oYSxvKQppZigobCY2NDUxMik9PT01NjMyMCl7cD02NTUzNnwocCYxMDIzKTw8
-MTB8bCYxMDIzCm09Mn1lbHNlIG09MX1lbHNlIG09MX1lbHNlIG09MQpuPVAuelgocCl9fWlmKHE9PW51
-bGwpe3E9bmV3IFAuUm4oIiIpCm89cX1lbHNlIG89cQpvLmErPUMueEIuTmooYSxyLHMpCm8uYSs9SC5F
-aihuKQppZih0eXBlb2YgbSE9PSJudW1iZXIiKXJldHVybiBILnBZKG0pCnMrPW0Kcj1zfX1pZihxPT1u
-dWxsKXJldHVybiBrCmlmKHI8YylxLmErPUMueEIuTmooYSxyLGMpCnQ9cS5hCnJldHVybiB0LmNoYXJD
-b2RlQXQoMCk9PTA/dDp0fSwKeUI6ZnVuY3Rpb24oYSl7aWYoQy54Qi5uKGEsIi4iKSlyZXR1cm4hMApy
-ZXR1cm4gQy54Qi5PWShhLCIvLiIpIT09LTF9LAp4ZTpmdW5jdGlvbihhKXt2YXIgdCxzLHIscSxwLG8s
-bgppZighUC55QihhKSlyZXR1cm4gYQp0PUguVk0oW10sdS5zKQpmb3Iocz1hLnNwbGl0KCIvIikscj1z
-Lmxlbmd0aCxxPSExLHA9MDtwPHI7KytwKXtvPXNbcF0KaWYoSi5STShvLCIuLiIpKXtuPXQubGVuZ3Ro
-CmlmKG4hPT0wKXtpZigwPj1uKXJldHVybiBILk9IKHQsLTEpCnQucG9wKCkKaWYodC5sZW5ndGg9PT0w
-KUMuTm0uaSh0LCIiKX1xPSEwfWVsc2UgaWYoIi4iPT09bylxPSEwCmVsc2V7Qy5ObS5pKHQsbykKcT0h
-MX19aWYocSlDLk5tLmkodCwiIikKcmV0dXJuIEMuTm0uelYodCwiLyIpfSwKd0Y6ZnVuY3Rpb24oYSxi
-KXt2YXIgdCxzLHIscSxwLG8KaWYoIVAueUIoYSkpcmV0dXJuIWI/UC5DMShhKTphCnQ9SC5WTShbXSx1
-LnMpCmZvcihzPWEuc3BsaXQoIi8iKSxyPXMubGVuZ3RoLHE9ITEscD0wO3A8cjsrK3Ape289c1twXQpp
-ZigiLi4iPT09bylpZih0Lmxlbmd0aCE9PTAmJkMuTm0uZ3JaKHQpIT09Ii4uIil7aWYoMD49dC5sZW5n
-dGgpcmV0dXJuIEguT0godCwtMSkKdC5wb3AoKQpxPSEwfWVsc2V7Qy5ObS5pKHQsIi4uIikKcT0hMX1l
-bHNlIGlmKCIuIj09PW8pcT0hMAplbHNle0MuTm0uaSh0LG8pCnE9ITF9fXM9dC5sZW5ndGgKaWYocyE9
-PTApaWYocz09PTEpe2lmKDA+PXMpcmV0dXJuIEguT0godCwwKQpzPXRbMF0ubGVuZ3RoPT09MH1lbHNl
-IHM9ITEKZWxzZSBzPSEwCmlmKHMpcmV0dXJuIi4vIgppZihxfHxDLk5tLmdyWih0KT09PSIuLiIpQy5O
-bS5pKHQsIiIpCmlmKCFiKXtpZigwPj10Lmxlbmd0aClyZXR1cm4gSC5PSCh0LDApCkMuTm0uWSh0LDAs
-UC5DMSh0WzBdKSl9cmV0dXJuIEMuTm0uelYodCwiLyIpfSwKQzE6ZnVuY3Rpb24oYSl7dmFyIHQscyxy
-LHE9YS5sZW5ndGgKaWYocT49MiYmUC5FdChKLlF6KGEsMCkpKWZvcih0PTE7dDxxOysrdCl7cz1DLnhC
-LlcoYSx0KQppZihzPT09NTgpcmV0dXJuIEMueEIuTmooYSwwLHQpKyIlM0EiK0MueEIuRyhhLHQrMSkK
-aWYoczw9MTI3KXtyPXM+Pj40CmlmKHI+PTgpcmV0dXJuIEguT0goQy5tSyxyKQpyPShDLm1LW3JdJjE8
-PChzJjE1KSk9PT0wfWVsc2Ugcj0hMAppZihyKWJyZWFrfXJldHVybiBhfSwKbW46ZnVuY3Rpb24oYSl7
-dmFyIHQscyxyLHE9YS5nRmooKSxwPXEubGVuZ3RoCmlmKHA+MCYmSi5IbShxWzBdKT09PTImJkouYTYo
-cVswXSwxKT09PTU4KXtpZigwPj1wKXJldHVybiBILk9IKHEsMCkKUC5yZyhKLmE2KHFbMF0sMCksITEp
-ClAuSE4ocSwhMSwxKQp0PSEwfWVsc2V7UC5ITihxLCExLDApCnQ9ITF9cz1hLmd0VCgpJiYhdD8iIisi
-XFwiOiIiCmlmKGEuZ2NqKCkpe3I9YS5nSmYoYSkKaWYoci5sZW5ndGghPT0wKXM9cysiXFwiK3IrIlxc
-In1zPVAudmcocyxxLCJcXCIpCnA9dCYmcD09PTE/cysiXFwiOnMKcmV0dXJuIHAuY2hhckNvZGVBdCgw
-KT09MD9wOnB9LApJaDpmdW5jdGlvbihhLGIpe3ZhciB0LHMscgpmb3IodD0wLHM9MDtzPDI7KytzKXty
-PUMueEIuVyhhLGIrcykKaWYoNDg8PXImJnI8PTU3KXQ9dCoxNityLTQ4CmVsc2V7cnw9MzIKaWYoOTc8
-PXImJnI8PTEwMil0PXQqMTYrci04NwplbHNlIHRocm93IEguYihQLnhZKCJJbnZhbGlkIFVSTCBlbmNv
-ZGluZyIpKX19cmV0dXJuIHR9LAprdTpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciB0LHMscixxLHA9Si5y
-WShhKSxvPWIKd2hpbGUoITApe2lmKCEobzxjKSl7dD0hMApicmVha31zPXAuVyhhLG8pCmlmKHM8PTEy
-NylpZihzIT09Mzcpcj1lJiZzPT09NDMKZWxzZSByPSEwCmVsc2Ugcj0hMAppZihyKXt0PSExCmJyZWFr
-fSsrb31pZih0KXtpZihDLnhNIT09ZClyPSExCmVsc2Ugcj0hMAppZihyKXJldHVybiBwLk5qKGEsYixj
-KQplbHNlIHE9bmV3IEgucWoocC5OaihhLGIsYykpfWVsc2V7cT1ILlZNKFtdLHUudCkKZm9yKG89Yjtv
-PGM7KytvKXtzPXAuVyhhLG8pCmlmKHM+MTI3KXRocm93IEguYihQLnhZKCJJbGxlZ2FsIHBlcmNlbnQg
-ZW5jb2RpbmcgaW4gVVJJIikpCmlmKHM9PT0zNyl7aWYobyszPmEubGVuZ3RoKXRocm93IEguYihQLnhZ
-KCJUcnVuY2F0ZWQgVVJJIikpCkMuTm0uaShxLFAuSWgoYSxvKzEpKQpvKz0yfWVsc2UgaWYoZSYmcz09
-PTQzKUMuTm0uaShxLDMyKQplbHNlIEMuTm0uaShxLHMpfX11LkwuYShxKQpyZXR1cm4gbmV3IFAuR1ko
-ITEpLldKKHEpfSwKRXQ6ZnVuY3Rpb24oYSl7dmFyIHQ9YXwzMgpyZXR1cm4gOTc8PXQmJnQ8PTEyMn0s
-CktEOmZ1bmN0aW9uKGEsYixjKXt2YXIgdCxzLHIscSxwLG8sbixtLGw9IkludmFsaWQgTUlNRSB0eXBl
-IixrPUguVk0oW2ItMV0sdS50KQpmb3IodD1hLmxlbmd0aCxzPWIscj0tMSxxPW51bGw7czx0Oysrcyl7
-cT1DLnhCLlcoYSxzKQppZihxPT09NDR8fHE9PT01OSlicmVhawppZihxPT09NDcpe2lmKHI8MCl7cj1z
-CmNvbnRpbnVlfXRocm93IEguYihQLnJyKGwsYSxzKSl9fWlmKHI8MCYmcz5iKXRocm93IEguYihQLnJy
-KGwsYSxzKSkKZm9yKDtxIT09NDQ7KXtDLk5tLmkoayxzKTsrK3MKZm9yKHA9LTE7czx0Oysrcyl7cT1D
-LnhCLlcoYSxzKQppZihxPT09NjEpe2lmKHA8MClwPXN9ZWxzZSBpZihxPT09NTl8fHE9PT00NClicmVh
-a31pZihwPj0wKUMuTm0uaShrLHApCmVsc2V7bz1DLk5tLmdyWihrKQppZihxIT09NDR8fHMhPT1vKzd8
-fCFDLnhCLlFpKGEsImJhc2U2NCIsbysxKSl0aHJvdyBILmIoUC5ycigiRXhwZWN0aW5nICc9JyIsYSxz
-KSkKYnJlYWt9fUMuTm0uaShrLHMpCm49cysxCmlmKChrLmxlbmd0aCYxKT09PTEpYT1DLmg5LnlyKGEs
-bix0KQplbHNle209UC5VbChhLG4sdCxDLlZDLCEwKQppZihtIT1udWxsKWE9Qy54Qi5pNyhhLG4sdCxt
-KX1yZXR1cm4gbmV3IFAuUEUoYSxrLGMpfSwKS046ZnVuY3Rpb24oKXt2YXIgdD0iMDEyMzQ1Njc4OUFC
-Q0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXotLl9+ISQmJygp
-KissOz0iLHM9Ii4iLHI9IjoiLHE9Ii8iLHA9Ij8iLG89IiMiLG49dS5nYyxtPVAuZEgoMjIsbmV3IFAu
-cTMoKSwhMCxuKSxsPW5ldyBQLnlJKG0pLGs9bmV3IFAuYzYoKSxqPW5ldyBQLnFkKCksaT1uLmEobC4k
-MigwLDIyNSkpCmsuJDMoaSx0LDEpCmsuJDMoaSxzLDE0KQprLiQzKGksciwzNCkKay4kMyhpLHEsMykK
-ay4kMyhpLHAsMTcyKQprLiQzKGksbywyMDUpCmk9bi5hKGwuJDIoMTQsMjI1KSkKay4kMyhpLHQsMSkK
-ay4kMyhpLHMsMTUpCmsuJDMoaSxyLDM0KQprLiQzKGkscSwyMzQpCmsuJDMoaSxwLDE3MikKay4kMyhp
-LG8sMjA1KQppPW4uYShsLiQyKDE1LDIyNSkpCmsuJDMoaSx0LDEpCmsuJDMoaSwiJSIsMjI1KQprLiQz
-KGksciwzNCkKay4kMyhpLHEsOSkKay4kMyhpLHAsMTcyKQprLiQzKGksbywyMDUpCmk9bi5hKGwuJDIo
-MSwyMjUpKQprLiQzKGksdCwxKQprLiQzKGksciwzNCkKay4kMyhpLHEsMTApCmsuJDMoaSxwLDE3MikK
-ay4kMyhpLG8sMjA1KQppPW4uYShsLiQyKDIsMjM1KSkKay4kMyhpLHQsMTM5KQprLiQzKGkscSwxMzEp
-CmsuJDMoaSxzLDE0NikKay4kMyhpLHAsMTcyKQprLiQzKGksbywyMDUpCmk9bi5hKGwuJDIoMywyMzUp
-KQprLiQzKGksdCwxMSkKay4kMyhpLHEsNjgpCmsuJDMoaSxzLDE4KQprLiQzKGkscCwxNzIpCmsuJDMo
-aSxvLDIwNSkKaT1uLmEobC4kMig0LDIyOSkpCmsuJDMoaSx0LDUpCmouJDMoaSwiQVoiLDIyOSkKay4k
-MyhpLHIsMTAyKQprLiQzKGksIkAiLDY4KQprLiQzKGksIlsiLDIzMikKay4kMyhpLHEsMTM4KQprLiQz
-KGkscCwxNzIpCmsuJDMoaSxvLDIwNSkKaT1uLmEobC4kMig1LDIyOSkpCmsuJDMoaSx0LDUpCmouJDMo
-aSwiQVoiLDIyOSkKay4kMyhpLHIsMTAyKQprLiQzKGksIkAiLDY4KQprLiQzKGkscSwxMzgpCmsuJDMo
-aSxwLDE3MikKay4kMyhpLG8sMjA1KQppPW4uYShsLiQyKDYsMjMxKSkKai4kMyhpLCIxOSIsNykKay4k
-MyhpLCJAIiw2OCkKay4kMyhpLHEsMTM4KQprLiQzKGkscCwxNzIpCmsuJDMoaSxvLDIwNSkKaT1uLmEo
-bC4kMig3LDIzMSkpCmouJDMoaSwiMDkiLDcpCmsuJDMoaSwiQCIsNjgpCmsuJDMoaSxxLDEzOCkKay4k
-MyhpLHAsMTcyKQprLiQzKGksbywyMDUpCmsuJDMobi5hKGwuJDIoOCw4KSksIl0iLDUpCmk9bi5hKGwu
-JDIoOSwyMzUpKQprLiQzKGksdCwxMSkKay4kMyhpLHMsMTYpCmsuJDMoaSxxLDIzNCkKay4kMyhpLHAs
-MTcyKQprLiQzKGksbywyMDUpCmk9bi5hKGwuJDIoMTYsMjM1KSkKay4kMyhpLHQsMTEpCmsuJDMoaSxz
-LDE3KQprLiQzKGkscSwyMzQpCmsuJDMoaSxwLDE3MikKay4kMyhpLG8sMjA1KQppPW4uYShsLiQyKDE3
-LDIzNSkpCmsuJDMoaSx0LDExKQprLiQzKGkscSw5KQprLiQzKGkscCwxNzIpCmsuJDMoaSxvLDIwNSkK
-aT1uLmEobC4kMigxMCwyMzUpKQprLiQzKGksdCwxMSkKay4kMyhpLHMsMTgpCmsuJDMoaSxxLDIzNCkK
-ay4kMyhpLHAsMTcyKQprLiQzKGksbywyMDUpCmk9bi5hKGwuJDIoMTgsMjM1KSkKay4kMyhpLHQsMTEp
-CmsuJDMoaSxzLDE5KQprLiQzKGkscSwyMzQpCmsuJDMoaSxwLDE3MikKay4kMyhpLG8sMjA1KQppPW4u
-YShsLiQyKDE5LDIzNSkpCmsuJDMoaSx0LDExKQprLiQzKGkscSwyMzQpCmsuJDMoaSxwLDE3MikKay4k
-MyhpLG8sMjA1KQppPW4uYShsLiQyKDExLDIzNSkpCmsuJDMoaSx0LDExKQprLiQzKGkscSwxMCkKay4k
-MyhpLHAsMTcyKQprLiQzKGksbywyMDUpCmk9bi5hKGwuJDIoMTIsMjM2KSkKay4kMyhpLHQsMTIpCmsu
-JDMoaSxwLDEyKQprLiQzKGksbywyMDUpCmk9bi5hKGwuJDIoMTMsMjM3KSkKay4kMyhpLHQsMTMpCmsu
-JDMoaSxwLDEzKQpqLiQzKG4uYShsLiQyKDIwLDI0NSkpLCJheiIsMjEpCmw9bi5hKGwuJDIoMjEsMjQ1
-KSkKai4kMyhsLCJheiIsMjEpCmouJDMobCwiMDkiLDIxKQprLiQzKGwsIistLiIsMjEpCnJldHVybiBt
-fSwKVUI6ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgdCxzLHIscSxwLG89JC52WigpCmZvcih0PUouclko
-YSkscz1iO3M8YzsrK3Mpe2lmKGQ8MHx8ZD49by5sZW5ndGgpcmV0dXJuIEguT0gobyxkKQpyPW9bZF0K
-cT10LlcoYSxzKV45NgppZihxPjk1KXE9MzEKaWYocT49ci5sZW5ndGgpcmV0dXJuIEguT0gocixxKQpw
-PXJbcV0KZD1wJjMxCkMuTm0uWShlLHA+Pj41LHMpfXJldHVybiBkfSwKV0Y6ZnVuY3Rpb24gV0YoYSxi
-KXt0aGlzLmE9YQp0aGlzLmI9Yn0sCmEyOmZ1bmN0aW9uIGEyKCl7fSwKaVA6ZnVuY3Rpb24gaVAoYSxi
-KXt0aGlzLmE9YQp0aGlzLmI9Yn0sCkNQOmZ1bmN0aW9uIENQKCl7fSwKWFM6ZnVuY3Rpb24gWFMoKXt9
-LApDNjpmdW5jdGlvbiBDNihhKXt0aGlzLmE9YX0sCm46ZnVuY3Rpb24gbigpe30sCnU6ZnVuY3Rpb24g
-dShhLGIsYyxkKXt2YXIgXz10aGlzCl8uYT1hCl8uYj1iCl8uYz1jCl8uZD1kfSwKYko6ZnVuY3Rpb24g
-YkooYSxiLGMsZCxlLGYpe3ZhciBfPXRoaXMKXy5lPWEKXy5mPWIKXy5hPWMKXy5iPWQKXy5jPWUKXy5k
-PWZ9LAplWTpmdW5jdGlvbiBlWShhLGIsYyxkLGUpe3ZhciBfPXRoaXMKXy5mPWEKXy5hPWIKXy5iPWMK
-Xy5jPWQKXy5kPWV9LAptcDpmdW5jdGlvbiBtcChhLGIsYyxkKXt2YXIgXz10aGlzCl8uYT1hCl8uYj1i
-Cl8uYz1jCl8uZD1kfSwKdWI6ZnVuY3Rpb24gdWIoYSl7dGhpcy5hPWF9LApkczpmdW5jdGlvbiBkcyhh
-KXt0aGlzLmE9YX0sCmxqOmZ1bmN0aW9uIGxqKGEpe3RoaXMuYT1hfSwKVVY6ZnVuY3Rpb24gVVYoYSl7
-dGhpcy5hPWF9LAprNTpmdW5jdGlvbiBrNSgpe30sCktZOmZ1bmN0aW9uIEtZKCl7fSwKYzpmdW5jdGlv
-biBjKGEpe3RoaXMuYT1hfSwKQ0Q6ZnVuY3Rpb24gQ0QoYSl7dGhpcy5hPWF9LAphRTpmdW5jdGlvbiBh
-RShhLGIsYyl7dGhpcy5hPWEKdGhpcy5iPWIKdGhpcy5jPWN9LApFSDpmdW5jdGlvbiBFSCgpe30sCklm
-OmZ1bmN0aW9uIElmKCl7fSwKY1g6ZnVuY3Rpb24gY1goKXt9LApBbjpmdW5jdGlvbiBBbigpe30sCnpN
-OmZ1bmN0aW9uIHpNKCl7fSwKWjA6ZnVuY3Rpb24gWjAoKXt9LApOMzpmdW5jdGlvbiBOMyhhLGIsYyl7
-dGhpcy5hPWEKdGhpcy5iPWIKdGhpcy4kdGk9Y30sCmM4OmZ1bmN0aW9uIGM4KCl7fSwKbGY6ZnVuY3Rp
-b24gbGYoKXt9LApNaDpmdW5jdGlvbiBNaCgpe30sCk9kOmZ1bmN0aW9uIE9kKCl7fSwKaWI6ZnVuY3Rp
-b24gaWIoKXt9LAp4dTpmdW5jdGlvbiB4dSgpe30sCkd6OmZ1bmN0aW9uIEd6KCl7fSwKWmQ6ZnVuY3Rp
-b24gWmQoKXt9LApxVTpmdW5jdGlvbiBxVSgpe30sClJuOmZ1bmN0aW9uIFJuKGEpe3RoaXMuYT1hfSwK
-R0Q6ZnVuY3Rpb24gR0QoKXt9LApuMTpmdW5jdGlvbiBuMShhKXt0aGlzLmE9YX0sCmNTOmZ1bmN0aW9u
-IGNTKGEpe3RoaXMuYT1hfSwKVkM6ZnVuY3Rpb24gVkMoYSl7dGhpcy5hPWF9LApKVDpmdW5jdGlvbiBK
-VChhLGIpe3RoaXMuYT1hCnRoaXMuYj1ifSwKRG46ZnVuY3Rpb24gRG4oYSxiLGMsZCxlLGYsZyl7dmFy
-IF89dGhpcwpfLmE9YQpfLmI9YgpfLmM9YwpfLmQ9ZApfLmU9ZQpfLmY9ZgpfLnI9ZwpfLlE9Xy56PV8u
-eT1fLng9bnVsbH0sClJaOmZ1bmN0aW9uIFJaKCl7fSwKTUU6ZnVuY3Rpb24gTUUoYSxiKXt0aGlzLmE9
-YQp0aGlzLmI9Yn0sCnk1OmZ1bmN0aW9uIHk1KGEpe3RoaXMuYT1hfSwKUEU6ZnVuY3Rpb24gUEUoYSxi
-LGMpe3RoaXMuYT1hCnRoaXMuYj1iCnRoaXMuYz1jfSwKcTM6ZnVuY3Rpb24gcTMoKXt9LAp5STpmdW5j
-dGlvbiB5SShhKXt0aGlzLmE9YX0sCmM2OmZ1bmN0aW9uIGM2KCl7fSwKcWQ6ZnVuY3Rpb24gcWQoKXt9
-LApVZjpmdW5jdGlvbiBVZihhLGIsYyxkLGUsZixnLGgpe3ZhciBfPXRoaXMKXy5hPWEKXy5iPWIKXy5j
-PWMKXy5kPWQKXy5lPWUKXy5mPWYKXy5yPWcKXy54PWgKXy55PW51bGx9LApxZTpmdW5jdGlvbiBxZShh
-LGIsYyxkLGUsZixnKXt2YXIgXz10aGlzCl8uYT1hCl8uYj1iCl8uYz1jCl8uZD1kCl8uZT1lCl8uZj1m
-Cl8ucj1nCl8uUT1fLno9Xy55PV8ueD1udWxsfSwKaUo6ZnVuY3Rpb24gaUooKXt9LApqZzpmdW5jdGlv
-biBqZyhhLGIpe3RoaXMuYT1hCnRoaXMuYj1ifSwKVGE6ZnVuY3Rpb24gVGEoYSxiKXt0aGlzLmE9YQp0
-aGlzLmI9Yn0sCkJmOmZ1bmN0aW9uIEJmKGEsYil7dGhpcy5hPWEKdGhpcy5iPWJ9LApBczpmdW5jdGlv
-biBBcygpe30sCkdFOmZ1bmN0aW9uIEdFKGEpe3RoaXMuYT1hfSwKTjc6ZnVuY3Rpb24gTjcoYSxiKXt0
-aGlzLmE9YQp0aGlzLmI9Yn0sCnVROmZ1bmN0aW9uIHVRKCl7fSwKaEY6ZnVuY3Rpb24gaEYoKXt9LApS
-NDpmdW5jdGlvbihhLGIsYyxkKXt2YXIgdCxzLHIKSC55OChiKQp1LmouYShkKQppZihILm9UKGIpKXt0
-PVtjXQpDLk5tLkZWKHQsZCkKZD10fXM9dS56CnI9UC5DSChKLk0xKGQsUC53MCgpLHMpLCEwLHMpCnUu
-WS5hKGEpCnJldHVybiBQLndZKEguRWsoYSxyLG51bGwpKX0sCkRtOmZ1bmN0aW9uKGEsYixjKXt2YXIg
-dAp0cnl7aWYoT2JqZWN0LmlzRXh0ZW5zaWJsZShhKSYmIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJv
-cGVydHkuY2FsbChhLGIpKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxiLHt2YWx1ZTpjfSkKcmV0dXJu
-ITB9fWNhdGNoKHQpe0guUnUodCl9cmV0dXJuITF9LApPbTpmdW5jdGlvbihhLGIpe2lmKE9iamVjdC5w
-cm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGIpKXJldHVybiBhW2JdCnJldHVybiBudWxsfSwK
-d1k6ZnVuY3Rpb24oYSl7aWYoYT09bnVsbHx8dHlwZW9mIGE9PSJzdHJpbmcifHx0eXBlb2YgYT09Im51
-bWJlciJ8fEgubChhKSlyZXR1cm4gYQppZihhIGluc3RhbmNlb2YgUC5FNClyZXR1cm4gYS5hCmlmKEgu
-UjkoYSkpcmV0dXJuIGEKaWYodS54LmIoYSkpcmV0dXJuIGEKaWYoYSBpbnN0YW5jZW9mIFAuaVApcmV0
-dXJuIEgubzIoYSkKaWYodS5ZLmIoYSkpcmV0dXJuIFAuaEUoYSwiJGRhcnRfanNGdW5jdGlvbiIsbmV3
-IFAuUEMoKSkKcmV0dXJuIFAuaEUoYSwiXyRkYXJ0X2pzT2JqZWN0IixuZXcgUC5tdCgkLmtJKCkpKX0s
-CmhFOmZ1bmN0aW9uKGEsYixjKXt2YXIgdD1QLk9tKGEsYikKaWYodD09bnVsbCl7dD1jLiQxKGEpClAu
-RG0oYSxiLHQpfXJldHVybiB0fSwKTDc6ZnVuY3Rpb24oYSl7dmFyIHQscwppZihhPT1udWxsfHx0eXBl
-b2YgYT09InN0cmluZyJ8fHR5cGVvZiBhPT0ibnVtYmVyInx8dHlwZW9mIGE9PSJib29sZWFuIilyZXR1
-cm4gYQplbHNlIGlmKGEgaW5zdGFuY2VvZiBPYmplY3QmJkguUjkoYSkpcmV0dXJuIGEKZWxzZSBpZihh
-IGluc3RhbmNlb2YgT2JqZWN0JiZ1LnguYihhKSlyZXR1cm4gYQplbHNlIGlmKGEgaW5zdGFuY2VvZiBE
-YXRlKXt0PUgudVAoYS5nZXRUaW1lKCkpCmlmKE1hdGguYWJzKHQpPD04NjRlMTMpcz0hMQplbHNlIHM9
-ITAKaWYocylILnZoKFAueFkoIkRhdGVUaW1lIGlzIG91dHNpZGUgdmFsaWQgcmFuZ2U6ICIrdCkpClAu
-VUkoITEsImlzVXRjIix1LnkpCnJldHVybiBuZXcgUC5pUCh0LCExKX1lbHNlIGlmKGEuY29uc3RydWN0
-b3I9PT0kLmtJKCkpcmV0dXJuIGEubwplbHNlIHJldHVybiBQLk5EKGEpfSwKTkQ6ZnVuY3Rpb24oYSl7
-aWYodHlwZW9mIGE9PSJmdW5jdGlvbiIpcmV0dXJuIFAuaVEoYSwkLncoKSxuZXcgUC5OeigpKQppZihh
-IGluc3RhbmNlb2YgQXJyYXkpcmV0dXJuIFAuaVEoYSwkLlI4KCksbmV3IFAuUVMoKSkKcmV0dXJuIFAu
-aVEoYSwkLlI4KCksbmV3IFAubnAoKSl9LAppUTpmdW5jdGlvbihhLGIsYyl7dmFyIHQ9UC5PbShhLGIp
-CmlmKHQ9PW51bGx8fCEoYSBpbnN0YW5jZW9mIE9iamVjdCkpe3Q9Yy4kMShhKQpQLkRtKGEsYix0KX1y
-ZXR1cm4gdH0sClBDOmZ1bmN0aW9uIFBDKCl7fSwKbXQ6ZnVuY3Rpb24gbXQoYSl7dGhpcy5hPWF9LApO
-ejpmdW5jdGlvbiBOeigpe30sClFTOmZ1bmN0aW9uIFFTKCl7fSwKbnA6ZnVuY3Rpb24gbnAoKXt9LApF
-NDpmdW5jdGlvbiBFNChhKXt0aGlzLmE9YX0sCnI3OmZ1bmN0aW9uIHI3KGEpe3RoaXMuYT1hfSwKVHo6
-ZnVuY3Rpb24gVHooYSxiKXt0aGlzLmE9YQp0aGlzLiR0aT1ifSwKY286ZnVuY3Rpb24gY28oKXt9LApi
-QjpmdW5jdGlvbiBiQigpe30sCktlOmZ1bmN0aW9uIEtlKGEpe3RoaXMuYT1hfSwKZDU6ZnVuY3Rpb24g
-ZDUoKXt9LApuNjpmdW5jdGlvbiBuNigpe319LFc9ewp4MzpmdW5jdGlvbigpe3JldHVybiB3aW5kb3d9
-LApacjpmdW5jdGlvbigpe3JldHVybiBkb2N1bWVudH0sCko2OmZ1bmN0aW9uKGEpe3ZhciB0PWRvY3Vt
-ZW50LmNyZWF0ZUVsZW1lbnQoImEiKQppZihhIT1udWxsKXQuaHJlZj1hCnJldHVybiB0fSwKVTk6ZnVu
-Y3Rpb24oYSxiLGMpe3ZhciB0LHM9ZG9jdW1lbnQuYm9keQpzLnRvU3RyaW5nCnQ9dS5hYwp0PW5ldyBI
-LlU1KG5ldyBXLmU3KEMuUlkucjYocyxhLGIsYykpLHQuQygiYTIobEQuRSkiKS5hKG5ldyBXLkN2KCkp
-LHQuQygiVTU8bEQuRT4iKSkKcmV0dXJuIHUuaC5hKHQuZ3I4KHQpKX0sCnJTOmZ1bmN0aW9uKGEpe3Zh
-ciB0LHMscj0iZWxlbWVudCB0YWcgdW5hdmFpbGFibGUiCnRyeXt0PUouWUUoYSkKdC5nbnMoYSkKcj10
-LmducyhhKX1jYXRjaChzKXtILlJ1KHMpfXJldHVybiByfSwKcUQ6ZnVuY3Rpb24oYSxiKXt2YXIgdCxz
-LHIscT1uZXcgUC52cygkLlgzLHUuYW8pLHA9bmV3IFAuWmYocSx1LmJqKSxvPW5ldyBYTUxIdHRwUmVx
-dWVzdCgpCkMuRHQuZW8obywiR0VUIixhLCEwKQpiLksoMCxuZXcgVy5iVShvKSkKdD11LnUKcz10LmEo
-bmV3IFcuaEgobyxwKSkKdS5aLmEobnVsbCkKcj11LkUKVy5KRShvLCJsb2FkIixzLCExLHIpClcuSkUo
-bywiZXJyb3IiLHQuYShwLmdZSigpKSwhMSxyKQpvLnNlbmQoKQpyZXR1cm4gcX0sCkMwOmZ1bmN0aW9u
-KGEsYil7YT01MzY4NzA5MTEmYStiCmE9NTM2ODcwOTExJmErKCg1MjQyODcmYSk8PDEwKQpyZXR1cm4g
-YV5hPj4+Nn0sCnJFOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciB0PVcuQzAoVy5DMChXLkMwKFcuQzAoMCxh
-KSxiKSxjKSxkKSxzPTUzNjg3MDkxMSZ0KygoNjcxMDg4NjMmdCk8PDMpCnNePXM+Pj4xMQpyZXR1cm4g
-NTM2ODcwOTExJnMrKCgxNjM4MyZzKTw8MTUpfSwKVE46ZnVuY3Rpb24oYSxiKXt2YXIgdCxzLHI9YS5j
-bGFzc0xpc3QKZm9yKHQ9Yi5sZW5ndGgscz0wO3M8Yi5sZW5ndGg7Yi5sZW5ndGg9PT10fHwoMCxILmxr
-KShiKSwrK3Mpci5hZGQoYltzXSl9LApKRTpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciB0PVcuYUYobmV3
-IFcudk4oYyksdS5CKQppZih0IT1udWxsJiYhMClKLmRaKGEsYix0LCExKQpyZXR1cm4gbmV3IFcueEMo
-YSxiLHQsITEsZS5DKCJ4QzwwPiIpKX0sClR3OmZ1bmN0aW9uKGEpe3ZhciB0PVcuSjYobnVsbCkscz13
-aW5kb3cubG9jYXRpb24KdD1uZXcgVy5KUShuZXcgVy5tayh0LHMpKQp0LkNZKGEpCnJldHVybiB0fSwK
-eVc6ZnVuY3Rpb24oYSxiLGMsZCl7dS5oLmEoYSkKSC5oKGIpCkguaChjKQp1LmNyLmEoZCkKcmV0dXJu
-ITB9LApRVzpmdW5jdGlvbihhLGIsYyxkKXt2YXIgdCxzLHIKdS5oLmEoYSkKSC5oKGIpCkguaChjKQp0
-PXUuY3IuYShkKS5hCnM9dC5hCnMuaHJlZj1jCnI9cy5ob3N0bmFtZQp0PXQuYgppZighKHI9PT10Lmhv
-c3RuYW1lJiZzLnBvcnQ9PT10LnBvcnQmJnMucHJvdG9jb2w9PT10LnByb3RvY29sKSlpZihyPT09IiIp
-aWYocy5wb3J0PT09IiIpe3Q9cy5wcm90b2NvbAp0PXQ9PT0iOiJ8fHQ9PT0iIn1lbHNlIHQ9ITEKZWxz
-ZSB0PSExCmVsc2UgdD0hMApyZXR1cm4gdH0sCkJsOmZ1bmN0aW9uKCl7dmFyIHQ9dS5OLHM9UC50TShD
-LlF4LHQpLHI9dS5kMC5hKG5ldyBXLklBKCkpLHE9SC5WTShbIlRFTVBMQVRFIl0sdS5zKQp0PW5ldyBX
-LmN0KHMsUC5Mcyh0KSxQLkxzKHQpLFAuTHModCksbnVsbCkKdC5DWShudWxsLG5ldyBILmxKKEMuUXgs
-cix1LmZqKSxxLG51bGwpCnJldHVybiB0fSwKUHY6ZnVuY3Rpb24oYSl7aWYoYT09bnVsbClyZXR1cm4g
-bnVsbApyZXR1cm4gVy5QMShhKX0sCnFjOmZ1bmN0aW9uKGEpe3ZhciB0CmlmKGE9PW51bGwpcmV0dXJu
-IG51bGwKaWYoInBvc3RNZXNzYWdlIiBpbiBhKXt0PVcuUDEoYSkKaWYodS5hUy5iKHQpKXJldHVybiB0
-CnJldHVybiBudWxsfWVsc2UgcmV0dXJuIHUuY2guYShhKX0sClAxOmZ1bmN0aW9uKGEpe2lmKGE9PT13
-aW5kb3cpcmV0dXJuIHUuY2kuYShhKQplbHNlIHJldHVybiBuZXcgVy5kVyhhKX0sCkhIOmZ1bmN0aW9u
-KGEpe2lmKGE9PT13aW5kb3cubG9jYXRpb24pcmV0dXJuIGEKZWxzZSByZXR1cm4gbmV3IFcuRmIoKX0s
-CmFGOmZ1bmN0aW9uKGEsYil7dmFyIHQ9JC5YMwppZih0PT09Qy5OVSlyZXR1cm4gYQpyZXR1cm4gdC5Q
-eShhLGIpfSwKcUU6ZnVuY3Rpb24gcUUoKXt9LApHaDpmdW5jdGlvbiBHaCgpe30sCmZZOmZ1bmN0aW9u
-IGZZKCl7fSwKbkI6ZnVuY3Rpb24gbkIoKXt9LApBejpmdW5jdGlvbiBBeigpe30sClFQOmZ1bmN0aW9u
-IFFQKCl7fSwKbng6ZnVuY3Rpb24gbngoKXt9LApvSjpmdW5jdGlvbiBvSigpe30sCmlkOmZ1bmN0aW9u
-IGlkKCl7fSwKUUY6ZnVuY3Rpb24gUUYoKXt9LApOaDpmdW5jdGlvbiBOaCgpe30sCmFlOmZ1bmN0aW9u
-IGFlKCl7fSwKSUI6ZnVuY3Rpb24gSUIoKXt9LApuNzpmdW5jdGlvbiBuNygpe30sCnd6OmZ1bmN0aW9u
-IHd6KGEsYil7dGhpcy5hPWEKdGhpcy4kdGk9Yn0sCmN2OmZ1bmN0aW9uIGN2KCl7fSwKQ3Y6ZnVuY3Rp
-b24gQ3YoKXt9LAplYTpmdW5jdGlvbiBlYSgpe30sCkQwOmZ1bmN0aW9uIEQwKCl7fSwKVDU6ZnVuY3Rp
-b24gVDUoKXt9LApoNDpmdW5jdGlvbiBoNCgpe30sCmJyOmZ1bmN0aW9uIGJyKCl7fSwKVmI6ZnVuY3Rp
-b24gVmIoKXt9LApmSjpmdW5jdGlvbiBmSigpe30sCmJVOmZ1bmN0aW9uIGJVKGEpe3RoaXMuYT1hfSwK
-aEg6ZnVuY3Rpb24gaEgoYSxiKXt0aGlzLmE9YQp0aGlzLmI9Yn0sCndhOmZ1bmN0aW9uIHdhKCl7fSwK
-U2c6ZnVuY3Rpb24gU2coKXt9LAp1ODpmdW5jdGlvbiB1OCgpe30sCk9LOmZ1bmN0aW9uIE9LKCl7fSwK
-ZTc6ZnVuY3Rpb24gZTcoYSl7dGhpcy5hPWF9LAp1SDpmdW5jdGlvbiB1SCgpe30sCkJIOmZ1bmN0aW9u
-IEJIKCl7fSwKU046ZnVuY3Rpb24gU04oKXt9LApldzpmdW5jdGlvbiBldygpe30sCmxwOmZ1bmN0aW9u
-IGxwKCl7fSwKVGI6ZnVuY3Rpb24gVGIoKXt9LApJdjpmdW5jdGlvbiBJdigpe30sCldQOmZ1bmN0aW9u
-IFdQKCl7fSwKeVk6ZnVuY3Rpb24geVkoKXt9LAp3NjpmdW5jdGlvbiB3Nigpe30sCks1OmZ1bmN0aW9u
-IEs1KCl7fSwKQ206ZnVuY3Rpb24gQ20oKXt9LApDUTpmdW5jdGlvbiBDUSgpe30sCnc0OmZ1bmN0aW9u
-IHc0KCl7fSwKcmg6ZnVuY3Rpb24gcmgoKXt9LApjZjpmdW5jdGlvbiBjZigpe30sCmk3OmZ1bmN0aW9u
-IGk3KGEpe3RoaXMuYT1hfSwKU3k6ZnVuY3Rpb24gU3koYSl7dGhpcy5hPWF9LApLUzpmdW5jdGlvbiBL
-UyhhLGIpe3RoaXMuYT1hCnRoaXMuYj1ifSwKQTM6ZnVuY3Rpb24gQTMoYSxiKXt0aGlzLmE9YQp0aGlz
-LmI9Yn0sCkk0OmZ1bmN0aW9uIEk0KGEpe3RoaXMuYT1hfSwKRms6ZnVuY3Rpb24gRmsoYSxiKXt0aGlz
-LmE9YQp0aGlzLiR0aT1ifSwKUk86ZnVuY3Rpb24gUk8oYSxiLGMsZCl7dmFyIF89dGhpcwpfLmE9YQpf
-LmI9YgpfLmM9YwpfLiR0aT1kfSwKZXU6ZnVuY3Rpb24gZXUoYSxiLGMsZCl7dmFyIF89dGhpcwpfLmE9
-YQpfLmI9YgpfLmM9YwpfLiR0aT1kfSwKeEM6ZnVuY3Rpb24geEMoYSxiLGMsZCxlKXt2YXIgXz10aGlz
-Cl8uYj1hCl8uYz1iCl8uZD1jCl8uZT1kCl8uJHRpPWV9LAp2TjpmdW5jdGlvbiB2TihhKXt0aGlzLmE9
-YX0sCkpROmZ1bmN0aW9uIEpRKGEpe3RoaXMuYT1hfSwKR206ZnVuY3Rpb24gR20oKXt9LAp2RDpmdW5j
-dGlvbiB2RChhKXt0aGlzLmE9YX0sClV2OmZ1bmN0aW9uIFV2KGEpe3RoaXMuYT1hfSwKRWc6ZnVuY3Rp
-b24gRWcoYSxiLGMpe3RoaXMuYT1hCnRoaXMuYj1iCnRoaXMuYz1jfSwKbTY6ZnVuY3Rpb24gbTYoKXt9
-LApFbzpmdW5jdGlvbiBFbygpe30sCldrOmZ1bmN0aW9uIFdrKCl7fSwKY3Q6ZnVuY3Rpb24gY3QoYSxi
-LGMsZCxlKXt2YXIgXz10aGlzCl8uZT1hCl8uYT1iCl8uYj1jCl8uYz1kCl8uZD1lfSwKSUE6ZnVuY3Rp
-b24gSUEoKXt9LApPdzpmdW5jdGlvbiBPdygpe30sClc5OmZ1bmN0aW9uIFc5KGEsYixjKXt2YXIgXz10
-aGlzCl8uYT1hCl8uYj1iCl8uYz0tMQpfLmQ9bnVsbApfLiR0aT1jfSwKZFc6ZnVuY3Rpb24gZFcoYSl7
-dGhpcy5hPWF9LApGYjpmdW5jdGlvbiBGYigpe30sCmtGOmZ1bmN0aW9uIGtGKCl7fSwKbWs6ZnVuY3Rp
-b24gbWsoYSxiKXt0aGlzLmE9YQp0aGlzLmI9Yn0sCktvOmZ1bmN0aW9uIEtvKGEpe3RoaXMuYT1hCnRo
-aXMuYj0hMX0sCmZtOmZ1bmN0aW9uIGZtKGEpe3RoaXMuYT1hfSwKTGU6ZnVuY3Rpb24gTGUoKXt9LApL
-NzpmdW5jdGlvbiBLNygpe30sCnJCOmZ1bmN0aW9uIHJCKCl7fSwKWFc6ZnVuY3Rpb24gWFcoKXt9LApv
-YTpmdW5jdGlvbiBvYSgpe319LFU9ewpqZjpmdW5jdGlvbihhKXt2YXIgdCxzLHIscQppZihhPT1udWxs
-KXQ9bnVsbAplbHNle3Q9SC5WTShbXSx1LmQ3KQpmb3Iocz1KLklUKHUuVC5hKGEpKTtzLkYoKTspe3I9
-cy5nbCgpCnE9Si5VNihyKQpDLk5tLmkodCxuZXcgVS5TZShILmgocS5xKHIsImRlc2NyaXB0aW9uIikp
-LEguaChxLnEociwiaHJlZiIpKSkpfX1yZXR1cm4gdH0sCk5kOmZ1bmN0aW9uKGEpe3ZhciB0LHMKaWYo
-YT09bnVsbCl0PW51bGwKZWxzZXt0PUguVk0oW10sdS5hQSkKZm9yKHM9Si5JVCh1LlQuYShhKSk7cy5G
-KCk7KUMuTm0uaSh0LFUuTmYocy5nbCgpKSl9cmV0dXJuIHR9LApOZjpmdW5jdGlvbihhKXt2YXIgdCxz
-LHIscSxwLG89ImRlc2NyaXB0aW9uIixuPUouVTYoYSksbT1ILmgobi5xKGEsbykpLGw9SC5WTShbXSx1
-LmFKKQpmb3Iobj1KLklUKHUuVC5hKG4ucShhLCJlbnRyaWVzIikpKTtuLkYoKTspe3Q9bi5nbCgpCnM9
-Si5VNih0KQpyPUguaChzLnEodCxvKSkKcT1ILmgocy5xKHQsImZ1bmN0aW9uIikpCnM9cy5xKHQsImxp
-bmsiKQppZihzPT1udWxsKXM9bnVsbAplbHNle3A9Si5VNihzKQpzPW5ldyBVLk1sKEguaChwLnEocywi
-aHJlZiIpKSxILnVQKHAucShzLCJsaW5lIikpLEguaChwLnEocywicGF0aCIpKSl9Qy5ObS5pKGwsbmV3
-IFUud2IocixxLHMpKX1yZXR1cm4gbmV3IFUueUQobSxsKX0sCmQyOmZ1bmN0aW9uIGQyKGEsYixjLGQs
-ZSl7dmFyIF89dGhpcwpfLmE9YQpfLmI9YgpfLmM9YwpfLmQ9ZApfLmU9ZX0sClNlOmZ1bmN0aW9uIFNl
-KGEsYil7dGhpcy5hPWEKdGhpcy5iPWJ9LApNbDpmdW5jdGlvbiBNbChhLGIsYyl7dGhpcy5hPWEKdGhp
-cy5iPWIKdGhpcy5jPWN9LAp5RDpmdW5jdGlvbiB5RChhLGIpe3RoaXMuYT1hCnRoaXMuYj1ifSwKd2I6
-ZnVuY3Rpb24gd2IoYSxiLGMpe3RoaXMuYT1hCnRoaXMuYj1iCnRoaXMuYz1jfX0sQj17CllmOmZ1bmN0
-aW9uKGEpe3ZhciB0LHMscixxLHAsbyxuLG0sbD1ILmgoYS5xKDAsInJlZ2lvbnMiKSksaz1ILmgoYS5x
-KDAsIm5hdmlnYXRpb25Db250ZW50IikpLGo9SC5oKGEucSgwLCJzb3VyY2VDb2RlIikpLGk9UC5GbCh1
-LlgsdS5kXykKZm9yKHQ9dS5hLmEoYS5xKDAsImVkaXRzIikpLHQ9dC5nUHUodCksdD10Lmdreih0KSxz
-PXUuVCxyPXUuaDQ7dC5GKCk7KXtxPXQuZ2woKQpwPXEuYQpvPUguVk0oW10scikKZm9yKHE9Si5JVChz
-LmEocS5iKSk7cS5GKCk7KXtuPXEuZ2woKQptPUouVTYobikKQy5ObS5pKG8sbmV3IEIuajgoSC51UCht
-LnEobiwibGluZSIpKSxILmgobS5xKG4sImV4cGxhbmF0aW9uIikpLEgudVAobS5xKG4sIm9mZnNldCIp
-KSkpfWkuWSgwLHAsbyl9cmV0dXJuIG5ldyBCLnFwKGwsayxqLGkpfSwKajg6ZnVuY3Rpb24gajgoYSxi
-LGMpe3RoaXMuYT1hCnRoaXMuYj1iCnRoaXMuYz1jfSwKcXA6ZnVuY3Rpb24gcXAoYSxiLGMsZCl7dmFy
-IF89dGhpcwpfLmE9YQpfLmI9YgpfLmM9YwpfLmQ9ZH0sCmZ2OmZ1bmN0aW9uIGZ2KCl7fSwKT1M6ZnVu
-Y3Rpb24oYSl7dmFyIHQKaWYoIShhPj02NSYmYTw9OTApKXQ9YT49OTcmJmE8PTEyMgplbHNlIHQ9ITAK
-cmV0dXJuIHR9LApZdTpmdW5jdGlvbihhLGIpe3ZhciB0PWEubGVuZ3RoLHM9YisyCmlmKHQ8cylyZXR1
-cm4hMQppZighQi5PUyhDLnhCLm0oYSxiKSkpcmV0dXJuITEKaWYoQy54Qi5tKGEsYisxKSE9PTU4KXJl
-dHVybiExCmlmKHQ9PT1zKXJldHVybiEwCnJldHVybiBDLnhCLm0oYSxzKT09PTQ3fX0sVD17bVE6ZnVu
-Y3Rpb24gbVEoKXt9fSxMPXsKSXE6ZnVuY3Rpb24oKXtDLkJaLkIoZG9jdW1lbnQsIkRPTUNvbnRlbnRM
-b2FkZWQiLG5ldyBMLmUoKSkKQy5vbC5CKHdpbmRvdywicG9wc3RhdGUiLG5ldyBMLkwoKSl9LAprejpm
-dW5jdGlvbihhKXt2YXIgdCxzPXUuZy5hKGEucGFyZW50Tm9kZSkucXVlcnlTZWxlY3RvcigiOnNjb3Bl
-ID4gdWwiKSxyPXMuc3R5bGUscT0iIitDLkNELnpRKHMub2Zmc2V0SGVpZ2h0KSoyKyJweCIKci5tYXhI
-ZWlnaHQ9cQpyPUoucUYoYSkKcT1yLiR0aQp0PXEuQygifigxKT8iKS5hKG5ldyBMLld4KHMsYSkpCnUu
-Wi5hKG51bGwpClcuSkUoci5hLHIuYix0LCExLHEuYyl9LAp5WDpmdW5jdGlvbihhLGIpe3ZhciB0LHMs
-cixxLHAsbyxuPSJxdWVyeVNlbGVjdG9yQWxsIixtPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYSksbD11
-LmcKbS50b1N0cmluZwp0PXUuaApILkRoKGwsdCwiVCIsbikKcz11LlIKcj1uZXcgVy53eihtLnF1ZXJ5
-U2VsZWN0b3JBbGwoIi5uYXYtbGluayIpLHMpCnIuSyhyLG5ldyBMLkFPKGIpKQpILkRoKGwsdCwiVCIs
-bikKcT1uZXcgVy53eihtLnF1ZXJ5U2VsZWN0b3JBbGwoIi5yZWdpb24iKSxzKQppZihxLmdBKHEpIT09
-MCl7cD1tLnF1ZXJ5U2VsZWN0b3IoInRhYmxlW2RhdGEtcGF0aF0iKQpwLnRvU3RyaW5nCnEuSyhxLG5l
-dyBMLkhvKHAuZ2V0QXR0cmlidXRlKCJkYXRhLSIrbmV3IFcuU3kobmV3IFcuaTcocCkpLk8oInBhdGgi
-KSkpKX1ILkRoKGwsdCwiVCIsbikKbz1uZXcgVy53eihtLnF1ZXJ5U2VsZWN0b3JBbGwoIi5hZGQtaGlu
-dC1saW5rIikscykKby5LKG8sbmV3IEwuSUMoKSl9LApRNjpmdW5jdGlvbihhLGIpe3ZhciB0PXUuWApy
-ZXR1cm4gVy5xRChMLlE0KGEsYiksUC5FRihbIkNvbnRlbnQtVHlwZSIsImFwcGxpY2F0aW9uL2pzb247
-IGNoYXJzZXQ9VVRGLTgiXSx0LHQpKX0sCnR5OmZ1bmN0aW9uKGEpe3ZhciB0PTAscz1QLkZYKHUuYSks
-cixxLHAsbyxuLG0sbCxrCnZhciAkYXN5bmMkdHk9UC5seihmdW5jdGlvbihiLGMpe2lmKGI9PT0xKXJl
-dHVybiBQLmYzKGMscykKd2hpbGUodHJ1ZSlzd2l0Y2godCl7Y2FzZSAwOm49bmV3IFAudnMoJC5YMyx1
-LmdWKQptPW5ldyBQLlpmKG4sdS5iQykKbD1uZXcgWE1MSHR0cFJlcXVlc3QoKQprPXUuWApDLkR0LmVv
-KGwsIlBPU1QiLEwuUTQoYSxQLkZsKGssaykpLCEwKQpsLnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQt
-VHlwZSIsImFwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9VVRGLTgiKQprPXUudQpxPWsuYShuZXcgTC5M
-MShtLGwpKQp1LlouYShudWxsKQpwPXUuRQpXLkpFKGwsImxvYWQiLHEsITEscCkKVy5KRShsLCJlcnJv
-ciIsay5hKG0uZ1lKKCkpLCExLHApCmwuc2VuZCgpCnQ9MwpyZXR1cm4gUC5qUShuLCRhc3luYyR0eSkK
-Y2FzZSAzOm89Qy5DdC5wVygwLGwucmVzcG9uc2VUZXh0LG51bGwpCmlmKGwuc3RhdHVzPT09MjAwKXty
-PXUuYS5hKG8pCnQ9MQpicmVha31lbHNlIHRocm93IEguYihvKQpjYXNlIDE6cmV0dXJuIFAueUMocixz
-KX19KQpyZXR1cm4gUC5ESSgkYXN5bmMkdHkscyl9LAphSzpmdW5jdGlvbihhKXt2YXIgdD1QLmhLKGEp
-LmdoWSgpLnEoMCwibGluZSIpCnJldHVybiB0PT1udWxsP251bGw6SC5IcCh0LG51bGwpfSwKRzY6ZnVu
-Y3Rpb24oYSl7dmFyIHQ9UC5oSyhhKS5naFkoKS5xKDAsIm9mZnNldCIpCnJldHVybiB0PT1udWxsP251
-bGw6SC5IcCh0LG51bGwpfSwKaTY6ZnVuY3Rpb24oYSl7cmV0dXJuIEwublcodS5PLmEoYSkpfSwKblc6
-ZnVuY3Rpb24oYSl7dmFyIHQ9MCxzPVAuRlgodS56KSxyPTEscSxwPVtdLG8sbixtLGwsawp2YXIgJGFz
-eW5jJGk2PVAubHooZnVuY3Rpb24oYixjKXtpZihiPT09MSl7cT1jCnQ9cn13aGlsZSh0cnVlKXN3aXRj
-aCh0KXtjYXNlIDA6bD11LmcuYShXLnFjKGEuY3VycmVudFRhcmdldCkpLmdldEF0dHJpYnV0ZSgiaHJl
-ZiIpCmEucHJldmVudERlZmF1bHQoKQpyPTMKdD02CnJldHVybiBQLmpRKEwudHkobCksJGFzeW5jJGk2
-KQpjYXNlIDY6dS5iWi5hKEouR3IoVy5Qdihkb2N1bWVudC5kZWZhdWx0VmlldykpKS5yZWxvYWQoKQpy
-PTEKdD01CmJyZWFrCmNhc2UgMzpyPTIKaz1xCm89SC5SdShrKQpuPUgudHMoaykKTC5DMigiQ291bGQg
-bm90IGFkZC9yZW1vdmUgaGludCIsbyxuKQp0PTUKYnJlYWsKY2FzZSAyOnQ9MQpicmVhawpjYXNlIDU6
-cmV0dXJuIFAueUMobnVsbCxzKQpjYXNlIDE6cmV0dXJuIFAuZjMocSxzKX19KQpyZXR1cm4gUC5ESSgk
-YXN5bmMkaTYscyl9LApDMjpmdW5jdGlvbihhLGIsYyl7dmFyIHQscyxyPSJleGNlcHRpb24iLHE9InN0
-YWNrVHJhY2UiLHA9dS5hLmIoYikmJkouUk0oYi5xKDAsInN1Y2Nlc3MiKSwhMSkmJmIueDQocikmJmIu
-eDQocSksbz1KLmlhKGIpCmlmKHApe3Q9SC5oKG8ucShiLHIpKQpjPW8ucShiLHEpfWVsc2UgdD1vLnco
-YikKcD1kb2N1bWVudApzPXAucXVlcnlTZWxlY3RvcigiLnBvcHVwLXBhbmUiKQpzLnF1ZXJ5U2VsZWN0
-b3IoImgyIikuaW5uZXJUZXh0PWEKcy5xdWVyeVNlbGVjdG9yKCJwIikuaW5uZXJUZXh0PXQKcy5xdWVy
-eVNlbGVjdG9yKCJwcmUiKS5pbm5lclRleHQ9Si5qKGMpCm89dS5YCnUuZGQuYShzLnF1ZXJ5U2VsZWN0
-b3IoImEuYm90dG9tIikpLmhyZWY9UC5YZCgiaHR0cHMiLCJnaXRodWIuY29tIiwiZGFydC1sYW5nL3Nk
-ay9pc3N1ZXMvbmV3IixQLkVGKFsidGl0bGUiLCJDdXN0b21lci1yZXBvcnRlZCBpc3N1ZSB3aXRoIE5O
-QkQgbWlncmF0aW9uIHRvb2w6ICIrYSwibGFiZWxzIiwiYXJlYS1hbmFseXplcixhbmFseXplci1ubmJk
-LW1pZ3JhdGlvbix0eXBlLWJ1ZyIsImJvZHkiLGErIlxuXG5FcnJvcjogIitILkVqKHQpKyJcblxuUGxl
-YXNlIGZpbGwgaW4gdGhlIGZvbGxvd2luZzpcblxuKipOYW1lIG9mIHBhY2thZ2UgYmVpbmcgbWlncmF0
-ZWQgKGlmIHB1YmxpYykqKjpcbioqV2hhdCBJIHdhcyBkb2luZyB3aGVuIHRoaXMgaXNzdWUgb2NjdXJy
-ZWQqKjpcbioqSXMgaXQgcG9zc2libGUgdG8gd29yayBhcm91bmQgdGhpcyBpc3N1ZSoqOlxuKipIYXMg
-dGhpcyBpc3N1ZSBoYXBwZW5lZCBiZWZvcmUsIGFuZCBpZiBzbywgaG93IG9mdGVuKio6XG4qKkRhcnQg
-U0RLIHZlcnNpb24qKjogIitILkVqKHAuZ2V0RWxlbWVudEJ5SWQoInNkay12ZXJzaW9uIikudGV4dENv
-bnRlbnQpKyJcbioqQWRkaXRpb25hbCBkZXRhaWxzKio6XG5cblRoYW5rcyBmb3IgZmlsaW5nIVxuXG5T
-dGFja3RyYWNlOiBfYXV0byBwb3B1bGF0ZWQgYnkgbWlncmF0aW9uIHByZXZpZXcgdG9vbC5fXG5cbmBg
-YFxuIitILkVqKGMpKyJcbmBgYFxuIl0sbyxvKSkuZ25EKCkKbz1zLnN0eWxlCm8uZGlzcGxheT0iaW5p
-dGlhbCIKTC5xSihhKyI6ICIrSC5FaihiKSxjKX0sCnQyOmZ1bmN0aW9uKGEsYixjKXt2YXIgdCxzLHIs
-cSxwLG8sbj17fSxtPXUuZy5hKFcucWMoYS5jdXJyZW50VGFyZ2V0KSkKYS5wcmV2ZW50RGVmYXVsdCgp
-CnQ9bi5hPW0uZ2V0QXR0cmlidXRlKCJocmVmIikKaWYoSi56bCh0LCI/Iikpe3M9Qy54Qi5Oaih0LDAs
-Qy54Qi5PWSh0LCI/IikpCm4uYT1zCnI9c31lbHNlIHI9dAppZihjIT1udWxsKXtxPSQublUoKQpyPW4u
-YT1xLm81KEQubnIocS50TShjKSxyKSl9cD1MLkc2KHQpCm89TC5hSyh0KQppZihwIT1udWxsKUwuYWYo
-cixwLG8sYixuZXcgTC5uVChuLHAsbykpCmVsc2UgTC5hZihyLG51bGwsbnVsbCxiLG5ldyBMLk5ZKG4p
-KX0sCnZVOmZ1bmN0aW9uKCl7dmFyIHQ9ZG9jdW1lbnQKSC5EaCh1LmcsdS5oLCJUIiwicXVlcnlTZWxl
-Y3RvckFsbCIpCnQ9bmV3IFcud3oodC5xdWVyeVNlbGVjdG9yQWxsKCIuY29kZSIpLHUuUikKdC5LKHQs
-bmV3IEwuZVgoKSl9LApoWDpmdW5jdGlvbihhLGIsYyl7dmFyIHQ9dS5YCkwuUTYoYSxQLkVGKFsicmVn
-aW9uIiwicmVnaW9uIiwib2Zmc2V0IixILkVqKGIpXSx0LHQpKS5XNyhuZXcgTC5EVChhLGIsYyksdS5Q
-KS5PQShuZXcgTC5lSChhKSl9LApHNzpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciB0CmlmKCFKLnA0KGEs
-Ii5kYXJ0Iikpe0wuQkUoYSxuZXcgQi5xcCgiIiwiIiwiIixDLkNNKSxkKQpMLkJYKGEsbnVsbCkKaWYo
-ZSE9bnVsbCllLiQwKCkKcmV0dXJufXQ9dS5YCkwuUTYoYSxQLkVGKFsiaW5saW5lIiwidHJ1ZSJdLHQs
-dCkpLlc3KG5ldyBMLnl1KGEsZCxiLGMsZSksdS5QKS5PQShuZXcgTC56RChhKSl9LApHZTpmdW5jdGlv
-bigpe3ZhciB0PSIvX3ByZXZpZXcvbmF2aWdhdGlvblRyZWUuanNvbiIKTC5RNih0LEMuV08pLlc3KG5l
-dyBMLlRXKCksdS5QKS5PQShuZXcgTC54cih0KSl9LApxSjpmdW5jdGlvbihhLGIpe3ZhciB0CndpbmRv
-dwppZih0eXBlb2YgY29uc29sZSE9InVuZGVmaW5lZCIpd2luZG93LmNvbnNvbGUuZXJyb3IoYSkKd2lu
-ZG93CnQ9SC5FaihiKQppZih0eXBlb2YgY29uc29sZSE9InVuZGVmaW5lZCIpd2luZG93LmNvbnNvbGUu
-ZXJyb3IodCl9LApxTzpmdW5jdGlvbihhKXt2YXIgdD1hLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHM9
-Qy5DRC56USgkLmZpKCkub2Zmc2V0SGVpZ2h0KSxyPXdpbmRvdy5pbm5lckhlaWdodCxxPUMuQ0QuelEo
-JC5EVygpLm9mZnNldEhlaWdodCkKaWYodC5ib3R0b20+ci0ocSsxNCkpSi5kaChhKQplbHNlIGlmKHQu
-dG9wPHMrMTQpSi5kaChhKX0sCmZHOmZ1bmN0aW9uKGEsYil7dmFyIHQscyxyCmlmKGEhPW51bGwpe3Q9
-ZG9jdW1lbnQKcz10LmdldEVsZW1lbnRCeUlkKCJvIitILkVqKGEpKQpyPXQucXVlcnlTZWxlY3Rvcigi
-LmxpbmUtIitILkVqKGIpKQppZihzIT1udWxsKXtMLnFPKHMpCkouZFIocykuaSgwLCJ0YXJnZXQiKX1l
-bHNlIGlmKHIhPW51bGwpTC5xTyhyLnBhcmVudEVsZW1lbnQpCmlmKHIhPW51bGwpSi5kUih1LmcuYShy
-LnBhcmVudE5vZGUpKS5pKDAsImhpZ2hsaWdodCIpfWVsc2UgTC5xTygkLkQ5KCkpfSwKYWY6ZnVuY3Rp
-b24oYSxiLGMsZCxlKXt2YXIgdCxzLHI9TC5HNih3aW5kb3cubG9jYXRpb24uaHJlZikscT1MLmFLKHdp
-bmRvdy5sb2NhdGlvbi5ocmVmKQppZihyIT1udWxsKXt0PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJv
-IitILkVqKHIpKQppZih0IT1udWxsKUouZFIodCkuUigwLCJ0YXJnZXQiKX1pZihxIT1udWxsKXtzPWRv
-Y3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5saW5lLSIrSC5FaihxKSkKaWYocyE9bnVsbClKLmRSKHMucGFy
-ZW50RWxlbWVudCkuUigwLCJoaWdobGlnaHQiKX1pZihhPT09d2luZG93LmxvY2F0aW9uLnBhdGhuYW1l
-KXtMLmZHKGIsYykKZS4kMCgpfWVsc2UgTC5HNyhhLGIsYyxkLGUpfSwKUTQ6ZnVuY3Rpb24oYSxiKXt2
-YXIgdCxzLHI9UC5oSyhhKSxxPXUuWApxPVAuRmwocSxxKQpmb3IodD1yLmdoWSgpLHQ9dC5nUHUodCks
-dD10Lmdreih0KTt0LkYoKTspe3M9dC5nbCgpCnEuWSgwLHMuYSxzLmIpfWZvcih0PWIuZ1B1KGIpLHQ9
-dC5na3oodCk7dC5GKCk7KXtzPXQuZ2woKQpxLlkoMCxzLmEscy5iKX1xLlkoMCwiYXV0aFRva2VuIiwk
-LlVFKCkpCnJldHVybiByLm5tKDAscSkuZ25EKCl9LApUMTpmdW5jdGlvbihhKXt2YXIgdCxzLHIscSxw
-LG8sbixtLGwsaz0kLmhMKCkKSi5sNShrLCIiKQppZihhPT1udWxsKXt0PWRvY3VtZW50LmNyZWF0ZUVs
-ZW1lbnQoInAiKQpDLkx0LnNhNCh0LCJTZWUgZGV0YWlscyBhYm91dCBhIHByb3Bvc2VkIGVkaXQuIikK
-Qy5MdC5zUCh0LEguVk0oWyJwbGFjZWhvbGRlciJdLHUuaSkpCmsuYXBwZW5kQ2hpbGQodCkKQy5MdC5G
-Rih0KQpyZXR1cm59cz1hLmQKcj0kLm5VKCkKcT1yLnRNKHMpCnA9YS5iCm89ZG9jdW1lbnQKbj1yLkhQ
-KHMsSi5UMChvLnF1ZXJ5U2VsZWN0b3IoIi5yb290IikudGV4dENvbnRlbnQpKQptPWEuYwpsPW8uY3Jl
-YXRlRWxlbWVudCgicCIpCmsuYXBwZW5kQ2hpbGQobCkKbC5hcHBlbmRDaGlsZChvLmNyZWF0ZVRleHRO
-b2RlKEguRWoocCkrIiBhdCAiKSkKcj11LlgKcj1XLko2KEwuUTQocyxQLkVGKFsibGluZSIsSi5qKG0p
-XSxyLHIpKSkKci5hcHBlbmRDaGlsZChvLmNyZWF0ZVRleHROb2RlKEguRWoobikrIjoiK0guRWoobSkr
-Ii4iKSkKbC5hcHBlbmRDaGlsZChyKQpKLmRoKGwpCkwuQ0MoYSxrLHEpCkwuRnooYSxrKX0sCkxIOmZ1
-bmN0aW9uKGEsYixjKXt2YXIgdCxzLHIscSxwLG8sbixtLGwsayxqLGksaCxnPSQueVAoKQpKLmw1KGcs
-IiIpCmlmKGIuZ0EoYik9PT0wKXt0PWRvY3VtZW50CnM9dC5jcmVhdGVFbGVtZW50KCJwIikKZy5hcHBl
-bmRDaGlsZChzKQpzLmFwcGVuZENoaWxkKHQuY3JlYXRlVGV4dE5vZGUoIk5vIHByb3Bvc2VkIGVkaXRz
-IikpfWVsc2UgZm9yKGc9Yi5nUHUoYiksZz1nLmdreihnKSx0PXUuRyxyPXQuQygifigxKT8iKSxxPXUu
-Wix0PXQuYztnLkYoKTspe3A9Zy5nbCgpCm89ZG9jdW1lbnQKcz1vLmNyZWF0ZUVsZW1lbnQoInAiKQpu
-PSQueVAoKQpuLmFwcGVuZENoaWxkKHMpCnMuYXBwZW5kQ2hpbGQoby5jcmVhdGVUZXh0Tm9kZShILkVq
-KHAuYSkrIjoiKSkKbT1vLmNyZWF0ZUVsZW1lbnQoInVsIikKbi5hcHBlbmRDaGlsZChtKQpmb3IocD1K
-LklUKHAuYik7cC5GKCk7KXtsPXAuZ2woKQprPW8uY3JlYXRlRWxlbWVudCgibGkiKQptLmFwcGVuZENo
-aWxkKGspCkouZFIoaykuaSgwLCJlZGl0IikKaj1vLmNyZWF0ZUVsZW1lbnQoImEiKQprLmFwcGVuZENo
-aWxkKGopCmouY2xhc3NMaXN0LmFkZCgiZWRpdC1saW5rIikKaT1sLmMKbj1ILkVqKGkpCmouc2V0QXR0
-cmlidXRlKCJkYXRhLSIrbmV3IFcuU3kobmV3IFcuaTcoaikpLk8oIm9mZnNldCIpLG4pCmg9bC5hCm49
-SC5FaihoKQpqLnNldEF0dHJpYnV0ZSgiZGF0YS0iK25ldyBXLlN5KG5ldyBXLmk3KGopKS5PKCJsaW5l
-IiksbikKai5hcHBlbmRDaGlsZChvLmNyZWF0ZVRleHROb2RlKCJsaW5lICIrSC5FaihoKSkpCm49ci5h
-KG5ldyBMLkVFKGksaCxhKSkKcS5hKG51bGwpClcuSkUoaiwiY2xpY2siLG4sITEsdCkKay5hcHBlbmRD
-aGlsZChvLmNyZWF0ZVRleHROb2RlKCI6ICIrSC5FaihsLmIpKSl9fWlmKGMpTC5UMShudWxsKX0sCkZy
-OmZ1bmN0aW9uKGEsYixjKXt2YXIgdCxzLHI9d2luZG93LmxvY2F0aW9uLHE9UC5oSygociYmQy5FeCku
-Z0RyKHIpK0guRWooYSkpCnI9dS5YCnI9UC5GbChyLHIpCmlmKGIhPW51bGwpci5ZKDAsIm9mZnNldCIs
-SC5FaihiKSkKaWYoYyE9bnVsbClyLlkoMCwibGluZSIsSC5FaihjKSkKci5ZKDAsImF1dGhUb2tlbiIs
-JC5VRSgpKQpxPXEubm0oMCxyKQpyPXdpbmRvdy5oaXN0b3J5CnQ9dS56CnM9cS5nbkQoKQpyLnB1c2hT
-dGF0ZShuZXcgUC5CZihbXSxbXSkuUHYoUC5GbCh0LHQpKSwiIixzKX0sCkVuOmZ1bmN0aW9uKGEpe3Zh
-ciB0PUouYmIoZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLnJvb3QiKS50ZXh0Q29udGVudCwiLyIpCmlm
-KEMueEIubihhLHQpKXJldHVybiBDLnhCLkcoYSx0Lmxlbmd0aCkKZWxzZSByZXR1cm4gYX0sCkJYOmZ1
-bmN0aW9uKGEsYil7dmFyIHQscz17fQpzLmE9YQphPUwuRW4oYSkKcy5hPWEKSi5kcigkLkQ5KCksYSkK
-dD1kb2N1bWVudApILkRoKHUuZyx1LmgsIlQiLCJxdWVyeVNlbGVjdG9yQWxsIikKdD1uZXcgVy53eih0
-LnF1ZXJ5U2VsZWN0b3JBbGwoIi5uYXYtcGFuZWwgLm5hdi1saW5rIiksdS5SKQp0LksodCxuZXcgTC5W
-UyhzKSl9LApCRTpmdW5jdGlvbihhLGIsYyl7dmFyIHQ9Ii5yZWdpb25zIixzPWRvY3VtZW50LHI9cy5x
-dWVyeVNlbGVjdG9yKHQpLHE9cy5xdWVyeVNlbGVjdG9yKCIuY29kZSIpCkoudEgocixiLmEsJC5LRygp
-KQpKLnRIKHEsYi5iLCQuS0coKSkKTC5MSChhLGIuZCxjKQpMLnZVKCkKTC55WCgiLmNvZGUiLCEwKQpM
-LnlYKHQsITApfSwKdFg6ZnVuY3Rpb24oYSxiKXt2YXIgdCxzLHIscSxwLG8sbixtLGwsayxqLGksaCxn
-PWRvY3VtZW50LGY9Zy5jcmVhdGVFbGVtZW50KCJ1bCIpCmEuYXBwZW5kQ2hpbGQoZikKZm9yKHQ9Yi5s
-ZW5ndGgscz11Lloscj0wO3I8Yi5sZW5ndGg7Yi5sZW5ndGg9PT10fHwoMCxILmxrKShiKSwrK3Ipe3E9
-YltyXQpwPWcuY3JlYXRlRWxlbWVudCgibGkiKQpmLmFwcGVuZENoaWxkKHApCm89Si5ZRShwKQppZihx
-LmE9PT1DLlkyKXtvLmdQKHApLmkoMCwiZGlyIikKbj1nLmNyZWF0ZUVsZW1lbnQoInNwYW4iKQpwLmFw
-cGVuZENoaWxkKG4pCm89Si5ZRShuKQpvLmdQKG4pLmkoMCwiYXJyb3ciKQpvLnNoZihuLCImI3gyNUJD
-OyIpCm09Zy5jcmVhdGVFbGVtZW50KCJzcGFuIikKcC5hcHBlbmRDaGlsZChtKQpKLmw1KG0sIiYjeDFG
-NEMxOyIpCnAuYXBwZW5kQ2hpbGQoZy5jcmVhdGVUZXh0Tm9kZShxLmIpKQpMLnRYKHAscS5jKQpMLmt6
-KG4pfWVsc2V7by5zaGYocCwiJiN4MUY0QzQ7IikKbD1nLmNyZWF0ZUVsZW1lbnQoImEiKQpwLmFwcGVu
-ZENoaWxkKGwpCm89Si5ZRShsKQpvLmdQKGwpLmkoMCwibmF2LWxpbmsiKQpsLnNldEF0dHJpYnV0ZSgi
-ZGF0YS0iK25ldyBXLlN5KG5ldyBXLmk3KGwpKS5PKCJuYW1lIikscS5kKQpsLnNldEF0dHJpYnV0ZSgi
-aHJlZiIscS5lKQpsLmFwcGVuZENoaWxkKGcuY3JlYXRlVGV4dE5vZGUocS5iKSkKbz1vLmdWbChsKQpr
-PW8uJHRpCmo9ay5DKCJ+KDEpPyIpLmEobmV3IEwuVEQoKSkKcy5hKG51bGwpClcuSkUoby5hLG8uYixq
-LCExLGsuYykKaT1xLmYKaWYodHlwZW9mIGkhPT0ibnVtYmVyIilyZXR1cm4gaS5vcygpCmlmKGk+MCl7
-aD1nLmNyZWF0ZUVsZW1lbnQoInNwYW4iKQpwLmFwcGVuZENoaWxkKGgpCkouZFIoaCkuaSgwLCJlZGl0
-LWNvdW50IikKbz0iIitpKyIgIgppZihpPT09MSlrPSJlZGl0IgplbHNlIGs9ImVkaXRzIgpoLnNldEF0
-dHJpYnV0ZSgidGl0bGUiLG8raykKaC5hcHBlbmRDaGlsZChnLmNyZWF0ZVRleHROb2RlKEMuam4udyhp
-KSkpfX19fSwKRno6ZnVuY3Rpb24oYSxiKXt2YXIgdCxzLHIscSxwLG8sbixtLGwsayxqPWEuYQppZihq
-IT1udWxsKXt0PWRvY3VtZW50CnM9dC5jcmVhdGVFbGVtZW50KCJwIikKYi5hcHBlbmRDaGlsZChzKQpm
-b3Iocj1qLmxlbmd0aCxxPXUuaSxwPXUuUSxvPTA7bzxqLmxlbmd0aDtqLmxlbmd0aD09PXJ8fCgwLEgu
-bGspKGopLCsrbyl7bj1qW29dCm09dC5jcmVhdGVFbGVtZW50KCJhIikKcy5hcHBlbmRDaGlsZChtKQpt
-LmFwcGVuZENoaWxkKHQuY3JlYXRlVGV4dE5vZGUobi5hKSkKbS5zZXRBdHRyaWJ1dGUoImhyZWYiLG4u
-YikKbD1wLmEoSC5WTShbImFkZC1oaW50LWxpbmsiLCJiZWZvcmUtYXBwbHkiLCJidXR0b24iXSxxKSkK
-az1KLmRSKG0pCmsuVjEoMCkKay5GVigwLGwpfX19LApDQzpmdW5jdGlvbihhMixhMyxhNCl7dmFyIHQs
-cyxyLHEscCxvLG4sbSxsLGssaixpLGgsZyxmLGUsZCxjLGIsYSxhMCxhMT1udWxsCmZvcih0PWEyLmUs
-cz10Lmxlbmd0aCxyPXUuaSxxPXUuUSxwPTA7cDx0Lmxlbmd0aDt0Lmxlbmd0aD09PXN8fCgwLEgubGsp
-KHQpLCsrcCl7bz10W3BdCm49ZG9jdW1lbnQKbT1uLmNyZWF0ZUVsZW1lbnQoInAiKQpsPXEuYShILlZN
-KFsidHJhY2UiXSxyKSkKaz1KLmRSKG0pCmsuVjEoMCkKay5GVigwLGwpCmo9YTMuYXBwZW5kQ2hpbGQo
-bSkKbT1uLmNyZWF0ZUVsZW1lbnQoInNwYW4iKQpsPXEuYShILlZNKFsidHlwZS1kZXNjcmlwdGlvbiJd
-LHIpKQprPUouZFIobSkKay5WMSgwKQprLkZWKDAsbCkKbS5hcHBlbmRDaGlsZChuLmNyZWF0ZVRleHRO
-b2RlKG8uYSkpCmouYXBwZW5kQ2hpbGQobSkKai5hcHBlbmRDaGlsZChuLmNyZWF0ZVRleHROb2RlKCI6
-IikpCm09bi5jcmVhdGVFbGVtZW50KCJ1bCIpCmw9cS5hKEguVk0oWyJ0cmFjZSJdLHIpKQprPUouZFIo
-bSkKay5WMSgwKQprLkZWKDAsbCkKaT1qLmFwcGVuZENoaWxkKG0pCmZvcihtPW8uYixsPW0ubGVuZ3Ro
-LGg9MDtoPG0ubGVuZ3RoO20ubGVuZ3RoPT09bHx8KDAsSC5saykobSksKytoKXtnPW1baF0KZj1uLmNy
-ZWF0ZUVsZW1lbnQoImxpIikKSi5sNShmLCImI3gyNzRGOyAiKQppLmFwcGVuZENoaWxkKGYpCmU9bi5j
-cmVhdGVFbGVtZW50KCJzcGFuIikKZD1xLmEoSC5WTShbImZ1bmN0aW9uIl0scikpCms9Si5kUihlKQpr
-LlYxKDApCmsuRlYoMCxkKQpkPWcuYgpMLmtEKGUsZD09bnVsbD8idW5rbm93biI6ZCkKZi5hcHBlbmRD
-aGlsZChlKQpjPWcuYwppZihjIT1udWxsKXtmLmFwcGVuZENoaWxkKG4uY3JlYXRlVGV4dE5vZGUoIiAo
-IikpCmI9Yy5iCmE9bi5jcmVhdGVFbGVtZW50KCJhIikKYS5hcHBlbmRDaGlsZChuLmNyZWF0ZVRleHRO
-b2RlKEguRWooYy5jKSsiOiIrSC5FaihiKSkpCmEwPWMuYQplPSQublUoKQphLnNldEF0dHJpYnV0ZSgi
-aHJlZiIsZS5vNShlLnE3KDAsYTQsYTAsYTEsYTEsYTEsYTEsYTEsYTEpKSkKYS5jbGFzc0xpc3QuYWRk
-KCJuYXYtbGluayIpCmYuYXBwZW5kQ2hpbGQoYSkKZi5hcHBlbmRDaGlsZChuLmNyZWF0ZVRleHROb2Rl
-KCIpIikpfWYuYXBwZW5kQ2hpbGQobi5jcmVhdGVUZXh0Tm9kZSgiOiAiKSkKZT1nLmEKTC5rRChmLGU9
-PW51bGw/InVua25vd24iOmUpfX19LAprRDpmdW5jdGlvbihhLGIpe3ZhciB0LHMscj1ILlZNKGIuc3Bs
-aXQoIi4iKSx1LnMpLHE9Qy5ObS5ndEgocikscD1kb2N1bWVudAphLmFwcGVuZENoaWxkKHAuY3JlYXRl
-VGV4dE5vZGUocSkpCmZvcihxPUgucUMociwxLG51bGwsdS5OKSxxPW5ldyBILmE3KHEscS5nQShxKSxx
-LiR0aS5DKCJhNzxhTC5FPiIpKSx0PUouWUUoYSk7cS5GKCk7KXtzPXEuZAp0Lm56KGEsImJlZm9yZWVu
-ZCIsIiYjODIwMzsuIixudWxsLG51bGwpCmEuYXBwZW5kQ2hpbGQocC5jcmVhdGVUZXh0Tm9kZShzKSl9
-fSwKZTpmdW5jdGlvbiBlKCl7fSwKVlc6ZnVuY3Rpb24gVlcoYSxiLGMpe3RoaXMuYT1hCnRoaXMuYj1i
-CnRoaXMuYz1jfSwKb1o6ZnVuY3Rpb24gb1ooKXt9LApqcjpmdW5jdGlvbiBqcigpe30sCnFsOmZ1bmN0
-aW9uIHFsKCl7fSwKSGk6ZnVuY3Rpb24gSGkoKXt9LApCVDpmdW5jdGlvbiBCVCgpe30sClBZOmZ1bmN0
-aW9uIFBZKCl7fSwKTDpmdW5jdGlvbiBMKCl7fSwKV3g6ZnVuY3Rpb24gV3goYSxiKXt0aGlzLmE9YQp0
-aGlzLmI9Yn0sCkFPOmZ1bmN0aW9uIEFPKGEpe3RoaXMuYT1hfSwKZE46ZnVuY3Rpb24gZE4oYSl7dGhp
-cy5hPWF9LApIbzpmdW5jdGlvbiBIbyhhKXt0aGlzLmE9YX0sCnh6OmZ1bmN0aW9uIHh6KGEsYil7dGhp
-cy5hPWEKdGhpcy5iPWJ9LApJQzpmdW5jdGlvbiBJQygpe30sCkwxOmZ1bmN0aW9uIEwxKGEsYil7dGhp
-cy5hPWEKdGhpcy5iPWJ9LApuVDpmdW5jdGlvbiBuVChhLGIsYyl7dGhpcy5hPWEKdGhpcy5iPWIKdGhp
-cy5jPWN9LApOWTpmdW5jdGlvbiBOWShhKXt0aGlzLmE9YX0sCmVYOmZ1bmN0aW9uIGVYKCl7fSwKRFQ6
-ZnVuY3Rpb24gRFQoYSxiLGMpe3RoaXMuYT1hCnRoaXMuYj1iCnRoaXMuYz1jfSwKZUg6ZnVuY3Rpb24g
-ZUgoYSl7dGhpcy5hPWF9LAp5dTpmdW5jdGlvbiB5dShhLGIsYyxkLGUpe3ZhciBfPXRoaXMKXy5hPWEK
-Xy5iPWIKXy5jPWMKXy5kPWQKXy5lPWV9LAp6RDpmdW5jdGlvbiB6RChhKXt0aGlzLmE9YX0sClRXOmZ1
-bmN0aW9uIFRXKCl7fSwKeHI6ZnVuY3Rpb24geHIoYSl7dGhpcy5hPWF9LApFRTpmdW5jdGlvbiBFRShh
-LGIsYyl7dGhpcy5hPWEKdGhpcy5iPWIKdGhpcy5jPWN9LApRTDpmdW5jdGlvbiBRTChhLGIpe3RoaXMu
-YT1hCnRoaXMuYj1ifSwKVlM6ZnVuY3Rpb24gVlMoYSl7dGhpcy5hPWF9LApURDpmdW5jdGlvbiBURCgp
-e30sClhBOmZ1bmN0aW9uIFhBKCl7fSwKbUs6ZnVuY3Rpb24oYSl7dmFyIHQscyxyLHEscCxvLG49SC5W
-TShbXSx1LmNRKQpmb3IodD1KLklUKHUuVC5hKGEpKTt0LkYoKTspe3M9dC5nbCgpCnI9Si5VNihzKQpx
-PUwucDIoSC5oKHIucShzLCJ0eXBlIikpKQpwPUguaChyLnEocywibmFtZSIpKQpvPXIucShzLCJzdWJ0
-cmVlIikKbz1vPT1udWxsP251bGw6TC5tSyhvKQpDLk5tLmkobixuZXcgTC5aWihxLHAsbyxILmgoci5x
-KHMsInBhdGgiKSksSC5oKHIucShzLCJocmVmIikpLEgudVAoci5xKHMsImVkaXRDb3VudCIpKSkpfXJl
-dHVybiBufSwKcDI6ZnVuY3Rpb24oYSl7c3dpdGNoKGEpe2Nhc2UiZGlyZWN0b3J5IjpyZXR1cm4gQy5Z
-MgpjYXNlImZpbGUiOnJldHVybiBDLnJmCmRlZmF1bHQ6dGhyb3cgSC5iKFAuUFYoIlVucmVjb2duaXpl
-ZCBuYXZpZ2F0aW9uIHRyZWUgbm9kZSB0eXBlOiAiK0guRWooYSkpKX19LApaWjpmdW5jdGlvbiBaWihh
-LGIsYyxkLGUsZil7dmFyIF89dGhpcwpfLmE9YQpfLmI9YgpfLmM9YwpfLmQ9ZApfLmU9ZQpfLmY9Zn0s
-Ck85OmZ1bmN0aW9uIE85KGEpe3RoaXMuYj1hfSwKSVY6ZnVuY3Rpb24gSVYoYSxiLGMsZCl7dmFyIF89
-dGhpcwpfLmQ9YQpfLmU9YgpfLmY9YwpfLnI9ZH19LE09ewpZRjpmdW5jdGlvbihhLGIpe3ZhciB0LHMs
-cixxLHAsbyxuCmZvcih0PWIubGVuZ3RoLHM9MTtzPHQ7KytzKXtpZihiW3NdPT1udWxsfHxiW3MtMV0h
-PW51bGwpY29udGludWUKZm9yKDt0Pj0xO3Q9cil7cj10LTEKaWYoYltyXSE9bnVsbClicmVha31xPW5l
-dyBQLlJuKCIiKQpwPSIiKyhhKyIoIikKcS5hPXAKbz1ILnFDKGIsMCx0LEgudDYoYikuYykKbj1vLiR0
-aQpuPXArbmV3IEgubEoobyxuLkMoInFVKihhTC5FKSIpLmEobmV3IE0uTm8oKSksbi5DKCJsSjxhTC5F
-LHFVKj4iKSkuelYoMCwiLCAiKQpxLmE9bgpxLmE9bisoIik6IHBhcnQgIisocy0xKSsiIHdhcyBudWxs
-LCBidXQgcGFydCAiK3MrIiB3YXMgbm90LiIpCnRocm93IEguYihQLnhZKHEudygwKSkpfX0sCmxJOmZ1
-bmN0aW9uIGxJKGEpe3RoaXMuYT1hfSwKTWk6ZnVuY3Rpb24gTWkoKXt9LApxNzpmdW5jdGlvbiBxNygp
-e30sCk5vOmZ1bmN0aW9uIE5vKCl7fX0sWD17CkNMOmZ1bmN0aW9uKGEsYil7dmFyIHQscyxyLHEscCxv
-PWIueFooYSkKYi5oSyhhKQppZihvIT1udWxsKWE9Si5LVihhLG8ubGVuZ3RoKQp0PXUuaQpzPUguVk0o
-W10sdCkKcj1ILlZNKFtdLHQpCnQ9YS5sZW5ndGgKaWYodCE9PTAmJmIucjQoQy54Qi5XKGEsMCkpKXtp
-ZigwPj10KXJldHVybiBILk9IKGEsMCkKQy5ObS5pKHIsYVswXSkKcT0xfWVsc2V7Qy5ObS5pKHIsIiIp
-CnE9MH1mb3IocD1xO3A8dDsrK3ApaWYoYi5yNChDLnhCLlcoYSxwKSkpe0MuTm0uaShzLEMueEIuTmoo
-YSxxLHApKQpDLk5tLmkocixhW3BdKQpxPXArMX1pZihxPHQpe0MuTm0uaShzLEMueEIuRyhhLHEpKQpD
-Lk5tLmkociwiIil9cmV0dXJuIG5ldyBYLldEKGIsbyxzLHIpfSwKV0Q6ZnVuY3Rpb24gV0QoYSxiLGMs
-ZCl7dmFyIF89dGhpcwpfLmE9YQpfLmI9YgpfLmQ9YwpfLmU9ZH0sCnFSOmZ1bmN0aW9uIHFSKGEpe3Ro
-aXMuYT1hfSwKSTc6ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBYLmR2KGEpfSwKZHY6ZnVuY3Rpb24gZHYo
-YSl7dGhpcy5hPWF9fSxPPXsKUmg6ZnVuY3Rpb24oKXt2YXIgdCxzPW51bGwKaWYoUC51bygpLmdGaSgp
-IT09ImZpbGUiKXJldHVybiAkLkViKCkKdD1QLnVvKCkKaWYoIUMueEIuVGModC5nSWkodCksIi8iKSly
-ZXR1cm4gJC5FYigpCmlmKFAuS0wocywiYS9iIixzLHMscyxzLHMpLnQ0KCk9PT0iYVxcYiIpcmV0dXJu
-ICQuS2soKQpyZXR1cm4gJC5iRCgpfSwKekw6ZnVuY3Rpb24gekwoKXt9fSxFPXtPRjpmdW5jdGlvbiBP
-RihhLGIsYyl7dGhpcy5kPWEKdGhpcy5lPWIKdGhpcy5mPWN9fSxGPXtydTpmdW5jdGlvbiBydShhLGIs
-YyxkKXt2YXIgXz10aGlzCl8uZD1hCl8uZT1iCl8uZj1jCl8ucj1kfX0sRD17ClJYOmZ1bmN0aW9uKCl7
-dmFyIHQscyxyPVAudW8oKQppZihyLkROKDAsJC5JNikpcmV0dXJuICQuRmYKJC5JNj1yCmlmKCQuSGso
-KT09JC5FYigpKXJldHVybiAkLkZmPXIuWkkoIi4iKS53KDApCmVsc2V7dD1yLnQ0KCkKcz10Lmxlbmd0
-aC0xCnJldHVybiAkLkZmPXM9PT0wP3Q6Qy54Qi5Oaih0LDAscyl9fSwKbnI6ZnVuY3Rpb24oYSxiKXt2
-YXIgdD1udWxsCnJldHVybiAkLm5VKCkucTcoMCxhLGIsdCx0LHQsdCx0LHQpfX0KdmFyIHc9W0MsSCxK
-LFAsVyxVLEIsVCxMLE0sWCxPLEUsRixEXQpodW5rSGVscGVycy5zZXRGdW5jdGlvbk5hbWVzSWZOZWNl
-c3NhcnkodykKdmFyICQ9e30KSC5GSy5wcm90b3R5cGU9e30KSi52Qi5wcm90b3R5cGU9ewpETjpmdW5j
-dGlvbihhLGIpe3JldHVybiBhPT09Yn0sCmdpTzpmdW5jdGlvbihhKXtyZXR1cm4gSC5lUShhKX0sCnc6
-ZnVuY3Rpb24oYSl7cmV0dXJuIkluc3RhbmNlIG9mICciK0guRWooSC5NKGEpKSsiJyJ9LAplNzpmdW5j
-dGlvbihhLGIpe3Uuby5hKGIpCnRocm93IEguYihQLmxyKGEsYi5nV2EoKSxiLmduZCgpLGIuZ1ZtKCkp
-KX19CkoueUUucHJvdG90eXBlPXsKdzpmdW5jdGlvbihhKXtyZXR1cm4gU3RyaW5nKGEpfSwKZ2lPOmZ1
-bmN0aW9uKGEpe3JldHVybiBhPzUxOTAxODoyMTgxNTl9LAokaWEyOjF9Ckoud2UucHJvdG90eXBlPXsK
-RE46ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbnVsbD09Yn0sCnc6ZnVuY3Rpb24oYSl7cmV0dXJuIm51bGwi
-fSwKZ2lPOmZ1bmN0aW9uKGEpe3JldHVybiAwfSwKZTc6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5T
-aihhLHUuby5hKGIpKX0sCiRpYzg6MX0KSi5NRi5wcm90b3R5cGU9ewpnaU86ZnVuY3Rpb24oYSl7cmV0
-dXJuIDB9LAp3OmZ1bmN0aW9uKGEpe3JldHVybiBTdHJpbmcoYSl9LAokaXZtOjF9CkouaUMucHJvdG90
-eXBlPXt9Ckoua2QucHJvdG90eXBlPXt9CkouYzUucHJvdG90eXBlPXsKdzpmdW5jdGlvbihhKXt2YXIg
-dD1hWyQudygpXQppZih0PT1udWxsKXJldHVybiB0aGlzLnQoYSkKcmV0dXJuIkphdmFTY3JpcHQgZnVu
-Y3Rpb24gZm9yICIrSC5FaihKLmoodCkpfSwKJFM6ZnVuY3Rpb24oKXtyZXR1cm57ZnVuYzoxLG9wdDpb
-LCwsLCwsLCwsLCwsLCwsLF19fSwKJGlFSDoxfQpKLmpkLnByb3RvdHlwZT17Cmk6ZnVuY3Rpb24oYSxi
-KXtILnQ2KGEpLmMuYShiKQppZighIWEuZml4ZWQkbGVuZ3RoKUgudmgoUC5MNCgiYWRkIikpCmEucHVz
-aChiKX0sClc0OmZ1bmN0aW9uKGEsYil7dmFyIHQKaWYoISFhLmZpeGVkJGxlbmd0aClILnZoKFAuTDQo
-InJlbW92ZUF0IikpCnQ9YS5sZW5ndGgKaWYoYj49dCl0aHJvdyBILmIoUC5PNyhiLG51bGwpKQpyZXR1
-cm4gYS5zcGxpY2UoYiwxKVswXX0sClVHOmZ1bmN0aW9uKGEsYixjKXt2YXIgdCxzLHIKSC50NihhKS5D
-KCJjWDwxPiIpLmEoYykKaWYoISFhLmZpeGVkJGxlbmd0aClILnZoKFAuTDQoImluc2VydEFsbCIpKQp0
-PWEubGVuZ3RoClAud0EoYiwwLHQsImluZGV4IikKcz1jLmxlbmd0aAp0aGlzLnNBKGEsdCtzKQpyPWIr
-cwp0aGlzLllXKGEscixhLmxlbmd0aCxhLGIpCnRoaXMudmcoYSxiLHIsYyl9LAptdjpmdW5jdGlvbihh
-KXtpZighIWEuZml4ZWQkbGVuZ3RoKUgudmgoUC5MNCgicmVtb3ZlTGFzdCIpKQppZihhLmxlbmd0aD09
-PTApdGhyb3cgSC5iKEguSFkoYSwtMSkpCnJldHVybiBhLnBvcCgpfSwKRlY6ZnVuY3Rpb24oYSxiKXt2
-YXIgdApILnQ2KGEpLkMoImNYPDE+IikuYShiKQppZighIWEuZml4ZWQkbGVuZ3RoKUgudmgoUC5MNCgi
-YWRkQWxsIikpCmZvcih0PUouSVQoYik7dC5GKCk7KWEucHVzaCh0LmdsKCkpfSwKRTI6ZnVuY3Rpb24o
-YSxiLGMpe3ZhciB0PUgudDYoYSkKcmV0dXJuIG5ldyBILmxKKGEsdC5LcShjKS5DKCIxKDIpIikuYShi
-KSx0LkMoIkA8MT4iKS5LcShjKS5DKCJsSjwxLDI+IikpfSwKelY6ZnVuY3Rpb24oYSxiKXt2YXIgdCxz
-PVAuTzgoYS5sZW5ndGgsIiIsITEsdS5OKQpmb3IodD0wO3Q8YS5sZW5ndGg7Kyt0KXRoaXMuWShzLHQs
-SC5FaihhW3RdKSkKcmV0dXJuIHMuam9pbihiKX0sCk4wOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciB0LHMs
-cgpkLmEoYikKSC50NihhKS5LcShkKS5DKCIxKDEsMikiKS5hKGMpCnQ9YS5sZW5ndGgKZm9yKHM9Yixy
-PTA7cjx0Oysrcil7cz1jLiQyKHMsYVtyXSkKaWYoYS5sZW5ndGghPT10KXRocm93IEguYihQLmE0KGEp
-KX1yZXR1cm4gc30sCkU6ZnVuY3Rpb24oYSxiKXtpZihiPDB8fGI+PWEubGVuZ3RoKXJldHVybiBILk9I
-KGEsYikKcmV0dXJuIGFbYl19LApndEg6ZnVuY3Rpb24oYSl7aWYoYS5sZW5ndGg+MClyZXR1cm4gYVsw
-XQp0aHJvdyBILmIoSC5XcCgpKX0sCmdyWjpmdW5jdGlvbihhKXt2YXIgdD1hLmxlbmd0aAppZih0PjAp
-cmV0dXJuIGFbdC0xXQp0aHJvdyBILmIoSC5XcCgpKX0sCllXOmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFy
-IHQscyxyLHEKSC50NihhKS5DKCJjWDwxPiIpLmEoZCkKaWYoISFhLmltbXV0YWJsZSRsaXN0KUgudmgo
-UC5MNCgic2V0UmFuZ2UiKSkKUC5qQihiLGMsYS5sZW5ndGgpCnQ9Yy1iCmlmKHQ9PT0wKXJldHVybgpQ
-LmsxKGUsInNraXBDb3VudCIpCnM9ZApyPUouVTYocykKaWYoZSt0PnIuZ0EocykpdGhyb3cgSC5iKEgu
-YXIoKSkKaWYoZTxiKWZvcihxPXQtMTtxPj0wOy0tcSlhW2IrcV09ci5xKHMsZStxKQplbHNlIGZvcihx
-PTA7cTx0OysrcSlhW2IrcV09ci5xKHMsZStxKX0sCnZnOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0
-aGlzLllXKGEsYixjLGQsMCl9LApWcjpmdW5jdGlvbihhLGIpe3ZhciB0LHMKSC50NihhKS5DKCJhMigx
-KSIpLmEoYikKdD1hLmxlbmd0aApmb3Iocz0wO3M8dDsrK3Mpe2lmKEgub1QoYi4kMShhW3NdKSkpcmV0
-dXJuITAKaWYoYS5sZW5ndGghPT10KXRocm93IEguYihQLmE0KGEpKX1yZXR1cm4hMX0sCnRnOmZ1bmN0
-aW9uKGEsYil7dmFyIHQKZm9yKHQ9MDt0PGEubGVuZ3RoOysrdClpZihKLlJNKGFbdF0sYikpcmV0dXJu
-ITAKcmV0dXJuITF9LAp3OmZ1bmN0aW9uKGEpe3JldHVybiBQLldFKGEsIlsiLCJdIil9LApna3o6ZnVu
-Y3Rpb24oYSl7cmV0dXJuIG5ldyBKLm0xKGEsYS5sZW5ndGgsSC50NihhKS5DKCJtMTwxPiIpKX0sCmdp
-TzpmdW5jdGlvbihhKXtyZXR1cm4gSC5lUShhKX0sCmdBOmZ1bmN0aW9uKGEpe3JldHVybiBhLmxlbmd0
-aH0sCnNBOmZ1bmN0aW9uKGEsYil7aWYoISFhLmZpeGVkJGxlbmd0aClILnZoKFAuTDQoInNldCBsZW5n
-dGgiKSkKYS5sZW5ndGg9Yn0sCnE6ZnVuY3Rpb24oYSxiKXtILnVQKGIpCmlmKGI+PWEubGVuZ3RofHxi
-PDApdGhyb3cgSC5iKEguSFkoYSxiKSkKcmV0dXJuIGFbYl19LApZOmZ1bmN0aW9uKGEsYixjKXtILnQ2
-KGEpLmMuYShjKQppZighIWEuaW1tdXRhYmxlJGxpc3QpSC52aChQLkw0KCJpbmRleGVkIHNldCIpKQpp
-ZihiPj1hLmxlbmd0aHx8YjwwKXRocm93IEguYihILkhZKGEsYikpCmFbYl09Y30sCiRpYlE6MSwKJGlj
-WDoxLAokaXpNOjF9CkouUG8ucHJvdG90eXBlPXt9CkoubTEucHJvdG90eXBlPXsKZ2w6ZnVuY3Rpb24o
-KXtyZXR1cm4gdGhpcy5kfSwKRjpmdW5jdGlvbigpe3ZhciB0LHM9dGhpcyxyPXMuYSxxPXIubGVuZ3Ro
-CmlmKHMuYiE9PXEpdGhyb3cgSC5iKEgubGsocikpCnQ9cy5jCmlmKHQ+PXEpe3Muc0gobnVsbCkKcmV0
-dXJuITF9cy5zSChyW3RdKTsrK3MuYwpyZXR1cm4hMH0sCnNIOmZ1bmN0aW9uKGEpe3RoaXMuZD10aGlz
-LiR0aS5DKCIxPyIpLmEoYSl9LAokaUFuOjF9CkoucUkucHJvdG90eXBlPXsKelE6ZnVuY3Rpb24oYSl7
-aWYoYT4wKXtpZihhIT09MS8wKXJldHVybiBNYXRoLnJvdW5kKGEpfWVsc2UgaWYoYT4tMS8wKXJldHVy
-biAwLU1hdGgucm91bmQoMC1hKQp0aHJvdyBILmIoUC5MNCgiIithKyIucm91bmQoKSIpKX0sCldaOmZ1
-bmN0aW9uKGEsYil7dmFyIHQscyxyLHEKaWYoYjwyfHxiPjM2KXRocm93IEguYihQLlRFKGIsMiwzNiwi
-cmFkaXgiLG51bGwpKQp0PWEudG9TdHJpbmcoYikKaWYoQy54Qi5tKHQsdC5sZW5ndGgtMSkhPT00MSly
-ZXR1cm4gdApzPS9eKFtcZGEtel0rKSg/OlwuKFtcZGEtel0rKSk/XChlXCsoXGQrKVwpJC8uZXhlYyh0
-KQppZihzPT1udWxsKUgudmgoUC5MNCgiVW5leHBlY3RlZCB0b1N0cmluZyByZXN1bHQ6ICIrdCkpCnI9
-cy5sZW5ndGgKaWYoMT49cilyZXR1cm4gSC5PSChzLDEpCnQ9c1sxXQppZigzPj1yKXJldHVybiBILk9I
-KHMsMykKcT0rc1szXQpyPXNbMl0KaWYociE9bnVsbCl7dCs9cgpxLT1yLmxlbmd0aH1yZXR1cm4gdCtD
-LnhCLkl4KCIwIixxKX0sCnc6ZnVuY3Rpb24oYSl7aWYoYT09PTAmJjEvYTwwKXJldHVybiItMC4wIgpl
-bHNlIHJldHVybiIiK2F9LApnaU86ZnVuY3Rpb24oYSl7dmFyIHQscyxyLHEscD1hfDAKaWYoYT09PXAp
-cmV0dXJuIDUzNjg3MDkxMSZwCnQ9TWF0aC5hYnMoYSkKcz1NYXRoLmxvZyh0KS8wLjY5MzE0NzE4MDU1
-OTk0NTN8MApyPU1hdGgucG93KDIscykKcT10PDE/dC9yOnIvdApyZXR1cm4gNTM2ODcwOTExJigocSo5
-MDA3MTk5MjU0NzQwOTkyfDApKyhxKjM1NDIyNDMxODExNzY1MjF8MCkpKjU5OTE5NytzKjEyNTl9LAp6
-WTpmdW5jdGlvbihhLGIpe3ZhciB0PWElYgppZih0PT09MClyZXR1cm4gMAppZih0PjApcmV0dXJuIHQK
-aWYoYjwwKXJldHVybiB0LWIKZWxzZSByZXR1cm4gdCtifSwKd0c6ZnVuY3Rpb24oYSxiKXt2YXIgdApp
-ZihhPjApdD10aGlzLnAzKGEsYikKZWxzZXt0PWI+MzE/MzE6Ygp0PWE+PnQ+Pj4wfXJldHVybiB0fSwK
-YmY6ZnVuY3Rpb24oYSxiKXtpZihiPDApdGhyb3cgSC5iKEgudEwoYikpCnJldHVybiB0aGlzLnAzKGEs
-Yil9LApwMzpmdW5jdGlvbihhLGIpe3JldHVybiBiPjMxPzA6YT4+PmJ9LAokaUNQOjEsCiRpbGY6MX0K
-Si51ci5wcm90b3R5cGU9eyRpSWY6MX0KSi5WQS5wcm90b3R5cGU9e30KSi5Eci5wcm90b3R5cGU9ewpt
-OmZ1bmN0aW9uKGEsYil7aWYoYjwwKXRocm93IEguYihILkhZKGEsYikpCmlmKGI+PWEubGVuZ3RoKUgu
-dmgoSC5IWShhLGIpKQpyZXR1cm4gYS5jaGFyQ29kZUF0KGIpfSwKVzpmdW5jdGlvbihhLGIpe2lmKGI+
-PWEubGVuZ3RoKXRocm93IEguYihILkhZKGEsYikpCnJldHVybiBhLmNoYXJDb2RlQXQoYil9LApkZDpm
-dW5jdGlvbihhLGIpe3JldHVybiBuZXcgSC51bihiLGEsMCl9LApoOmZ1bmN0aW9uKGEsYil7aWYodHlw
-ZW9mIGIhPSJzdHJpbmciKXRocm93IEguYihQLkwzKGIsbnVsbCxudWxsKSkKcmV0dXJuIGErYn0sClRj
-OmZ1bmN0aW9uKGEsYil7dmFyIHQ9Yi5sZW5ndGgscz1hLmxlbmd0aAppZih0PnMpcmV0dXJuITEKcmV0
-dXJuIGI9PT10aGlzLkcoYSxzLXQpfSwKaTc6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIHQ9UC5qQihiLGMs
-YS5sZW5ndGgpLHM9YS5zdWJzdHJpbmcoMCxiKSxyPWEuc3Vic3RyaW5nKHQpCnJldHVybiBzK2Qrcn0s
-ClFpOmZ1bmN0aW9uKGEsYixjKXt2YXIgdAppZihjPDB8fGM+YS5sZW5ndGgpdGhyb3cgSC5iKFAuVEUo
-YywwLGEubGVuZ3RoLG51bGwsbnVsbCkpCnQ9YytiLmxlbmd0aAppZih0PmEubGVuZ3RoKXJldHVybiEx
-CnJldHVybiBiPT09YS5zdWJzdHJpbmcoYyx0KX0sCm46ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5R
-aShhLGIsMCl9LApOajpmdW5jdGlvbihhLGIsYyl7aWYoYz09bnVsbCljPWEubGVuZ3RoCmlmKGI8MCl0
-aHJvdyBILmIoUC5PNyhiLG51bGwpKQppZihiPmMpdGhyb3cgSC5iKFAuTzcoYixudWxsKSkKaWYoYz5h
-Lmxlbmd0aCl0aHJvdyBILmIoUC5PNyhjLG51bGwpKQpyZXR1cm4gYS5zdWJzdHJpbmcoYixjKX0sCkc6
-ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5OaihhLGIsbnVsbCl9LApoYzpmdW5jdGlvbihhKXtyZXR1
-cm4gYS50b0xvd2VyQ2FzZSgpfSwKYlM6ZnVuY3Rpb24oYSl7dmFyIHQscyxyLHE9YS50cmltKCkscD1x
-Lmxlbmd0aAppZihwPT09MClyZXR1cm4gcQppZih0aGlzLlcocSwwKT09PTEzMyl7dD1KLm1tKHEsMSkK
-aWYodD09PXApcmV0dXJuIiJ9ZWxzZSB0PTAKcz1wLTEKcj10aGlzLm0ocSxzKT09PTEzMz9KLmMxKHEs
-cyk6cAppZih0PT09MCYmcj09PXApcmV0dXJuIHEKcmV0dXJuIHEuc3Vic3RyaW5nKHQscil9LApJeDpm
-dW5jdGlvbihhLGIpe3ZhciB0LHMKaWYoMD49YilyZXR1cm4iIgppZihiPT09MXx8YS5sZW5ndGg9PT0w
-KXJldHVybiBhCmlmKGIhPT1iPj4+MCl0aHJvdyBILmIoQy5FcSkKZm9yKHQ9YSxzPSIiOyEwOyl7aWYo
-KGImMSk9PT0xKXM9dCtzCmI9Yj4+PjEKaWYoYj09PTApYnJlYWsKdCs9dH1yZXR1cm4gc30sClhVOmZ1
-bmN0aW9uKGEsYixjKXt2YXIgdAppZihjPDB8fGM+YS5sZW5ndGgpdGhyb3cgSC5iKFAuVEUoYywwLGEu
-bGVuZ3RoLG51bGwsbnVsbCkpCnQ9YS5pbmRleE9mKGIsYykKcmV0dXJuIHR9LApPWTpmdW5jdGlvbihh
-LGIpe3JldHVybiB0aGlzLlhVKGEsYiwwKX0sClBrOmZ1bmN0aW9uKGEsYixjKXt2YXIgdCxzCmlmKGM9
-PW51bGwpYz1hLmxlbmd0aAplbHNlIGlmKGM8MHx8Yz5hLmxlbmd0aCl0aHJvdyBILmIoUC5URShjLDAs
-YS5sZW5ndGgsbnVsbCxudWxsKSkKdD1iLmxlbmd0aApzPWEubGVuZ3RoCmlmKGMrdD5zKWM9cy10CnJl
-dHVybiBhLmxhc3RJbmRleE9mKGIsYyl9LApjbjpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLlBrKGEs
-YixudWxsKX0sCklzOmZ1bmN0aW9uKGEsYixjKXt2YXIgdD1hLmxlbmd0aAppZihjPnQpdGhyb3cgSC5i
-KFAuVEUoYywwLHQsbnVsbCxudWxsKSkKcmV0dXJuIEgubTIoYSxiLGMpfSwKdGc6ZnVuY3Rpb24oYSxi
-KXtyZXR1cm4gdGhpcy5JcyhhLGIsMCl9LAp3OmZ1bmN0aW9uKGEpe3JldHVybiBhfSwKZ2lPOmZ1bmN0
-aW9uKGEpe3ZhciB0LHMscgpmb3IodD1hLmxlbmd0aCxzPTAscj0wO3I8dDsrK3Ipe3M9NTM2ODcwOTEx
-JnMrYS5jaGFyQ29kZUF0KHIpCnM9NTM2ODcwOTExJnMrKCg1MjQyODcmcyk8PDEwKQpzXj1zPj42fXM9
-NTM2ODcwOTExJnMrKCg2NzEwODg2MyZzKTw8MykKc149cz4+MTEKcmV0dXJuIDUzNjg3MDkxMSZzKygo
-MTYzODMmcyk8PDE1KX0sCmdBOmZ1bmN0aW9uKGEpe3JldHVybiBhLmxlbmd0aH0sCnE6ZnVuY3Rpb24o
-YSxiKXtILnVQKGIpCmlmKGI+PWEubGVuZ3RofHwhMSl0aHJvdyBILmIoSC5IWShhLGIpKQpyZXR1cm4g
-YVtiXX0sCiRpdlg6MSwKJGlxVToxfQpILm5kLnByb3RvdHlwZT17Cnc6ZnVuY3Rpb24oYSl7dmFyIHQ9
-IkxhdGVJbml0aWFsaXphdGlvbkVycm9yOiAiK3RoaXMuYQpyZXR1cm4gdH19CkgucWoucHJvdG90eXBl
-PXsKZ0E6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuYS5sZW5ndGh9LApxOmZ1bmN0aW9uKGEsYil7cmV0
-dXJuIEMueEIubSh0aGlzLmEsSC51UChiKSl9fQpILmJRLnByb3RvdHlwZT17fQpILmFMLnByb3RvdHlw
-ZT17CmdrejpmdW5jdGlvbihhKXt2YXIgdD10aGlzCnJldHVybiBuZXcgSC5hNyh0LHQuZ0EodCksSC5M
-aCh0KS5DKCJhNzxhTC5FPiIpKX0sCnpWOmZ1bmN0aW9uKGEsYil7dmFyIHQscyxyLHE9dGhpcyxwPXEu
-Z0EocSkKaWYoYi5sZW5ndGghPT0wKXtpZihwPT09MClyZXR1cm4iIgp0PUguRWoocS5FKDAsMCkpCmlm
-KHAhPT1xLmdBKHEpKXRocm93IEguYihQLmE0KHEpKQpmb3Iocz10LHI9MTtyPHA7KytyKXtzPXMrYitI
-LkVqKHEuRSgwLHIpKQppZihwIT09cS5nQShxKSl0aHJvdyBILmIoUC5hNChxKSl9cmV0dXJuIHMuY2hh
-ckNvZGVBdCgwKT09MD9zOnN9ZWxzZXtmb3Iocj0wLHM9IiI7cjxwOysrcil7cys9SC5FaihxLkUoMCxy
-KSkKaWYocCE9PXEuZ0EocSkpdGhyb3cgSC5iKFAuYTQocSkpfXJldHVybiBzLmNoYXJDb2RlQXQoMCk9
-PTA/czpzfX0sCmV2OmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuR0coMCxILkxoKHRoaXMpLkMoImEy
-KGFMLkUpIikuYShiKSl9LApFMjpmdW5jdGlvbihhLGIsYyl7dmFyIHQ9SC5MaCh0aGlzKQpyZXR1cm4g
-bmV3IEgubEoodGhpcyx0LktxKGMpLkMoIjEoYUwuRSkiKS5hKGIpLHQuQygiQDxhTC5FPiIpLktxKGMp
-LkMoImxKPDEsMj4iKSl9fQpILm5ILnByb3RvdHlwZT17CmdVRDpmdW5jdGlvbigpe3ZhciB0PUouSG0o
-dGhpcy5hKSxzPXRoaXMuYwppZihzPT1udWxsfHxzPnQpcmV0dXJuIHQKcmV0dXJuIHN9LApnQXM6ZnVu
-Y3Rpb24oKXt2YXIgdD1KLkhtKHRoaXMuYSkscz10aGlzLmIKaWYocz50KXJldHVybiB0CnJldHVybiBz
-fSwKZ0E6ZnVuY3Rpb24oYSl7dmFyIHQscz1KLkhtKHRoaXMuYSkscj10aGlzLmIKaWYocj49cylyZXR1
-cm4gMAp0PXRoaXMuYwppZih0PT1udWxsfHx0Pj1zKXJldHVybiBzLXIKaWYodHlwZW9mIHQhPT0ibnVt
-YmVyIilyZXR1cm4gdC5ITigpCnJldHVybiB0LXJ9LApFOmZ1bmN0aW9uKGEsYil7dmFyIHQ9dGhpcyxz
-PXQuZ0FzKCkrYgppZihiPDB8fHM+PXQuZ1VEKCkpdGhyb3cgSC5iKFAuQ2YoYix0LCJpbmRleCIsbnVs
-bCxudWxsKSkKcmV0dXJuIEouR0EodC5hLHMpfX0KSC5hNy5wcm90b3R5cGU9ewpnbDpmdW5jdGlvbigp
-e3ZhciB0PXRoaXMuZApyZXR1cm4gdH0sCkY6ZnVuY3Rpb24oKXt2YXIgdCxzPXRoaXMscj1zLmEscT1K
-LlU2KHIpLHA9cS5nQShyKQppZihzLmIhPT1wKXRocm93IEguYihQLmE0KHIpKQp0PXMuYwppZih0Pj1w
-KXtzLnNJKG51bGwpCnJldHVybiExfXMuc0kocS5FKHIsdCkpOysrcy5jCnJldHVybiEwfSwKc0k6ZnVu
-Y3Rpb24oYSl7dGhpcy5kPXRoaXMuJHRpLkMoIjE/IikuYShhKX0sCiRpQW46MX0KSC5pMS5wcm90b3R5
-cGU9ewpna3o6ZnVuY3Rpb24oYSl7dmFyIHQ9SC5MaCh0aGlzKQpyZXR1cm4gbmV3IEguTUgoSi5JVCh0
-aGlzLmEpLHRoaXMuYix0LkMoIkA8MT4iKS5LcSh0LlFbMV0pLkMoIk1IPDEsMj4iKSl9LApnQTpmdW5j
-dGlvbihhKXtyZXR1cm4gSi5IbSh0aGlzLmEpfX0KSC54eS5wcm90b3R5cGU9eyRpYlE6MX0KSC5NSC5w
-cm90b3R5cGU9ewpGOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxzPXQuYgppZihzLkYoKSl7dC5zSSh0LmMu
-JDEocy5nbCgpKSkKcmV0dXJuITB9dC5zSShudWxsKQpyZXR1cm4hMX0sCmdsOmZ1bmN0aW9uKCl7dmFy
-IHQ9dGhpcy5hCnJldHVybiB0fSwKc0k6ZnVuY3Rpb24oYSl7dGhpcy5hPXRoaXMuJHRpLkMoIjI/Iiku
-YShhKX19CkgubEoucHJvdG90eXBlPXsKZ0E6ZnVuY3Rpb24oYSl7cmV0dXJuIEouSG0odGhpcy5hKX0s
-CkU6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5iLiQxKEouR0EodGhpcy5hLGIpKX19CkguVTUucHJv
-dG90eXBlPXsKZ2t6OmZ1bmN0aW9uKGEpe3JldHVybiBuZXcgSC5TTyhKLklUKHRoaXMuYSksdGhpcy5i
-LHRoaXMuJHRpLkMoIlNPPDE+IikpfX0KSC5TTy5wcm90b3R5cGU9ewpGOmZ1bmN0aW9uKCl7dmFyIHQs
-cwpmb3IodD10aGlzLmEscz10aGlzLmI7dC5GKCk7KWlmKEgub1Qocy4kMSh0LmdsKCkpKSlyZXR1cm4h
-MApyZXR1cm4hMX0sCmdsOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYS5nbCgpfX0KSC5TVS5wcm90b3R5
-cGU9e30KSC5SZS5wcm90b3R5cGU9ewpZOmZ1bmN0aW9uKGEsYixjKXtILkxoKHRoaXMpLkMoIlJlLkUi
-KS5hKGMpCnRocm93IEguYihQLkw0KCJDYW5ub3QgbW9kaWZ5IGFuIHVubW9kaWZpYWJsZSBsaXN0Iikp
-fX0KSC53Mi5wcm90b3R5cGU9e30KSC53di5wcm90b3R5cGU9ewpnaU86ZnVuY3Rpb24oYSl7dmFyIHQ9
-dGhpcy5faGFzaENvZGUKaWYodCE9bnVsbClyZXR1cm4gdAp0PTUzNjg3MDkxMSY2NjQ1OTcqSi5oZih0
-aGlzLmEpCnRoaXMuX2hhc2hDb2RlPXQKcmV0dXJuIHR9LAp3OmZ1bmN0aW9uKGEpe3JldHVybidTeW1i
-b2woIicrSC5Faih0aGlzLmEpKyciKSd9LApETjpmdW5jdGlvbihhLGIpe2lmKGI9PW51bGwpcmV0dXJu
-ITEKcmV0dXJuIGIgaW5zdGFuY2VvZiBILnd2JiZ0aGlzLmE9PWIuYX0sCiRpR0Q6MX0KSC5QRC5wcm90
-b3R5cGU9e30KSC5XVS5wcm90b3R5cGU9ewp3OmZ1bmN0aW9uKGEpe3JldHVybiBQLm5PKHRoaXMpfSwK
-WTpmdW5jdGlvbihhLGIsYyl7dmFyIHQ9SC5MaCh0aGlzKQp0LmMuYShiKQp0LlFbMV0uYShjKQpILmRj
-KCl9LApnUHU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucTQoYSxILkxoKHRoaXMpLkMoIk4zPDEsMj4i
-KSl9LApxNDpmdW5jdGlvbihhLGIpe3ZhciB0PXRoaXMKcmV0dXJuIFAubDAoZnVuY3Rpb24oKXt2YXIg
-cz1hCnZhciByPTAscT0xLHAsbyxuLG0sbApyZXR1cm4gZnVuY3Rpb24gJGFzeW5jJGdQdShjLGQpe2lm
-KGM9PT0xKXtwPWQKcj1xfXdoaWxlKHRydWUpc3dpdGNoKHIpe2Nhc2UgMDpvPXQuZ1YoKSxvPW8uZ2t6
-KG8pLG49SC5MaCh0KSxuPW4uQygiQDwxPiIpLktxKG4uUVsxXSkuQygiTjM8MSwyPiIpCmNhc2UgMjpp
-Zighby5GKCkpe3I9MwpicmVha31tPW8uZ2woKQpsPXQucSgwLG0pCmwudG9TdHJpbmcKcj00CnJldHVy
-biBuZXcgUC5OMyhtLGwsbikKY2FzZSA0OnI9MgpicmVhawpjYXNlIDM6cmV0dXJuIFAuVGgoKQpjYXNl
-IDE6cmV0dXJuIFAuWW0ocCl9fX0sYil9LAokaVowOjF9CkguTFAucHJvdG90eXBlPXsKZ0E6ZnVuY3Rp
-b24oYSl7cmV0dXJuIHRoaXMuYX0sCng0OmZ1bmN0aW9uKGEpe2lmKHR5cGVvZiBhIT0ic3RyaW5nIily
-ZXR1cm4hMQppZigiX19wcm90b19fIj09PWEpcmV0dXJuITEKcmV0dXJuIHRoaXMuYi5oYXNPd25Qcm9w
-ZXJ0eShhKX0sCnE6ZnVuY3Rpb24oYSxiKXtpZighdGhpcy54NChiKSlyZXR1cm4gbnVsbApyZXR1cm4g
-dGhpcy5EKGIpfSwKRDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5iW0guaChhKV19LApLOmZ1bmN0aW9u
-KGEsYil7dmFyIHQscyxyLHEscD1ILkxoKHRoaXMpCnAuQygifigxLDIpIikuYShiKQp0PXRoaXMuYwpm
-b3Iocz10Lmxlbmd0aCxwPXAuUVsxXSxyPTA7cjxzOysrcil7cT10W3JdCmIuJDIocSxwLmEodGhpcy5E
-KHEpKSl9fSwKZ1Y6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEguWFIodGhpcyxILkxoKHRoaXMpLkMoIlhS
-PDE+IikpfX0KSC5YUi5wcm90b3R5cGU9ewpna3o6ZnVuY3Rpb24oYSl7dmFyIHQ9dGhpcy5hLmMKcmV0
-dXJuIG5ldyBKLm0xKHQsdC5sZW5ndGgsSC50Nih0KS5DKCJtMTwxPiIpKX0sCmdBOmZ1bmN0aW9uKGEp
-e3JldHVybiB0aGlzLmEuYy5sZW5ndGh9fQpILkxJLnByb3RvdHlwZT17CmdXYTpmdW5jdGlvbigpe3Zh
-ciB0PXRoaXMuYQpyZXR1cm4gdH0sCmduZDpmdW5jdGlvbigpe3ZhciB0LHMscixxLHA9dGhpcwppZihw
-LmM9PT0xKXJldHVybiBDLmRuCnQ9cC5kCnM9dC5sZW5ndGgtcC5lLmxlbmd0aC1wLmYKaWYocz09PTAp
-cmV0dXJuIEMuZG4Kcj1bXQpmb3IocT0wO3E8czsrK3Epe2lmKHE+PXQubGVuZ3RoKXJldHVybiBILk9I
-KHQscSkKci5wdXNoKHRbcV0pfXJldHVybiBKLnpDKHIpfSwKZ1ZtOmZ1bmN0aW9uKCl7dmFyIHQscyxy
-LHEscCxvLG4sbSxsPXRoaXMKaWYobC5jIT09MClyZXR1cm4gQy5EeAp0PWwuZQpzPXQubGVuZ3RoCnI9
-bC5kCnE9ci5sZW5ndGgtcy1sLmYKaWYocz09PTApcmV0dXJuIEMuRHgKcD1uZXcgSC5ONSh1LmVvKQpm
-b3Iobz0wO288czsrK28pe2lmKG8+PXQubGVuZ3RoKXJldHVybiBILk9IKHQsbykKbj10W29dCm09cStv
-CmlmKG08MHx8bT49ci5sZW5ndGgpcmV0dXJuIEguT0gocixtKQpwLlkoMCxuZXcgSC53dihuKSxyW21d
-KX1yZXR1cm4gbmV3IEguUEQocCx1LmdGKX0sCiRpdlE6MX0KSC5Dai5wcm90b3R5cGU9ewokMjpmdW5j
-dGlvbihhLGIpe3ZhciB0CkguaChhKQp0PXRoaXMuYQp0LmI9dC5iKyIkIitILkVqKGEpCkMuTm0uaSh0
-aGlzLmIsYSkKQy5ObS5pKHRoaXMuYyxiKTsrK3QuYX0sCiRTOjEyfQpILmY5LnByb3RvdHlwZT17CnFT
-OmZ1bmN0aW9uKGEpe3ZhciB0LHMscj10aGlzLHE9bmV3IFJlZ0V4cChyLmEpLmV4ZWMoYSkKaWYocT09
-bnVsbClyZXR1cm4gbnVsbAp0PU9iamVjdC5jcmVhdGUobnVsbCkKcz1yLmIKaWYocyE9PS0xKXQuYXJn
-dW1lbnRzPXFbcysxXQpzPXIuYwppZihzIT09LTEpdC5hcmd1bWVudHNFeHByPXFbcysxXQpzPXIuZApp
-ZihzIT09LTEpdC5leHByPXFbcysxXQpzPXIuZQppZihzIT09LTEpdC5tZXRob2Q9cVtzKzFdCnM9ci5m
-CmlmKHMhPT0tMSl0LnJlY2VpdmVyPXFbcysxXQpyZXR1cm4gdH19CkguVzAucHJvdG90eXBlPXsKdzpm
-dW5jdGlvbihhKXt2YXIgdD10aGlzLmIKaWYodD09bnVsbClyZXR1cm4iTm9TdWNoTWV0aG9kRXJyb3I6
-ICIrSC5Faih0aGlzLmEpCnJldHVybiJOb1N1Y2hNZXRob2RFcnJvcjogbWV0aG9kIG5vdCBmb3VuZDog
-JyIrdCsiJyBvbiBudWxsIn19CkguYXoucHJvdG90eXBlPXsKdzpmdW5jdGlvbihhKXt2YXIgdCxzPXRo
-aXMscj0iTm9TdWNoTWV0aG9kRXJyb3I6IG1ldGhvZCBub3QgZm91bmQ6ICciLHE9cy5iCmlmKHE9PW51
-bGwpcmV0dXJuIk5vU3VjaE1ldGhvZEVycm9yOiAiK0guRWoocy5hKQp0PXMuYwppZih0PT1udWxsKXJl
-dHVybiByK3ErIicgKCIrSC5FaihzLmEpKyIpIgpyZXR1cm4gcitxKyInIG9uICciK3QrIicgKCIrSC5F
-aihzLmEpKyIpIn19CkgudlYucHJvdG90eXBlPXsKdzpmdW5jdGlvbihhKXt2YXIgdD10aGlzLmEKcmV0
-dXJuIHQubGVuZ3RoPT09MD8iRXJyb3IiOiJFcnJvcjogIit0fX0KSC5icS5wcm90b3R5cGU9e30KSC5B
-bS5wcm90b3R5cGU9ewokMTpmdW5jdGlvbihhKXtpZih1LlcuYihhKSlpZihhLiR0aHJvd25Kc0Vycm9y
-PT1udWxsKWEuJHRocm93bkpzRXJyb3I9dGhpcy5hCnJldHVybiBhfSwKJFM6NX0KSC5YTy5wcm90b3R5
-cGU9ewp3OmZ1bmN0aW9uKGEpe3ZhciB0LHM9dGhpcy5iCmlmKHMhPW51bGwpcmV0dXJuIHMKcz10aGlz
-LmEKdD1zIT09bnVsbCYmdHlwZW9mIHM9PT0ib2JqZWN0Ij9zLnN0YWNrOm51bGwKcmV0dXJuIHRoaXMu
-Yj10PT1udWxsPyIiOnR9LAokaUd6OjF9Ckgudi5wcm90b3R5cGU9ewp3OmZ1bmN0aW9uKGEpe3ZhciB0
-PXRoaXMuY29uc3RydWN0b3Iscz10PT1udWxsP251bGw6dC5uYW1lCnJldHVybiJDbG9zdXJlICciK0gu
-TlEocz09bnVsbD8idW5rbm93biI6cykrIicifSwKJGlFSDoxLApnUWw6ZnVuY3Rpb24oKXtyZXR1cm4g
-dGhpc30sCiRDOiIkMSIsCiRSOjEsCiREOm51bGx9CkgubGMucHJvdG90eXBlPXt9CkguengucHJvdG90
-eXBlPXsKdzpmdW5jdGlvbihhKXt2YXIgdD10aGlzLiRzdGF0aWNfbmFtZQppZih0PT1udWxsKXJldHVy
-biJDbG9zdXJlIG9mIHVua25vd24gc3RhdGljIG1ldGhvZCIKcmV0dXJuIkNsb3N1cmUgJyIrSC5OUSh0
-KSsiJyJ9fQpILnJULnByb3RvdHlwZT17CkROOmZ1bmN0aW9uKGEsYil7dmFyIHQ9dGhpcwppZihiPT1u
-dWxsKXJldHVybiExCmlmKHQ9PT1iKXJldHVybiEwCmlmKCEoYiBpbnN0YW5jZW9mIEguclQpKXJldHVy
-biExCnJldHVybiB0LmE9PT1iLmEmJnQuYj09PWIuYiYmdC5jPT09Yi5jfSwKZ2lPOmZ1bmN0aW9uKGEp
-e3ZhciB0LHM9dGhpcy5jCmlmKHM9PW51bGwpdD1ILmVRKHRoaXMuYSkKZWxzZSB0PXR5cGVvZiBzIT09
-Im9iamVjdCI/Si5oZihzKTpILmVRKHMpCnJldHVybih0XkguZVEodGhpcy5iKSk+Pj4wfSwKdzpmdW5j
-dGlvbihhKXt2YXIgdD10aGlzLmMKaWYodD09bnVsbCl0PXRoaXMuYQpyZXR1cm4iQ2xvc3VyZSAnIitI
-LkVqKHRoaXMuZCkrIicgb2YgIisoIkluc3RhbmNlIG9mICciK0guRWooSC5NKHQpKSsiJyIpfX0KSC5F
-cS5wcm90b3R5cGU9ewp3OmZ1bmN0aW9uKGEpe3JldHVybiJSdW50aW1lRXJyb3I6ICIrSC5Faih0aGlz
-LmEpfX0KSC5rWS5wcm90b3R5cGU9ewp3OmZ1bmN0aW9uKGEpe3JldHVybiJBc3NlcnRpb24gZmFpbGVk
-OiAiK1AucCh0aGlzLmEpfX0KSC5ONS5wcm90b3R5cGU9ewpnQTpmdW5jdGlvbihhKXtyZXR1cm4gdGhp
-cy5hfSwKZ1Y6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEguaTUodGhpcyxILkxoKHRoaXMpLkMoImk1PDE+
-IikpfSwKeDQ6ZnVuY3Rpb24oYSl7dmFyIHQscwppZih0eXBlb2YgYT09InN0cmluZyIpe3Q9dGhpcy5i
-CmlmKHQ9PW51bGwpcmV0dXJuITEKcmV0dXJuIHRoaXMuWHUodCxhKX1lbHNle3M9dGhpcy5DWChhKQpy
-ZXR1cm4gc319LApDWDpmdW5jdGlvbihhKXt2YXIgdD10aGlzLmQKaWYodD09bnVsbClyZXR1cm4hMQpy
-ZXR1cm4gdGhpcy5GaCh0aGlzLkJ0KHQsSi5oZihhKSYweDNmZmZmZmYpLGEpPj0wfSwKcTpmdW5jdGlv
-bihhLGIpe3ZhciB0LHMscixxLHA9dGhpcyxvPW51bGwKaWYodHlwZW9mIGI9PSJzdHJpbmciKXt0PXAu
-YgppZih0PT1udWxsKXJldHVybiBvCnM9cC5qMih0LGIpCnI9cz09bnVsbD9vOnMuYgpyZXR1cm4gcn1l
-bHNlIGlmKHR5cGVvZiBiPT0ibnVtYmVyIiYmKGImMHgzZmZmZmZmKT09PWIpe3E9cC5jCmlmKHE9PW51
-bGwpcmV0dXJuIG8Kcz1wLmoyKHEsYikKcj1zPT1udWxsP286cy5iCnJldHVybiByfWVsc2UgcmV0dXJu
-IHAuYWEoYil9LAphYTpmdW5jdGlvbihhKXt2YXIgdCxzLHI9dGhpcy5kCmlmKHI9PW51bGwpcmV0dXJu
-IG51bGwKdD10aGlzLkJ0KHIsSi5oZihhKSYweDNmZmZmZmYpCnM9dGhpcy5GaCh0LGEpCmlmKHM8MCly
-ZXR1cm4gbnVsbApyZXR1cm4gdFtzXS5ifSwKWTpmdW5jdGlvbihhLGIsYyl7dmFyIHQscyxyLHEscCxv
-LG49dGhpcyxtPUguTGgobikKbS5jLmEoYikKbS5RWzFdLmEoYykKaWYodHlwZW9mIGI9PSJzdHJpbmci
-KXt0PW4uYgpuLkVIKHQ9PW51bGw/bi5iPW4ueksoKTp0LGIsYyl9ZWxzZSBpZih0eXBlb2YgYj09Im51
-bWJlciImJihiJjB4M2ZmZmZmZik9PT1iKXtzPW4uYwpuLkVIKHM9PW51bGw/bi5jPW4ueksoKTpzLGIs
-Yyl9ZWxzZXtyPW4uZAppZihyPT1udWxsKXI9bi5kPW4ueksoKQpxPUouaGYoYikmMHgzZmZmZmZmCnA9
-bi5CdChyLHEpCmlmKHA9PW51bGwpbi5FSShyLHEsW24uSG4oYixjKV0pCmVsc2V7bz1uLkZoKHAsYikK
-aWYobz49MClwW29dLmI9YwplbHNlIHAucHVzaChuLkhuKGIsYykpfX19LApLOmZ1bmN0aW9uKGEsYil7
-dmFyIHQscyxyPXRoaXMKSC5MaChyKS5DKCJ+KDEsMikiKS5hKGIpCnQ9ci5lCnM9ci5yCmZvcig7dCE9
-bnVsbDspe2IuJDIodC5hLHQuYikKaWYocyE9PXIucil0aHJvdyBILmIoUC5hNChyKSkKdD10LmN9fSwK
-RUg6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0LHM9dGhpcyxyPUguTGgocykKci5jLmEoYikKci5RWzFdLmEo
-YykKdD1zLmoyKGEsYikKaWYodD09bnVsbClzLkVJKGEsYixzLkhuKGIsYykpCmVsc2UgdC5iPWN9LApr
-czpmdW5jdGlvbigpe3RoaXMucj10aGlzLnIrMSY2NzEwODg2M30sCkhuOmZ1bmN0aW9uKGEsYil7dmFy
-IHQ9dGhpcyxzPUguTGgodCkscj1uZXcgSC5kYihzLmMuYShhKSxzLlFbMV0uYShiKSkKaWYodC5lPT1u
-dWxsKXQuZT10LmY9cgplbHNle3M9dC5mCnMudG9TdHJpbmcKci5kPXMKdC5mPXMuYz1yfSsrdC5hCnQu
-a3MoKQpyZXR1cm4gcn0sCkZoOmZ1bmN0aW9uKGEsYil7dmFyIHQscwppZihhPT1udWxsKXJldHVybi0x
+e2lmKGE+PTEwKXJldHVybiIiK2EKcmV0dXJuIjAiK2F9LApoOmZ1bmN0aW9uKGEpe2lmKHR5cGVvZiBh
+PT0ibnVtYmVyInx8SC5yUShhKXx8bnVsbD09YSlyZXR1cm4gSi5BYyhhKQppZih0eXBlb2YgYT09InN0
+cmluZyIpcmV0dXJuIEpTT04uc3RyaW5naWZ5KGEpCnJldHVybiBQLm9zKGEpfSwKaFY6ZnVuY3Rpb24o
+YSl7cmV0dXJuIG5ldyBQLkM2KGEpfSwKeFk6ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBQLkFUKCExLG51
+bGwsbnVsbCxhKX0sCkwzOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gbmV3IFAuQVQoITAsYSxiLGMpfSwK
+RWU6ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBQLkFUKCExLG51bGwsYSwiTXVzdCBub3QgYmUgbnVsbCIp
+fSwKVUk6ZnVuY3Rpb24oYSxiLGMpe2lmKGE9PW51bGwpdGhyb3cgSC5iKFAuRWUoYikpCnJldHVybiBh
+fSwKTzc6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IFAuYkoobnVsbCxudWxsLCEwLGEsYiwiVmFsdWUg
+bm90IGluIHJhbmdlIil9LApURTpmdW5jdGlvbihhLGIsYyxkLGUpe3JldHVybiBuZXcgUC5iSihiLGMs
+ITAsYSxkLCJJbnZhbGlkIHZhbHVlIil9LAp3QTpmdW5jdGlvbihhLGIsYyxkKXtpZihhPGJ8fGE+Yyl0
+aHJvdyBILmIoUC5URShhLGIsYyxkLG51bGwpKQpyZXR1cm4gYX0sCmpCOmZ1bmN0aW9uKGEsYixjKXtp
+ZigwPmF8fGE+Yyl0aHJvdyBILmIoUC5URShhLDAsYywic3RhcnQiLG51bGwpKQppZihiIT1udWxsKXtp
+ZihhPmJ8fGI+Yyl0aHJvdyBILmIoUC5URShiLGEsYywiZW5kIixudWxsKSkKcmV0dXJuIGJ9cmV0dXJu
+IGN9LAprMTpmdW5jdGlvbihhLGIpe2lmKHR5cGVvZiBhIT09Im51bWJlciIpcmV0dXJuIGEuSigpCmlm
+KGE8MCl0aHJvdyBILmIoUC5URShhLDAsbnVsbCxiLG51bGwpKQpyZXR1cm4gYX0sCnQ6ZnVuY3Rpb24o
+YSxiLGMsZCxlKXt2YXIgdD1ILldZKGU9PW51bGw/Si5IKGIpOmUpCnJldHVybiBuZXcgUC5lWSh0LCEw
+LGEsYywiSW5kZXggb3V0IG9mIHJhbmdlIil9LApMNDpmdW5jdGlvbihhKXtyZXR1cm4gbmV3IFAudWIo
+YSl9LApuOmZ1bmN0aW9uKGEpe3JldHVybiBuZXcgUC5kcyhhKX0sClBWOmZ1bmN0aW9uKGEpe3JldHVy
+biBuZXcgUC5saihhKX0sCmE0OmZ1bmN0aW9uKGEpe3JldHVybiBuZXcgUC5VVihhKX0sCnJyOmZ1bmN0
+aW9uKGEsYixjKXtyZXR1cm4gbmV3IFAuYUUoYSxiLGMpfSwKZEg6ZnVuY3Rpb24oYSxiLGMsZCl7dmFy
+IHQscz1ILlZNKFtdLGQuQygiamQ8MD4iKSkKQy5ObS5zQShzLGEpCmZvcih0PTA7dDxhOysrdClDLk5t
+Llkocyx0LGIuJDEodCkpCnJldHVybiBzfSwKaEs6ZnVuY3Rpb24oYSl7dmFyIHQscyxyLHEscCxvLG4s
+bSxsLGssaixpLGgsZyxmLGU9bnVsbCxkPWEubGVuZ3RoCmlmKGQ+PTUpe3Q9KChKLlF6KGEsNCleNTgp
+KjN8Qy54Qi5XKGEsMCleMTAwfEMueEIuVyhhLDEpXjk3fEMueEIuVyhhLDIpXjExNnxDLnhCLlcoYSwz
+KV45Nyk+Pj4wCmlmKHQ9PT0wKXJldHVybiBQLktEKGQ8ZD9DLnhCLk5qKGEsMCxkKTphLDUsZSkuZ2xS
+KCkKZWxzZSBpZih0PT09MzIpcmV0dXJuIFAuS0QoQy54Qi5OaihhLDUsZCksMCxlKS5nbFIoKX1zPW5l
+dyBBcnJheSg4KQpzLmZpeGVkJGxlbmd0aD1BcnJheQpyPUguVk0ocyx1LnQpCkMuTm0uWShyLDAsMCkK
+Qy5ObS5ZKHIsMSwtMSkKQy5ObS5ZKHIsMiwtMSkKQy5ObS5ZKHIsNywtMSkKQy5ObS5ZKHIsMywwKQpD
+Lk5tLlkociw0LDApCkMuTm0uWShyLDUsZCkKQy5ObS5ZKHIsNixkKQppZihQLlVCKGEsMCxkLDAscik+
+PTE0KUMuTm0uWShyLDcsZCkKcT1yWzFdCmlmKHR5cGVvZiBxIT09Im51bWJlciIpcmV0dXJuIHEudEIo
+KQppZihxPj0wKWlmKFAuVUIoYSwwLHEsMjAscik9PT0yMClyWzddPXEKcz1yWzJdCmlmKHR5cGVvZiBz
+IT09Im51bWJlciIpcmV0dXJuIHMuaCgpCnA9cysxCm89clszXQpuPXJbNF0KbT1yWzVdCmw9cls2XQpp
+Zih0eXBlb2YgbCE9PSJudW1iZXIiKXJldHVybiBsLkooKQppZih0eXBlb2YgbSE9PSJudW1iZXIiKXJl
+dHVybiBILnBZKG0pCmlmKGw8bSltPWwKaWYodHlwZW9mIG4hPT0ibnVtYmVyIilyZXR1cm4gbi5KKCkK
+aWYobjxwKW49bQplbHNlIGlmKG48PXEpbj1xKzEKaWYodHlwZW9mIG8hPT0ibnVtYmVyIilyZXR1cm4g
+by5KKCkKaWYobzxwKW89bgpzPXJbN10KaWYodHlwZW9mIHMhPT0ibnVtYmVyIilyZXR1cm4gcy5KKCkK
+az1zPDAKaWYoaylpZihwPnErMyl7aj1lCms9ITF9ZWxzZXtzPW8+MAppZihzJiZvKzE9PT1uKXtqPWUK
+az0hMX1lbHNle2lmKCEobTxkJiZtPT09bisyJiZKLnEwKGEsIi4uIixuKSkpaT1tPm4rMiYmSi5xMChh
+LCIvLi4iLG0tMykKZWxzZSBpPSEwCmlmKGkpe2o9ZQprPSExfWVsc2V7aWYocT09PTQpaWYoSi5xMChh
+LCJmaWxlIiwwKSl7aWYocDw9MCl7aWYoIUMueEIuUWkoYSwiLyIsbikpe2g9ImZpbGU6Ly8vIgp0PTN9
+ZWxzZXtoPSJmaWxlOi8vIgp0PTJ9YT1oK0MueEIuTmooYSxuLGQpCnEtPTAKcz10LTAKbSs9cwpsKz1z
+CmQ9YS5sZW5ndGgKcD03Cm89NwpuPTd9ZWxzZSBpZihuPT09bSl7Zz1tKzE7KytsCmE9Qy54Qi5pNyhh
+LG4sbSwiLyIpOysrZAptPWd9aj0iZmlsZSJ9ZWxzZSBpZihDLnhCLlFpKGEsImh0dHAiLDApKXtpZihz
+JiZvKzM9PT1uJiZDLnhCLlFpKGEsIjgwIixvKzEpKXtmPW4tMwptLT0zCmwtPTMKYT1DLnhCLmk3KGEs
+byxuLCIiKQpkLT0zCm49Zn1qPSJodHRwIn1lbHNlIGo9ZQplbHNlIGlmKHE9PT01JiZKLnEwKGEsImh0
+dHBzIiwwKSl7aWYocyYmbys0PT09biYmSi5xMChhLCI0NDMiLG8rMSkpe2Y9bi00Cm0tPTQKbC09NAph
+PUouZGcoYSxvLG4sIiIpCmQtPTMKbj1mfWo9Imh0dHBzIn1lbHNlIGo9ZQprPSEwfX19ZWxzZSBqPWUK
+aWYoayl7cz1hLmxlbmd0aAppZihkPHMpe2E9Si5sZChhLDAsZCkKcS09MApwLT0wCm8tPTAKbi09MApt
+LT0wCmwtPTB9cmV0dXJuIG5ldyBQLlVmKGEscSxwLG8sbixtLGwsail9cmV0dXJuIFAuanYoYSwwLGQs
+cSxwLG8sbixtLGwsail9LApNdDpmdW5jdGlvbihhKXtILmMoYSkKcmV0dXJuIFAua3UoYSwwLGEubGVu
+Z3RoLEMueE0sITEpfSwKV1g6ZnVuY3Rpb24oYSl7dmFyIHQ9dS5OCnJldHVybiBDLk5tLk4wKEguVk0o
+YS5zcGxpdCgiJiIpLHUucyksUC5GbCh0LHQpLG5ldyBQLm4xKEMueE0pLHUuZil9LApIaDpmdW5jdGlv
+bihhLGIsYyl7dmFyIHQscyxyLHEscCxvLG4sbT1udWxsLGw9IklQdjQgYWRkcmVzcyBzaG91bGQgY29u
+dGFpbiBleGFjdGx5IDQgcGFydHMiLGs9ImVhY2ggcGFydCBtdXN0IGJlIGluIHRoZSByYW5nZSAwLi4y
+NTUiLGo9bmV3IFAuY1MoYSksaT1uZXcgVWludDhBcnJheSg0KQpmb3IodD1pLmxlbmd0aCxzPWIscj1z
+LHE9MDtzPGM7KytzKXtwPUMueEIubShhLHMpCmlmKHAhPT00Nil7aWYoKHBeNDgpPjkpai4kMigiaW52
+YWxpZCBjaGFyYWN0ZXIiLHMpfWVsc2V7aWYocT09PTMpai4kMihsLHMpCm89UC5RQShDLnhCLk5qKGEs
+cixzKSxtLG0pCmlmKHR5cGVvZiBvIT09Im51bWJlciIpcmV0dXJuIG8ub3MoKQppZihvPjI1NSlqLiQy
+KGsscikKbj1xKzEKaWYocT49dClyZXR1cm4gSC5rKGkscSkKaVtxXT1vCnI9cysxCnE9bn19aWYocSE9
+PTMpai4kMihsLGMpCm89UC5RQShDLnhCLk5qKGEscixjKSxtLG0pCmlmKHR5cGVvZiBvIT09Im51bWJl
+ciIpcmV0dXJuIG8ub3MoKQppZihvPjI1NSlqLiQyKGsscikKaWYocT49dClyZXR1cm4gSC5rKGkscSkK
+aVtxXT1vCnJldHVybiBpfSwKZWc6ZnVuY3Rpb24oYSxiLGEwKXt2YXIgdCxzLHIscSxwLG8sbixtLGws
+ayxqLGksaCxnLGYsZSxkPW5ldyBQLlZDKGEpLGM9bmV3IFAuSlQoZCxhKQppZihhLmxlbmd0aDwyKWQu
+JDEoImFkZHJlc3MgaXMgdG9vIHNob3J0IikKdD1ILlZNKFtdLHUudCkKZm9yKHM9YixyPXMscT0hMSxw
+PSExO3M8YTA7KytzKXtvPUMueEIubShhLHMpCmlmKG89PT01OCl7aWYocz09PWIpeysrcwppZihDLnhC
+Lm0oYSxzKSE9PTU4KWQuJDIoImludmFsaWQgc3RhcnQgY29sb24uIixzKQpyPXN9aWYocz09PXIpe2lm
+KHEpZC4kMigib25seSBvbmUgd2lsZGNhcmQgYDo6YCBpcyBhbGxvd2VkIixzKQpDLk5tLmkodCwtMSkK
+cT0hMH1lbHNlIEMuTm0uaSh0LGMuJDIocixzKSkKcj1zKzF9ZWxzZSBpZihvPT09NDYpcD0hMH1pZih0
+Lmxlbmd0aD09PTApZC4kMSgidG9vIGZldyBwYXJ0cyIpCm49cj09PWEwCm09Qy5ObS5ncloodCkKaWYo
+biYmbSE9PS0xKWQuJDIoImV4cGVjdGVkIGEgcGFydCBhZnRlciBsYXN0IGA6YCIsYTApCmlmKCFuKWlm
+KCFwKUMuTm0uaSh0LGMuJDIocixhMCkpCmVsc2V7bD1QLkhoKGEscixhMCkKQy5ObS5pKHQsKGxbMF08
+PDh8bFsxXSk+Pj4wKQpDLk5tLmkodCwobFsyXTw8OHxsWzNdKT4+PjApfWlmKHEpe2lmKHQubGVuZ3Ro
+PjcpZC4kMSgiYW4gYWRkcmVzcyB3aXRoIGEgd2lsZGNhcmQgbXVzdCBoYXZlIGxlc3MgdGhhbiA3IHBh
+cnRzIil9ZWxzZSBpZih0Lmxlbmd0aCE9PTgpZC4kMSgiYW4gYWRkcmVzcyB3aXRob3V0IGEgd2lsZGNh
+cmQgbXVzdCBjb250YWluIGV4YWN0bHkgOCBwYXJ0cyIpCms9bmV3IFVpbnQ4QXJyYXkoMTYpCmZvciht
+PXQubGVuZ3RoLGo9ay5sZW5ndGgsaT05LW0scz0wLGg9MDtzPG07KytzKXtnPXRbc10KaWYoZz09PS0x
+KWZvcihmPTA7ZjxpOysrZil7aWYoaDwwfHxoPj1qKXJldHVybiBILmsoayxoKQprW2hdPTAKZT1oKzEK
+aWYoZT49ailyZXR1cm4gSC5rKGssZSkKa1tlXT0wCmgrPTJ9ZWxzZXtlPUMuam4ud0coZyw4KQppZiho
+PDB8fGg+PWopcmV0dXJuIEguayhrLGgpCmtbaF09ZQplPWgrMQppZihlPj1qKXJldHVybiBILmsoayxl
+KQprW2VdPWcmMjU1CmgrPTJ9fXJldHVybiBrfSwKanY6ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxoLGks
+ail7dmFyIHQscyxyLHEscCxvLG4sbT1udWxsCmlmKGo9PW51bGwpaWYoZD5iKWo9UC5QaShhLGIsZCkK
+ZWxzZXtpZihkPT09YilQLlIzKGEsYiwiSW52YWxpZCBlbXB0eSBzY2hlbWUiKQpqPSIifWlmKGU+Yil7
+dD1kKzMKcz10PGU/UC56UihhLHQsZS0xKToiIgpyPVAuT2UoYSxlLGYsITEpCmlmKHR5cGVvZiBmIT09
+Im51bWJlciIpcmV0dXJuIGYuaCgpCnE9ZisxCmlmKHR5cGVvZiBnIT09Im51bWJlciIpcmV0dXJuIEgu
+cFkoZykKcD1xPGc/UC53QihQLlFBKEoubGQoYSxxLGcpLG5ldyBQLmUxKGEsZiksbSksaik6bX1lbHNl
+e3A9bQpyPXAKcz0iIn1vPVAua2EoYSxnLGgsbSxqLHIhPW51bGwpCmlmKHR5cGVvZiBoIT09Im51bWJl
+ciIpcmV0dXJuIGguSigpCm49aDxpP1AubGUoYSxoKzEsaSxtKTptCnJldHVybiBuZXcgUC5EbihqLHMs
+cixwLG8sbixpPGM/UC50RyhhLGkrMSxjKTptKX0sCktMOmZ1bmN0aW9uKGEsYixjLGQsZSxmLGcpe3Zh
+ciB0LHMscixxLHAsbwpmPVAuUGkoZiwwLGY9PW51bGw/MDpmLmxlbmd0aCkKZz1QLnpSKGcsMCxnPT1u
+dWxsPzA6Zy5sZW5ndGgpCmE9UC5PZShhLDAsYT09bnVsbD8wOmEubGVuZ3RoLCExKQp0PVAubGUobnVs
+bCwwLDAsZSkKcz1QLnRHKG51bGwsMCwwKQpkPVAud0IoZCxmKQpyPWY9PT0iZmlsZSIKaWYoYT09bnVs
+bClxPWcubGVuZ3RoIT09MHx8ZCE9bnVsbHx8cgplbHNlIHE9ITEKaWYocSlhPSIiCnE9YT09bnVsbApw
+PSFxCmI9UC5rYShiLDAsYj09bnVsbD8wOmIubGVuZ3RoLGMsZixwKQpvPWYubGVuZ3RoPT09MAppZihv
+JiZxJiYhQy54Qi5uKGIsIi8iKSliPVAud0YoYiwhb3x8cCkKZWxzZSBiPVAueGUoYikKcmV0dXJuIG5l
+dyBQLkRuKGYsZyxxJiZDLnhCLm4oYiwiLy8iKT8iIjphLGQsYix0LHMpfSwKd0s6ZnVuY3Rpb24oYSl7
+aWYoYT09PSJodHRwIilyZXR1cm4gODAKaWYoYT09PSJodHRwcyIpcmV0dXJuIDQ0MwpyZXR1cm4gMH0s
+ClIzOmZ1bmN0aW9uKGEsYixjKXt0aHJvdyBILmIoUC5ycihjLGEsYikpfSwKWGQ6ZnVuY3Rpb24oYSxi
+LGMsZCl7dmFyIHQscyxyLHEscCxvLG4sbSxsLGssaixpPW51bGwsaD1iLmxlbmd0aAppZihoIT09MCl7
+cj0wCndoaWxlKCEwKXtpZighKHI8aCkpe3Q9IiIKcz0wCmJyZWFrfWlmKEMueEIuVyhiLHIpPT09NjQp
+e3Q9Qy54Qi5OaihiLDAscikKcz1yKzEKYnJlYWt9KytyfWlmKHM8aCYmQy54Qi5XKGIscyk9PT05MSl7
+Zm9yKHE9cyxwPS0xO3E8aDsrK3Epe289Qy54Qi5XKGIscSkKaWYobz09PTM3JiZwPDApe249Qy54Qi5R
+aShiLCIyNSIscSsxKT9xKzI6cQpwPXEKcT1ufWVsc2UgaWYobz09PTkzKWJyZWFrfWlmKHE9PT1oKXRo
+cm93IEguYihQLnJyKCJJbnZhbGlkIElQdjYgaG9zdCBlbnRyeS4iLGIscykpCm09cDwwP3E6cApQLmVn
+KGIscysxLG0pOysrcQppZihxIT09aCYmQy54Qi5XKGIscSkhPT01OCl0aHJvdyBILmIoUC5ycigiSW52
+YWxpZCBlbmQgb2YgYXV0aG9yaXR5IixiLHEpKX1lbHNlIHE9cwp3aGlsZSghMCl7aWYoIShxPGgpKXts
+PWkKYnJlYWt9aWYoQy54Qi5XKGIscSk9PT01OCl7az1DLnhCLkcoYixxKzEpCmw9ay5sZW5ndGghPT0w
+P1AuUUEoayxpLGkpOmkKYnJlYWt9KytxfWo9Qy54Qi5OaihiLHMscSl9ZWxzZXtsPWkKaj1sCnQ9IiJ9
+cmV0dXJuIFAuS0woaixpLEguVk0oYy5zcGxpdCgiLyIpLHUucyksbCxkLGEsdCl9LAprRTpmdW5jdGlv
+bihhLGIpe0MuTm0uSyhhLG5ldyBQLk5ZKCExKSl9LApITjpmdW5jdGlvbihhLGIsYyl7dmFyIHQscyxy
+CmZvcih0PUgucUMoYSxjLG51bGwsSC50NihhKS5jKSx0PW5ldyBILmE3KHQsdC5nQSh0KSx0LiR0aS5D
+KCJhNzxhTC5FPiIpKTt0LkYoKTspe3M9dC5kCnI9UC5udSgnWyIqLzo8Pj9cXFxcfF0nKQpzLnRvU3Ry
+aW5nCmlmKEgubTIocyxyLDApKXt0PVAuTDQoIklsbGVnYWwgY2hhcmFjdGVyIGluIHBhdGg6ICIrcykK
+dGhyb3cgSC5iKHQpfX19LApyZzpmdW5jdGlvbihhLGIpe3ZhciB0CmlmKCEoNjU8PWEmJmE8PTkwKSl0
+PTk3PD1hJiZhPD0xMjIKZWxzZSB0PSEwCmlmKHQpcmV0dXJuCnQ9UC5MNCgiSWxsZWdhbCBkcml2ZSBs
+ZXR0ZXIgIitQLk9vKGEpKQp0aHJvdyBILmIodCl9LAp3QjpmdW5jdGlvbihhLGIpe2lmKGEhPW51bGwm
+JmE9PT1QLndLKGIpKXJldHVybiBudWxsCnJldHVybiBhfSwKT2U6ZnVuY3Rpb24oYSxiLGMsZCl7dmFy
+IHQscyxyLHEscCxvCmlmKGE9PW51bGwpcmV0dXJuIG51bGwKaWYoYj09PWMpcmV0dXJuIiIKaWYoQy54
+Qi5tKGEsYik9PT05MSl7aWYodHlwZW9mIGMhPT0ibnVtYmVyIilyZXR1cm4gYy5ITigpCnQ9Yy0xCmlm
+KEMueEIubShhLHQpIT09OTMpUC5SMyhhLGIsIk1pc3NpbmcgZW5kIGBdYCB0byBtYXRjaCBgW2AgaW4g
+aG9zdCIpCnM9YisxCnI9UC50byhhLHMsdCkKaWYodHlwZW9mIHIhPT0ibnVtYmVyIilyZXR1cm4gci5K
+KCkKaWYocjx0KXtxPXIrMQpwPVAuT0EoYSxDLnhCLlFpKGEsIjI1IixxKT9yKzM6cSx0LCIlMjUiKX1l
+bHNlIHA9IiIKUC5lZyhhLHMscikKcmV0dXJuIEMueEIuTmooYSxiLHIpLnRvTG93ZXJDYXNlKCkrcCsi
+XSJ9aWYodHlwZW9mIGMhPT0ibnVtYmVyIilyZXR1cm4gSC5wWShjKQpvPWIKZm9yKDtvPGM7KytvKWlm
+KEMueEIubShhLG8pPT09NTgpe3I9Qy54Qi5YVShhLCIlIixiKQppZighKHI+PWImJnI8Yykpcj1jCmlm
+KHI8Yyl7cT1yKzEKcD1QLk9BKGEsQy54Qi5RaShhLCIyNSIscSk/ciszOnEsYywiJTI1Iil9ZWxzZSBw
+PSIiClAuZWcoYSxiLHIpCnJldHVybiJbIitDLnhCLk5qKGEsYixyKStwKyJdIn1yZXR1cm4gUC5PTChh
+LGIsYyl9LAp0bzpmdW5jdGlvbihhLGIsYyl7dmFyIHQscz1DLnhCLlhVKGEsIiUiLGIpCmlmKHM+PWIp
+e2lmKHR5cGVvZiBjIT09Im51bWJlciIpcmV0dXJuIEgucFkoYykKdD1zPGN9ZWxzZSB0PSExCnJldHVy
+biB0P3M6Y30sCk9BOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciB0LHMscixxLHAsbyxuLG0sbCxrPWQhPT0i
+Ij9uZXcgUC5SbihkKTpudWxsCmlmKHR5cGVvZiBjIT09Im51bWJlciIpcmV0dXJuIEgucFkoYykKdD1i
+CnM9dApyPSEwCmZvcig7dDxjOyl7cT1DLnhCLm0oYSx0KQppZihxPT09Mzcpe3A9UC5ydihhLHQsITAp
+Cm89cD09bnVsbAppZihvJiZyKXt0Kz0zCmNvbnRpbnVlfWlmKGs9PW51bGwpaz1uZXcgUC5SbigiIikK
+bj1rLmErPUMueEIuTmooYSxzLHQpCmlmKG8pcD1DLnhCLk5qKGEsdCx0KzMpCmVsc2UgaWYocD09PSIl
+IilQLlIzKGEsdCwiWm9uZUlEIHNob3VsZCBub3QgY29udGFpbiAlIGFueW1vcmUiKQprLmE9bitwCnQr
+PTMKcz10CnI9ITB9ZWxzZXtpZihxPDEyNyl7bz1xPj4+NAppZihvPj04KXJldHVybiBILmsoQy5GMyxv
+KQpvPShDLkYzW29dJjE8PChxJjE1KSkhPT0wfWVsc2Ugbz0hMQppZihvKXtpZihyJiY2NTw9cSYmOTA+
+PXEpe2lmKGs9PW51bGwpaz1uZXcgUC5SbigiIikKaWYoczx0KXtrLmErPUMueEIuTmooYSxzLHQpCnM9
+dH1yPSExfSsrdH1lbHNle2lmKChxJjY0NTEyKT09PTU1Mjk2JiZ0KzE8Yyl7bT1DLnhCLm0oYSx0KzEp
+CmlmKChtJjY0NTEyKT09PTU2MzIwKXtxPTY1NTM2fChxJjEwMjMpPDwxMHxtJjEwMjMKbD0yfWVsc2Ug
+bD0xfWVsc2UgbD0xCmlmKGs9PW51bGwpaz1uZXcgUC5SbigiIikKay5hKz1DLnhCLk5qKGEscyx0KQpr
+LmErPVAuelgocSkKdCs9bApzPXR9fX1pZihrPT1udWxsKXJldHVybiBDLnhCLk5qKGEsYixjKQppZihz
+PGMpay5hKz1DLnhCLk5qKGEscyxjKQpvPWsuYQpyZXR1cm4gby5jaGFyQ29kZUF0KDApPT0wP286b30s
+Ck9MOmZ1bmN0aW9uKGEsYixjKXt2YXIgdCxzLHIscSxwLG8sbixtLGwsayxqCmlmKHR5cGVvZiBjIT09
+Im51bWJlciIpcmV0dXJuIEgucFkoYykKdD1iCnM9dApyPW51bGwKcT0hMApmb3IoO3Q8Yzspe3A9Qy54
+Qi5tKGEsdCkKaWYocD09PTM3KXtvPVAucnYoYSx0LCEwKQpuPW89PW51bGwKaWYobiYmcSl7dCs9Mwpj
+b250aW51ZX1pZihyPT1udWxsKXI9bmV3IFAuUm4oIiIpCm09Qy54Qi5OaihhLHMsdCkKbD1yLmErPSFx
+P20udG9Mb3dlckNhc2UoKTptCmlmKG4pe289Qy54Qi5OaihhLHQsdCszKQprPTN9ZWxzZSBpZihvPT09
+IiUiKXtvPSIlMjUiCms9MX1lbHNlIGs9MwpyLmE9bCtvCnQrPWsKcz10CnE9ITB9ZWxzZXtpZihwPDEy
+Nyl7bj1wPj4+NAppZihuPj04KXJldHVybiBILmsoQy5lYSxuKQpuPShDLmVhW25dJjE8PChwJjE1KSkh
+PT0wfWVsc2Ugbj0hMQppZihuKXtpZihxJiY2NTw9cCYmOTA+PXApe2lmKHI9PW51bGwpcj1uZXcgUC5S
+bigiIikKaWYoczx0KXtyLmErPUMueEIuTmooYSxzLHQpCnM9dH1xPSExfSsrdH1lbHNle2lmKHA8PTkz
+KXtuPXA+Pj40CmlmKG4+PTgpcmV0dXJuIEguayhDLmFrLG4pCm49KEMuYWtbbl0mMTw8KHAmMTUpKSE9
+PTB9ZWxzZSBuPSExCmlmKG4pUC5SMyhhLHQsIkludmFsaWQgY2hhcmFjdGVyIikKZWxzZXtpZigocCY2
+NDUxMik9PT01NTI5NiYmdCsxPGMpe2o9Qy54Qi5tKGEsdCsxKQppZigoaiY2NDUxMik9PT01NjMyMCl7
+cD02NTUzNnwocCYxMDIzKTw8MTB8aiYxMDIzCms9Mn1lbHNlIGs9MX1lbHNlIGs9MQppZihyPT1udWxs
+KXI9bmV3IFAuUm4oIiIpCm09Qy54Qi5OaihhLHMsdCkKci5hKz0hcT9tLnRvTG93ZXJDYXNlKCk6bQpy
+LmErPVAuelgocCkKdCs9awpzPXR9fX19aWYocj09bnVsbClyZXR1cm4gQy54Qi5OaihhLGIsYykKaWYo
+czxjKXttPUMueEIuTmooYSxzLGMpCnIuYSs9IXE/bS50b0xvd2VyQ2FzZSgpOm19bj1yLmEKcmV0dXJu
+IG4uY2hhckNvZGVBdCgwKT09MD9uOm59LApQaTpmdW5jdGlvbihhLGIsYyl7dmFyIHQscyxyLHEKaWYo
+Yj09PWMpcmV0dXJuIiIKaWYoIVAuRXQoSi5yWShhKS5XKGEsYikpKVAuUjMoYSxiLCJTY2hlbWUgbm90
+IHN0YXJ0aW5nIHdpdGggYWxwaGFiZXRpYyBjaGFyYWN0ZXIiKQpmb3IodD1iLHM9ITE7dDxjOysrdCl7
+cj1DLnhCLlcoYSx0KQppZihyPDEyOCl7cT1yPj4+NAppZihxPj04KXJldHVybiBILmsoQy5tSyxxKQpx
+PShDLm1LW3FdJjE8PChyJjE1KSkhPT0wfWVsc2UgcT0hMQppZighcSlQLlIzKGEsdCwiSWxsZWdhbCBz
+Y2hlbWUgY2hhcmFjdGVyIikKaWYoNjU8PXImJnI8PTkwKXM9ITB9YT1DLnhCLk5qKGEsYixjKQpyZXR1
+cm4gUC5ZYShzP2EudG9Mb3dlckNhc2UoKTphKX0sCllhOmZ1bmN0aW9uKGEpe2lmKGE9PT0iaHR0cCIp
+cmV0dXJuImh0dHAiCmlmKGE9PT0iZmlsZSIpcmV0dXJuImZpbGUiCmlmKGE9PT0iaHR0cHMiKXJldHVy
+biJodHRwcyIKaWYoYT09PSJwYWNrYWdlIilyZXR1cm4icGFja2FnZSIKcmV0dXJuIGF9LAp6UjpmdW5j
+dGlvbihhLGIsYyl7aWYoYT09bnVsbClyZXR1cm4iIgpyZXR1cm4gUC5QSShhLGIsYyxDLnRvLCExKX0s
+CmthOmZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgdCxzPWU9PT0iZmlsZSIscj1zfHxmLHE9YT09bnVs
+bAppZihxJiZkPT1udWxsKXJldHVybiBzPyIvIjoiIgpxPSFxCmlmKHEmJmQhPW51bGwpdGhyb3cgSC5i
+KFAueFkoIkJvdGggcGF0aCBhbmQgcGF0aFNlZ21lbnRzIHNwZWNpZmllZCIpKQppZihxKXQ9UC5QSShh
+LGIsYyxDLldkLCEwKQplbHNle2QudG9TdHJpbmcKcT1ILnQ2KGQpCnQ9bmV3IEgubEooZCxxLkMoInFV
+KDEpIikuYShuZXcgUC5SWigpKSxxLkMoImxKPDEscVU+IikpLnpWKDAsIi8iKX1pZih0Lmxlbmd0aD09
+PTApe2lmKHMpcmV0dXJuIi8ifWVsc2UgaWYociYmIUMueEIubih0LCIvIikpdD0iLyIrdApyZXR1cm4g
+UC5Kcih0LGUsZil9LApKcjpmdW5jdGlvbihhLGIsYyl7dmFyIHQ9Yi5sZW5ndGg9PT0wCmlmKHQmJiFj
+JiYhQy54Qi5uKGEsIi8iKSlyZXR1cm4gUC53RihhLCF0fHxjKQpyZXR1cm4gUC54ZShhKX0sCmxlOmZ1
+bmN0aW9uKGEsYixjLGQpe3ZhciB0LHM9e30KaWYoYSE9bnVsbCl7aWYoZCE9bnVsbCl0aHJvdyBILmIo
+UC54WSgiQm90aCBxdWVyeSBhbmQgcXVlcnlQYXJhbWV0ZXJzIHNwZWNpZmllZCIpKQpyZXR1cm4gUC5Q
+SShhLGIsYyxDLlZDLCEwKX1pZihkPT1udWxsKXJldHVybiBudWxsCnQ9bmV3IFAuUm4oIiIpCnMuYT0i
+IgpkLksoMCxuZXcgUC55NShuZXcgUC5NRShzLHQpKSkKcz10LmEKcmV0dXJuIHMuY2hhckNvZGVBdCgw
+KT09MD9zOnN9LAp0RzpmdW5jdGlvbihhLGIsYyl7aWYoYT09bnVsbClyZXR1cm4gbnVsbApyZXR1cm4g
+UC5QSShhLGIsYyxDLlZDLCEwKX0sCnJ2OmZ1bmN0aW9uKGEsYixjKXt2YXIgdCxzLHIscSxwLG89Yisy
+CmlmKG8+PWEubGVuZ3RoKXJldHVybiIlIgp0PUMueEIubShhLGIrMSkKcz1DLnhCLm0oYSxvKQpyPUgu
+b28odCkKcT1ILm9vKHMpCmlmKHI8MHx8cTwwKXJldHVybiIlIgpwPXIqMTYrcQppZihwPDEyNyl7bz1D
+LmpuLndHKHAsNCkKaWYobz49OClyZXR1cm4gSC5rKEMuRjMsbykKbz0oQy5GM1tvXSYxPDwocCYxNSkp
+IT09MH1lbHNlIG89ITEKaWYobylyZXR1cm4gSC5MdyhjJiY2NTw9cCYmOTA+PXA/KHB8MzIpPj4+MDpw
+KQppZih0Pj05N3x8cz49OTcpcmV0dXJuIEMueEIuTmooYSxiLGIrMykudG9VcHBlckNhc2UoKQpyZXR1
+cm4gbnVsbH0sCnpYOmZ1bmN0aW9uKGEpe3ZhciB0LHMscixxLHAsbyxuPSIwMTIzNDU2Nzg5QUJDREVG
+IgppZihhPDEyOCl7dD1uZXcgQXJyYXkoMykKdC5maXhlZCRsZW5ndGg9QXJyYXkKcz1ILlZNKHQsdS50
+KQpDLk5tLlkocywwLDM3KQpDLk5tLlkocywxLEMueEIuVyhuLGE+Pj40KSkKQy5ObS5ZKHMsMixDLnhC
+LlcobixhJjE1KSl9ZWxzZXtpZihhPjIwNDcpaWYoYT42NTUzNSl7cj0yNDAKcT00fWVsc2V7cj0yMjQK
+cT0zfWVsc2V7cj0xOTIKcT0yfXQ9bmV3IEFycmF5KDMqcSkKdC5maXhlZCRsZW5ndGg9QXJyYXkKcz1I
+LlZNKHQsdS50KQpmb3IocD0wOy0tcSxxPj0wO3I9MTI4KXtvPUMuam4uYmYoYSw2KnEpJjYzfHIKQy5O
+bS5ZKHMscCwzNykKQy5ObS5ZKHMscCsxLEMueEIuVyhuLG8+Pj40KSkKQy5ObS5ZKHMscCsyLEMueEIu
+VyhuLG8mMTUpKQpwKz0zfX1yZXR1cm4gUC5ITShzLDAsbnVsbCl9LApQSTpmdW5jdGlvbihhLGIsYyxk
+LGUpe3ZhciB0PVAuVWwoYSxiLGMsZCxlKQpyZXR1cm4gdD09bnVsbD9DLnhCLk5qKGEsYixjKTp0fSwK
+VWw6ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgdCxzLHIscSxwLG89bnVsbCxuPSFlLG09YixsPW0saz1v
+CndoaWxlKCEwKXtpZih0eXBlb2YgbSE9PSJudW1iZXIiKXJldHVybiBtLkooKQppZih0eXBlb2YgYyE9
+PSJudW1iZXIiKXJldHVybiBILnBZKGMpCmlmKCEobTxjKSlicmVhawpjJDA6e3Q9Qy54Qi5tKGEsbSkK
+aWYodDwxMjcpe3M9dD4+PjQKaWYocz49OClyZXR1cm4gSC5rKGQscykKcz0oZFtzXSYxPDwodCYxNSkp
+IT09MH1lbHNlIHM9ITEKaWYocykrK20KZWxzZXtpZih0PT09Mzcpe3I9UC5ydihhLG0sITEpCmlmKHI9
+PW51bGwpe20rPTMKYnJlYWsgYyQwfWlmKCIlIj09PXIpe3I9IiUyNSIKcT0xfWVsc2UgcT0zfWVsc2V7
+aWYobilpZih0PD05Myl7cz10Pj4+NAppZihzPj04KXJldHVybiBILmsoQy5hayxzKQpzPShDLmFrW3Nd
+JjE8PCh0JjE1KSkhPT0wfWVsc2Ugcz0hMQplbHNlIHM9ITEKaWYocyl7UC5SMyhhLG0sIkludmFsaWQg
+Y2hhcmFjdGVyIikKcT1vCnI9cX1lbHNle2lmKCh0JjY0NTEyKT09PTU1Mjk2KXtzPW0rMQppZihzPGMp
+e3A9Qy54Qi5tKGEscykKaWYoKHAmNjQ1MTIpPT09NTYzMjApe3Q9NjU1MzZ8KHQmMTAyMyk8PDEwfHAm
+MTAyMwpxPTJ9ZWxzZSBxPTF9ZWxzZSBxPTF9ZWxzZSBxPTEKcj1QLnpYKHQpfX1pZihrPT1udWxsKWs9
+bmV3IFAuUm4oIiIpCmsuYSs9Qy54Qi5OaihhLGwsbSkKay5hKz1ILmQocikKaWYodHlwZW9mIHEhPT0i
+bnVtYmVyIilyZXR1cm4gSC5wWShxKQptKz1xCmw9bX19fWlmKGs9PW51bGwpcmV0dXJuIG8KaWYodHlw
+ZW9mIGwhPT0ibnVtYmVyIilyZXR1cm4gbC5KKCkKaWYobDxjKWsuYSs9Qy54Qi5OaihhLGwsYykKbj1r
+LmEKcmV0dXJuIG4uY2hhckNvZGVBdCgwKT09MD9uOm59LAp5QjpmdW5jdGlvbihhKXtpZihDLnhCLm4o
+YSwiLiIpKXJldHVybiEwCnJldHVybiBDLnhCLk9ZKGEsIi8uIikhPT0tMX0sCnhlOmZ1bmN0aW9uKGEp
+e3ZhciB0LHMscixxLHAsbyxuCmlmKCFQLnlCKGEpKXJldHVybiBhCnQ9SC5WTShbXSx1LnMpCmZvcihz
+PWEuc3BsaXQoIi8iKSxyPXMubGVuZ3RoLHE9ITEscD0wO3A8cjsrK3Ape289c1twXQppZihKLlJNKG8s
+Ii4uIikpe249dC5sZW5ndGgKaWYobiE9PTApe2lmKDA+PW4pcmV0dXJuIEguayh0LC0xKQp0LnBvcCgp
+CmlmKHQubGVuZ3RoPT09MClDLk5tLmkodCwiIil9cT0hMH1lbHNlIGlmKCIuIj09PW8pcT0hMAplbHNl
+e0MuTm0uaSh0LG8pCnE9ITF9fWlmKHEpQy5ObS5pKHQsIiIpCnJldHVybiBDLk5tLnpWKHQsIi8iKX0s
+CndGOmZ1bmN0aW9uKGEsYil7dmFyIHQscyxyLHEscCxvCmlmKCFQLnlCKGEpKXJldHVybiFiP1AuQzEo
+YSk6YQp0PUguVk0oW10sdS5zKQpmb3Iocz1hLnNwbGl0KCIvIikscj1zLmxlbmd0aCxxPSExLHA9MDtw
+PHI7KytwKXtvPXNbcF0KaWYoIi4uIj09PW8paWYodC5sZW5ndGghPT0wJiZDLk5tLmdyWih0KSE9PSIu
+LiIpe2lmKDA+PXQubGVuZ3RoKXJldHVybiBILmsodCwtMSkKdC5wb3AoKQpxPSEwfWVsc2V7Qy5ObS5p
+KHQsIi4uIikKcT0hMX1lbHNlIGlmKCIuIj09PW8pcT0hMAplbHNle0MuTm0uaSh0LG8pCnE9ITF9fXM9
+dC5sZW5ndGgKaWYocyE9PTApaWYocz09PTEpe2lmKDA+PXMpcmV0dXJuIEguayh0LDApCnM9dFswXS5s
+ZW5ndGg9PT0wfWVsc2Ugcz0hMQplbHNlIHM9ITAKaWYocylyZXR1cm4iLi8iCmlmKHF8fEMuTm0uZ3Ja
+KHQpPT09Ii4uIilDLk5tLmkodCwiIikKaWYoIWIpe2lmKDA+PXQubGVuZ3RoKXJldHVybiBILmsodCww
+KQpDLk5tLlkodCwwLFAuQzEodFswXSkpfXJldHVybiBDLk5tLnpWKHQsIi8iKX0sCkMxOmZ1bmN0aW9u
+KGEpe3ZhciB0LHMscixxPWEubGVuZ3RoCmlmKHE+PTImJlAuRXQoSi5ReihhLDApKSlmb3IodD0xO3Q8
+cTsrK3Qpe3M9Qy54Qi5XKGEsdCkKaWYocz09PTU4KXJldHVybiBDLnhCLk5qKGEsMCx0KSsiJTNBIitD
+LnhCLkcoYSx0KzEpCmlmKHM8PTEyNyl7cj1zPj4+NAppZihyPj04KXJldHVybiBILmsoQy5tSyxyKQpy
+PShDLm1LW3JdJjE8PChzJjE1KSk9PT0wfWVsc2Ugcj0hMAppZihyKWJyZWFrfXJldHVybiBhfSwKbW46
+ZnVuY3Rpb24oYSl7dmFyIHQscyxyLHE9YS5nRmooKSxwPXEubGVuZ3RoCmlmKHA+MCYmSi5IKHFbMF0p
+PT09MiYmSi5hNihxWzBdLDEpPT09NTgpe2lmKDA+PXApcmV0dXJuIEguayhxLDApClAucmcoSi5hNihx
+WzBdLDApLCExKQpQLkhOKHEsITEsMSkKdD0hMH1lbHNle1AuSE4ocSwhMSwwKQp0PSExfXM9YS5ndFQo
+KSYmIXQ/IlxcIjoiIgppZihhLmdjaigpKXtyPWEuZ0pmKGEpCmlmKHIubGVuZ3RoIT09MClzPXMrIlxc
+IityKyJcXCJ9cz1QLnZnKHMscSwiXFwiKQpwPXQmJnA9PT0xP3MrIlxcIjpzCnJldHVybiBwLmNoYXJD
+b2RlQXQoMCk9PTA/cDpwfSwKSWg6ZnVuY3Rpb24oYSxiKXt2YXIgdCxzLHIKZm9yKHQ9MCxzPTA7czwy
+Oysrcyl7cj1DLnhCLlcoYSxiK3MpCmlmKDQ4PD1yJiZyPD01Nyl0PXQqMTYrci00OAplbHNle3J8PTMy
+CmlmKDk3PD1yJiZyPD0xMDIpdD10KjE2K3ItODcKZWxzZSB0aHJvdyBILmIoUC54WSgiSW52YWxpZCBV
+UkwgZW5jb2RpbmciKSl9fXJldHVybiB0fSwKa3U6ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgdCxzLHIs
+cSxwPUouclkoYSksbz1iCndoaWxlKCEwKXtpZighKG88Yykpe3Q9ITAKYnJlYWt9cz1wLlcoYSxvKQpp
+ZihzPD0xMjcpaWYocyE9PTM3KXI9ZSYmcz09PTQzCmVsc2Ugcj0hMAplbHNlIHI9ITAKaWYocil7dD0h
+MQpicmVha30rK299aWYodCl7aWYoQy54TSE9PWQpcj0hMQplbHNlIHI9ITAKaWYocilyZXR1cm4gcC5O
+aihhLGIsYykKZWxzZSBxPW5ldyBILnFqKHAuTmooYSxiLGMpKX1lbHNle3E9SC5WTShbXSx1LnQpCmZv
+cihvPWI7bzxjOysrbyl7cz1wLlcoYSxvKQppZihzPjEyNyl0aHJvdyBILmIoUC54WSgiSWxsZWdhbCBw
+ZXJjZW50IGVuY29kaW5nIGluIFVSSSIpKQppZihzPT09Mzcpe2lmKG8rMz5hLmxlbmd0aCl0aHJvdyBI
+LmIoUC54WSgiVHJ1bmNhdGVkIFVSSSIpKQpDLk5tLmkocSxQLkloKGEsbysxKSkKbys9Mn1lbHNlIGlm
+KGUmJnM9PT00MylDLk5tLmkocSwzMikKZWxzZSBDLk5tLmkocSxzKX19dS5MLmEocSkKcmV0dXJuIG5l
+dyBQLkdZKCExKS5XSihxKX0sCkV0OmZ1bmN0aW9uKGEpe3ZhciB0PWF8MzIKcmV0dXJuIDk3PD10JiZ0
+PD0xMjJ9LApLRDpmdW5jdGlvbihhLGIsYyl7dmFyIHQscyxyLHEscCxvLG4sbSxsPSJJbnZhbGlkIE1J
+TUUgdHlwZSIsaz1ILlZNKFtiLTFdLHUudCkKZm9yKHQ9YS5sZW5ndGgscz1iLHI9LTEscT1udWxsO3M8
+dDsrK3Mpe3E9Qy54Qi5XKGEscykKaWYocT09PTQ0fHxxPT09NTkpYnJlYWsKaWYocT09PTQ3KXtpZihy
+PDApe3I9cwpjb250aW51ZX10aHJvdyBILmIoUC5ycihsLGEscykpfX1pZihyPDAmJnM+Yil0aHJvdyBI
+LmIoUC5ycihsLGEscykpCmZvcig7cSE9PTQ0Oyl7Qy5ObS5pKGsscyk7KytzCmZvcihwPS0xO3M8dDsr
+K3Mpe3E9Qy54Qi5XKGEscykKaWYocT09PTYxKXtpZihwPDApcD1zfWVsc2UgaWYocT09PTU5fHxxPT09
+NDQpYnJlYWt9aWYocD49MClDLk5tLmkoayxwKQplbHNle289Qy5ObS5nclooaykKaWYocSE9PTQ0fHxz
+IT09bys3fHwhQy54Qi5RaShhLCJiYXNlNjQiLG8rMSkpdGhyb3cgSC5iKFAucnIoIkV4cGVjdGluZyAn
+PSciLGEscykpCmJyZWFrfX1DLk5tLmkoayxzKQpuPXMrMQppZigoay5sZW5ndGgmMSk9PT0xKWE9Qy5o
+OS55cihhLG4sdCkKZWxzZXttPVAuVWwoYSxuLHQsQy5WQywhMCkKaWYobSE9bnVsbClhPUMueEIuaTco
+YSxuLHQsbSl9cmV0dXJuIG5ldyBQLlBFKGEsayxjKX0sCktOOmZ1bmN0aW9uKCl7dmFyIHQ9IjAxMjM0
+NTY3ODlBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6LS5f
+fiEkJicoKSorLDs9IixzPSIuIixyPSI6IixxPSIvIixwPSI/IixvPSIjIixuPXUuZ2MsbT1QLmRIKDIy
+LG5ldyBQLnEzKCksITAsbiksbD1uZXcgUC55SShtKSxrPW5ldyBQLmM2KCksaj1uZXcgUC5xZCgpLGk9
+bi5hKGwuJDIoMCwyMjUpKQprLiQzKGksdCwxKQprLiQzKGkscywxNCkKay4kMyhpLHIsMzQpCmsuJDMo
+aSxxLDMpCmsuJDMoaSxwLDE3MikKay4kMyhpLG8sMjA1KQppPW4uYShsLiQyKDE0LDIyNSkpCmsuJDMo
+aSx0LDEpCmsuJDMoaSxzLDE1KQprLiQzKGksciwzNCkKay4kMyhpLHEsMjM0KQprLiQzKGkscCwxNzIp
+CmsuJDMoaSxvLDIwNSkKaT1uLmEobC4kMigxNSwyMjUpKQprLiQzKGksdCwxKQprLiQzKGksIiUiLDIy
+NSkKay4kMyhpLHIsMzQpCmsuJDMoaSxxLDkpCmsuJDMoaSxwLDE3MikKay4kMyhpLG8sMjA1KQppPW4u
+YShsLiQyKDEsMjI1KSkKay4kMyhpLHQsMSkKay4kMyhpLHIsMzQpCmsuJDMoaSxxLDEwKQprLiQzKGks
+cCwxNzIpCmsuJDMoaSxvLDIwNSkKaT1uLmEobC4kMigyLDIzNSkpCmsuJDMoaSx0LDEzOSkKay4kMyhp
+LHEsMTMxKQprLiQzKGkscywxNDYpCmsuJDMoaSxwLDE3MikKay4kMyhpLG8sMjA1KQppPW4uYShsLiQy
+KDMsMjM1KSkKay4kMyhpLHQsMTEpCmsuJDMoaSxxLDY4KQprLiQzKGkscywxOCkKay4kMyhpLHAsMTcy
+KQprLiQzKGksbywyMDUpCmk9bi5hKGwuJDIoNCwyMjkpKQprLiQzKGksdCw1KQpqLiQzKGksIkFaIiwy
+MjkpCmsuJDMoaSxyLDEwMikKay4kMyhpLCJAIiw2OCkKay4kMyhpLCJbIiwyMzIpCmsuJDMoaSxxLDEz
+OCkKay4kMyhpLHAsMTcyKQprLiQzKGksbywyMDUpCmk9bi5hKGwuJDIoNSwyMjkpKQprLiQzKGksdCw1
+KQpqLiQzKGksIkFaIiwyMjkpCmsuJDMoaSxyLDEwMikKay4kMyhpLCJAIiw2OCkKay4kMyhpLHEsMTM4
+KQprLiQzKGkscCwxNzIpCmsuJDMoaSxvLDIwNSkKaT1uLmEobC4kMig2LDIzMSkpCmouJDMoaSwiMTki
+LDcpCmsuJDMoaSwiQCIsNjgpCmsuJDMoaSxxLDEzOCkKay4kMyhpLHAsMTcyKQprLiQzKGksbywyMDUp
+Cmk9bi5hKGwuJDIoNywyMzEpKQpqLiQzKGksIjA5Iiw3KQprLiQzKGksIkAiLDY4KQprLiQzKGkscSwx
+MzgpCmsuJDMoaSxwLDE3MikKay4kMyhpLG8sMjA1KQprLiQzKG4uYShsLiQyKDgsOCkpLCJdIiw1KQpp
+PW4uYShsLiQyKDksMjM1KSkKay4kMyhpLHQsMTEpCmsuJDMoaSxzLDE2KQprLiQzKGkscSwyMzQpCmsu
+JDMoaSxwLDE3MikKay4kMyhpLG8sMjA1KQppPW4uYShsLiQyKDE2LDIzNSkpCmsuJDMoaSx0LDExKQpr
+LiQzKGkscywxNykKay4kMyhpLHEsMjM0KQprLiQzKGkscCwxNzIpCmsuJDMoaSxvLDIwNSkKaT1uLmEo
+bC4kMigxNywyMzUpKQprLiQzKGksdCwxMSkKay4kMyhpLHEsOSkKay4kMyhpLHAsMTcyKQprLiQzKGks
+bywyMDUpCmk9bi5hKGwuJDIoMTAsMjM1KSkKay4kMyhpLHQsMTEpCmsuJDMoaSxzLDE4KQprLiQzKGks
+cSwyMzQpCmsuJDMoaSxwLDE3MikKay4kMyhpLG8sMjA1KQppPW4uYShsLiQyKDE4LDIzNSkpCmsuJDMo
+aSx0LDExKQprLiQzKGkscywxOSkKay4kMyhpLHEsMjM0KQprLiQzKGkscCwxNzIpCmsuJDMoaSxvLDIw
+NSkKaT1uLmEobC4kMigxOSwyMzUpKQprLiQzKGksdCwxMSkKay4kMyhpLHEsMjM0KQprLiQzKGkscCwx
+NzIpCmsuJDMoaSxvLDIwNSkKaT1uLmEobC4kMigxMSwyMzUpKQprLiQzKGksdCwxMSkKay4kMyhpLHEs
+MTApCmsuJDMoaSxwLDE3MikKay4kMyhpLG8sMjA1KQppPW4uYShsLiQyKDEyLDIzNikpCmsuJDMoaSx0
+LDEyKQprLiQzKGkscCwxMikKay4kMyhpLG8sMjA1KQppPW4uYShsLiQyKDEzLDIzNykpCmsuJDMoaSx0
+LDEzKQprLiQzKGkscCwxMykKai4kMyhuLmEobC4kMigyMCwyNDUpKSwiYXoiLDIxKQpsPW4uYShsLiQy
+KDIxLDI0NSkpCmouJDMobCwiYXoiLDIxKQpqLiQzKGwsIjA5IiwyMSkKay4kMyhsLCIrLS4iLDIxKQpy
+ZXR1cm4gbX0sClVCOmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIHQscyxyLHEscCxvPSQudlooKQpmb3Io
+dD1KLnJZKGEpLHM9YjtzPGM7KytzKXtpZihkPDB8fGQ+PW8ubGVuZ3RoKXJldHVybiBILmsobyxkKQpy
+PW9bZF0KcT10LlcoYSxzKV45NgppZihxPjk1KXE9MzEKaWYocT49ci5sZW5ndGgpcmV0dXJuIEguayhy
+LHEpCnA9cltxXQpkPXAmMzEKQy5ObS5ZKGUscD4+PjUscyl9cmV0dXJuIGR9LApXRjpmdW5jdGlvbiBX
+RihhLGIpe3RoaXMuYT1hCnRoaXMuYj1ifSwKYTI6ZnVuY3Rpb24gYTIoKXt9LAppUDpmdW5jdGlvbiBp
+UChhLGIpe3RoaXMuYT1hCnRoaXMuYj1ifSwKQ1A6ZnVuY3Rpb24gQ1AoKXt9LApYUzpmdW5jdGlvbiBY
+Uygpe30sCkM2OmZ1bmN0aW9uIEM2KGEpe3RoaXMuYT1hfSwKTEs6ZnVuY3Rpb24gTEsoKXt9LApBVDpm
+dW5jdGlvbiBBVChhLGIsYyxkKXt2YXIgXz10aGlzCl8uYT1hCl8uYj1iCl8uYz1jCl8uZD1kfSwKYko6
+ZnVuY3Rpb24gYkooYSxiLGMsZCxlLGYpe3ZhciBfPXRoaXMKXy5lPWEKXy5mPWIKXy5hPWMKXy5iPWQK
+Xy5jPWUKXy5kPWZ9LAplWTpmdW5jdGlvbiBlWShhLGIsYyxkLGUpe3ZhciBfPXRoaXMKXy5mPWEKXy5h
+PWIKXy5iPWMKXy5jPWQKXy5kPWV9LAptcDpmdW5jdGlvbiBtcChhLGIsYyxkKXt2YXIgXz10aGlzCl8u
+YT1hCl8uYj1iCl8uYz1jCl8uZD1kfSwKdWI6ZnVuY3Rpb24gdWIoYSl7dGhpcy5hPWF9LApkczpmdW5j
+dGlvbiBkcyhhKXt0aGlzLmE9YX0sCmxqOmZ1bmN0aW9uIGxqKGEpe3RoaXMuYT1hfSwKVVY6ZnVuY3Rp
+b24gVVYoYSl7dGhpcy5hPWF9LAprNTpmdW5jdGlvbiBrNSgpe30sCktZOmZ1bmN0aW9uIEtZKCl7fSwK
+dDc6ZnVuY3Rpb24gdDcoYSl7dGhpcy5hPWF9LApDRDpmdW5jdGlvbiBDRChhKXt0aGlzLmE9YX0sCmFF
+OmZ1bmN0aW9uIGFFKGEsYixjKXt0aGlzLmE9YQp0aGlzLmI9Ygp0aGlzLmM9Y30sCkVIOmZ1bmN0aW9u
+IEVIKCl7fSwKSWY6ZnVuY3Rpb24gSWYoKXt9LApjWDpmdW5jdGlvbiBjWCgpe30sCkFuOmZ1bmN0aW9u
+IEFuKCl7fSwKek06ZnVuY3Rpb24gek0oKXt9LApaMDpmdW5jdGlvbiBaMCgpe30sCk4zOmZ1bmN0aW9u
+IE4zKGEsYixjKXt0aGlzLmE9YQp0aGlzLmI9Ygp0aGlzLiR0aT1jfSwKYzg6ZnVuY3Rpb24gYzgoKXt9
+LApsZjpmdW5jdGlvbiBsZigpe30sCk1oOmZ1bmN0aW9uIE1oKCl7fSwKT2Q6ZnVuY3Rpb24gT2QoKXt9
+LAppYjpmdW5jdGlvbiBpYigpe30sCnh1OmZ1bmN0aW9uIHh1KCl7fSwKR3o6ZnVuY3Rpb24gR3ooKXt9
+LApaZDpmdW5jdGlvbiBaZCgpe30sCnFVOmZ1bmN0aW9uIHFVKCl7fSwKUm46ZnVuY3Rpb24gUm4oYSl7
+dGhpcy5hPWF9LApHRDpmdW5jdGlvbiBHRCgpe30sCm4xOmZ1bmN0aW9uIG4xKGEpe3RoaXMuYT1hfSwK
+Y1M6ZnVuY3Rpb24gY1MoYSl7dGhpcy5hPWF9LApWQzpmdW5jdGlvbiBWQyhhKXt0aGlzLmE9YX0sCkpU
+OmZ1bmN0aW9uIEpUKGEsYil7dGhpcy5hPWEKdGhpcy5iPWJ9LApEbjpmdW5jdGlvbiBEbihhLGIsYyxk
+LGUsZixnKXt2YXIgXz10aGlzCl8uYT1hCl8uYj1iCl8uYz1jCl8uZD1kCl8uZT1lCl8uZj1mCl8ucj1n
+Cl8uUT1fLno9Xy55PV8ueD1udWxsfSwKZTE6ZnVuY3Rpb24gZTEoYSxiKXt0aGlzLmE9YQp0aGlzLmI9
+Yn0sCk5ZOmZ1bmN0aW9uIE5ZKGEpe3RoaXMuYT1hfSwKUlo6ZnVuY3Rpb24gUlooKXt9LApNRTpmdW5j
+dGlvbiBNRShhLGIpe3RoaXMuYT1hCnRoaXMuYj1ifSwKeTU6ZnVuY3Rpb24geTUoYSl7dGhpcy5hPWF9
+LApQRTpmdW5jdGlvbiBQRShhLGIsYyl7dGhpcy5hPWEKdGhpcy5iPWIKdGhpcy5jPWN9LApxMzpmdW5j
+dGlvbiBxMygpe30sCnlJOmZ1bmN0aW9uIHlJKGEpe3RoaXMuYT1hfSwKYzY6ZnVuY3Rpb24gYzYoKXt9
+LApxZDpmdW5jdGlvbiBxZCgpe30sClVmOmZ1bmN0aW9uIFVmKGEsYixjLGQsZSxmLGcsaCl7dmFyIF89
+dGhpcwpfLmE9YQpfLmI9YgpfLmM9YwpfLmQ9ZApfLmU9ZQpfLmY9ZgpfLnI9ZwpfLng9aApfLnk9bnVs
+bH0sCnFlOmZ1bmN0aW9uIHFlKGEsYixjLGQsZSxmLGcpe3ZhciBfPXRoaXMKXy5hPWEKXy5iPWIKXy5j
+PWMKXy5kPWQKXy5lPWUKXy5mPWYKXy5yPWcKXy5RPV8uej1fLnk9Xy54PW51bGx9LAppSjpmdW5jdGlv
+biBpSigpe30sCmpnOmZ1bmN0aW9uIGpnKGEsYil7dGhpcy5hPWEKdGhpcy5iPWJ9LApUYTpmdW5jdGlv
+biBUYShhLGIpe3RoaXMuYT1hCnRoaXMuYj1ifSwKQmY6ZnVuY3Rpb24gQmYoYSxiKXt0aGlzLmE9YQp0
+aGlzLmI9Yn0sCkFzOmZ1bmN0aW9uIEFzKCl7fSwKR0U6ZnVuY3Rpb24gR0UoYSl7dGhpcy5hPWF9LApO
+NzpmdW5jdGlvbiBONyhhLGIpe3RoaXMuYT1hCnRoaXMuYj1ifSwKdVE6ZnVuY3Rpb24gdVEoKXt9LApo
+RjpmdW5jdGlvbiBoRigpe30sClI0OmZ1bmN0aW9uKGEsYixjLGQpe3ZhciB0LHMscgpILkU5KGIpCnUu
+ai5hKGQpCmlmKEgub1QoYikpe3Q9W2NdCkMuTm0uRlYodCxkKQpkPXR9cz11LnoKcj1QLkNIKEouTTEo
+ZCxQLncwKCkscyksITAscykKdS5aLmEoYSkKcmV0dXJuIFAud1koSC5FayhhLHIsbnVsbCkpfSwKRG06
+ZnVuY3Rpb24oYSxiLGMpe3ZhciB0CnRyeXtpZihPYmplY3QuaXNFeHRlbnNpYmxlKGEpJiYhT2JqZWN0
+LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGEsYikpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShh
+LGIse3ZhbHVlOmN9KQpyZXR1cm4hMH19Y2F0Y2godCl7SC5SdSh0KX1yZXR1cm4hMX0sCk9tOmZ1bmN0
+aW9uKGEsYil7aWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGEsYikpcmV0dXJu
+IGFbYl0KcmV0dXJuIG51bGx9LAp3WTpmdW5jdGlvbihhKXtpZihhPT1udWxsfHx0eXBlb2YgYT09InN0
+cmluZyJ8fHR5cGVvZiBhPT0ibnVtYmVyInx8SC5yUShhKSlyZXR1cm4gYQppZihhIGluc3RhbmNlb2Yg
+UC5FNClyZXR1cm4gYS5hCmlmKEguUjkoYSkpcmV0dXJuIGEKaWYodS53LmIoYSkpcmV0dXJuIGEKaWYo
+YSBpbnN0YW5jZW9mIFAuaVApcmV0dXJuIEgubzIoYSkKaWYodS5aLmIoYSkpcmV0dXJuIFAuaEUoYSwi
+JGRhcnRfanNGdW5jdGlvbiIsbmV3IFAuUEMoKSkKcmV0dXJuIFAuaEUoYSwiXyRkYXJ0X2pzT2JqZWN0
+IixuZXcgUC5tdCgkLmtJKCkpKX0sCmhFOmZ1bmN0aW9uKGEsYixjKXt2YXIgdD1QLk9tKGEsYikKaWYo
+dD09bnVsbCl7dD1jLiQxKGEpClAuRG0oYSxiLHQpfXJldHVybiB0fSwKTDc6ZnVuY3Rpb24oYSl7dmFy
+IHQscwppZihhPT1udWxsfHx0eXBlb2YgYT09InN0cmluZyJ8fHR5cGVvZiBhPT0ibnVtYmVyInx8dHlw
+ZW9mIGE9PSJib29sZWFuIilyZXR1cm4gYQplbHNlIGlmKGEgaW5zdGFuY2VvZiBPYmplY3QmJkguUjko
+YSkpcmV0dXJuIGEKZWxzZSBpZihhIGluc3RhbmNlb2YgT2JqZWN0JiZ1LncuYihhKSlyZXR1cm4gYQpl
+bHNlIGlmKGEgaW5zdGFuY2VvZiBEYXRlKXt0PUguV1koYS5nZXRUaW1lKCkpCmlmKE1hdGguYWJzKHQp
+PD04NjRlMTMpcz0hMQplbHNlIHM9ITAKaWYocylILnZoKFAueFkoIkRhdGVUaW1lIGlzIG91dHNpZGUg
+dmFsaWQgcmFuZ2U6ICIrdCkpClAuVUkoITEsImlzVXRjIix1LnkpCnJldHVybiBuZXcgUC5pUCh0LCEx
+KX1lbHNlIGlmKGEuY29uc3RydWN0b3I9PT0kLmtJKCkpcmV0dXJuIGEubwplbHNlIHJldHVybiBQLk5E
+KGEpfSwKTkQ6ZnVuY3Rpb24oYSl7aWYodHlwZW9mIGE9PSJmdW5jdGlvbiIpcmV0dXJuIFAuaVEoYSwk
+LndRKCksbmV3IFAuTnooKSkKaWYoYSBpbnN0YW5jZW9mIEFycmF5KXJldHVybiBQLmlRKGEsJC5Dcigp
+LG5ldyBQLlFTKCkpCnJldHVybiBQLmlRKGEsJC5DcigpLG5ldyBQLm5wKCkpfSwKaVE6ZnVuY3Rpb24o
+YSxiLGMpe3ZhciB0PVAuT20oYSxiKQppZih0PT1udWxsfHwhKGEgaW5zdGFuY2VvZiBPYmplY3QpKXt0
+PWMuJDEoYSkKUC5EbShhLGIsdCl9cmV0dXJuIHR9LApQQzpmdW5jdGlvbiBQQygpe30sCm10OmZ1bmN0
+aW9uIG10KGEpe3RoaXMuYT1hfSwKTno6ZnVuY3Rpb24gTnooKXt9LApRUzpmdW5jdGlvbiBRUygpe30s
+Cm5wOmZ1bmN0aW9uIG5wKCl7fSwKRTQ6ZnVuY3Rpb24gRTQoYSl7dGhpcy5hPWF9LApyNzpmdW5jdGlv
+biByNyhhKXt0aGlzLmE9YX0sClR6OmZ1bmN0aW9uIFR6KGEsYil7dGhpcy5hPWEKdGhpcy4kdGk9Yn0s
+CmNvOmZ1bmN0aW9uIGNvKCl7fSwKbmQ6ZnVuY3Rpb24gbmQoKXt9LApLZTpmdW5jdGlvbiBLZShhKXt0
+aGlzLmE9YX0sCmQ1OmZ1bmN0aW9uIGQ1KCl7fSwKbjY6ZnVuY3Rpb24gbjYoKXt9fSxXPXsKeDM6ZnVu
+Y3Rpb24oKXtyZXR1cm4gd2luZG93fSwKWnI6ZnVuY3Rpb24oKXtyZXR1cm4gZG9jdW1lbnR9LApKNjpm
+dW5jdGlvbihhKXt2YXIgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIikKaWYoYSE9bnVsbCl0Lmhy
+ZWY9YQpyZXR1cm4gdH0sClU5OmZ1bmN0aW9uKGEsYixjKXt2YXIgdD1kb2N1bWVudC5ib2R5LHM9KHQm
+JkMuUlkpLnI2KHQsYSxiLGMpCnMudG9TdHJpbmcKdD11LmFjCnQ9bmV3IEguVTUobmV3IFcuZTcocyks
+dC5DKCJhMihsRC5FKSIpLmEobmV3IFcuQ3YoKSksdC5DKCJVNTxsRC5FPiIpKQpyZXR1cm4gdS5oLmEo
+dC5ncjgodCkpfSwKclM6ZnVuY3Rpb24oYSl7dmFyIHQscyxyPSJlbGVtZW50IHRhZyB1bmF2YWlsYWJs
+ZSIKdHJ5e3Q9Si5SRShhKQppZih0eXBlb2YgdC5nbnMoYSk9PSJzdHJpbmciKXI9dC5nbnMoYSl9Y2F0
+Y2gocyl7SC5SdShzKX1yZXR1cm4gcn0sCnFEOmZ1bmN0aW9uKGEsYil7dmFyIHQscyxyLHE9bmV3IFAu
+dnMoJC5YMyx1LlkpLHA9bmV3IFAuWmYocSx1LkUpLG89bmV3IFhNTEh0dHBSZXF1ZXN0KCkKQy5EdC5l
+byhvLCJHRVQiLGEsITApCmIuSygwLG5ldyBXLmJVKG8pKQp0PXUuYW4Kcz10LmEobmV3IFcuaEgobyxw
+KSkKdS5NLmEobnVsbCkKcj11LnAKVy5KRShvLCJsb2FkIixzLCExLHIpClcuSkUobywiZXJyb3IiLHQu
+YShwLmdZSigpKSwhMSxyKQpvLnNlbmQoKQpyZXR1cm4gcX0sCkMwOmZ1bmN0aW9uKGEsYil7YT01MzY4
+NzA5MTEmYStiCmE9NTM2ODcwOTExJmErKCg1MjQyODcmYSk8PDEwKQpyZXR1cm4gYV5hPj4+Nn0sCnJF
+OmZ1bmN0aW9uKGEsYixjLGQpe3ZhciB0PVcuQzAoVy5DMChXLkMwKFcuQzAoMCxhKSxiKSxjKSxkKSxz
+PTUzNjg3MDkxMSZ0KygoNjcxMDg4NjMmdCk8PDMpCnNePXM+Pj4xMQpyZXR1cm4gNTM2ODcwOTExJnMr
+KCgxNjM4MyZzKTw8MTUpfSwKVE46ZnVuY3Rpb24oYSxiKXt2YXIgdCxzLHI9YS5jbGFzc0xpc3QKZm9y
+KHQ9Yi5sZW5ndGgscz0wO3M8Yi5sZW5ndGg7Yi5sZW5ndGg9PT10fHwoMCxILmxrKShiKSwrK3Mpci5h
+ZGQoYltzXSl9LApKRTpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciB0PVcuYUYobmV3IFcudk4oYyksdS5C
+KQppZih0IT1udWxsJiYhMClKLmRaKGEsYix0LCExKQpyZXR1cm4gbmV3IFcueEMoYSxiLHQsITEsZS5D
+KCJ4QzwwPiIpKX0sClR3OmZ1bmN0aW9uKGEpe3ZhciB0PVcuSjYobnVsbCkscz13aW5kb3cubG9jYXRp
+b24KdD1uZXcgVy5KUShuZXcgVy5tayh0LHMpKQp0LkNZKGEpCnJldHVybiB0fSwKeVc6ZnVuY3Rpb24o
+YSxiLGMsZCl7dS5oLmEoYSkKSC5jKGIpCkguYyhjKQp1LmNyLmEoZCkKcmV0dXJuITB9LApRVzpmdW5j
+dGlvbihhLGIsYyxkKXt2YXIgdCxzLHIKdS5oLmEoYSkKSC5jKGIpCkguYyhjKQp0PXUuY3IuYShkKS5h
+CnM9dC5hCnMuaHJlZj1jCnI9cy5ob3N0bmFtZQp0PXQuYgppZighKHI9PXQuaG9zdG5hbWUmJnMucG9y
+dD09dC5wb3J0JiZzLnByb3RvY29sPT10LnByb3RvY29sKSlpZihyPT09IiIpaWYocy5wb3J0PT09IiIp
+e3Q9cy5wcm90b2NvbAp0PXQ9PT0iOiJ8fHQ9PT0iIn1lbHNlIHQ9ITEKZWxzZSB0PSExCmVsc2UgdD0h
+MApyZXR1cm4gdH0sCkJsOmZ1bmN0aW9uKCl7dmFyIHQ9dS5OLHM9UC50TShDLlF4LHQpLHI9dS5kRy5h
+KG5ldyBXLklBKCkpLHE9SC5WTShbIlRFTVBMQVRFIl0sdS5zKQp0PW5ldyBXLmN0KHMsUC5Mcyh0KSxQ
+LkxzKHQpLFAuTHModCksbnVsbCkKdC5DWShudWxsLG5ldyBILmxKKEMuUXgscix1LmR2KSxxLG51bGwp
+CnJldHVybiB0fSwKUHY6ZnVuY3Rpb24oYSl7aWYoYT09bnVsbClyZXR1cm4gbnVsbApyZXR1cm4gVy5Q
+MShhKX0sCnFjOmZ1bmN0aW9uKGEpe3ZhciB0CmlmKGE9PW51bGwpcmV0dXJuIG51bGwKaWYoInBvc3RN
+ZXNzYWdlIiBpbiBhKXt0PVcuUDEoYSkKaWYodS51LmIodCkpcmV0dXJuIHQKcmV0dXJuIG51bGx9ZWxz
+ZSByZXR1cm4gdS51LmEoYSl9LApQMTpmdW5jdGlvbihhKXtpZihhPT09d2luZG93KXJldHVybiB1LmNp
+LmEoYSkKZWxzZSByZXR1cm4gbmV3IFcuZFcoYSl9LApISDpmdW5jdGlvbihhKXtpZihhPT09d2luZG93
+LmxvY2F0aW9uKXJldHVybiBhCmVsc2UgcmV0dXJuIG5ldyBXLkZiKCl9LAphRjpmdW5jdGlvbihhLGIp
+e3ZhciB0PSQuWDMKaWYodD09PUMuTlUpcmV0dXJuIGEKcmV0dXJuIHQuUHkoYSxiKX0sCnFFOmZ1bmN0
+aW9uIHFFKCl7fSwKR2g6ZnVuY3Rpb24gR2goKXt9LApmWTpmdW5jdGlvbiBmWSgpe30sCm5COmZ1bmN0
+aW9uIG5CKCl7fSwKQXo6ZnVuY3Rpb24gQXooKXt9LApRUDpmdW5jdGlvbiBRUCgpe30sCm54OmZ1bmN0
+aW9uIG54KCl7fSwKb0o6ZnVuY3Rpb24gb0ooKXt9LAppZDpmdW5jdGlvbiBpZCgpe30sClFGOmZ1bmN0
+aW9uIFFGKCl7fSwKTmg6ZnVuY3Rpb24gTmgoKXt9LApJQjpmdW5jdGlvbiBJQigpe30sCm43OmZ1bmN0
+aW9uIG43KCl7fSwKd3o6ZnVuY3Rpb24gd3ooYSxiKXt0aGlzLmE9YQp0aGlzLiR0aT1ifSwKY3Y6ZnVu
+Y3Rpb24gY3YoKXt9LApDdjpmdW5jdGlvbiBDdigpe30sCmVhOmZ1bmN0aW9uIGVhKCl7fSwKRDA6ZnVu
+Y3Rpb24gRDAoKXt9LApUNTpmdW5jdGlvbiBUNSgpe30sCmg0OmZ1bmN0aW9uIGg0KCl7fSwKYnI6ZnVu
+Y3Rpb24gYnIoKXt9LApWYjpmdW5jdGlvbiBWYigpe30sCmZKOmZ1bmN0aW9uIGZKKCl7fSwKYlU6ZnVu
+Y3Rpb24gYlUoYSl7dGhpcy5hPWF9LApoSDpmdW5jdGlvbiBoSChhLGIpe3RoaXMuYT1hCnRoaXMuYj1i
+fSwKd2E6ZnVuY3Rpb24gd2EoKXt9LApTZzpmdW5jdGlvbiBTZygpe30sCnU4OmZ1bmN0aW9uIHU4KCl7
+fSwKT0s6ZnVuY3Rpb24gT0soKXt9LAplNzpmdW5jdGlvbiBlNyhhKXt0aGlzLmE9YX0sCnVIOmZ1bmN0
+aW9uIHVIKCl7fSwKQkg6ZnVuY3Rpb24gQkgoKXt9LApTTjpmdW5jdGlvbiBTTigpe30sCmV3OmZ1bmN0
+aW9uIGV3KCl7fSwKbHA6ZnVuY3Rpb24gbHAoKXt9LApUYjpmdW5jdGlvbiBUYigpe30sCkl2OmZ1bmN0
+aW9uIEl2KCl7fSwKV1A6ZnVuY3Rpb24gV1AoKXt9LAp5WTpmdW5jdGlvbiB5WSgpe30sCnc2OmZ1bmN0
+aW9uIHc2KCl7fSwKSzU6ZnVuY3Rpb24gSzUoKXt9LApDbTpmdW5jdGlvbiBDbSgpe30sCkNROmZ1bmN0
+aW9uIENRKCl7fSwKdzQ6ZnVuY3Rpb24gdzQoKXt9LApyaDpmdW5jdGlvbiByaCgpe30sCmNmOmZ1bmN0
+aW9uIGNmKCl7fSwKaTc6ZnVuY3Rpb24gaTcoYSl7dGhpcy5hPWF9LApTeTpmdW5jdGlvbiBTeShhKXt0
+aGlzLmE9YX0sCktTOmZ1bmN0aW9uIEtTKGEsYil7dGhpcy5hPWEKdGhpcy5iPWJ9LApBMzpmdW5jdGlv
+biBBMyhhLGIpe3RoaXMuYT1hCnRoaXMuYj1ifSwKSTQ6ZnVuY3Rpb24gSTQoYSl7dGhpcy5hPWF9LApG
+azpmdW5jdGlvbiBGayhhLGIpe3RoaXMuYT1hCnRoaXMuJHRpPWJ9LApSTzpmdW5jdGlvbiBSTyhhLGIs
+YyxkKXt2YXIgXz10aGlzCl8uYT1hCl8uYj1iCl8uYz1jCl8uJHRpPWR9LApldTpmdW5jdGlvbiBldShh
+LGIsYyxkKXt2YXIgXz10aGlzCl8uYT1hCl8uYj1iCl8uYz1jCl8uJHRpPWR9LAp4QzpmdW5jdGlvbiB4
+QyhhLGIsYyxkLGUpe3ZhciBfPXRoaXMKXy5iPWEKXy5jPWIKXy5kPWMKXy5lPWQKXy4kdGk9ZX0sCnZO
+OmZ1bmN0aW9uIHZOKGEpe3RoaXMuYT1hfSwKSlE6ZnVuY3Rpb24gSlEoYSl7dGhpcy5hPWF9LApHbTpm
+dW5jdGlvbiBHbSgpe30sCnZEOmZ1bmN0aW9uIHZEKGEpe3RoaXMuYT1hfSwKVXY6ZnVuY3Rpb24gVXYo
+YSl7dGhpcy5hPWF9LApFZzpmdW5jdGlvbiBFZyhhLGIsYyl7dGhpcy5hPWEKdGhpcy5iPWIKdGhpcy5j
+PWN9LAptNjpmdW5jdGlvbiBtNigpe30sCkVvOmZ1bmN0aW9uIEVvKCl7fSwKV2s6ZnVuY3Rpb24gV2so
+KXt9LApjdDpmdW5jdGlvbiBjdChhLGIsYyxkLGUpe3ZhciBfPXRoaXMKXy5lPWEKXy5hPWIKXy5iPWMK
+Xy5jPWQKXy5kPWV9LApJQTpmdW5jdGlvbiBJQSgpe30sCk93OmZ1bmN0aW9uIE93KCl7fSwKVzk6ZnVu
+Y3Rpb24gVzkoYSxiLGMpe3ZhciBfPXRoaXMKXy5hPWEKXy5iPWIKXy5jPS0xCl8uZD1udWxsCl8uJHRp
+PWN9LApkVzpmdW5jdGlvbiBkVyhhKXt0aGlzLmE9YX0sCkZiOmZ1bmN0aW9uIEZiKCl7fSwKa0Y6ZnVu
+Y3Rpb24ga0YoKXt9LAptazpmdW5jdGlvbiBtayhhLGIpe3RoaXMuYT1hCnRoaXMuYj1ifSwKS286ZnVu
+Y3Rpb24gS28oYSl7dGhpcy5hPWEKdGhpcy5iPSExfSwKZm06ZnVuY3Rpb24gZm0oYSl7dGhpcy5hPWF9
+LApMZTpmdW5jdGlvbiBMZSgpe30sCks3OmZ1bmN0aW9uIEs3KCl7fSwKckI6ZnVuY3Rpb24gckIoKXt9
+LApYVzpmdW5jdGlvbiBYVygpe30sCm9hOmZ1bmN0aW9uIG9hKCl7fX0sTT17Ck9YOmZ1bmN0aW9uKGEp
+e3N3aXRjaChhKXtjYXNlIEMuQWQ6cmV0dXJuIkFkZCAvKj8qLyBoaW50IgpjYXNlIEMubmU6cmV0dXJu
+IkFkZCAvKiEqLyBoaW50In1yZXR1cm4gbnVsbH0sCkg3OmZ1bmN0aW9uIEg3KGEsYil7dGhpcy5hPWEK
+dGhpcy5iPWJ9LApZRjpmdW5jdGlvbihhLGIpe3ZhciB0LHMscixxLHAsbyxuCmZvcih0PWIubGVuZ3Ro
+LHM9MTtzPHQ7KytzKXtpZihiW3NdPT1udWxsfHxiW3MtMV0hPW51bGwpY29udGludWUKZm9yKDt0Pj0x
+O3Q9cil7cj10LTEKaWYoYltyXSE9bnVsbClicmVha31xPW5ldyBQLlJuKCIiKQpwPWErIigiCnEuYT1w
+Cm89SC5xQyhiLDAsdCxILnQ2KGIpLmMpCm49by4kdGkKbj1wK25ldyBILmxKKG8sbi5DKCJxVShhTC5F
+KSIpLmEobmV3IE0uTm8oKSksbi5DKCJsSjxhTC5FLHFVPiIpKS56VigwLCIsICIpCnEuYT1uCnEuYT1u
+KygiKTogcGFydCAiKyhzLTEpKyIgd2FzIG51bGwsIGJ1dCBwYXJ0ICIrcysiIHdhcyBub3QuIikKdGhy
+b3cgSC5iKFAueFkocS5aKDApKSl9fSwKbEk6ZnVuY3Rpb24gbEkoYSl7dGhpcy5hPWF9LApNaTpmdW5j
+dGlvbiBNaSgpe30sCnE3OmZ1bmN0aW9uIHE3KCl7fSwKTm86ZnVuY3Rpb24gTm8oKXt9fSxVPXsKbno6
+ZnVuY3Rpb24oYSl7dmFyIHQ9SC5XWShhLnEoMCwibm9kZUlkIikpCnJldHVybiBuZXcgVS5MTChDLk5t
+Lkh0KEMubHIsbmV3IFUuTUQoYSkpLHQpfSwKTEw6ZnVuY3Rpb24gTEwoYSxiKXt0aGlzLmE9YQp0aGlz
+LmI9Yn0sCk1EOmZ1bmN0aW9uIE1EKGEpe3RoaXMuYT1hfSwKamY6ZnVuY3Rpb24oYSl7dmFyIHQscyxy
+LHEKaWYoYT09bnVsbCl0PW51bGwKZWxzZXt0PUguVk0oW10sdS5mQSkKZm9yKHM9Si5JVCh1LlIuYShh
+KSk7cy5GKCk7KXtyPXMuZ2woKQpxPUouVTYocikKQy5ObS5pKHQsbmV3IFUuU2UoSC5jKHEucShyLCJk
+ZXNjcmlwdGlvbiIpKSxILmMocS5xKHIsImhyZWYiKSkpKX19cmV0dXJuIHR9LApOZDpmdW5jdGlvbihh
+KXt2YXIgdCxzCmlmKGE9PW51bGwpdD1udWxsCmVsc2V7dD1ILlZNKFtdLHUuaGgpCmZvcihzPUouSVQo
+dS5SLmEoYSkpO3MuRigpOylDLk5tLmkodCxVLkpqKHMuZ2woKSkpfXJldHVybiB0fSwKSmo6ZnVuY3Rp
+b24oYSl7dmFyIHQ9Si5VNihhKSxzPUguYyh0LnEoYSwiZGVzY3JpcHRpb24iKSkscj1ILlZNKFtdLHUu
+YUopCmZvcih0PUouSVQodS5SLmEodC5xKGEsImVudHJpZXMiKSkpO3QuRigpOylDLk5tLmkocixVLlJq
+KHQuZ2woKSkpCnJldHVybiBuZXcgVS55RChzLHIpfSwKUmo6ZnVuY3Rpb24oYSl7dmFyIHQscz1KLlU2
+KGEpLHI9SC5jKHMucShhLCJkZXNjcmlwdGlvbiIpKSxxPUguYyhzLnEoYSwiZnVuY3Rpb24iKSkscD1z
+LnEoYSwibGluayIpCmlmKHA9PW51bGwpcD1udWxsCmVsc2V7dD1KLlU2KHApCnA9bmV3IFUuTWwoSC5j
+KHQucShwLCJocmVmIikpLEguV1kodC5xKHAsImxpbmUiKSksSC5jKHQucShwLCJwYXRoIikpKX1zPXUu
+ai5hKHMucShhLCJoaW50QWN0aW9ucyIpKQpzPXM9PW51bGw/bnVsbDpKLk0xKHMsbmV3IFUuYU4oKSx1
+LkYpCnM9cz09bnVsbD9udWxsOnMuYnIoMCkKcmV0dXJuIG5ldyBVLndiKHIscSxwLHM9PW51bGw/Qy5k
+bjpzKX0sCmQyOmZ1bmN0aW9uIGQyKGEsYixjLGQsZSl7dmFyIF89dGhpcwpfLmE9YQpfLmI9YgpfLmM9
+YwpfLmQ9ZApfLmU9ZX0sClNlOmZ1bmN0aW9uIFNlKGEsYil7dGhpcy5hPWEKdGhpcy5iPWJ9LApNbDpm
+dW5jdGlvbiBNbChhLGIsYyl7dGhpcy5hPWEKdGhpcy5iPWIKdGhpcy5jPWN9LAp5RDpmdW5jdGlvbiB5
+RChhLGIpe3RoaXMuYT1hCnRoaXMuYj1ifSwKd2I6ZnVuY3Rpb24gd2IoYSxiLGMsZCl7dmFyIF89dGhp
+cwpfLmE9YQpfLmI9YgpfLmM9YwpfLmQ9ZH0sCmFOOmZ1bmN0aW9uIGFOKCl7fSwKYjA6ZnVuY3Rpb24g
+YjAoKXt9fSxCPXsKWWY6ZnVuY3Rpb24oYSl7dmFyIHQscyxyLHEscCxvLG4sbSxsPUguYyhhLnEoMCwi
+cmVnaW9ucyIpKSxrPUguYyhhLnEoMCwibmF2aWdhdGlvbkNvbnRlbnQiKSksaj1ILmMoYS5xKDAsInNv
+dXJjZUNvZGUiKSksaT1QLkZsKHUuTix1LmY0KQpmb3IodD11LlMuYShhLnEoMCwiZWRpdHMiKSksdD10
+LmdQdSh0KSx0PXQuZ2t6KHQpLHM9dS5SLHI9dS5naTt0LkYoKTspe3E9dC5nbCgpCnA9cS5hCm89SC5W
+TShbXSxyKQpmb3IocT1KLklUKHMuYShxLmIpKTtxLkYoKTspe249cS5nbCgpCm09Si5VNihuKQpDLk5t
+LmkobyxuZXcgQi5qOChILldZKG0ucShuLCJsaW5lIikpLEguYyhtLnEobiwiZXhwbGFuYXRpb24iKSks
+SC5XWShtLnEobiwib2Zmc2V0IikpKSl9aS5ZKDAscCxvKX1yZXR1cm4gbmV3IEIucXAobCxrLGosaSl9
+LApqODpmdW5jdGlvbiBqOChhLGIsYyl7dGhpcy5hPWEKdGhpcy5iPWIKdGhpcy5jPWN9LApxcDpmdW5j
+dGlvbiBxcChhLGIsYyxkKXt2YXIgXz10aGlzCl8uYT1hCl8uYj1iCl8uYz1jCl8uZD1kfSwKZnY6ZnVu
+Y3Rpb24gZnYoKXt9LApPUzpmdW5jdGlvbihhKXt2YXIgdAppZighKGE+PTY1JiZhPD05MCkpdD1hPj05
+NyYmYTw9MTIyCmVsc2UgdD0hMApyZXR1cm4gdH0sCll1OmZ1bmN0aW9uKGEsYil7dmFyIHQ9YS5sZW5n
+dGgscz1iKzIKaWYodDxzKXJldHVybiExCmlmKCFCLk9TKEMueEIubShhLGIpKSlyZXR1cm4hMQppZihD
+LnhCLm0oYSxiKzEpIT09NTgpcmV0dXJuITEKaWYodD09PXMpcmV0dXJuITAKcmV0dXJuIEMueEIubShh
+LHMpPT09NDd9fSxUPXttUTpmdW5jdGlvbiBtUSgpe319LEw9ewpJcTpmdW5jdGlvbigpe0MuQlouQihk
+b2N1bWVudCwiRE9NQ29udGVudExvYWRlZCIsbmV3IEwuZSgpKQpDLm9sLkIod2luZG93LCJwb3BzdGF0
+ZSIsbmV3IEwuTCgpKX0sCmt6OmZ1bmN0aW9uKGEpe3ZhciB0LHM9dS5oLmEoYS5wYXJlbnROb2RlKS5x
+dWVyeVNlbGVjdG9yKCI6c2NvcGUgPiB1bCIpLHI9cy5zdHlsZSxxPSIiK0MuQ0QuelEocy5vZmZzZXRI
+ZWlnaHQpKjIrInB4IgpyLm1heEhlaWdodD1xCnI9Si5xRihhKQpxPXIuJHRpCnQ9cS5DKCJ+KDEpIiku
+YShuZXcgTC5XeChzLGEpKQp1Lk0uYShudWxsKQpXLkpFKHIuYSxyLmIsdCwhMSxxLmMpfSwKeVg6ZnVu
+Y3Rpb24oYSxiKXt2YXIgdCxzLHIscSxwLG89InF1ZXJ5U2VsZWN0b3JBbGwiLG49ZG9jdW1lbnQucXVl
+cnlTZWxlY3RvcihhKSxtPXUuaApuLnRvU3RyaW5nCkguRGgobSxtLCJUIixvKQp0PXUuVApzPW5ldyBX
+Lnd6KG4ucXVlcnlTZWxlY3RvckFsbCgiLm5hdi1saW5rIiksdCkKcy5LKHMsbmV3IEwuQU8oYikpCkgu
+RGgobSxtLCJUIixvKQpyPW5ldyBXLnd6KG4ucXVlcnlTZWxlY3RvckFsbCgiLnJlZ2lvbiIpLHQpCmlm
+KHIuZ0EocikhPT0wKXtxPW4ucXVlcnlTZWxlY3RvcigidGFibGVbZGF0YS1wYXRoXSIpCnEudG9TdHJp
+bmcKci5LKHIsbmV3IEwuSG8ocS5nZXRBdHRyaWJ1dGUoImRhdGEtIituZXcgVy5TeShuZXcgVy5pNyhx
+KSkuTygicGF0aCIpKSkpfUguRGgobSxtLCJUIixvKQpwPW5ldyBXLnd6KG4ucXVlcnlTZWxlY3RvckFs
+bCgiLmFkZC1oaW50LWxpbmsiKSx0KQpwLksocCxuZXcgTC5JQygpKX0sClE2OmZ1bmN0aW9uKGEsYil7
+dmFyIHQ9dS5OCnJldHVybiBXLnFEKEwuUTQoYSxiKSxQLkVGKFsiQ29udGVudC1UeXBlIiwiYXBwbGlj
+YXRpb24vanNvbjsgY2hhcnNldD1VVEYtOCJdLHQsdCkpfSwKdHk6ZnVuY3Rpb24oYSxiKXt2YXIgdD0w
+LHM9UC5GWCh1LlMpLHIscSxwLG8sbixtLGwsawp2YXIgJGFzeW5jJHR5PVAubHooZnVuY3Rpb24oYyxk
+KXtpZihjPT09MSlyZXR1cm4gUC5mMyhkLHMpCndoaWxlKHRydWUpc3dpdGNoKHQpe2Nhc2UgMDpuPW5l
+dyBQLnZzKCQuWDMsdS5ZKQptPW5ldyBQLlpmKG4sdS5FKQpsPW5ldyBYTUxIdHRwUmVxdWVzdCgpCms9
+dS5OCkMuRHQuZW8obCwiUE9TVCIsTC5RNChhLFAuRmwoayxrKSksITApCmwuc2V0UmVxdWVzdEhlYWRl
+cigiQ29udGVudC1UeXBlIiwiYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD1VVEYtOCIpCms9dS5hbgpx
+PWsuYShuZXcgTC5MMShtLGwpKQp1Lk0uYShudWxsKQpwPXUucApXLkpFKGwsImxvYWQiLHEsITEscCkK
+Vy5KRShsLCJlcnJvciIsay5hKG0uZ1lKKCkpLCExLHApCmwuc2VuZChiPT1udWxsP251bGw6Qy5DdC5P
+QihiLG51bGwpKQp0PTMKcmV0dXJuIFAualEobiwkYXN5bmMkdHkpCmNhc2UgMzpvPUMuQ3QucFcoMCxs
+LnJlc3BvbnNlVGV4dCxudWxsKQppZihsLnN0YXR1cz09PTIwMCl7cj11LlMuYShvKQp0PTEKYnJlYWt9
+ZWxzZSB0aHJvdyBILmIobykKY2FzZSAxOnJldHVybiBQLnlDKHIscyl9fSkKcmV0dXJuIFAuREkoJGFz
+eW5jJHR5LHMpfSwKYUs6ZnVuY3Rpb24oYSl7dmFyIHQ9UC5oSyhhKS5naFkoKS5xKDAsImxpbmUiKQpy
+ZXR1cm4gdD09bnVsbD9udWxsOkguSHAodCxudWxsKX0sCkc2OmZ1bmN0aW9uKGEpe3ZhciB0PVAuaEso
+YSkuZ2hZKCkucSgwLCJvZmZzZXQiKQpyZXR1cm4gdD09bnVsbD9udWxsOkguSHAodCxudWxsKX0sCmk2
+OmZ1bmN0aW9uKGEpe3JldHVybiBMLm5XKHUuVi5hKGEpKX0sCm5XOmZ1bmN0aW9uKGEpe3ZhciB0PTAs
+cz1QLkZYKHUueikscj0xLHEscD1bXSxvLG4sbSxsLGsKdmFyICRhc3luYyRpNj1QLmx6KGZ1bmN0aW9u
+KGIsYyl7aWYoYj09PTEpe3E9Ywp0PXJ9d2hpbGUodHJ1ZSlzd2l0Y2godCl7Y2FzZSAwOmw9dS5oLmEo
+Vy5xYyhhLmN1cnJlbnRUYXJnZXQpKS5nZXRBdHRyaWJ1dGUoImhyZWYiKQphLnByZXZlbnREZWZhdWx0
+KCkKcj0zCnQ9NgpyZXR1cm4gUC5qUShMLnR5KGwsbnVsbCksJGFzeW5jJGk2KQpjYXNlIDY6dS5hXy5h
+KEouR3IoVy5Qdihkb2N1bWVudC5kZWZhdWx0VmlldykpKS5yZWxvYWQoKQpyPTEKdD01CmJyZWFrCmNh
+c2UgMzpyPTIKaz1xCm89SC5SdShrKQpuPUgudHMoaykKTC5DMigiQ291bGQgbm90IGFkZC9yZW1vdmUg
+aGludCIsbyxuKQp0PTUKYnJlYWsKY2FzZSAyOnQ9MQpicmVhawpjYXNlIDU6cmV0dXJuIFAueUMobnVs
+bCxzKQpjYXNlIDE6cmV0dXJuIFAuZjMocSxzKX19KQpyZXR1cm4gUC5ESSgkYXN5bmMkaTYscyl9LApD
+MjpmdW5jdGlvbihhLGIsYyl7dmFyIHQscyxyPSJleGNlcHRpb24iLHE9InN0YWNrVHJhY2UiLHA9dS5T
+LmIoYikmJkouUk0oYi5xKDAsInN1Y2Nlc3MiKSwhMSkmJkgub1QoYi54NChyKSkmJkgub1QoYi54NChx
+KSksbz1KLmlhKGIpCmlmKHApe3Q9SC5jKG8ucShiLHIpKQpjPW8ucShiLHEpfWVsc2UgdD1vLlooYikK
+cD1kb2N1bWVudApzPXAucXVlcnlTZWxlY3RvcigiLnBvcHVwLXBhbmUiKQpzLnF1ZXJ5U2VsZWN0b3Io
+ImgyIikuaW5uZXJUZXh0PWEKcy5xdWVyeVNlbGVjdG9yKCJwIikuaW5uZXJUZXh0PXQKcy5xdWVyeVNl
+bGVjdG9yKCJwcmUiKS5pbm5lclRleHQ9Si5BYyhjKQpvPXUuTgp1LmJxLmEocy5xdWVyeVNlbGVjdG9y
+KCJhLmJvdHRvbSIpKS5ocmVmPVAuWGQoImh0dHBzIiwiZ2l0aHViLmNvbSIsImRhcnQtbGFuZy9zZGsv
+aXNzdWVzL25ldyIsUC5FRihbInRpdGxlIiwiQ3VzdG9tZXItcmVwb3J0ZWQgaXNzdWUgd2l0aCBOTkJE
+IG1pZ3JhdGlvbiB0b29sOiAiK2EsImxhYmVscyIsImFyZWEtYW5hbHl6ZXIsYW5hbHl6ZXItbm5iZC1t
+aWdyYXRpb24sdHlwZS1idWciLCJib2R5IixhKyJcblxuRXJyb3I6ICIrSC5kKHQpKyJcblxuUGxlYXNl
+IGZpbGwgaW4gdGhlIGZvbGxvd2luZzpcblxuKipOYW1lIG9mIHBhY2thZ2UgYmVpbmcgbWlncmF0ZWQg
+KGlmIHB1YmxpYykqKjpcbioqV2hhdCBJIHdhcyBkb2luZyB3aGVuIHRoaXMgaXNzdWUgb2NjdXJyZWQq
+KjpcbioqSXMgaXQgcG9zc2libGUgdG8gd29yayBhcm91bmQgdGhpcyBpc3N1ZSoqOlxuKipIYXMgdGhp
+cyBpc3N1ZSBoYXBwZW5lZCBiZWZvcmUsIGFuZCBpZiBzbywgaG93IG9mdGVuKio6XG4qKkRhcnQgU0RL
+IHZlcnNpb24qKjogIitILmQocC5nZXRFbGVtZW50QnlJZCgic2RrLXZlcnNpb24iKS50ZXh0Q29udGVu
+dCkrIlxuKipBZGRpdGlvbmFsIGRldGFpbHMqKjpcblxuVGhhbmtzIGZvciBmaWxpbmchXG5cblN0YWNr
+dHJhY2U6IF9hdXRvIHBvcHVsYXRlZCBieSBtaWdyYXRpb24gcHJldmlldyB0b29sLl9cblxuYGBgXG4i
+K0guZChjKSsiXG5gYGBcbiJdLG8sbykpLlooMCkKbz1zLnN0eWxlCm8uZGlzcGxheT0iaW5pdGlhbCIK
+TC5xSihhKyI6ICIrSC5kKGIpLGMpfSwKdDI6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0LHMscixxLHAsbyxu
+PXt9LG09dS5oLmEoVy5xYyhhLmN1cnJlbnRUYXJnZXQpKQphLnByZXZlbnREZWZhdWx0KCkKdD1uLmE9
+bS5nZXRBdHRyaWJ1dGUoImhyZWYiKQppZihKLnpsKHQsIj8iKSl7cz1DLnhCLk5qKHQsMCxDLnhCLk9Z
+KHQsIj8iKSkKbi5hPXMKcj1zfWVsc2Ugcj10CmlmKGMhPW51bGwpe3E9JC5uVSgpCnI9bi5hPXEubzUo
+RC5ucihxLnpmKGMpLHIpKX1wPUwuRzYodCkKbz1MLmFLKHQpCmlmKHAhPW51bGwpTC5hZihyLHAsbyxi
+LG5ldyBMLm5UKG4scCxvKSkKZWxzZSBMLmFmKHIsbnVsbCxudWxsLGIsbmV3IEwuQloobikpfSwKdlU6
+ZnVuY3Rpb24oKXt2YXIgdD1kb2N1bWVudCxzPXUuaApILkRoKHMscywiVCIsInF1ZXJ5U2VsZWN0b3JB
+bGwiKQp0PW5ldyBXLnd6KHQucXVlcnlTZWxlY3RvckFsbCgiLmNvZGUiKSx1LlQpCnQuSyh0LG5ldyBM
+LkdIKCkpfSwKaFg6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0PXUuTgpMLlE2KGEsUC5FRihbInJlZ2lvbiIs
+InJlZ2lvbiIsIm9mZnNldCIsSC5kKGIpXSx0LHQpKS5XNyhuZXcgTC5EVChhLGIsYyksdS5QKS5PQShu
+ZXcgTC5lSChhKSl9LApHNzpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciB0CmlmKCFKLnA0KGEsIi5kYXJ0
+Iikpe0wuQkUoYSxuZXcgQi5xcCgiIiwiIiwiIixDLkNNKSxkKQpMLkJYKGEsbnVsbCkKaWYoZSE9bnVs
+bCllLiQwKCkKcmV0dXJufXQ9dS5OCkwuUTYoYSxQLkVGKFsiaW5saW5lIiwidHJ1ZSJdLHQsdCkpLlc3
+KG5ldyBMLnl1KGEsZCxiLGMsZSksdS5QKS5PQShuZXcgTC56RChhKSl9LApHZTpmdW5jdGlvbigpe3Zh
+ciB0PSIvX3ByZXZpZXcvbmF2aWdhdGlvblRyZWUuanNvbiIKTC5RNih0LEMuV08pLlc3KG5ldyBMLlRX
+KCksdS5QKS5PQShuZXcgTC54cih0KSl9LApxSjpmdW5jdGlvbihhLGIpe3ZhciB0CndpbmRvdwppZih0
+eXBlb2YgY29uc29sZSE9InVuZGVmaW5lZCIpd2luZG93LmNvbnNvbGUuZXJyb3IoYSkKd2luZG93CnQ9
+SC5kKGIpCmlmKHR5cGVvZiBjb25zb2xlIT0idW5kZWZpbmVkIil3aW5kb3cuY29uc29sZS5lcnJvcih0
+KX0sCnFPOmZ1bmN0aW9uKGEpe3ZhciB0LHM9YS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxyPUMuQ0Qu
+elEoJC5maSgpLm9mZnNldEhlaWdodCkscT13aW5kb3cuaW5uZXJIZWlnaHQscD1DLkNELnpRKCQuRFco
+KS5vZmZzZXRIZWlnaHQpCmlmKHR5cGVvZiBxIT09Im51bWJlciIpcmV0dXJuIHEuSE4oKQp0PXMuYm90
+dG9tCmlmKHR5cGVvZiB0IT09Im51bWJlciIpcmV0dXJuIHQub3MoKQppZih0PnEtKHArMTQpKUouZGgo
+YSkKZWxzZXtxPXMudG9wCmlmKHR5cGVvZiBxIT09Im51bWJlciIpcmV0dXJuIHEuSigpCmlmKHE8cisx
+NClKLmRoKGEpfX0sCmZHOmZ1bmN0aW9uKGEsYil7dmFyIHQscyxyCmlmKGEhPW51bGwpe3Q9ZG9jdW1l
+bnQKcz10LmdldEVsZW1lbnRCeUlkKCJvIitILmQoYSkpCnI9dC5xdWVyeVNlbGVjdG9yKCIubGluZS0i
+K0guZChiKSkKaWYocyE9bnVsbCl7TC5xTyhzKQpKLmRSKHMpLmkoMCwidGFyZ2V0Iil9ZWxzZSBpZihy
+IT1udWxsKUwucU8oci5wYXJlbnRFbGVtZW50KQppZihyIT1udWxsKUouZFIodS5oLmEoci5wYXJlbnRO
+b2RlKSkuaSgwLCJoaWdobGlnaHQiKX1lbHNlIEwucU8oJC5EOSgpKX0sCmFmOmZ1bmN0aW9uKGEsYixj
+LGQsZSl7dmFyIHQscyxyPUwuRzYod2luZG93LmxvY2F0aW9uLmhyZWYpLHE9TC5hSyh3aW5kb3cubG9j
+YXRpb24uaHJlZikKaWYociE9bnVsbCl7dD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibyIrSC5kKHIp
+KQppZih0IT1udWxsKUouZFIodCkuUigwLCJ0YXJnZXQiKX1pZihxIT1udWxsKXtzPWRvY3VtZW50LnF1
+ZXJ5U2VsZWN0b3IoIi5saW5lLSIrSC5kKHEpKQppZihzIT1udWxsKUouZFIocy5wYXJlbnRFbGVtZW50
+KS5SKDAsImhpZ2hsaWdodCIpfWlmKGE9PXdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSl7TC5mRyhiLGMp
+CmUuJDAoKX1lbHNlIEwuRzcoYSxiLGMsZCxlKX0sClE0OmZ1bmN0aW9uKGEsYil7dmFyIHQscyxyPVAu
+aEsoYSkscT11Lk4KcT1QLkZsKHEscSkKZm9yKHQ9ci5naFkoKSx0PXQuZ1B1KHQpLHQ9dC5na3oodCk7
+dC5GKCk7KXtzPXQuZ2woKQpxLlkoMCxzLmEscy5iKX1mb3IodD1iLmdQdShiKSx0PXQuZ2t6KHQpO3Qu
+RigpOyl7cz10LmdsKCkKcS5ZKDAscy5hLHMuYil9cS5ZKDAsImF1dGhUb2tlbiIsJC5VRSgpKQpyZXR1
+cm4gci5ubSgwLHEpLlooMCl9LApUMTpmdW5jdGlvbihhKXt2YXIgdCxzLHIscSxwLG8sbixtLGwsaz0k
+LmhMKCkKSi5sNShrLCIiKQppZihhPT1udWxsKXt0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInAiKQp0
+LnRleHRDb250ZW50PSJTZWUgZGV0YWlscyBhYm91dCBhIHByb3Bvc2VkIGVkaXQuIgpDLkx0LnNQKHQs
+SC5WTShbInBsYWNlaG9sZGVyIl0sdS5zKSkKay5hcHBlbmRDaGlsZCh0KQpDLkx0LkZGKHQpCnJldHVy
+bn1zPWEuZApyPSQublUoKQpxPXIuemYocykKcD1hLmIKbz1kb2N1bWVudApuPXIuSFAocyxKLlQwKG8u
+cXVlcnlTZWxlY3RvcigiLnJvb3QiKS50ZXh0Q29udGVudCkpCm09YS5jCmw9by5jcmVhdGVFbGVtZW50
+KCJwIikKay5hcHBlbmRDaGlsZChsKQpsLmFwcGVuZENoaWxkKG8uY3JlYXRlVGV4dE5vZGUoSC5kKHAp
+KyIgYXQgIikpCnI9dS5OCnI9Vy5KNihMLlE0KHMsUC5FRihbImxpbmUiLEouQWMobSldLHIscikpKQpy
+LmFwcGVuZENoaWxkKG8uY3JlYXRlVGV4dE5vZGUoSC5kKG4pKyI6IitILmQobSkrIi4iKSkKbC5hcHBl
+bmRDaGlsZChyKQpKLmRoKGwpCkwuQ0MoYSxrLHEpCkwuRnooYSxrKX0sCkxIOmZ1bmN0aW9uKGEsYixj
+KXt2YXIgdCxzLHIscSxwLG8sbixtLGwsayxqLGksaCxnPSQueVAoKQpKLmw1KGcsIiIpCmlmKGIuZ0Eo
+Yik9PT0wKXt0PWRvY3VtZW50CnM9dC5jcmVhdGVFbGVtZW50KCJwIikKZy5hcHBlbmRDaGlsZChzKQpz
+LmFwcGVuZENoaWxkKHQuY3JlYXRlVGV4dE5vZGUoIk5vIHByb3Bvc2VkIGVkaXRzIikpfWVsc2UgZm9y
+KGc9Yi5nUHUoYiksZz1nLmdreihnKSx0PXUuUSxyPXQuQygifigxKSIpLHE9dS5NLHQ9dC5jO2cuRigp
+Oyl7cD1nLmdsKCkKbz1kb2N1bWVudApzPW8uY3JlYXRlRWxlbWVudCgicCIpCm49JC55UCgpCm4uYXBw
+ZW5kQ2hpbGQocykKcy5hcHBlbmRDaGlsZChvLmNyZWF0ZVRleHROb2RlKEguZChwLmEpKyI6IikpCm09
+by5jcmVhdGVFbGVtZW50KCJ1bCIpCm4uYXBwZW5kQ2hpbGQobSkKZm9yKHA9Si5JVChwLmIpO3AuRigp
+Oyl7bj1wLmdsKCkKbD1vLmNyZWF0ZUVsZW1lbnQoImxpIikKbS5hcHBlbmRDaGlsZChsKQpKLmRSKGwp
+LmkoMCwiZWRpdCIpCms9by5jcmVhdGVFbGVtZW50KCJhIikKbC5hcHBlbmRDaGlsZChrKQprLmNsYXNz
+TGlzdC5hZGQoImVkaXQtbGluayIpCmo9bi5jCmk9SC5kKGopCmsuc2V0QXR0cmlidXRlKCJkYXRhLSIr
+bmV3IFcuU3kobmV3IFcuaTcoaykpLk8oIm9mZnNldCIpLGkpCmg9bi5hCmk9SC5kKGgpCmsuc2V0QXR0
+cmlidXRlKCJkYXRhLSIrbmV3IFcuU3kobmV3IFcuaTcoaykpLk8oImxpbmUiKSxpKQprLmFwcGVuZENo
+aWxkKG8uY3JlYXRlVGV4dE5vZGUoImxpbmUgIitILmQoaCkpKQppPXIuYShuZXcgTC5FRShqLGgsYSkp
+CnEuYShudWxsKQpXLkpFKGssImNsaWNrIixpLCExLHQpCmwuYXBwZW5kQ2hpbGQoby5jcmVhdGVUZXh0
+Tm9kZSgiOiAiK0guZChuLmIpKSl9fWlmKGMpTC5UMShudWxsKX0sCkZyOmZ1bmN0aW9uKGEsYixjKXt2
+YXIgdCxzLHI9d2luZG93LmxvY2F0aW9uLHE9UC5oSygociYmQy5FeCkuZ0RyKHIpK0guZChhKSkKcj11
+Lk4Kcj1QLkZsKHIscikKaWYoYiE9bnVsbClyLlkoMCwib2Zmc2V0IixILmQoYikpCmlmKGMhPW51bGwp
+ci5ZKDAsImxpbmUiLEguZChjKSkKci5ZKDAsImF1dGhUb2tlbiIsJC5VRSgpKQpxPXEubm0oMCxyKQpy
+PXdpbmRvdy5oaXN0b3J5CnQ9dS56CnM9cS5aKDApCnIudG9TdHJpbmcKci5wdXNoU3RhdGUobmV3IFAu
+QmYoW10sW10pLlB2KFAuRmwodCx0KSksIiIscyl9LApFbjpmdW5jdGlvbihhKXt2YXIgdD1KLm0oZG9j
+dW1lbnQucXVlcnlTZWxlY3RvcigiLnJvb3QiKS50ZXh0Q29udGVudCwiLyIpCmlmKEMueEIubihhLHQp
+KXJldHVybiBDLnhCLkcoYSx0Lmxlbmd0aCkKZWxzZSByZXR1cm4gYX0sCkJYOmZ1bmN0aW9uKGEsYil7
+dmFyIHQscyxyPXt9CnIuYT1hCmE9TC5FbihhKQpyLmE9YQokLkQ5KCkudGV4dENvbnRlbnQ9YQp0PWRv
+Y3VtZW50CnM9dS5oCkguRGgocyxzLCJUIiwicXVlcnlTZWxlY3RvckFsbCIpCnQ9bmV3IFcud3oodC5x
+dWVyeVNlbGVjdG9yQWxsKCIubmF2LXBhbmVsIC5uYXYtbGluayIpLHUuVCkKdC5LKHQsbmV3IEwuVlMo
+cikpfSwKQkU6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0PSIucmVnaW9ucyIscz1kb2N1bWVudCxyPXMucXVl
+cnlTZWxlY3Rvcih0KSxxPXMucXVlcnlTZWxlY3RvcigiLmNvZGUiKQpKLnRIKHIsYi5hLCQuS0coKSkK
+Si50SChxLGIuYiwkLktHKCkpCkwuTEgoYSxiLmQsYykKTC52VSgpCkwueVgoIi5jb2RlIiwhMCkKTC55
+WCh0LCEwKX0sCnRYOmZ1bmN0aW9uKGEsYil7dmFyIHQscyxyLHEscCxvLG4sbSxsLGssaixpLGgsZz1k
+b2N1bWVudCxmPWcuY3JlYXRlRWxlbWVudCgidWwiKQphLmFwcGVuZENoaWxkKGYpCmZvcih0PWIubGVu
+Z3RoLHM9dS5NLHI9MDtyPGIubGVuZ3RoO2IubGVuZ3RoPT09dHx8KDAsSC5saykoYiksKytyKXtxPWJb
+cl0KcD1nLmNyZWF0ZUVsZW1lbnQoImxpIikKZi5hcHBlbmRDaGlsZChwKQpvPUouUkUocCkKaWYocS5h
+PT09Qy5ZMil7by5nUChwKS5pKDAsImRpciIpCm49Zy5jcmVhdGVFbGVtZW50KCJzcGFuIikKcC5hcHBl
+bmRDaGlsZChuKQpvPUouUkUobikKby5nUChuKS5pKDAsImFycm93IikKby5zaGYobiwiJiN4MjVCQzsi
+KQptPWcuY3JlYXRlRWxlbWVudCgic3BhbiIpCnAuYXBwZW5kQ2hpbGQobSkKSi5sNShtLCImI3gxRjRD
+MTsiKQpwLmFwcGVuZENoaWxkKGcuY3JlYXRlVGV4dE5vZGUocS5iKSkKTC50WChwLHEuYykKTC5reihu
+KX1lbHNle28uc2hmKHAsIiYjeDFGNEM0OyIpCmw9Zy5jcmVhdGVFbGVtZW50KCJhIikKcC5hcHBlbmRD
+aGlsZChsKQpvPUouUkUobCkKby5nUChsKS5pKDAsIm5hdi1saW5rIikKbC5zZXRBdHRyaWJ1dGUoImRh
+dGEtIituZXcgVy5TeShuZXcgVy5pNyhsKSkuTygibmFtZSIpLHEuZCkKbC5zZXRBdHRyaWJ1dGUoImhy
+ZWYiLHEuZSkKbC5hcHBlbmRDaGlsZChnLmNyZWF0ZVRleHROb2RlKHEuYikpCm89by5nVmwobCkKaz1v
+LiR0aQpqPWsuQygifigxKSIpLmEobmV3IEwuVEQoKSkKcy5hKG51bGwpClcuSkUoby5hLG8uYixqLCEx
+LGsuYykKaT1xLmYKaWYodHlwZW9mIGkhPT0ibnVtYmVyIilyZXR1cm4gaS5vcygpCmlmKGk+MCl7aD1n
+LmNyZWF0ZUVsZW1lbnQoInNwYW4iKQpwLmFwcGVuZENoaWxkKGgpCkouZFIoaCkuaSgwLCJlZGl0LWNv
+dW50IikKbz0iIitpKyIgIgppZihpPT09MSlrPSJlZGl0IgplbHNlIGs9ImVkaXRzIgpoLnNldEF0dHJp
+YnV0ZSgidGl0bGUiLG8raykKaC5hcHBlbmRDaGlsZChnLmNyZWF0ZVRleHROb2RlKEMuam4uWihpKSkp
+fX19fSwKRno6ZnVuY3Rpb24oYSxiKXt2YXIgdCxzLHIscSxwLG8sbixtLGwsayxqLGk9YS5hCmlmKGk9
+PW51bGwpcmV0dXJuCnQ9ZG9jdW1lbnQKcz10LmNyZWF0ZUVsZW1lbnQoInAiKQpyPWIuYXBwZW5kQ2hp
+bGQocykKcz10LmNyZWF0ZUVsZW1lbnQoInNwYW4iKQpxPXUucwpKLk11KHMsSC5WTShbInR5cGUtZGVz
+Y3JpcHRpb24iXSxxKSkKcy5hcHBlbmRDaGlsZCh0LmNyZWF0ZVRleHROb2RlKCJBY3Rpb25zIikpCnIu
+YXBwZW5kQ2hpbGQocykKci5hcHBlbmRDaGlsZCh0LmNyZWF0ZVRleHROb2RlKCI6IikpCnA9dC5jcmVh
+dGVFbGVtZW50KCJwIikKYi5hcHBlbmRDaGlsZChwKQpmb3Iocz1pLmxlbmd0aCxvPXUuWCxuPTA7bjxp
+Lmxlbmd0aDtpLmxlbmd0aD09PXN8fCgwLEgubGspKGkpLCsrbil7bT1pW25dCmw9dC5jcmVhdGVFbGVt
+ZW50KCJhIikKcC5hcHBlbmRDaGlsZChsKQpsLmFwcGVuZENoaWxkKHQuY3JlYXRlVGV4dE5vZGUobS5h
+KSkKbC5zZXRBdHRyaWJ1dGUoImhyZWYiLG0uYikKaz1vLmEoSC5WTShbImFkZC1oaW50LWxpbmsiLCJi
+ZWZvcmUtYXBwbHkiLCJidXR0b24iXSxxKSkKaj1KLmRSKGwpCmouVjEoMCkKai5GVigwLGspfX0sCkND
+OmZ1bmN0aW9uKGIwLGIxLGIyKXt2YXIgdCxzLHIscSxwLG8sbixtLGwsayxqLGksaCxnLGYsZSxkLGMs
+YixhLGEwLGExLGEyLGEzLGE0LGE1LGE2LGE3LGE4LGE5PW51bGwKZm9yKHQ9YjAuZSxzPXQubGVuZ3Ro
+LHI9dS5zLHE9dS5YLHA9dS5RLG89cC5DKCJ+KDEpIiksbj11Lk0scD1wLmMsbT0wO208dC5sZW5ndGg7
+dC5sZW5ndGg9PT1zfHwoMCxILmxrKSh0KSwrK20pe2w9dFttXQprPWRvY3VtZW50Cmo9ay5jcmVhdGVF
+bGVtZW50KCJwIikKaT1xLmEoSC5WTShbInRyYWNlIl0scikpCmg9Si5kUihqKQpoLlYxKDApCmguRlYo
+MCxpKQpnPWIxLmFwcGVuZENoaWxkKGopCmo9ay5jcmVhdGVFbGVtZW50KCJzcGFuIikKaT1xLmEoSC5W
+TShbInR5cGUtZGVzY3JpcHRpb24iXSxyKSkKaD1KLmRSKGopCmguVjEoMCkKaC5GVigwLGkpCmouYXBw
+ZW5kQ2hpbGQoay5jcmVhdGVUZXh0Tm9kZShsLmEpKQpnLmFwcGVuZENoaWxkKGopCmcuYXBwZW5kQ2hp
+bGQoay5jcmVhdGVUZXh0Tm9kZSgiOiIpKQpqPWsuY3JlYXRlRWxlbWVudCgidWwiKQppPXEuYShILlZN
+KFsidHJhY2UiXSxyKSkKaD1KLmRSKGopCmguVjEoMCkKaC5GVigwLGkpCmY9Zy5hcHBlbmRDaGlsZChq
+KQpmb3Ioaj1sLmIsaT1qLmxlbmd0aCxlPTA7ZTxqLmxlbmd0aDtqLmxlbmd0aD09PWl8fCgwLEgubGsp
+KGopLCsrZSl7ZD1qW2VdCmM9ay5jcmVhdGVFbGVtZW50KCJsaSIpCmYuYXBwZW5kQ2hpbGQoYykKYj1r
+LmNyZWF0ZUVsZW1lbnQoInNwYW4iKQphPXEuYShILlZNKFsiZnVuY3Rpb24iXSxyKSkKaD1KLmRSKGIp
+CmguVjEoMCkKaC5GVigwLGEpCmE9ZC5iCkwua0QoYixhPT1udWxsPyJ1bmtub3duIjphKQpjLmFwcGVu
+ZENoaWxkKGIpCmEwPWQuYwppZihhMCE9bnVsbCl7Yy5hcHBlbmRDaGlsZChrLmNyZWF0ZVRleHROb2Rl
+KCIgKCIpKQphMT1hMC5iCmEyPWsuY3JlYXRlRWxlbWVudCgiYSIpCmEyLmFwcGVuZENoaWxkKGsuY3Jl
+YXRlVGV4dE5vZGUoSC5kKGEwLmMpKyI6IitILmQoYTEpKSkKYTM9YTAuYQpiPSQublUoKQphMi5zZXRB
+dHRyaWJ1dGUoImhyZWYiLGIubzUoYi5xNygwLGIyLGEzLGE5LGE5LGE5LGE5LGE5LGE5KSkpCmEyLmNs
+YXNzTGlzdC5hZGQoIm5hdi1saW5rIikKYy5hcHBlbmRDaGlsZChhMikKYy5hcHBlbmRDaGlsZChrLmNy
+ZWF0ZVRleHROb2RlKCIpIikpfWMuYXBwZW5kQ2hpbGQoay5jcmVhdGVUZXh0Tm9kZSgiOiAiKSkKYj1k
+LmEKTC5rRChjLGI9PW51bGw/InVua25vd24iOmIpCmI9ZC5kCmlmKGIubGVuZ3RoIT09MCl7YT1rLmNy
+ZWF0ZUVsZW1lbnQoInAiKQphND1xLmEoSC5WTShbImRyYXdlciIsImJlZm9yZS1hcHBseSJdLHIpKQpo
+PUouZFIoYSkKaC5WMSgwKQpoLkZWKDAsYTQpCmE1PWMuYXBwZW5kQ2hpbGQoYSkKZm9yKGE9Yi5sZW5n
+dGgsYTY9MDthNjxiLmxlbmd0aDtiLmxlbmd0aD09PWF8fCgwLEgubGspKGIpLCsrYTYpe2E3PWJbYTZd
+CmE0PWsuY3JlYXRlRWxlbWVudCgiYnV0dG9uIikKYTg9by5hKG5ldyBMLkFTKGE3LGEwKSkKbi5hKG51
+bGwpClcuSkUoYTQsImNsaWNrIixhOCwhMSxwKQphNC5hcHBlbmRDaGlsZChrLmNyZWF0ZVRleHROb2Rl
+KE0uT1goYTcuYSkpKQphNS5hcHBlbmRDaGlsZChhNCl9fX19fSwKa0Q6ZnVuY3Rpb24oYSxiKXt2YXIg
+dCxzLHI9SC5WTShiLnNwbGl0KCIuIiksdS5zKSxxPUMuTm0uZ3RIKHIpLHA9ZG9jdW1lbnQKYS5hcHBl
+bmRDaGlsZChwLmNyZWF0ZVRleHROb2RlKHEpKQpmb3IocT1ILnFDKHIsMSxudWxsLHUuTikscT1uZXcg
+SC5hNyhxLHEuZ0EocSkscS4kdGkuQygiYTc8YUwuRT4iKSksdD1KLlJFKGEpO3EuRigpOyl7cz1xLmQK
+dC5ueihhLCJiZWZvcmVlbmQiLCImIzgyMDM7LiIsbnVsbCxudWxsKQphLmFwcGVuZENoaWxkKHAuY3Jl
+YXRlVGV4dE5vZGUocykpfX0sCmU6ZnVuY3Rpb24gZSgpe30sClZXOmZ1bmN0aW9uIFZXKGEsYixjKXt0
+aGlzLmE9YQp0aGlzLmI9Ygp0aGlzLmM9Y30sCm9aOmZ1bmN0aW9uIG9aKCl7fSwKanI6ZnVuY3Rpb24g
+anIoKXt9LApxbDpmdW5jdGlvbiBxbCgpe30sCnk4OmZ1bmN0aW9uIHk4KCl7fSwKSGk6ZnVuY3Rpb24g
+SGkoKXt9LApCVDpmdW5jdGlvbiBCVCgpe30sCkw6ZnVuY3Rpb24gTCgpe30sCld4OmZ1bmN0aW9uIFd4
+KGEsYil7dGhpcy5hPWEKdGhpcy5iPWJ9LApBTzpmdW5jdGlvbiBBTyhhKXt0aGlzLmE9YX0sCmROOmZ1
+bmN0aW9uIGROKGEpe3RoaXMuYT1hfSwKSG86ZnVuY3Rpb24gSG8oYSl7dGhpcy5hPWF9LAp4ejpmdW5j
+dGlvbiB4eihhLGIpe3RoaXMuYT1hCnRoaXMuYj1ifSwKSUM6ZnVuY3Rpb24gSUMoKXt9LApMMTpmdW5j
+dGlvbiBMMShhLGIpe3RoaXMuYT1hCnRoaXMuYj1ifSwKblQ6ZnVuY3Rpb24gblQoYSxiLGMpe3RoaXMu
+YT1hCnRoaXMuYj1iCnRoaXMuYz1jfSwKQlo6ZnVuY3Rpb24gQlooYSl7dGhpcy5hPWF9LApHSDpmdW5j
+dGlvbiBHSCgpe30sCkRUOmZ1bmN0aW9uIERUKGEsYixjKXt0aGlzLmE9YQp0aGlzLmI9Ygp0aGlzLmM9
+Y30sCmVIOmZ1bmN0aW9uIGVIKGEpe3RoaXMuYT1hfSwKeXU6ZnVuY3Rpb24geXUoYSxiLGMsZCxlKXt2
+YXIgXz10aGlzCl8uYT1hCl8uYj1iCl8uYz1jCl8uZD1kCl8uZT1lfSwKekQ6ZnVuY3Rpb24gekQoYSl7
+dGhpcy5hPWF9LApUVzpmdW5jdGlvbiBUVygpe30sCnhyOmZ1bmN0aW9uIHhyKGEpe3RoaXMuYT1hfSwK
+RUU6ZnVuY3Rpb24gRUUoYSxiLGMpe3RoaXMuYT1hCnRoaXMuYj1iCnRoaXMuYz1jfSwKUUw6ZnVuY3Rp
+b24gUUwoYSxiKXt0aGlzLmE9YQp0aGlzLmI9Yn0sClZTOmZ1bmN0aW9uIFZTKGEpe3RoaXMuYT1hfSwK
+VEQ6ZnVuY3Rpb24gVEQoKXt9LApBUzpmdW5jdGlvbiBBUyhhLGIpe3RoaXMuYT1hCnRoaXMuYj1ifSwK
+WEE6ZnVuY3Rpb24gWEEoKXt9LAptSzpmdW5jdGlvbihhKXt2YXIgdCxzLHIscSxwLG8sbj1ILlZNKFtd
+LHUuZmgpCmZvcih0PUouSVQodS5SLmEoYSkpO3QuRigpOyl7cz10LmdsKCkKcj1KLlU2KHMpCnE9TC5w
+MihILmMoci5xKHMsInR5cGUiKSkpCnA9SC5jKHIucShzLCJuYW1lIikpCm89ci5xKHMsInN1YnRyZWUi
+KQpvPW89PW51bGw/bnVsbDpMLm1LKG8pCkMuTm0uaShuLG5ldyBMLlpaKHEscCxvLEguYyhyLnEocywi
+cGF0aCIpKSxILmMoci5xKHMsImhyZWYiKSksSC5XWShyLnEocywiZWRpdENvdW50IikpKSl9cmV0dXJu
+IG59LApWRDpmdW5jdGlvbihhKXt2YXIgdCxzLHI9SC5WTShbXSx1LkopCmZvcih0PWEubGVuZ3RoLHM9
+MDtzPGEubGVuZ3RoO2EubGVuZ3RoPT09dHx8KDAsSC5saykoYSksKytzKUMuTm0uaShyLGFbc10uTHQo
+KSkKcmV0dXJuIHJ9LApwMjpmdW5jdGlvbihhKXtzd2l0Y2goYSl7Y2FzZSJkaXJlY3RvcnkiOnJldHVy
+biBDLlkyCmNhc2UiZmlsZSI6cmV0dXJuIEMucmYKZGVmYXVsdDp0aHJvdyBILmIoUC5QVigiVW5yZWNv
+Z25pemVkIG5hdmlnYXRpb24gdHJlZSBub2RlIHR5cGU6ICIrSC5kKGEpKSl9fSwKdnk6ZnVuY3Rpb24o
+YSl7c3dpdGNoKGEpe2Nhc2UgQy5ZMjpyZXR1cm4iZGlyZWN0b3J5IgpjYXNlIEMucmY6cmV0dXJuImZp
+bGUifXRocm93IEguYihQLlBWKCJVbnJlY29nbml6ZWQgbmF2aWdhdGlvbiB0cmVlIG5vZGUgdHlwZTog
+IithLlooMCkpKX0sClpaOmZ1bmN0aW9uIFpaKGEsYixjLGQsZSxmKXt2YXIgXz10aGlzCl8uYT1hCl8u
+Yj1iCl8uYz1jCl8uZD1kCl8uZT1lCl8uZj1mfSwKTzk6ZnVuY3Rpb24gTzkoYSl7dGhpcy5iPWF9LApJ
+VjpmdW5jdGlvbiBJVihhLGIsYyxkKXt2YXIgXz10aGlzCl8uZD1hCl8uZT1iCl8uZj1jCl8ucj1kfX0s
+WD17CkNMOmZ1bmN0aW9uKGEsYil7dmFyIHQscyxyLHEscCxvPWIueFooYSkKYi5oSyhhKQppZihvIT1u
+dWxsKWE9Si5LVihhLG8ubGVuZ3RoKQp0PXUucwpzPUguVk0oW10sdCkKcj1ILlZNKFtdLHQpCnQ9YS5s
+ZW5ndGgKaWYodCE9PTAmJmIucjQoQy54Qi5XKGEsMCkpKXtpZigwPj10KXJldHVybiBILmsoYSwwKQpD
+Lk5tLmkocixhWzBdKQpxPTF9ZWxzZXtDLk5tLmkociwiIikKcT0wfWZvcihwPXE7cDx0OysrcClpZihi
+LnI0KEMueEIuVyhhLHApKSl7Qy5ObS5pKHMsQy54Qi5OaihhLHEscCkpCkMuTm0uaShyLGFbcF0pCnE9
+cCsxfWlmKHE8dCl7Qy5ObS5pKHMsQy54Qi5HKGEscSkpCkMuTm0uaShyLCIiKX1yZXR1cm4gbmV3IFgu
+V0QoYixvLHMscil9LApXRDpmdW5jdGlvbiBXRChhLGIsYyxkKXt2YXIgXz10aGlzCl8uYT1hCl8uYj1i
+Cl8uZD1jCl8uZT1kfSwKcVI6ZnVuY3Rpb24gcVIoYSl7dGhpcy5hPWF9LApJNzpmdW5jdGlvbihhKXty
+ZXR1cm4gbmV3IFguZHYoYSl9LApkdjpmdW5jdGlvbiBkdihhKXt0aGlzLmE9YX19LE89ewpSaDpmdW5j
+dGlvbigpe3ZhciB0LHM9bnVsbAppZihQLnVvKCkuZ0ZpKCkhPT0iZmlsZSIpcmV0dXJuICQuRWIoKQp0
+PVAudW8oKQppZighQy54Qi5UYyh0LmdJaSh0KSwiLyIpKXJldHVybiAkLkViKCkKaWYoUC5LTChzLCJh
+L2IiLHMscyxzLHMscykudDQoKT09PSJhXFxiIilyZXR1cm4gJC5LaygpCnJldHVybiAkLmJEKCl9LAp6
+TDpmdW5jdGlvbiB6TCgpe319LEU9e09GOmZ1bmN0aW9uIE9GKGEsYixjKXt0aGlzLmQ9YQp0aGlzLmU9
+Ygp0aGlzLmY9Y319LEY9e3J1OmZ1bmN0aW9uIHJ1KGEsYixjLGQpe3ZhciBfPXRoaXMKXy5kPWEKXy5l
+PWIKXy5mPWMKXy5yPWR9fSxEPXsKUlg6ZnVuY3Rpb24oKXt2YXIgdCxzLHIscSxwPW51bGwKdHJ5e3A9
+UC51bygpfWNhdGNoKHQpe2lmKHUuZzguYihILlJ1KHQpKSl7cz0kLkZmCmlmKHMhPW51bGwpcmV0dXJu
+IHMKdGhyb3cgdH1lbHNlIHRocm93IHR9aWYoSi5STShwLCQuSTYpKXJldHVybiAkLkZmCiQuSTY9cApp
+ZigkLkhrKCk9PSQuRWIoKSlzPSQuRmY9cC5aSSgiLiIpLlooMCkKZWxzZXtyPXAudDQoKQpxPXIubGVu
+Z3RoLTEKcz0kLkZmPXE9PT0wP3I6Qy54Qi5OaihyLDAscSl9cmV0dXJuIHN9LApucjpmdW5jdGlvbihh
+LGIpe3ZhciB0PW51bGwKcmV0dXJuICQublUoKS5xNygwLGEsYix0LHQsdCx0LHQsdCl9fQp2YXIgdz1b
+QyxILEosUCxXLE0sVSxCLFQsTCxYLE8sRSxGLERdCmh1bmtIZWxwZXJzLnNldEZ1bmN0aW9uTmFtZXNJ
+Zk5lY2Vzc2FyeSh3KQp2YXIgJD17fQpILkZLLnByb3RvdHlwZT17fQpKLnZCLnByb3RvdHlwZT17CkRO
+OmZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9PT1ifSwKZ2lPOmZ1bmN0aW9uKGEpe3JldHVybiBILmVRKGEp
+fSwKWjpmdW5jdGlvbihhKXtyZXR1cm4iSW5zdGFuY2Ugb2YgJyIrSC5kKEgubGgoYSkpKyInIn0sCmU3
+OmZ1bmN0aW9uKGEsYil7dS5vLmEoYikKdGhyb3cgSC5iKFAubHIoYSxiLmdXYSgpLGIuZ25kKCksYi5n
+Vm0oKSkpfX0KSi55RS5wcm90b3R5cGU9ewpaOmZ1bmN0aW9uKGEpe3JldHVybiBTdHJpbmcoYSl9LApn
+aU86ZnVuY3Rpb24oYSl7cmV0dXJuIGE/NTE5MDE4OjIxODE1OX0sCiRpYTI6MX0KSi5ZRS5wcm90b3R5
+cGU9ewpETjpmdW5jdGlvbihhLGIpe3JldHVybiBudWxsPT1ifSwKWjpmdW5jdGlvbihhKXtyZXR1cm4i
+bnVsbCJ9LApnaU86ZnVuY3Rpb24oYSl7cmV0dXJuIDB9LAplNzpmdW5jdGlvbihhLGIpe3JldHVybiB0
+aGlzLlNqKGEsdS5vLmEoYikpfSwKJGljODoxfQpKLk1GLnByb3RvdHlwZT17CmdpTzpmdW5jdGlvbihh
+KXtyZXR1cm4gMH0sClo6ZnVuY3Rpb24oYSl7cmV0dXJuIFN0cmluZyhhKX0sCiRpdm06MX0KSi5pQy5w
+cm90b3R5cGU9e30KSi5rZC5wcm90b3R5cGU9e30KSi5jNS5wcm90b3R5cGU9ewpaOmZ1bmN0aW9uKGEp
+e3ZhciB0PWFbJC53USgpXQppZih0PT1udWxsKXJldHVybiB0aGlzLnQoYSkKcmV0dXJuIkphdmFTY3Jp
+cHQgZnVuY3Rpb24gZm9yICIrSC5kKEouQWModCkpfSwKJFM6ZnVuY3Rpb24oKXtyZXR1cm57ZnVuYzox
+LG9wdDpbLCwsLCwsLCwsLCwsLCwsLF19fSwKJGlFSDoxfQpKLmpkLnByb3RvdHlwZT17Cmk6ZnVuY3Rp
+b24oYSxiKXtILnQ2KGEpLmMuYShiKQppZighIWEuZml4ZWQkbGVuZ3RoKUgudmgoUC5MNCgiYWRkIikp
+CmEucHVzaChiKX0sClc0OmZ1bmN0aW9uKGEsYil7dmFyIHQKaWYoISFhLmZpeGVkJGxlbmd0aClILnZo
+KFAuTDQoInJlbW92ZUF0IikpCnQ9YS5sZW5ndGgKaWYoYj49dCl0aHJvdyBILmIoUC5PNyhiLG51bGwp
+KQpyZXR1cm4gYS5zcGxpY2UoYiwxKVswXX0sClVHOmZ1bmN0aW9uKGEsYixjKXt2YXIgdCxzLHIKSC50
+NihhKS5DKCJjWDwxPiIpLmEoYykKaWYoISFhLmZpeGVkJGxlbmd0aClILnZoKFAuTDQoImluc2VydEFs
+bCIpKQp0PWEubGVuZ3RoClAud0EoYiwwLHQsImluZGV4IikKcz1jLmxlbmd0aAp0aGlzLnNBKGEsdCtz
+KQpyPWIrcwp0aGlzLllXKGEscixhLmxlbmd0aCxhLGIpCnRoaXMudmcoYSxiLHIsYyl9LAptdjpmdW5j
+dGlvbihhKXtpZighIWEuZml4ZWQkbGVuZ3RoKUgudmgoUC5MNCgicmVtb3ZlTGFzdCIpKQppZihhLmxl
+bmd0aD09PTApdGhyb3cgSC5iKEguSFkoYSwtMSkpCnJldHVybiBhLnBvcCgpfSwKRlY6ZnVuY3Rpb24o
+YSxiKXt2YXIgdApILnQ2KGEpLkMoImNYPDE+IikuYShiKQppZighIWEuZml4ZWQkbGVuZ3RoKUgudmgo
+UC5MNCgiYWRkQWxsIikpCmZvcih0PUouSVQoYik7dC5GKCk7KWEucHVzaCh0LmdsKCkpfSwKSzpmdW5j
+dGlvbihhLGIpe3ZhciB0LHMKSC50NihhKS5DKCJ+KDEpIikuYShiKQp0PWEubGVuZ3RoCmZvcihzPTA7
+czx0Oysrcyl7Yi4kMShhW3NdKQppZihhLmxlbmd0aCE9PXQpdGhyb3cgSC5iKFAuYTQoYSkpfX0sCkUy
+OmZ1bmN0aW9uKGEsYixjKXt2YXIgdD1ILnQ2KGEpCnJldHVybiBuZXcgSC5sSihhLHQuS3EoYykuQygi
+MSgyKSIpLmEoYiksdC5DKCJAPDE+IikuS3EoYykuQygibEo8MSwyPiIpKX0sCnpWOmZ1bmN0aW9uKGEs
+Yil7dmFyIHQscz1uZXcgQXJyYXkoYS5sZW5ndGgpCnMuZml4ZWQkbGVuZ3RoPUFycmF5CmZvcih0PTA7
+dDxhLmxlbmd0aDsrK3QpdGhpcy5ZKHMsdCxILmQoYVt0XSkpCnJldHVybiBzLmpvaW4oYil9LApOMDpm
+dW5jdGlvbihhLGIsYyxkKXt2YXIgdCxzLHIKZC5hKGIpCkgudDYoYSkuS3EoZCkuQygiMSgxLDIpIiku
+YShjKQp0PWEubGVuZ3RoCmZvcihzPWIscj0wO3I8dDsrK3Ipe3M9Yy4kMihzLGFbcl0pCmlmKGEubGVu
+Z3RoIT09dCl0aHJvdyBILmIoUC5hNChhKSl9cmV0dXJuIHN9LApIdDpmdW5jdGlvbihhLGIpe3ZhciB0
+LHMscixxLHAsbz1ILnQ2KGEpCm8uQygiYTIoMSkiKS5hKGIpCm8uQygiMSgpIikuYShudWxsKQp0PWEu
+bGVuZ3RoCmZvcihzPW51bGwscj0hMSxxPTA7cTx0OysrcSl7cD1hW3FdCmlmKEgub1QoYi4kMShwKSkp
+e2lmKHIpdGhyb3cgSC5iKEguZFUoKSkKcz1wCnI9ITB9aWYodCE9PWEubGVuZ3RoKXRocm93IEguYihQ
+LmE0KGEpKX1pZihyKXJldHVybiBzCnRocm93IEguYihILldwKCkpfSwKRTpmdW5jdGlvbihhLGIpe2lm
+KGI8MHx8Yj49YS5sZW5ndGgpcmV0dXJuIEguayhhLGIpCnJldHVybiBhW2JdfSwKRDY6ZnVuY3Rpb24o
+YSxiLGMpe2lmKGI8MHx8Yj5hLmxlbmd0aCl0aHJvdyBILmIoUC5URShiLDAsYS5sZW5ndGgsInN0YXJ0
+IixudWxsKSkKaWYoYzxifHxjPmEubGVuZ3RoKXRocm93IEguYihQLlRFKGMsYixhLmxlbmd0aCwiZW5k
+IixudWxsKSkKaWYoYj09PWMpcmV0dXJuIEguVk0oW10sSC50NihhKSkKcmV0dXJuIEguVk0oYS5zbGlj
+ZShiLGMpLEgudDYoYSkpfSwKZ3RIOmZ1bmN0aW9uKGEpe2lmKGEubGVuZ3RoPjApcmV0dXJuIGFbMF0K
+dGhyb3cgSC5iKEguV3AoKSl9LApnclo6ZnVuY3Rpb24oYSl7dmFyIHQ9YS5sZW5ndGgKaWYodD4wKXJl
+dHVybiBhW3QtMV0KdGhyb3cgSC5iKEguV3AoKSl9LApZVzpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciB0
+LHMscj1ILnQ2KGEpCnIuQygiY1g8MT4iKS5hKGQpCmlmKCEhYS5pbW11dGFibGUkbGlzdClILnZoKFAu
+TDQoInNldFJhbmdlIikpClAuakIoYixjLGEubGVuZ3RoKQp0PWMtYgppZih0PT09MClyZXR1cm4KUC5r
+MShlLCJza2lwQ291bnQiKQpyLkMoInpNPDE+IikuYShkKQpyPUouVTYoZCkKaWYoZSt0PnIuZ0EoZCkp
+dGhyb3cgSC5iKEguYXIoKSkKaWYoZTxiKWZvcihzPXQtMTtzPj0wOy0tcylhW2Irc109ci5xKGQsZStz
+KQplbHNlIGZvcihzPTA7czx0OysrcylhW2Irc109ci5xKGQsZStzKX0sCnZnOmZ1bmN0aW9uKGEsYixj
+LGQpe3JldHVybiB0aGlzLllXKGEsYixjLGQsMCl9LApWcjpmdW5jdGlvbihhLGIpe3ZhciB0LHMKSC50
+NihhKS5DKCJhMigxKSIpLmEoYikKdD1hLmxlbmd0aApmb3Iocz0wO3M8dDsrK3Mpe2lmKEgub1QoYi4k
+MShhW3NdKSkpcmV0dXJuITAKaWYoYS5sZW5ndGghPT10KXRocm93IEguYihQLmE0KGEpKX1yZXR1cm4h
+MX0sCnRnOmZ1bmN0aW9uKGEsYil7dmFyIHQKZm9yKHQ9MDt0PGEubGVuZ3RoOysrdClpZihKLlJNKGFb
+dF0sYikpcmV0dXJuITAKcmV0dXJuITF9LApnbDA6ZnVuY3Rpb24oYSl7cmV0dXJuIGEubGVuZ3RoPT09
+MH0sCmdvcjpmdW5jdGlvbihhKXtyZXR1cm4gYS5sZW5ndGghPT0wfSwKWjpmdW5jdGlvbihhKXtyZXR1
+cm4gUC5XRShhLCJbIiwiXSIpfSwKZ2t6OmZ1bmN0aW9uKGEpe3JldHVybiBuZXcgSi5tMShhLGEubGVu
+Z3RoLEgudDYoYSkuQygibTE8MT4iKSl9LApnaU86ZnVuY3Rpb24oYSl7cmV0dXJuIEguZVEoYSl9LApn
+QTpmdW5jdGlvbihhKXtyZXR1cm4gYS5sZW5ndGh9LApzQTpmdW5jdGlvbihhLGIpe2lmKCEhYS5maXhl
+ZCRsZW5ndGgpSC52aChQLkw0KCJzZXQgbGVuZ3RoIikpCmlmKGI8MCl0aHJvdyBILmIoUC5URShiLDAs
+bnVsbCwibmV3TGVuZ3RoIixudWxsKSkKYS5sZW5ndGg9Yn0sCnE6ZnVuY3Rpb24oYSxiKXtILldZKGIp
+CmlmKGI+PWEubGVuZ3RofHxiPDApdGhyb3cgSC5iKEguSFkoYSxiKSkKcmV0dXJuIGFbYl19LApZOmZ1
+bmN0aW9uKGEsYixjKXtILnQ2KGEpLmMuYShjKQppZighIWEuaW1tdXRhYmxlJGxpc3QpSC52aChQLkw0
+KCJpbmRleGVkIHNldCIpKQppZihiPj1hLmxlbmd0aHx8YjwwKXRocm93IEguYihILkhZKGEsYikpCmFb
+Yl09Y30sCiRpYlE6MSwKJGljWDoxLAokaXpNOjF9CkouUG8ucHJvdG90eXBlPXt9CkoubTEucHJvdG90
+eXBlPXsKZ2w6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kfSwKRjpmdW5jdGlvbigpe3ZhciB0LHM9dGhp
+cyxyPXMuYSxxPXIubGVuZ3RoCmlmKHMuYiE9PXEpdGhyb3cgSC5iKEgubGsocikpCnQ9cy5jCmlmKHQ+
+PXEpe3Muc0gobnVsbCkKcmV0dXJuITF9cy5zSChyW3RdKTsrK3MuYwpyZXR1cm4hMH0sCnNIOmZ1bmN0
+aW9uKGEpe3RoaXMuZD10aGlzLiR0aS5jLmEoYSl9LAokaUFuOjF9CkoucUkucHJvdG90eXBlPXsKeXU6
+ZnVuY3Rpb24oYSl7dmFyIHQKaWYoYT49LTIxNDc0ODM2NDgmJmE8PTIxNDc0ODM2NDcpcmV0dXJuIGF8
+MAppZihpc0Zpbml0ZShhKSl7dD1hPDA/TWF0aC5jZWlsKGEpOk1hdGguZmxvb3IoYSkKcmV0dXJuIHQr
+MH10aHJvdyBILmIoUC5MNCgiIithKyIudG9JbnQoKSIpKX0sCnpROmZ1bmN0aW9uKGEpe2lmKGE+MCl7
+aWYoYSE9PTEvMClyZXR1cm4gTWF0aC5yb3VuZChhKX1lbHNlIGlmKGE+LTEvMClyZXR1cm4gMC1NYXRo
+LnJvdW5kKDAtYSkKdGhyb3cgSC5iKFAuTDQoIiIrYSsiLnJvdW5kKCkiKSl9LApXWjpmdW5jdGlvbihh
+LGIpe3ZhciB0LHMscixxCmlmKGI8Mnx8Yj4zNil0aHJvdyBILmIoUC5URShiLDIsMzYsInJhZGl4Iixu
+dWxsKSkKdD1hLnRvU3RyaW5nKGIpCmlmKEMueEIubSh0LHQubGVuZ3RoLTEpIT09NDEpcmV0dXJuIHQK
+cz0vXihbXGRhLXpdKykoPzpcLihbXGRhLXpdKykpP1woZVwrKFxkKylcKSQvLmV4ZWModCkKaWYocz09
+bnVsbClILnZoKFAuTDQoIlVuZXhwZWN0ZWQgdG9TdHJpbmcgcmVzdWx0OiAiK3QpKQpyPXMubGVuZ3Ro
+CmlmKDE+PXIpcmV0dXJuIEguayhzLDEpCnQ9c1sxXQppZigzPj1yKXJldHVybiBILmsocywzKQpxPStz
+WzNdCnI9c1syXQppZihyIT1udWxsKXt0Kz1yCnEtPXIubGVuZ3RofXJldHVybiB0K0MueEIuSXgoIjAi
+LHEpfSwKWjpmdW5jdGlvbihhKXtpZihhPT09MCYmMS9hPDApcmV0dXJuIi0wLjAiCmVsc2UgcmV0dXJu
+IiIrYX0sCmdpTzpmdW5jdGlvbihhKXt2YXIgdCxzLHIscSxwPWF8MAppZihhPT09cClyZXR1cm4gNTM2
+ODcwOTExJnAKdD1NYXRoLmFicyhhKQpzPU1hdGgubG9nKHQpLzAuNjkzMTQ3MTgwNTU5OTQ1M3wwCnI9
+TWF0aC5wb3coMixzKQpxPXQ8MT90L3I6ci90CnJldHVybiA1MzY4NzA5MTEmKChxKjkwMDcxOTkyNTQ3
+NDA5OTJ8MCkrKHEqMzU0MjI0MzE4MTE3NjUyMXwwKSkqNTk5MTk3K3MqMTI1OX0sCnpZOmZ1bmN0aW9u
+KGEsYil7dmFyIHQ9YSViCmlmKHQ9PT0wKXJldHVybiAwCmlmKHQ+MClyZXR1cm4gdAppZihiPDApcmV0
+dXJuIHQtYgplbHNlIHJldHVybiB0K2J9LAp3RzpmdW5jdGlvbihhLGIpe3ZhciB0CmlmKGE+MCl0PXRo
+aXMucDMoYSxiKQplbHNle3Q9Yj4zMT8zMTpiCnQ9YT4+dD4+PjB9cmV0dXJuIHR9LApiZjpmdW5jdGlv
+bihhLGIpe2lmKGI8MCl0aHJvdyBILmIoSC5JKGIpKQpyZXR1cm4gdGhpcy5wMyhhLGIpfSwKcDM6ZnVu
+Y3Rpb24oYSxiKXtyZXR1cm4gYj4zMT8wOmE+Pj5ifSwKJGlDUDoxLAokaWxmOjF9CkoudXIucHJvdG90
+eXBlPXskaUlmOjF9CkouVkEucHJvdG90eXBlPXt9CkouRHIucHJvdG90eXBlPXsKbTpmdW5jdGlvbihh
+LGIpe2lmKGI8MCl0aHJvdyBILmIoSC5IWShhLGIpKQppZihiPj1hLmxlbmd0aClILnZoKEguSFkoYSxi
+KSkKcmV0dXJuIGEuY2hhckNvZGVBdChiKX0sClc6ZnVuY3Rpb24oYSxiKXtpZihiPj1hLmxlbmd0aCl0
+aHJvdyBILmIoSC5IWShhLGIpKQpyZXR1cm4gYS5jaGFyQ29kZUF0KGIpfSwKZGQ6ZnVuY3Rpb24oYSxi
+KXtyZXR1cm4gbmV3IEguTkYoYixhLDApfSwKaDpmdW5jdGlvbihhLGIpe2lmKHR5cGVvZiBiIT0ic3Ry
+aW5nIil0aHJvdyBILmIoUC5MMyhiLG51bGwsbnVsbCkpCnJldHVybiBhK2J9LApUYzpmdW5jdGlvbihh
+LGIpe3ZhciB0PWIubGVuZ3RoLHM9YS5sZW5ndGgKaWYodD5zKXJldHVybiExCnJldHVybiBiPT09dGhp
+cy5HKGEscy10KX0sCmk3OmZ1bmN0aW9uKGEsYixjLGQpe3ZhciB0LHMKYz1QLmpCKGIsYyxhLmxlbmd0
+aCkKdD1hLnN1YnN0cmluZygwLGIpCnM9YS5zdWJzdHJpbmcoYykKcmV0dXJuIHQrZCtzfSwKUWk6ZnVu
+Y3Rpb24oYSxiLGMpe3ZhciB0CmlmKCFILm9rKGMpKUgudmgoSC5JKGMpKQppZih0eXBlb2YgYyE9PSJu
+dW1iZXIiKXJldHVybiBjLkooKQppZihjPDB8fGM+YS5sZW5ndGgpdGhyb3cgSC5iKFAuVEUoYywwLGEu
+bGVuZ3RoLG51bGwsbnVsbCkpCnQ9YytiLmxlbmd0aAppZih0PmEubGVuZ3RoKXJldHVybiExCnJldHVy
+biBiPT09YS5zdWJzdHJpbmcoYyx0KX0sCm46ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5RaShhLGIs
+MCl9LApOajpmdW5jdGlvbihhLGIsYyl7aWYoIUgub2soYikpSC52aChILkkoYikpCmlmKGM9PW51bGwp
+Yz1hLmxlbmd0aAppZih0eXBlb2YgYiE9PSJudW1iZXIiKXJldHVybiBiLkooKQppZihiPDApdGhyb3cg
+SC5iKFAuTzcoYixudWxsKSkKaWYoYj5jKXRocm93IEguYihQLk83KGIsbnVsbCkpCmlmKGM+YS5sZW5n
+dGgpdGhyb3cgSC5iKFAuTzcoYyxudWxsKSkKcmV0dXJuIGEuc3Vic3RyaW5nKGIsYyl9LApHOmZ1bmN0
+aW9uKGEsYil7cmV0dXJuIHRoaXMuTmooYSxiLG51bGwpfSwKaGM6ZnVuY3Rpb24oYSl7cmV0dXJuIGEu
+dG9Mb3dlckNhc2UoKX0sCmJTOmZ1bmN0aW9uKGEpe3ZhciB0LHMscixxPWEudHJpbSgpLHA9cS5sZW5n
+dGgKaWYocD09PTApcmV0dXJuIHEKaWYodGhpcy5XKHEsMCk9PT0xMzMpe3Q9Si5tbShxLDEpCmlmKHQ9
+PT1wKXJldHVybiIifWVsc2UgdD0wCnM9cC0xCnI9dGhpcy5tKHEscyk9PT0xMzM/Si5jMShxLHMpOnAK
+aWYodD09PTAmJnI9PT1wKXJldHVybiBxCnJldHVybiBxLnN1YnN0cmluZyh0LHIpfSwKSXg6ZnVuY3Rp
+b24oYSxiKXt2YXIgdCxzCmlmKDA+PWIpcmV0dXJuIiIKaWYoYj09PTF8fGEubGVuZ3RoPT09MClyZXR1
+cm4gYQppZihiIT09Yj4+PjApdGhyb3cgSC5iKEMuRXEpCmZvcih0PWEscz0iIjshMDspe2lmKChiJjEp
+PT09MSlzPXQrcwpiPWI+Pj4xCmlmKGI9PT0wKWJyZWFrCnQrPXR9cmV0dXJuIHN9LApYVTpmdW5jdGlv
+bihhLGIsYyl7dmFyIHQKaWYoYzwwfHxjPmEubGVuZ3RoKXRocm93IEguYihQLlRFKGMsMCxhLmxlbmd0
+aCxudWxsLG51bGwpKQp0PWEuaW5kZXhPZihiLGMpCnJldHVybiB0fSwKT1k6ZnVuY3Rpb24oYSxiKXty
+ZXR1cm4gdGhpcy5YVShhLGIsMCl9LApQazpmdW5jdGlvbihhLGIsYyl7dmFyIHQscwppZihjPT1udWxs
+KWM9YS5sZW5ndGgKZWxzZSBpZihjPDB8fGM+YS5sZW5ndGgpdGhyb3cgSC5iKFAuVEUoYywwLGEubGVu
+Z3RoLG51bGwsbnVsbCkpCnQ9Yi5sZW5ndGgKcz1hLmxlbmd0aAppZihjK3Q+cyljPXMtdApyZXR1cm4g
+YS5sYXN0SW5kZXhPZihiLGMpfSwKY246ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5QayhhLGIsbnVs
+bCl9LApJczpmdW5jdGlvbihhLGIsYyl7dmFyIHQ9YS5sZW5ndGgKaWYoYz50KXRocm93IEguYihQLlRF
+KGMsMCx0LG51bGwsbnVsbCkpCnJldHVybiBILm0yKGEsYixjKX0sCnRnOmZ1bmN0aW9uKGEsYil7cmV0
+dXJuIHRoaXMuSXMoYSxiLDApfSwKWjpmdW5jdGlvbihhKXtyZXR1cm4gYX0sCmdpTzpmdW5jdGlvbihh
+KXt2YXIgdCxzLHIKZm9yKHQ9YS5sZW5ndGgscz0wLHI9MDtyPHQ7KytyKXtzPTUzNjg3MDkxMSZzK2Eu
+Y2hhckNvZGVBdChyKQpzPTUzNjg3MDkxMSZzKygoNTI0Mjg3JnMpPDwxMCkKc149cz4+Nn1zPTUzNjg3
+MDkxMSZzKygoNjcxMDg4NjMmcyk8PDMpCnNePXM+PjExCnJldHVybiA1MzY4NzA5MTEmcysoKDE2Mzgz
+JnMpPDwxNSl9LApnQTpmdW5jdGlvbihhKXtyZXR1cm4gYS5sZW5ndGh9LApxOmZ1bmN0aW9uKGEsYil7
+SC5XWShiKQppZihiPj1hLmxlbmd0aHx8ITEpdGhyb3cgSC5iKEguSFkoYSxiKSkKcmV0dXJuIGFbYl19
+LAokaXZYOjEsCiRpcVU6MX0KSC5xai5wcm90b3R5cGU9ewpnQTpmdW5jdGlvbihhKXtyZXR1cm4gdGhp
+cy5hLmxlbmd0aH0sCnE6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gQy54Qi5tKHRoaXMuYSxILldZKGIpKX19
+CkguYlEucHJvdG90eXBlPXt9CkguYUwucHJvdG90eXBlPXsKZ2t6OmZ1bmN0aW9uKGEpe3ZhciB0PXRo
+aXMKcmV0dXJuIG5ldyBILmE3KHQsdC5nQSh0KSxILkxoKHQpLkMoImE3PGFMLkU+IikpfSwKZ2wwOmZ1
+bmN0aW9uKGEpe3JldHVybiB0aGlzLmdBKHRoaXMpPT09MH0sCnpWOmZ1bmN0aW9uKGEsYil7dmFyIHQs
+cyxyLHE9dGhpcyxwPXEuZ0EocSkKaWYoYi5sZW5ndGghPT0wKXtpZihwPT09MClyZXR1cm4iIgp0PUgu
+ZChxLkUoMCwwKSkKaWYocCE9PXEuZ0EocSkpdGhyb3cgSC5iKFAuYTQocSkpCmZvcihzPXQscj0xO3I8
+cDsrK3Ipe3M9cytiK0guZChxLkUoMCxyKSkKaWYocCE9PXEuZ0EocSkpdGhyb3cgSC5iKFAuYTQocSkp
+fXJldHVybiBzLmNoYXJDb2RlQXQoMCk9PTA/czpzfWVsc2V7Zm9yKHI9MCxzPSIiO3I8cDsrK3Ipe3Mr
+PUguZChxLkUoMCxyKSkKaWYocCE9PXEuZ0EocSkpdGhyb3cgSC5iKFAuYTQocSkpfXJldHVybiBzLmNo
+YXJDb2RlQXQoMCk9PTA/czpzfX0sCmV2OmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuR0coMCxILkxo
+KHRoaXMpLkMoImEyKGFMLkUpIikuYShiKSl9LApFMjpmdW5jdGlvbihhLGIsYyl7dmFyIHQ9SC5MaCh0
+aGlzKQpyZXR1cm4gbmV3IEgubEoodGhpcyx0LktxKGMpLkMoIjEoYUwuRSkiKS5hKGIpLHQuQygiQDxh
+TC5FPiIpLktxKGMpLkMoImxKPDEsMj4iKSl9LAp0dDpmdW5jdGlvbihhLGIpe3ZhciB0LHM9dGhpcyxy
+PUguVk0oW10sSC5MaChzKS5DKCJqZDxhTC5FPiIpKQpDLk5tLnNBKHIscy5nQShzKSkKZm9yKHQ9MDt0
+PHMuZ0Eocyk7Kyt0KUMuTm0uWShyLHQscy5FKDAsdCkpCnJldHVybiByfSwKYnI6ZnVuY3Rpb24oYSl7
+cmV0dXJuIHRoaXMudHQoYSwhMCl9fQpILm5ILnByb3RvdHlwZT17CmdVRDpmdW5jdGlvbigpe3ZhciB0
+PUouSCh0aGlzLmEpLHM9dGhpcy5jCmlmKHM9PW51bGx8fHM+dClyZXR1cm4gdApyZXR1cm4gc30sCmdB
+czpmdW5jdGlvbigpe3ZhciB0PUouSCh0aGlzLmEpLHM9dGhpcy5iCmlmKHM+dClyZXR1cm4gdApyZXR1
+cm4gc30sCmdBOmZ1bmN0aW9uKGEpe3ZhciB0LHM9Si5IKHRoaXMuYSkscj10aGlzLmIKaWYocj49cyly
+ZXR1cm4gMAp0PXRoaXMuYwppZih0PT1udWxsfHx0Pj1zKXJldHVybiBzLXIKaWYodHlwZW9mIHQhPT0i
+bnVtYmVyIilyZXR1cm4gdC5ITigpCnJldHVybiB0LXJ9LApFOmZ1bmN0aW9uKGEsYil7dmFyIHQscz10
+aGlzLHI9cy5nQXMoKStiCmlmKGI+PTApe3Q9cy5nVUQoKQppZih0eXBlb2YgdCE9PSJudW1iZXIiKXJl
+dHVybiBILnBZKHQpCnQ9cj49dH1lbHNlIHQ9ITAKaWYodCl0aHJvdyBILmIoUC50KGIscywiaW5kZXgi
+LG51bGwsbnVsbCkpCnJldHVybiBKLkdBKHMuYSxyKX19CkguYTcucHJvdG90eXBlPXsKZ2w6ZnVuY3Rp
+b24oKXtyZXR1cm4gdGhpcy5kfSwKRjpmdW5jdGlvbigpe3ZhciB0LHM9dGhpcyxyPXMuYSxxPUouVTYo
+cikscD1xLmdBKHIpCmlmKHMuYiE9PXApdGhyb3cgSC5iKFAuYTQocikpCnQ9cy5jCmlmKHQ+PXApe3Mu
+c0kobnVsbCkKcmV0dXJuITF9cy5zSShxLkUocix0KSk7KytzLmMKcmV0dXJuITB9LApzSTpmdW5jdGlv
+bihhKXt0aGlzLmQ9dGhpcy4kdGkuYy5hKGEpfSwKJGlBbjoxfQpILmkxLnByb3RvdHlwZT17Cmdrejpm
+dW5jdGlvbihhKXt2YXIgdD1ILkxoKHRoaXMpCnJldHVybiBuZXcgSC5NSChKLklUKHRoaXMuYSksdGhp
+cy5iLHQuQygiQDwxPiIpLktxKHQuUVsxXSkuQygiTUg8MSwyPiIpKX0sCmdBOmZ1bmN0aW9uKGEpe3Jl
+dHVybiBKLkgodGhpcy5hKX19CkgueHkucHJvdG90eXBlPXskaWJROjF9CkguTUgucHJvdG90eXBlPXsK
+RjpmdW5jdGlvbigpe3ZhciB0PXRoaXMscz10LmIKaWYocy5GKCkpe3Quc0kodC5jLiQxKHMuZ2woKSkp
+CnJldHVybiEwfXQuc0kobnVsbCkKcmV0dXJuITF9LApnbDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmF9
+LApzSTpmdW5jdGlvbihhKXt0aGlzLmE9dGhpcy4kdGkuUVsxXS5hKGEpfX0KSC5sSi5wcm90b3R5cGU9
+ewpnQTpmdW5jdGlvbihhKXtyZXR1cm4gSi5IKHRoaXMuYSl9LApFOmZ1bmN0aW9uKGEsYil7cmV0dXJu
+IHRoaXMuYi4kMShKLkdBKHRoaXMuYSxiKSl9fQpILlU1LnByb3RvdHlwZT17CmdrejpmdW5jdGlvbihh
+KXtyZXR1cm4gbmV3IEgudkcoSi5JVCh0aGlzLmEpLHRoaXMuYix0aGlzLiR0aS5DKCJ2RzwxPiIpKX19
+CkgudkcucHJvdG90eXBlPXsKRjpmdW5jdGlvbigpe3ZhciB0LHMKZm9yKHQ9dGhpcy5hLHM9dGhpcy5i
+O3QuRigpOylpZihILm9UKHMuJDEodC5nbCgpKSkpcmV0dXJuITAKcmV0dXJuITF9LApnbDpmdW5jdGlv
+bigpe3JldHVybiB0aGlzLmEuZ2woKX19CkguU1UucHJvdG90eXBlPXt9CkguUmUucHJvdG90eXBlPXsK
+WTpmdW5jdGlvbihhLGIsYyl7SC5MaCh0aGlzKS5DKCJSZS5FIikuYShjKQp0aHJvdyBILmIoUC5MNCgi
+Q2Fubm90IG1vZGlmeSBhbiB1bm1vZGlmaWFibGUgbGlzdCIpKX19CkgudzIucHJvdG90eXBlPXt9Ckgu
+d3YucHJvdG90eXBlPXsKZ2lPOmZ1bmN0aW9uKGEpe3ZhciB0PXRoaXMuX2hhc2hDb2RlCmlmKHQhPW51
+bGwpcmV0dXJuIHQKdD01MzY4NzA5MTEmNjY0NTk3KkouaGYodGhpcy5hKQp0aGlzLl9oYXNoQ29kZT10
+CnJldHVybiB0fSwKWjpmdW5jdGlvbihhKXtyZXR1cm4nU3ltYm9sKCInK0guZCh0aGlzLmEpKyciKSd9
+LApETjpmdW5jdGlvbihhLGIpe2lmKGI9PW51bGwpcmV0dXJuITEKcmV0dXJuIGIgaW5zdGFuY2VvZiBI
+Lnd2JiZ0aGlzLmE9PWIuYX0sCiRpR0Q6MX0KSC5QRC5wcm90b3R5cGU9e30KSC5XVS5wcm90b3R5cGU9
+ewpnbDA6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZ0EodGhpcyk9PT0wfSwKWjpmdW5jdGlvbihhKXty
+ZXR1cm4gUC5uTyh0aGlzKX0sClk6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0PUguTGgodGhpcykKdC5jLmEo
+YikKdC5RWzFdLmEoYykKcmV0dXJuIEguZGMoKX0sCmdQdTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5x
+NChhLEguTGgodGhpcykuQygiTjM8MSwyPiIpKX0sCnE0OmZ1bmN0aW9uKGEsYil7dmFyIHQ9dGhpcwpy
+ZXR1cm4gUC5sMChmdW5jdGlvbigpe3ZhciBzPWEKdmFyIHI9MCxxPTEscCxvLG4sbQpyZXR1cm4gZnVu
+Y3Rpb24gJGFzeW5jJGdQdShjLGQpe2lmKGM9PT0xKXtwPWQKcj1xfXdoaWxlKHRydWUpc3dpdGNoKHIp
+e2Nhc2UgMDpvPXQuZ1YoKSxvPW8uZ2t6KG8pLG49SC5MaCh0KSxuPW4uQygiQDwxPiIpLktxKG4uUVsx
+XSkuQygiTjM8MSwyPiIpCmNhc2UgMjppZighby5GKCkpe3I9MwpicmVha31tPW8uZ2woKQpyPTQKcmV0
+dXJuIG5ldyBQLk4zKG0sdC5xKDAsbSksbikKY2FzZSA0OnI9MgpicmVhawpjYXNlIDM6cmV0dXJuIFAu
+VGgoKQpjYXNlIDE6cmV0dXJuIFAuWW0ocCl9fX0sYil9LAokaVowOjF9CkguTFAucHJvdG90eXBlPXsK
+Z0E6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuYX0sCng0OmZ1bmN0aW9uKGEpe2lmKHR5cGVvZiBhIT0i
+c3RyaW5nIilyZXR1cm4hMQppZigiX19wcm90b19fIj09PWEpcmV0dXJuITEKcmV0dXJuIHRoaXMuYi5o
+YXNPd25Qcm9wZXJ0eShhKX0sCnE6ZnVuY3Rpb24oYSxiKXtpZighdGhpcy54NChiKSlyZXR1cm4gbnVs
+bApyZXR1cm4gdGhpcy5EKGIpfSwKRDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5iW0guYyhhKV19LApL
+OmZ1bmN0aW9uKGEsYil7dmFyIHQscyxyLHEscD1ILkxoKHRoaXMpCnAuQygifigxLDIpIikuYShiKQp0
+PXRoaXMuYwpmb3Iocz10Lmxlbmd0aCxwPXAuUVsxXSxyPTA7cjxzOysrcil7cT10W3JdCmIuJDIocSxw
+LmEodGhpcy5EKHEpKSl9fSwKZ1Y6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEguWFIodGhpcyxILkxoKHRo
+aXMpLkMoIlhSPDE+IikpfX0KSC5YUi5wcm90b3R5cGU9ewpna3o6ZnVuY3Rpb24oYSl7dmFyIHQ9dGhp
+cy5hLmMKcmV0dXJuIG5ldyBKLm0xKHQsdC5sZW5ndGgsSC50Nih0KS5DKCJtMTwxPiIpKX0sCmdBOmZ1
+bmN0aW9uKGEpe3JldHVybiB0aGlzLmEuYy5sZW5ndGh9fQpILkxJLnByb3RvdHlwZT17CmdXYTpmdW5j
+dGlvbigpe3ZhciB0PXRoaXMuYQpyZXR1cm4gdH0sCmduZDpmdW5jdGlvbigpe3ZhciB0LHMscixxLHA9
+dGhpcwppZihwLmM9PT0xKXJldHVybiBDLmhVCnQ9cC5kCnM9dC5sZW5ndGgtcC5lLmxlbmd0aC1wLmYK
+aWYocz09PTApcmV0dXJuIEMuaFUKcj1bXQpmb3IocT0wO3E8czsrK3Epe2lmKHE+PXQubGVuZ3RoKXJl
+dHVybiBILmsodCxxKQpyLnB1c2godFtxXSl9cmV0dXJuIEoudW4ocil9LApnVm06ZnVuY3Rpb24oKXt2
+YXIgdCxzLHIscSxwLG8sbixtLGw9dGhpcwppZihsLmMhPT0wKXJldHVybiBDLkR4CnQ9bC5lCnM9dC5s
+ZW5ndGgKcj1sLmQKcT1yLmxlbmd0aC1zLWwuZgppZihzPT09MClyZXR1cm4gQy5EeApwPW5ldyBILk41
+KHUuZW8pCmZvcihvPTA7bzxzOysrbyl7aWYobz49dC5sZW5ndGgpcmV0dXJuIEguayh0LG8pCm49dFtv
+XQptPXErbwppZihtPDB8fG0+PXIubGVuZ3RoKXJldHVybiBILmsocixtKQpwLlkoMCxuZXcgSC53dihu
+KSxyW21dKX1yZXR1cm4gbmV3IEguUEQocCx1LmdGKX0sCiRpdlE6MX0KSC5Dai5wcm90b3R5cGU9ewok
+MjpmdW5jdGlvbihhLGIpe3ZhciB0CkguYyhhKQp0PXRoaXMuYQp0LmI9dC5iKyIkIitILmQoYSkKQy5O
+bS5pKHRoaXMuYixhKQpDLk5tLmkodGhpcy5jLGIpOysrdC5hfSwKJFM6MTR9CkguZjkucHJvdG90eXBl
+PXsKcVM6ZnVuY3Rpb24oYSl7dmFyIHQscyxyPXRoaXMscT1uZXcgUmVnRXhwKHIuYSkuZXhlYyhhKQpp
+ZihxPT1udWxsKXJldHVybiBudWxsCnQ9T2JqZWN0LmNyZWF0ZShudWxsKQpzPXIuYgppZihzIT09LTEp
+dC5hcmd1bWVudHM9cVtzKzFdCnM9ci5jCmlmKHMhPT0tMSl0LmFyZ3VtZW50c0V4cHI9cVtzKzFdCnM9
+ci5kCmlmKHMhPT0tMSl0LmV4cHI9cVtzKzFdCnM9ci5lCmlmKHMhPT0tMSl0Lm1ldGhvZD1xW3MrMV0K
+cz1yLmYKaWYocyE9PS0xKXQucmVjZWl2ZXI9cVtzKzFdCnJldHVybiB0fX0KSC5XMC5wcm90b3R5cGU9
+ewpaOmZ1bmN0aW9uKGEpe3ZhciB0PXRoaXMuYgppZih0PT1udWxsKXJldHVybiJOb1N1Y2hNZXRob2RF
+cnJvcjogIitILmQodGhpcy5hKQpyZXR1cm4iTm9TdWNoTWV0aG9kRXJyb3I6IG1ldGhvZCBub3QgZm91
+bmQ6ICciK3QrIicgb24gbnVsbCJ9fQpILmF6LnByb3RvdHlwZT17Clo6ZnVuY3Rpb24oYSl7dmFyIHQs
+cz10aGlzLHI9Ik5vU3VjaE1ldGhvZEVycm9yOiBtZXRob2Qgbm90IGZvdW5kOiAnIixxPXMuYgppZihx
+PT1udWxsKXJldHVybiJOb1N1Y2hNZXRob2RFcnJvcjogIitILmQocy5hKQp0PXMuYwppZih0PT1udWxs
+KXJldHVybiByK3ErIicgKCIrSC5kKHMuYSkrIikiCnJldHVybiByK3ErIicgb24gJyIrdCsiJyAoIitI
+LmQocy5hKSsiKSJ9fQpILnZWLnByb3RvdHlwZT17Clo6ZnVuY3Rpb24oYSl7dmFyIHQ9dGhpcy5hCnJl
+dHVybiB0Lmxlbmd0aD09PTA/IkVycm9yIjoiRXJyb3I6ICIrdH19CkguYnEucHJvdG90eXBlPXt9Ckgu
+QW0ucHJvdG90eXBlPXsKJDE6ZnVuY3Rpb24oYSl7aWYodS5XLmIoYSkpaWYoYS4kdGhyb3duSnNFcnJv
+cj09bnVsbClhLiR0aHJvd25Kc0Vycm9yPXRoaXMuYQpyZXR1cm4gYX0sCiRTOjJ9CkguWE8ucHJvdG90
+eXBlPXsKWjpmdW5jdGlvbihhKXt2YXIgdCxzPXRoaXMuYgppZihzIT1udWxsKXJldHVybiBzCnM9dGhp
+cy5hCnQ9cyE9PW51bGwmJnR5cGVvZiBzPT09Im9iamVjdCI/cy5zdGFjazpudWxsCnJldHVybiB0aGlz
+LmI9dD09bnVsbD8iIjp0fSwKJGlHejoxfQpILlRwLnByb3RvdHlwZT17Clo6ZnVuY3Rpb24oYSl7dmFy
+IHQ9dGhpcy5jb25zdHJ1Y3RvcixzPXQ9PW51bGw/bnVsbDp0Lm5hbWUKcmV0dXJuIkNsb3N1cmUgJyIr
+SC5OUShzPT1udWxsPyJ1bmtub3duIjpzKSsiJyJ9LAokaUVIOjEsCmdRbDpmdW5jdGlvbigpe3JldHVy
+biB0aGlzfSwKJEM6IiQxIiwKJFI6MSwKJEQ6bnVsbH0KSC5sYy5wcm90b3R5cGU9e30KSC56eC5wcm90
+b3R5cGU9ewpaOmZ1bmN0aW9uKGEpe3ZhciB0PXRoaXMuJHN0YXRpY19uYW1lCmlmKHQ9PW51bGwpcmV0
+dXJuIkNsb3N1cmUgb2YgdW5rbm93biBzdGF0aWMgbWV0aG9kIgpyZXR1cm4iQ2xvc3VyZSAnIitILk5R
+KHQpKyInIn19CkguankucHJvdG90eXBlPXsKRE46ZnVuY3Rpb24oYSxiKXt2YXIgdD10aGlzCmlmKGI9
+PW51bGwpcmV0dXJuITEKaWYodD09PWIpcmV0dXJuITAKaWYoIShiIGluc3RhbmNlb2YgSC5qeSkpcmV0
+dXJuITEKcmV0dXJuIHQuYT09PWIuYSYmdC5iPT09Yi5iJiZ0LmM9PT1iLmN9LApnaU86ZnVuY3Rpb24o
+YSl7dmFyIHQscz10aGlzLmMKaWYocz09bnVsbCl0PUguZVEodGhpcy5hKQplbHNlIHQ9dHlwZW9mIHMh
+PT0ib2JqZWN0Ij9KLmhmKHMpOkguZVEocykKcmV0dXJuKHReSC5lUSh0aGlzLmIpKT4+PjB9LApaOmZ1
+bmN0aW9uKGEpe3ZhciB0PXRoaXMuYwppZih0PT1udWxsKXQ9dGhpcy5hCnJldHVybiJDbG9zdXJlICci
+K0guZCh0aGlzLmQpKyInIG9mICIrKCJJbnN0YW5jZSBvZiAnIitILmQoSC5saCh0KSkrIiciKX19Ckgu
+RXEucHJvdG90eXBlPXsKWjpmdW5jdGlvbihhKXtyZXR1cm4iUnVudGltZUVycm9yOiAiK0guZCh0aGlz
+LmEpfX0KSC5rWS5wcm90b3R5cGU9ewpaOmZ1bmN0aW9uKGEpe3JldHVybiJBc3NlcnRpb24gZmFpbGVk
+OiAiK1AuaCh0aGlzLmEpfX0KSC5ONS5wcm90b3R5cGU9ewpnQTpmdW5jdGlvbihhKXtyZXR1cm4gdGhp
+cy5hfSwKZ2wwOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmE9PT0wfSwKZ1Y6ZnVuY3Rpb24oKXtyZXR1
+cm4gbmV3IEguaTUodGhpcyxILkxoKHRoaXMpLkMoImk1PDE+IikpfSwKeDQ6ZnVuY3Rpb24oYSl7dmFy
+IHQscwppZih0eXBlb2YgYT09InN0cmluZyIpe3Q9dGhpcy5iCmlmKHQ9PW51bGwpcmV0dXJuITEKcmV0
+dXJuIHRoaXMuWHUodCxhKX1lbHNle3M9dGhpcy5DWChhKQpyZXR1cm4gc319LApDWDpmdW5jdGlvbihh
+KXt2YXIgdD10aGlzLmQKaWYodD09bnVsbClyZXR1cm4hMQpyZXR1cm4gdGhpcy5GaCh0aGlzLkJ0KHQs
+Si5oZihhKSYweDNmZmZmZmYpLGEpPj0wfSwKcTpmdW5jdGlvbihhLGIpe3ZhciB0LHMscixxLHA9dGhp
+cyxvPW51bGwKaWYodHlwZW9mIGI9PSJzdHJpbmciKXt0PXAuYgppZih0PT1udWxsKXJldHVybiBvCnM9
+cC5qMih0LGIpCnI9cz09bnVsbD9vOnMuYgpyZXR1cm4gcn1lbHNlIGlmKHR5cGVvZiBiPT0ibnVtYmVy
+IiYmKGImMHgzZmZmZmZmKT09PWIpe3E9cC5jCmlmKHE9PW51bGwpcmV0dXJuIG8Kcz1wLmoyKHEsYikK
+cj1zPT1udWxsP286cy5iCnJldHVybiByfWVsc2UgcmV0dXJuIHAuYWEoYil9LAphYTpmdW5jdGlvbihh
+KXt2YXIgdCxzLHI9dGhpcy5kCmlmKHI9PW51bGwpcmV0dXJuIG51bGwKdD10aGlzLkJ0KHIsSi5oZihh
+KSYweDNmZmZmZmYpCnM9dGhpcy5GaCh0LGEpCmlmKHM8MClyZXR1cm4gbnVsbApyZXR1cm4gdFtzXS5i
+fSwKWTpmdW5jdGlvbihhLGIsYyl7dmFyIHQscyxyLHEscCxvLG49dGhpcyxtPUguTGgobikKbS5jLmEo
+YikKbS5RWzFdLmEoYykKaWYodHlwZW9mIGI9PSJzdHJpbmciKXt0PW4uYgpuLkVIKHQ9PW51bGw/bi5i
+PW4ueksoKTp0LGIsYyl9ZWxzZSBpZih0eXBlb2YgYj09Im51bWJlciImJihiJjB4M2ZmZmZmZik9PT1i
+KXtzPW4uYwpuLkVIKHM9PW51bGw/bi5jPW4ueksoKTpzLGIsYyl9ZWxzZXtyPW4uZAppZihyPT1udWxs
+KXI9bi5kPW4ueksoKQpxPUouaGYoYikmMHgzZmZmZmZmCnA9bi5CdChyLHEpCmlmKHA9PW51bGwpbi5F
+SShyLHEsW24uSG4oYixjKV0pCmVsc2V7bz1uLkZoKHAsYikKaWYobz49MClwW29dLmI9YwplbHNlIHAu
+cHVzaChuLkhuKGIsYykpfX19LApLOmZ1bmN0aW9uKGEsYil7dmFyIHQscyxyPXRoaXMKSC5MaChyKS5D
+KCJ+KDEsMikiKS5hKGIpCnQ9ci5lCnM9ci5yCmZvcig7dCE9bnVsbDspe2IuJDIodC5hLHQuYikKaWYo
+cyE9PXIucil0aHJvdyBILmIoUC5hNChyKSkKdD10LmN9fSwKRUg6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0
+LHM9dGhpcyxyPUguTGgocykKci5jLmEoYikKci5RWzFdLmEoYykKdD1zLmoyKGEsYikKaWYodD09bnVs
+bClzLkVJKGEsYixzLkhuKGIsYykpCmVsc2UgdC5iPWN9LAprczpmdW5jdGlvbigpe3RoaXMucj10aGlz
+LnIrMSY2NzEwODg2M30sCkhuOmZ1bmN0aW9uKGEsYil7dmFyIHQscz10aGlzLHI9SC5MaChzKSxxPW5l
+dyBILmRiKHIuYy5hKGEpLHIuUVsxXS5hKGIpKQppZihzLmU9PW51bGwpcy5lPXMuZj1xCmVsc2V7dD1z
+LmYKcS5kPXQKcy5mPXQuYz1xfSsrcy5hCnMua3MoKQpyZXR1cm4gcX0sCkZoOmZ1bmN0aW9uKGEsYil7
+dmFyIHQscwppZihhPT1udWxsKXJldHVybi0xCnQ9YS5sZW5ndGgKZm9yKHM9MDtzPHQ7KytzKWlmKEou
+Uk0oYVtzXS5hLGIpKXJldHVybiBzCnJldHVybi0xfSwKWjpmdW5jdGlvbihhKXtyZXR1cm4gUC5uTyh0
+aGlzKX0sCmoyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGFbYl19LApCdDpmdW5jdGlvbihhLGIpe3JldHVy
+biBhW2JdfSwKRUk6ZnVuY3Rpb24oYSxiLGMpe2FbYl09Y30sCnJuOmZ1bmN0aW9uKGEsYil7ZGVsZXRl
+IGFbYl19LApYdTpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmoyKGEsYikhPW51bGx9LAp6SzpmdW5j
+dGlvbigpe3ZhciB0PSI8bm9uLWlkZW50aWZpZXIta2V5PiIscz1PYmplY3QuY3JlYXRlKG51bGwpCnRo
+aXMuRUkocyx0LHMpCnRoaXMucm4ocyx0KQpyZXR1cm4gc30sCiRpRm86MX0KSC5kYi5wcm90b3R5cGU9
+e30KSC5pNS5wcm90b3R5cGU9ewpnQTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5hLmF9LApnbDA6ZnVu
+Y3Rpb24oYSl7cmV0dXJuIHRoaXMuYS5hPT09MH0sCmdrejpmdW5jdGlvbihhKXt2YXIgdD10aGlzLmEs
+cz1uZXcgSC5ONih0LHQucix0aGlzLiR0aS5DKCJONjwxPiIpKQpzLmM9dC5lCnJldHVybiBzfSwKdGc6
+ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5hLng0KGIpfX0KSC5ONi5wcm90b3R5cGU9ewpnbDpmdW5j
+dGlvbigpe3JldHVybiB0aGlzLmR9LApGOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxzPXQuYQppZih0LmIh
+PT1zLnIpdGhyb3cgSC5iKFAuYTQocykpCmVsc2V7cz10LmMKaWYocz09bnVsbCl7dC5zcVkobnVsbCkK
+cmV0dXJuITF9ZWxzZXt0LnNxWShzLmEpCnQuYz10LmMuYwpyZXR1cm4hMH19fSwKc3FZOmZ1bmN0aW9u
+KGEpe3RoaXMuZD10aGlzLiR0aS5jLmEoYSl9LAokaUFuOjF9Ckguci5wcm90b3R5cGU9ewokMTpmdW5j
+dGlvbihhKXtyZXR1cm4gdGhpcy5hKGEpfSwKJFM6Mn0KSC5kQy5wcm90b3R5cGU9ewokMjpmdW5jdGlv
+bihhLGIpe3JldHVybiB0aGlzLmEoYSxiKX0sCiRTOjI2fQpILndOLnByb3RvdHlwZT17CiQxOmZ1bmN0
+aW9uKGEpe3JldHVybiB0aGlzLmEoSC5jKGEpKX0sCiRTOjMwfQpILlZSLnByb3RvdHlwZT17Clo6ZnVu
+Y3Rpb24oYSl7cmV0dXJuIlJlZ0V4cC8iK3RoaXMuYSsiLyIrdGhpcy5iLmZsYWdzfSwKZ0hjOmZ1bmN0
+aW9uKCl7dmFyIHQ9dGhpcyxzPXQuYwppZihzIT1udWxsKXJldHVybiBzCnM9dC5iCnJldHVybiB0LmM9
+SC52NCh0LmEscy5tdWx0aWxpbmUsIXMuaWdub3JlQ2FzZSxzLnVuaWNvZGUscy5kb3RBbGwsITApfSwK
+ZGQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IEguS1codGhpcyxiLDApfSwKVVo6ZnVuY3Rpb24oYSxi
+KXt2YXIgdCxzPXRoaXMuZ0hjKCkKcy5sYXN0SW5kZXg9Ygp0PXMuZXhlYyhhKQppZih0PT1udWxsKXJl
+dHVybiBudWxsCnJldHVybiBuZXcgSC5FSyh0KX0sCiRpdlg6MSwKJGl3TDoxfQpILkVLLnByb3RvdHlw
+ZT17CnE6ZnVuY3Rpb24oYSxiKXt2YXIgdApILldZKGIpCnQ9dGhpcy5iCmlmKGI+PXQubGVuZ3RoKXJl
+dHVybiBILmsodCxiKQpyZXR1cm4gdFtiXX0sCiRpT2Q6MSwKJGlpYjoxfQpILktXLnByb3RvdHlwZT17
+CmdrejpmdW5jdGlvbihhKXtyZXR1cm4gbmV3IEguUGIodGhpcy5hLHRoaXMuYix0aGlzLmMpfX0KSC5Q
+Yi5wcm90b3R5cGU9ewpnbDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmR9LApGOmZ1bmN0aW9uKCl7dmFy
+IHQscyxyLHEscD10aGlzLG89cC5iCmlmKG89PW51bGwpcmV0dXJuITEKdD1wLmMKaWYodDw9by5sZW5n
+dGgpe3M9cC5hCnI9cy5VWihvLHQpCmlmKHIhPW51bGwpe3AuZD1yCm89ci5iCnQ9by5pbmRleApxPXQr
+b1swXS5sZW5ndGgKaWYodD09PXEpe2lmKHMuYi51bmljb2RlKXtvPXAuYwp0PW8rMQpzPXAuYgppZih0
+PHMubGVuZ3RoKXtvPUouclkocykubShzLG8pCmlmKG8+PTU1Mjk2JiZvPD01NjMxOSl7bz1DLnhCLm0o
+cyx0KQpvPW8+PTU2MzIwJiZvPD01NzM0M31lbHNlIG89ITF9ZWxzZSBvPSExfWVsc2Ugbz0hMQpxPShv
+P3ErMTpxKSsxfXAuYz1xCnJldHVybiEwfX1wLmI9cC5kPW51bGwKcmV0dXJuITF9LAokaUFuOjF9Ckgu
+dFEucHJvdG90eXBlPXsKcTpmdW5jdGlvbihhLGIpe0guV1koYikKaWYoYiE9PTApSC52aChQLk83KGIs
+bnVsbCkpCnJldHVybiB0aGlzLmN9LAokaU9kOjF9CkguTkYucHJvdG90eXBlPXsKZ2t6OmZ1bmN0aW9u
+KGEpe3JldHVybiBuZXcgSC5TZCh0aGlzLmEsdGhpcy5iLHRoaXMuYyl9fQpILlNkLnByb3RvdHlwZT17
+CkY6ZnVuY3Rpb24oKXt2YXIgdCxzLHI9dGhpcyxxPXIuYyxwPXIuYixvPXAubGVuZ3RoLG49ci5hLG09
+bi5sZW5ndGgKaWYocStvPm0pe3IuZD1udWxsCnJldHVybiExfXQ9bi5pbmRleE9mKHAscSkKaWYodDww
+KXtyLmM9bSsxCnIuZD1udWxsCnJldHVybiExfXM9dCtvCnIuZD1uZXcgSC50USh0LHApCnIuYz1zPT09
+ci5jP3MrMTpzCnJldHVybiEwfSwKZ2w6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kfSwKJGlBbjoxfQpI
+LnBGLnByb3RvdHlwZT17JGlwRjoxLCRpZXE6MX0KSC5MWi5wcm90b3R5cGU9ewpnQTpmdW5jdGlvbihh
+KXtyZXR1cm4gYS5sZW5ndGh9LAokaVhqOjF9CkguRGcucHJvdG90eXBlPXsKcTpmdW5jdGlvbihhLGIp
+e0guV1koYikKSC5vZChiLGEsYS5sZW5ndGgpCnJldHVybiBhW2JdfSwKWTpmdW5jdGlvbihhLGIsYyl7
+SC5kaihjKQpILm9kKGIsYSxhLmxlbmd0aCkKYVtiXT1jfSwKJGliUToxLAokaWNYOjEsCiRpek06MX0K
+SC5QZy5wcm90b3R5cGU9ewpZOmZ1bmN0aW9uKGEsYixjKXtILldZKGMpCkgub2QoYixhLGEubGVuZ3Ro
+KQphW2JdPWN9LAokaWJROjEsCiRpY1g6MSwKJGl6TToxfQpILnhqLnByb3RvdHlwZT17CnE6ZnVuY3Rp
+b24oYSxiKXtILldZKGIpCkgub2QoYixhLGEubGVuZ3RoKQpyZXR1cm4gYVtiXX19CkguZEUucHJvdG90
+eXBlPXsKcTpmdW5jdGlvbihhLGIpe0guV1koYikKSC5vZChiLGEsYS5sZW5ndGgpCnJldHVybiBhW2Jd
+fX0KSC5aQS5wcm90b3R5cGU9ewpxOmZ1bmN0aW9uKGEsYil7SC5XWShiKQpILm9kKGIsYSxhLmxlbmd0
+aCkKcmV0dXJuIGFbYl19fQpILndmLnByb3RvdHlwZT17CnE6ZnVuY3Rpb24oYSxiKXtILldZKGIpCkgu
+b2QoYixhLGEubGVuZ3RoKQpyZXR1cm4gYVtiXX19CkguUHEucHJvdG90eXBlPXsKcTpmdW5jdGlvbihh
+LGIpe0guV1koYikKSC5vZChiLGEsYS5sZW5ndGgpCnJldHVybiBhW2JdfX0KSC5lRS5wcm90b3R5cGU9
+ewpnQTpmdW5jdGlvbihhKXtyZXR1cm4gYS5sZW5ndGh9LApxOmZ1bmN0aW9uKGEsYil7SC5XWShiKQpI
+Lm9kKGIsYSxhLmxlbmd0aCkKcmV0dXJuIGFbYl19fQpILlY2LnByb3RvdHlwZT17CmdBOmZ1bmN0aW9u
+KGEpe3JldHVybiBhLmxlbmd0aH0sCnE6ZnVuY3Rpb24oYSxiKXtILldZKGIpCkgub2QoYixhLGEubGVu
+Z3RoKQpyZXR1cm4gYVtiXX0sCiRpVjY6MSwKJGluNjoxfQpILlJHLnByb3RvdHlwZT17fQpILlZQLnBy
+b3RvdHlwZT17fQpILldCLnByb3RvdHlwZT17fQpILlpHLnByb3RvdHlwZT17fQpILkpjLnByb3RvdHlw
+ZT17CkM6ZnVuY3Rpb24oYSl7cmV0dXJuIEguY0Uodi50eXBlVW5pdmVyc2UsdGhpcyxhKX0sCktxOmZ1
+bmN0aW9uKGEpe3JldHVybiBILnY1KHYudHlwZVVuaXZlcnNlLHRoaXMsYSl9fQpILkVULnByb3RvdHlw
+ZT17fQpILnU5LnByb3RvdHlwZT17Clo6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuYX19CkgueC5wcm90
+b3R5cGU9e30KUC50aC5wcm90b3R5cGU9ewokMTpmdW5jdGlvbihhKXt2YXIgdD10aGlzLmEscz10LmEK
+dC5hPW51bGwKcy4kMCgpfSwKJFM6MTN9ClAuaGEucHJvdG90eXBlPXsKJDE6ZnVuY3Rpb24oYSl7dmFy
+IHQscwp0aGlzLmEuYT11Lk0uYShhKQp0PXRoaXMuYgpzPXRoaXMuYwp0LmZpcnN0Q2hpbGQ/dC5yZW1v
+dmVDaGlsZChzKTp0LmFwcGVuZENoaWxkKHMpfSwKJFM6NDd9ClAuVnMucHJvdG90eXBlPXsKJDA6ZnVu
+Y3Rpb24oKXt0aGlzLmEuJDAoKX0sCiRDOiIkMCIsCiRSOjAsCiRTOjB9ClAuRnQucHJvdG90eXBlPXsK
+JDA6ZnVuY3Rpb24oKXt0aGlzLmEuJDAoKX0sCiRDOiIkMCIsCiRSOjAsCiRTOjB9ClAuVzMucHJvdG90
+eXBlPXsKQ1k6ZnVuY3Rpb24oYSxiKXtpZihzZWxmLnNldFRpbWVvdXQhPW51bGwpc2VsZi5zZXRUaW1l
+b3V0KEgudFIobmV3IFAueUgodGhpcyxiKSwwKSxhKQplbHNlIHRocm93IEguYihQLkw0KCJgc2V0VGlt
+ZW91dCgpYCBub3QgZm91bmQuIikpfX0KUC55SC5wcm90b3R5cGU9ewokMDpmdW5jdGlvbigpe3RoaXMu
+Yi4kMCgpfSwKJEM6IiQwIiwKJFI6MCwKJFM6M30KUC5paC5wcm90b3R5cGU9ewphTTpmdW5jdGlvbihh
+LGIpe3ZhciB0LHMscj10aGlzLiR0aQpyLkMoIjEvIikuYShiKQp0PSF0aGlzLmJ8fHIuQygiYjg8MT4i
+KS5iKGIpCnM9dGhpcy5hCmlmKHQpcy5YZihiKQplbHNlIHMuWDIoci5jLmEoYikpfSwKdzA6ZnVuY3Rp
+b24oYSxiKXt2YXIgdAppZihiPT1udWxsKWI9UC52MChhKQp0PXRoaXMuYQppZih0aGlzLmIpdC5aTChh
+LGIpCmVsc2UgdC5OayhhLGIpfX0KUC5XTS5wcm90b3R5cGU9ewokMTpmdW5jdGlvbihhKXtyZXR1cm4g
+dGhpcy5hLiQyKDAsYSl9LAokUzo1MX0KUC5TWC5wcm90b3R5cGU9ewokMjpmdW5jdGlvbihhLGIpe3Ro
+aXMuYS4kMigxLG5ldyBILmJxKGEsdS5sLmEoYikpKX0sCiRDOiIkMiIsCiRSOjIsCiRTOjQ1fQpQLkdz
+LnByb3RvdHlwZT17CiQyOmZ1bmN0aW9uKGEsYil7dGhpcy5hKEguV1koYSksYil9LAokUzo0Nn0KUC5G
+eS5wcm90b3R5cGU9ewpaOmZ1bmN0aW9uKGEpe3JldHVybiJJdGVyYXRpb25NYXJrZXIoIit0aGlzLmIr
+IiwgIitILmQodGhpcy5hKSsiKSJ9fQpQLkdWLnByb3RvdHlwZT17CmdsOmZ1bmN0aW9uKCl7dmFyIHQ9
+dGhpcy5jCmlmKHQ9PW51bGwpcmV0dXJuIHRoaXMuYgpyZXR1cm4gdGhpcy4kdGkuYy5hKHQuZ2woKSl9
+LApGOmZ1bmN0aW9uKCl7dmFyIHQscyxyLHEscD10aGlzCmZvcig7ITA7KXt0PXAuYwppZih0IT1udWxs
+KWlmKHQuRigpKXJldHVybiEwCmVsc2UgcC5jPW51bGwKcz1mdW5jdGlvbihhLGIsYyl7dmFyIG8sbj1i
+CndoaWxlKHRydWUpdHJ5e3JldHVybiBhKG4sbyl9Y2F0Y2gobSl7bz1tCm49Y319KHAuYSwwLDEpCmlm
+KHMgaW5zdGFuY2VvZiBQLkZ5KXtyPXMuYgppZihyPT09Mil7dD1wLmQKaWYodD09bnVsbHx8dC5sZW5n
+dGg9PT0wKXtwLnNFQyhudWxsKQpyZXR1cm4hMX1pZigwPj10Lmxlbmd0aClyZXR1cm4gSC5rKHQsLTEp
+CnAuYT10LnBvcCgpCmNvbnRpbnVlfWVsc2V7dD1zLmEKaWYocj09PTMpdGhyb3cgdAplbHNle3E9Si5J
+VCh0KQppZihxIGluc3RhbmNlb2YgUC5HVil7dD1wLmQKaWYodD09bnVsbCl0PXAuZD1bXQpDLk5tLmko
+dCxwLmEpCnAuYT1xLmEKY29udGludWV9ZWxzZXtwLmM9cQpjb250aW51ZX19fX1lbHNle3Auc0VDKHMp
+CnJldHVybiEwfX1yZXR1cm4hMX0sCnNFQzpmdW5jdGlvbihhKXt0aGlzLmI9dGhpcy4kdGkuYy5hKGEp
+fSwKJGlBbjoxfQpQLnE0LnByb3RvdHlwZT17CmdrejpmdW5jdGlvbihhKXtyZXR1cm4gbmV3IFAuR1Yo
+dGhpcy5hKCksdGhpcy4kdGkuQygiR1Y8MT4iKSl9fQpQLmI4LnByb3RvdHlwZT17fQpQLlBmLnByb3Rv
+dHlwZT17CncwOmZ1bmN0aW9uKGEsYil7dmFyIHQKUC5VSShhLCJlcnJvciIsdS5LKQp0PXRoaXMuYQpp
+Zih0LmEhPT0wKXRocm93IEguYihQLlBWKCJGdXR1cmUgYWxyZWFkeSBjb21wbGV0ZWQiKSkKdC5Oayhh
+LGI9PW51bGw/UC52MChhKTpiKX0sCnBtOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLncwKGEsbnVsbCl9
+fQpQLlpmLnByb3RvdHlwZT17CmFNOmZ1bmN0aW9uKGEsYil7dmFyIHQKdGhpcy4kdGkuQygiMS8iKS5h
+KGIpCnQ9dGhpcy5hCmlmKHQuYSE9PTApdGhyb3cgSC5iKFAuUFYoIkZ1dHVyZSBhbHJlYWR5IGNvbXBs
+ZXRlZCIpKQp0LlhmKGIpfX0KUC5GZS5wcm90b3R5cGU9ewpIUjpmdW5jdGlvbihhKXtpZigodGhpcy5j
+JjE1KSE9PTYpcmV0dXJuITAKcmV0dXJuIHRoaXMuYi5iLmJ2KHUuYWwuYSh0aGlzLmQpLGEuYSx1Lnks
+dS5LKX0sCkt3OmZ1bmN0aW9uKGEpe3ZhciB0PXRoaXMuZSxzPXUueixyPXUuSyxxPXRoaXMuJHRpLkMo
+IjIvIikscD10aGlzLmIuYgppZih1LmFnLmIodCkpcmV0dXJuIHEuYShwLnJwKHQsYS5hLGEuYixzLHIs
+dS5sKSkKZWxzZSByZXR1cm4gcS5hKHAuYnYodS5iSS5hKHQpLGEuYSxzLHIpKX19ClAudnMucHJvdG90
+eXBlPXsKU3E6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0LHMscixxPXRoaXMuJHRpCnEuS3EoYykuQygiMS8o
+MikiKS5hKGEpCnQ9JC5YMwppZih0IT09Qy5OVSl7Yy5DKCJAPDAvPiIpLktxKHEuYykuQygiMSgyKSIp
+LmEoYSkKaWYoYiE9bnVsbCliPVAuVkgoYix0KX1zPW5ldyBQLnZzKCQuWDMsYy5DKCJ2czwwPiIpKQpy
+PWI9PW51bGw/MTozCnRoaXMueGYobmV3IFAuRmUocyxyLGEsYixxLkMoIkA8MT4iKS5LcShjKS5DKCJG
+ZTwxLDI+IikpKQpyZXR1cm4gc30sClc3OmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuU3EoYSxudWxs
+LGIpfSwKUWQ6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0LHM9dGhpcy4kdGkKcy5LcShjKS5DKCIxLygyKSIp
+LmEoYSkKdD1uZXcgUC52cygkLlgzLGMuQygidnM8MD4iKSkKdGhpcy54ZihuZXcgUC5GZSh0LDE5LGEs
+YixzLkMoIkA8MT4iKS5LcShjKS5DKCJGZTwxLDI+IikpKQpyZXR1cm4gdH0sCk9BOmZ1bmN0aW9uKGEp
+e3ZhciB0LHMscgp1LmJmLmEobnVsbCkKdD10aGlzLiR0aQpzPSQuWDMKcj1uZXcgUC52cyhzLHQpCmlm
+KHMhPT1DLk5VKWE9UC5WSChhLHMpCnRoaXMueGYobmV3IFAuRmUociwyLG51bGwsYSx0LkMoIkA8MT4i
+KS5LcSh0LmMpLkMoIkZlPDEsMj4iKSkpCnJldHVybiByfSwKeGY6ZnVuY3Rpb24oYSl7dmFyIHQscz10
+aGlzLHI9cy5hCmlmKHI8PTEpe2EuYT11LnguYShzLmMpCnMuYz1hfWVsc2V7aWYocj09PTIpe3Q9dS5f
+LmEocy5jKQpyPXQuYQppZihyPDQpe3QueGYoYSkKcmV0dXJufXMuYT1yCnMuYz10LmN9UC5UayhudWxs
+LG51bGwscy5iLHUuTS5hKG5ldyBQLmRhKHMsYSkpKX19LApqUTpmdW5jdGlvbihhKXt2YXIgdCxzLHIs
+cSxwLG89dGhpcyxuPXt9Cm4uYT1hCmlmKGE9PW51bGwpcmV0dXJuCnQ9by5hCmlmKHQ8PTEpe3M9dS54
+LmEoby5jKQpyPW8uYz1hCmlmKHMhPW51bGwpe2Zvcig7cT1yLmEscSE9bnVsbDtyPXEpO3IuYT1zfX1l
+bHNle2lmKHQ9PT0yKXtwPXUuXy5hKG8uYykKdD1wLmEKaWYodDw0KXtwLmpRKGEpCnJldHVybn1vLmE9
+dApvLmM9cC5jfW4uYT1vLk44KGEpClAuVGsobnVsbCxudWxsLG8uYix1Lk0uYShuZXcgUC5vUShuLG8p
+KSl9fSwKYWg6ZnVuY3Rpb24oKXt2YXIgdD11LnguYSh0aGlzLmMpCnRoaXMuYz1udWxsCnJldHVybiB0
+aGlzLk44KHQpfSwKTjg6ZnVuY3Rpb24oYSl7dmFyIHQscyxyCmZvcih0PWEscz1udWxsO3QhPW51bGw7
+cz10LHQ9cil7cj10LmEKdC5hPXN9cmV0dXJuIHN9LApISDpmdW5jdGlvbihhKXt2YXIgdCxzPXRoaXMs
+cj1zLiR0aQpyLkMoIjEvIikuYShhKQppZihyLkMoImI4PDE+IikuYihhKSlpZihyLmIoYSkpUC5BOShh
+LHMpCmVsc2UgUC5rMyhhLHMpCmVsc2V7dD1zLmFoKCkKci5jLmEoYSkKcy5hPTQKcy5jPWEKUC5IWihz
+LHQpfX0sClgyOmZ1bmN0aW9uKGEpe3ZhciB0LHM9dGhpcwpzLiR0aS5jLmEoYSkKdD1zLmFoKCkKcy5h
+PTQKcy5jPWEKUC5IWihzLHQpfSwKWkw6ZnVuY3Rpb24oYSxiKXt2YXIgdCxzLHI9dGhpcwp1LmwuYShi
+KQp0PXIuYWgoKQpzPVAuVGwoYSxiKQpyLmE9OApyLmM9cwpQLkhaKHIsdCl9LApYZjpmdW5jdGlvbihh
+KXt2YXIgdD10aGlzLHM9dC4kdGkKcy5DKCIxLyIpLmEoYSkKaWYocy5DKCJiODwxPiIpLmIoYSkpe3Qu
+Y1UoYSkKcmV0dXJufXQuYT0xClAuVGsobnVsbCxudWxsLHQuYix1Lk0uYShuZXcgUC5ySCh0LGEpKSl9
+LApjVTpmdW5jdGlvbihhKXt2YXIgdD10aGlzLHM9dC4kdGkKcy5DKCJiODwxPiIpLmEoYSkKaWYocy5i
+KGEpKXtpZihhLmE9PT04KXt0LmE9MQpQLlRrKG51bGwsbnVsbCx0LmIsdS5NLmEobmV3IFAuS0YodCxh
+KSkpfWVsc2UgUC5BOShhLHQpCnJldHVybn1QLmszKGEsdCl9LApOazpmdW5jdGlvbihhLGIpe3RoaXMu
+YT0xClAuVGsobnVsbCxudWxsLHRoaXMuYix1Lk0uYShuZXcgUC5aTCh0aGlzLGEsYikpKX0sCiRpYjg6
+MX0KUC5kYS5wcm90b3R5cGU9ewokMDpmdW5jdGlvbigpe1AuSFoodGhpcy5hLHRoaXMuYil9LAokUzow
+fQpQLm9RLnByb3RvdHlwZT17CiQwOmZ1bmN0aW9uKCl7UC5IWih0aGlzLmIsdGhpcy5hLmEpfSwKJFM6
+MH0KUC5wVi5wcm90b3R5cGU9ewokMTpmdW5jdGlvbihhKXt2YXIgdD10aGlzLmEKdC5hPTAKdC5ISChh
+KX0sCiRTOjEzfQpQLlU3LnByb3RvdHlwZT17CiQyOmZ1bmN0aW9uKGEsYil7dS5sLmEoYikKdGhpcy5h
+LlpMKGEsYil9LAokMTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy4kMihhLG51bGwpfSwKJEM6IiQyIiwK
+JEQ6ZnVuY3Rpb24oKXtyZXR1cm5bbnVsbF19LAokUzoyNX0KUC52ci5wcm90b3R5cGU9ewokMDpmdW5j
+dGlvbigpe3RoaXMuYS5aTCh0aGlzLmIsdGhpcy5jKX0sCiRTOjB9ClAuckgucHJvdG90eXBlPXsKJDA6
+ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmEKdC5YMih0LiR0aS5jLmEodGhpcy5iKSl9LAokUzowfQpQLktG
+LnByb3RvdHlwZT17CiQwOmZ1bmN0aW9uKCl7UC5BOSh0aGlzLmIsdGhpcy5hKX0sCiRTOjB9ClAuWkwu
+cHJvdG90eXBlPXsKJDA6ZnVuY3Rpb24oKXt0aGlzLmEuWkwodGhpcy5iLHRoaXMuYyl9LAokUzowfQpQ
+LlJULnByb3RvdHlwZT17CiQwOmZ1bmN0aW9uKCl7dmFyIHQscyxyLHEscCxvLG49dGhpcyxtPW51bGwK
+dHJ5e3I9bi5jCm09ci5iLmIuenoodS5mTy5hKHIuZCksdS56KX1jYXRjaChxKXt0PUguUnUocSkKcz1I
+LnRzKHEpCmlmKG4uZCl7cj11Lm4uYShuLmEuYS5jKS5hCnA9dApwPXI9PW51bGw/cD09bnVsbDpyPT09
+cApyPXB9ZWxzZSByPSExCnA9bi5iCmlmKHIpcC5iPXUubi5hKG4uYS5hLmMpCmVsc2UgcC5iPVAuVGwo
+dCxzKQpwLmE9ITAKcmV0dXJufWlmKHUuYy5iKG0pKXtpZihtIGluc3RhbmNlb2YgUC52cyYmbS5hPj00
+KXtpZihtLmE9PT04KXtyPW4uYgpyLmI9dS5uLmEobS5jKQpyLmE9ITB9cmV0dXJufW89bi5hLmEKcj1u
+LmIKci5iPW0uVzcobmV3IFAualoobyksdS56KQpyLmE9ITF9fSwKJFM6M30KUC5qWi5wcm90b3R5cGU9
+ewokMTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5hfSwKJFM6Mjl9ClAucnEucHJvdG90eXBlPXsKJDA6
+ZnVuY3Rpb24oKXt2YXIgdCxzLHIscSxwLG8sbixtPXRoaXMKdHJ5e3I9bS5iCnE9ci4kdGkKcD1xLmMK
+bz1wLmEobS5jKQptLmEuYj1yLmIuYi5idihxLkMoIjIvKDEpIikuYShyLmQpLG8scS5DKCIyLyIpLHAp
+fWNhdGNoKG4pe3Q9SC5SdShuKQpzPUgudHMobikKcj1tLmEKci5iPVAuVGwodCxzKQpyLmE9ITB9fSwK
+JFM6M30KUC5SVy5wcm90b3R5cGU9ewokMDpmdW5jdGlvbigpe3ZhciB0LHMscixxLHAsbyxuLG0sbD10
+aGlzCnRyeXt0PXUubi5hKGwuYS5hLmMpCnE9bC5jCmlmKEgub1QocS5IUih0KSkmJnEuZSE9bnVsbCl7
+cD1sLmIKcC5iPXEuS3codCkKcC5hPSExfX1jYXRjaChvKXtzPUguUnUobykKcj1ILnRzKG8pCnE9dS5u
+LmEobC5hLmEuYykKcD1xLmEKbj1zCm09bC5iCmlmKHA9PW51bGw/bj09bnVsbDpwPT09biltLmI9cQpl
+bHNlIG0uYj1QLlRsKHMscikKbS5hPSEwfX0sCiRTOjN9ClAuT00ucHJvdG90eXBlPXt9ClAucWgucHJv
+dG90eXBlPXsKZ0E6ZnVuY3Rpb24oYSl7dmFyIHQscyxyPXRoaXMscT17fSxwPW5ldyBQLnZzKCQuWDMs
+dS5mSikKcS5hPTAKdD1ILkxoKHIpCnM9dC5DKCJ+KDEpIikuYShuZXcgUC5CNShxLHIpKQp1Lk0uYShu
+ZXcgUC51TyhxLHApKQpXLkpFKHIuYSxyLmIscywhMSx0LmMpCnJldHVybiBwfX0KUC5CNS5wcm90b3R5
+cGU9ewokMTpmdW5jdGlvbihhKXtILkxoKHRoaXMuYikuYy5hKGEpOysrdGhpcy5hLmF9LAokUzpmdW5j
+dGlvbigpe3JldHVybiBILkxoKHRoaXMuYikuQygiYzgoMSkiKX19ClAudU8ucHJvdG90eXBlPXsKJDA6
+ZnVuY3Rpb24oKXt0aGlzLmIuSEgodGhpcy5hLmEpfSwKJFM6MH0KUC5NTy5wcm90b3R5cGU9e30KUC5r
+VC5wcm90b3R5cGU9e30KUC54SS5wcm90b3R5cGU9e30KUC5PSC5wcm90b3R5cGU9ewpaOmZ1bmN0aW9u
+KGEpe3JldHVybiBILmQodGhpcy5hKX0sCiRpWFM6MSwKZ0lJOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu
+Yn19ClAubTAucHJvdG90eXBlPXskaUpCOjF9ClAucEsucHJvdG90eXBlPXsKJDA6ZnVuY3Rpb24oKXt2
+YXIgdCxzPXRoaXMuYSxyPXMuYgppZihyPT1udWxsKXRocm93IEguYihzLmEpCnQ9SC5iKHMuYSkKdC5z
+dGFjaz1yLlooMCkKdGhyb3cgdH0sCiRTOjB9ClAuSmkucHJvdG90eXBlPXsKYkg6ZnVuY3Rpb24oYSl7
+dmFyIHQscyxyLHE9bnVsbAp1Lk0uYShhKQp0cnl7aWYoQy5OVT09PSQuWDMpe2EuJDAoKQpyZXR1cm59
+UC5UOChxLHEsdGhpcyxhLHUuSCl9Y2F0Y2gocil7dD1ILlJ1KHIpCnM9SC50cyhyKQpQLkwyKHEscSx0
+aGlzLHQsdS5sLmEocykpfX0sCkRsOmZ1bmN0aW9uKGEsYixjKXt2YXIgdCxzLHIscT1udWxsCmMuQygi
+figwKSIpLmEoYSkKYy5hKGIpCnRyeXtpZihDLk5VPT09JC5YMyl7YS4kMShiKQpyZXR1cm59UC55dihx
+LHEsdGhpcyxhLGIsdS5ILGMpfWNhdGNoKHIpe3Q9SC5SdShyKQpzPUgudHMocikKUC5MMihxLHEsdGhp
+cyx0LHUubC5hKHMpKX19LApSVDpmdW5jdGlvbihhLGIpe3JldHVybiBuZXcgUC5oaih0aGlzLGIuQygi
+MCgpIikuYShhKSxiKX0sCkdZOmZ1bmN0aW9uKGEpe3JldHVybiBuZXcgUC5WcCh0aGlzLHUuTS5hKGEp
+KX0sClB5OmZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyBQLk9SKHRoaXMsYi5DKCJ+KDApIikuYShhKSxi
+KX0sCnE6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbnVsbH0sCnp6OmZ1bmN0aW9uKGEsYil7Yi5DKCIwKCki
+KS5hKGEpCmlmKCQuWDM9PT1DLk5VKXJldHVybiBhLiQwKCkKcmV0dXJuIFAuVDgobnVsbCxudWxsLHRo
+aXMsYSxiKX0sCmJ2OmZ1bmN0aW9uKGEsYixjLGQpe2MuQygiQDwwPiIpLktxKGQpLkMoIjEoMikiKS5h
+KGEpCmQuYShiKQppZigkLlgzPT09Qy5OVSlyZXR1cm4gYS4kMShiKQpyZXR1cm4gUC55dihudWxsLG51
+bGwsdGhpcyxhLGIsYyxkKX0sCnJwOmZ1bmN0aW9uKGEsYixjLGQsZSxmKXtkLkMoIkA8MD4iKS5LcShl
+KS5LcShmKS5DKCIxKDIsMykiKS5hKGEpCmUuYShiKQpmLmEoYykKaWYoJC5YMz09PUMuTlUpcmV0dXJu
+IGEuJDIoYixjKQpyZXR1cm4gUC5ReChudWxsLG51bGwsdGhpcyxhLGIsYyxkLGUsZil9LApMajpmdW5j
+dGlvbihhLGIsYyxkKXtyZXR1cm4gYi5DKCJAPDA+IikuS3EoYykuS3EoZCkuQygiMSgyLDMpIikuYShh
+KX19ClAuaGoucHJvdG90eXBlPXsKJDA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hLnp6KHRoaXMuYix0
+aGlzLmMpfSwKJFM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jLkMoIjAoKSIpfX0KUC5WcC5wcm90b3R5
+cGU9ewokMDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmEuYkgodGhpcy5iKX0sCiRTOjN9ClAuT1IucHJv
+dG90eXBlPXsKJDE6ZnVuY3Rpb24oYSl7dmFyIHQ9dGhpcy5jCnJldHVybiB0aGlzLmEuRGwodGhpcy5i
+LHQuYShhKSx0KX0sCiRTOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYy5DKCJ+KDApIil9fQpQLmI2LnBy
+b3RvdHlwZT17CmdrejpmdW5jdGlvbihhKXt2YXIgdD10aGlzLHM9bmV3IFAubG0odCx0LnIsSC5MaCh0
+KS5DKCJsbTwxPiIpKQpzLmM9dC5lCnJldHVybiBzfSwKZ0E6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMu
+YX0sCnRnOmZ1bmN0aW9uKGEsYil7dmFyIHQscwppZih0eXBlb2YgYj09InN0cmluZyImJmIhPT0iX19w
+cm90b19fIil7dD10aGlzLmIKaWYodD09bnVsbClyZXR1cm4hMQpyZXR1cm4gdS5ELmEodFtiXSkhPW51
+bGx9ZWxzZXtzPXRoaXMuUFIoYikKcmV0dXJuIHN9fSwKUFI6ZnVuY3Rpb24oYSl7dmFyIHQ9dGhpcy5k
+CmlmKHQ9PW51bGwpcmV0dXJuITEKcmV0dXJuIHRoaXMuREYodFt0aGlzLk4oYSldLGEpPj0wfSwKaTpm
+dW5jdGlvbihhLGIpe3ZhciB0LHMscj10aGlzCkguTGgocikuYy5hKGIpCmlmKHR5cGVvZiBiPT0ic3Ry
+aW5nIiYmYiE9PSJfX3Byb3RvX18iKXt0PXIuYgpyZXR1cm4gci5TKHQ9PW51bGw/ci5iPVAuVDIoKTp0
+LGIpfWVsc2UgaWYodHlwZW9mIGI9PSJudW1iZXIiJiYoYiYxMDczNzQxODIzKT09PWIpe3M9ci5jCnJl
+dHVybiByLlMocz09bnVsbD9yLmM9UC5UMigpOnMsYil9ZWxzZSByZXR1cm4gci5CNyhiKX0sCkI3OmZ1
+bmN0aW9uKGEpe3ZhciB0LHMscixxPXRoaXMKSC5MaChxKS5jLmEoYSkKdD1xLmQKaWYodD09bnVsbCl0
+PXEuZD1QLlQyKCkKcz1xLk4oYSkKcj10W3NdCmlmKHI9PW51bGwpdFtzXT1bcS55byhhKV0KZWxzZXtp
+ZihxLkRGKHIsYSk+PTApcmV0dXJuITEKci5wdXNoKHEueW8oYSkpfXJldHVybiEwfSwKUjpmdW5jdGlv
+bihhLGIpe3ZhciB0PXRoaXMKaWYodHlwZW9mIGI9PSJzdHJpbmciJiZiIT09Il9fcHJvdG9fXyIpcmV0
+dXJuIHQuSDQodC5iLGIpCmVsc2UgaWYodHlwZW9mIGI9PSJudW1iZXIiJiYoYiYxMDczNzQxODIzKT09
+PWIpcmV0dXJuIHQuSDQodC5jLGIpCmVsc2UgcmV0dXJuIHQucWcoYil9LApxZzpmdW5jdGlvbihhKXt2
+YXIgdCxzLHIscSxwPXRoaXMsbz1wLmQKaWYobz09bnVsbClyZXR1cm4hMQp0PXAuTihhKQpzPW9bdF0K
+cj1wLkRGKHMsYSkKaWYocjwwKXJldHVybiExCnE9cy5zcGxpY2UociwxKVswXQppZigwPT09cy5sZW5n
+dGgpZGVsZXRlIG9bdF0KcC5HUyhxKQpyZXR1cm4hMH0sClM6ZnVuY3Rpb24oYSxiKXtILkxoKHRoaXMp
+LmMuYShiKQppZih1LkQuYShhW2JdKSE9bnVsbClyZXR1cm4hMQphW2JdPXRoaXMueW8oYikKcmV0dXJu
+ITB9LApINDpmdW5jdGlvbihhLGIpe3ZhciB0CmlmKGE9PW51bGwpcmV0dXJuITEKdD11LkQuYShhW2Jd
+KQppZih0PT1udWxsKXJldHVybiExCnRoaXMuR1ModCkKZGVsZXRlIGFbYl0KcmV0dXJuITB9LApYOmZ1
+bmN0aW9uKCl7dGhpcy5yPTEwNzM3NDE4MjMmdGhpcy5yKzF9LAp5bzpmdW5jdGlvbihhKXt2YXIgdCxz
+PXRoaXMscj1uZXcgUC5ibihILkxoKHMpLmMuYShhKSkKaWYocy5lPT1udWxsKXMuZT1zLmY9cgplbHNl
+e3Q9cy5mCnIuYz10CnMuZj10LmI9cn0rK3MuYQpzLlgoKQpyZXR1cm4gcn0sCkdTOmZ1bmN0aW9uKGEp
+e3ZhciB0PXRoaXMscz1hLmMscj1hLmIKaWYocz09bnVsbCl0LmU9cgplbHNlIHMuYj1yCmlmKHI9PW51
+bGwpdC5mPXMKZWxzZSByLmM9czstLXQuYQp0LlgoKX0sCk46ZnVuY3Rpb24oYSl7cmV0dXJuIEouaGYo
+YSkmMTA3Mzc0MTgyM30sCkRGOmZ1bmN0aW9uKGEsYil7dmFyIHQscwppZihhPT1udWxsKXJldHVybi0x
CnQ9YS5sZW5ndGgKZm9yKHM9MDtzPHQ7KytzKWlmKEouUk0oYVtzXS5hLGIpKXJldHVybiBzCnJldHVy
-bi0xfSwKdzpmdW5jdGlvbihhKXtyZXR1cm4gUC5uTyh0aGlzKX0sCmoyOmZ1bmN0aW9uKGEsYil7cmV0
-dXJuIGFbYl19LApCdDpmdW5jdGlvbihhLGIpe3JldHVybiBhW2JdfSwKRUk6ZnVuY3Rpb24oYSxiLGMp
-e2FbYl09Y30sCnJuOmZ1bmN0aW9uKGEsYil7ZGVsZXRlIGFbYl19LApYdTpmdW5jdGlvbihhLGIpe3Jl
-dHVybiB0aGlzLmoyKGEsYikhPW51bGx9LAp6SzpmdW5jdGlvbigpe3ZhciB0PSI8bm9uLWlkZW50aWZp
-ZXIta2V5PiIscz1PYmplY3QuY3JlYXRlKG51bGwpCnRoaXMuRUkocyx0LHMpCnRoaXMucm4ocyx0KQpy
-ZXR1cm4gc30sCiRpRm86MX0KSC5kYi5wcm90b3R5cGU9e30KSC5pNS5wcm90b3R5cGU9ewpnQTpmdW5j
-dGlvbihhKXtyZXR1cm4gdGhpcy5hLmF9LApna3o6ZnVuY3Rpb24oYSl7dmFyIHQ9dGhpcy5hLHM9bmV3
-IEguTjYodCx0LnIsdGhpcy4kdGkuQygiTjY8MT4iKSkKcy5jPXQuZQpyZXR1cm4gc30sCnRnOmZ1bmN0
-aW9uKGEsYil7cmV0dXJuIHRoaXMuYS54NChiKX19CkguTjYucHJvdG90eXBlPXsKZ2w6ZnVuY3Rpb24o
-KXtyZXR1cm4gdGhpcy5kfSwKRjpmdW5jdGlvbigpe3ZhciB0LHM9dGhpcyxyPXMuYQppZihzLmIhPT1y
-LnIpdGhyb3cgSC5iKFAuYTQocikpCnQ9cy5jCmlmKHQ9PW51bGwpe3Muc3FZKG51bGwpCnJldHVybiEx
-fWVsc2V7cy5zcVkodC5hKQpzLmM9dC5jCnJldHVybiEwfX0sCnNxWTpmdW5jdGlvbihhKXt0aGlzLmQ9
-dGhpcy4kdGkuQygiMT8iKS5hKGEpfSwKJGlBbjoxfQpILmRDLnByb3RvdHlwZT17CiQxOmZ1bmN0aW9u
-KGEpe3JldHVybiB0aGlzLmEoYSl9LAokUzo1fQpILndOLnByb3RvdHlwZT17CiQyOmZ1bmN0aW9uKGEs
-Yil7cmV0dXJuIHRoaXMuYShhLGIpfSwKJFM6MjF9CkguVlgucHJvdG90eXBlPXsKJDE6ZnVuY3Rpb24o
-YSl7cmV0dXJuIHRoaXMuYShILmgoYSkpfSwKJFM6NDd9CkguVlIucHJvdG90eXBlPXsKdzpmdW5jdGlv
-bihhKXtyZXR1cm4iUmVnRXhwLyIrdGhpcy5hKyIvIit0aGlzLmIuZmxhZ3N9LApnSGM6ZnVuY3Rpb24o
-KXt2YXIgdD10aGlzLHM9dC5jCmlmKHMhPW51bGwpcmV0dXJuIHMKcz10LmIKcmV0dXJuIHQuYz1ILnY0
-KHQuYSxzLm11bHRpbGluZSwhcy5pZ25vcmVDYXNlLHMudW5pY29kZSxzLmRvdEFsbCwhMCl9LApkZDpm
-dW5jdGlvbihhLGIpe3JldHVybiBuZXcgSC5LVyh0aGlzLGIsMCl9LApVWjpmdW5jdGlvbihhLGIpe3Zh
-ciB0LHM9dGhpcy5nSGMoKQpzLmxhc3RJbmRleD1iCnQ9cy5leGVjKGEpCmlmKHQ9PW51bGwpcmV0dXJu
-IG51bGwKcmV0dXJuIG5ldyBILkVLKHQpfSwKJGl2WDoxLAokaXdMOjF9CkguRUsucHJvdG90eXBlPXsK
-cTpmdW5jdGlvbihhLGIpe3ZhciB0CkgudVAoYikKdD10aGlzLmIKaWYoYj49dC5sZW5ndGgpcmV0dXJu
-IEguT0godCxiKQpyZXR1cm4gdFtiXX0sCiRpT2Q6MSwKJGlpYjoxfQpILktXLnByb3RvdHlwZT17Cmdr
-ejpmdW5jdGlvbihhKXtyZXR1cm4gbmV3IEguUGIodGhpcy5hLHRoaXMuYix0aGlzLmMpfX0KSC5QYi5w
-cm90b3R5cGU9ewpnbDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuZAp0LnRvU3RyaW5nCnJldHVybiB0fSwK
-RjpmdW5jdGlvbigpe3ZhciB0LHMscixxLHAsbyxuPXRoaXMsbT1uLmIKaWYobT09bnVsbClyZXR1cm4h
-MQp0PW4uYwpzPW0ubGVuZ3RoCmlmKHQ8PXMpe3I9bi5hCnE9ci5VWihtLHQpCmlmKHEhPW51bGwpe24u
-ZD1xCnQ9cS5iCnA9dC5pbmRleApvPXArdFswXS5sZW5ndGgKaWYocD09PW8pe2lmKHIuYi51bmljb2Rl
-KXt0PW4uYwpyPXQrMQppZihyPHMpe3Q9Qy54Qi5tKG0sdCkKaWYodD49NTUyOTYmJnQ8PTU2MzE5KXt0
-PUMueEIubShtLHIpCnQ9dD49NTYzMjAmJnQ8PTU3MzQzfWVsc2UgdD0hMX1lbHNlIHQ9ITF9ZWxzZSB0
-PSExCm89KHQ/bysxOm8pKzF9bi5jPW8KcmV0dXJuITB9fW4uYj1uLmQ9bnVsbApyZXR1cm4hMX0sCiRp
-QW46MX0KSC50US5wcm90b3R5cGU9ewpxOmZ1bmN0aW9uKGEsYil7SC51UChiKQppZihiIT09MClILnZo
-KFAuTzcoYixudWxsKSkKcmV0dXJuIHRoaXMuY30sCiRpT2Q6MX0KSC51bi5wcm90b3R5cGU9ewpna3o6
-ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBILlNkKHRoaXMuYSx0aGlzLmIsdGhpcy5jKX19CkguU2QucHJv
-dG90eXBlPXsKRjpmdW5jdGlvbigpe3ZhciB0LHMscj10aGlzLHE9ci5jLHA9ci5iLG89cC5sZW5ndGgs
-bj1yLmEsbT1uLmxlbmd0aAppZihxK28+bSl7ci5kPW51bGwKcmV0dXJuITF9dD1uLmluZGV4T2YocCxx
-KQppZih0PDApe3IuYz1tKzEKci5kPW51bGwKcmV0dXJuITF9cz10K28Kci5kPW5ldyBILnRRKHQscCkK
-ci5jPXM9PT1yLmM/cysxOnMKcmV0dXJuITB9LApnbDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuZAp0LnRv
-U3RyaW5nCnJldHVybiB0fSwKJGlBbjoxfQpILkVULnByb3RvdHlwZT17JGlFVDoxLCRpQVM6MX0KSC5i
-MC5wcm90b3R5cGU9ewpnQTpmdW5jdGlvbihhKXtyZXR1cm4gYS5sZW5ndGh9LAokaVhqOjF9CkguRGcu
-cHJvdG90eXBlPXsKcTpmdW5jdGlvbihhLGIpe0gudVAoYikKSC5vZChiLGEsYS5sZW5ndGgpCnJldHVy
-biBhW2JdfSwKWTpmdW5jdGlvbihhLGIsYyl7SC5HSChjKQpILm9kKGIsYSxhLmxlbmd0aCkKYVtiXT1j
-fSwKJGliUToxLAokaWNYOjEsCiRpek06MX0KSC5QZy5wcm90b3R5cGU9ewpZOmZ1bmN0aW9uKGEsYixj
-KXtILnVQKGMpCkgub2QoYixhLGEubGVuZ3RoKQphW2JdPWN9LAokaWJROjEsCiRpY1g6MSwKJGl6TTox
-fQpILnhqLnByb3RvdHlwZT17CnE6ZnVuY3Rpb24oYSxiKXtILnVQKGIpCkgub2QoYixhLGEubGVuZ3Ro
-KQpyZXR1cm4gYVtiXX19CkguZEUucHJvdG90eXBlPXsKcTpmdW5jdGlvbihhLGIpe0gudVAoYikKSC5v
-ZChiLGEsYS5sZW5ndGgpCnJldHVybiBhW2JdfX0KSC5aQS5wcm90b3R5cGU9ewpxOmZ1bmN0aW9uKGEs
-Yil7SC51UChiKQpILm9kKGIsYSxhLmxlbmd0aCkKcmV0dXJuIGFbYl19fQpILmRULnByb3RvdHlwZT17
-CnE6ZnVuY3Rpb24oYSxiKXtILnVQKGIpCkgub2QoYixhLGEubGVuZ3RoKQpyZXR1cm4gYVtiXX19Ckgu
-UHEucHJvdG90eXBlPXsKcTpmdW5jdGlvbihhLGIpe0gudVAoYikKSC5vZChiLGEsYS5sZW5ndGgpCnJl
-dHVybiBhW2JdfX0KSC5lRS5wcm90b3R5cGU9ewpnQTpmdW5jdGlvbihhKXtyZXR1cm4gYS5sZW5ndGh9
-LApxOmZ1bmN0aW9uKGEsYil7SC51UChiKQpILm9kKGIsYSxhLmxlbmd0aCkKcmV0dXJuIGFbYl19fQpI
-LlY2LnByb3RvdHlwZT17CmdBOmZ1bmN0aW9uKGEpe3JldHVybiBhLmxlbmd0aH0sCnE6ZnVuY3Rpb24o
-YSxiKXtILnVQKGIpCkgub2QoYixhLGEubGVuZ3RoKQpyZXR1cm4gYVtiXX0sCiRpVjY6MSwKJGluNjox
-fQpILlJHLnByb3RvdHlwZT17fQpILlZQLnByb3RvdHlwZT17fQpILldCLnByb3RvdHlwZT17fQpILlpH
-LnByb3RvdHlwZT17fQpILkpjLnByb3RvdHlwZT17CkM6ZnVuY3Rpb24oYSl7cmV0dXJuIEguY0Uodi50
-eXBlVW5pdmVyc2UsdGhpcyxhKX0sCktxOmZ1bmN0aW9uKGEpe3JldHVybiBILnY1KHYudHlwZVVuaXZl
-cnNlLHRoaXMsYSl9fQpILkcucHJvdG90eXBlPXt9CkgudTkucHJvdG90eXBlPXsKdzpmdW5jdGlvbihh
-KXtyZXR1cm4gdGhpcy5hfX0KSC5pTS5wcm90b3R5cGU9e30KUC50aC5wcm90b3R5cGU9ewokMTpmdW5j
-dGlvbihhKXt2YXIgdD10aGlzLmEscz10LmEKdC5hPW51bGwKcy4kMCgpfSwKJFM6MTF9ClAuaGEucHJv
-dG90eXBlPXsKJDE6ZnVuY3Rpb24oYSl7dmFyIHQscwp0aGlzLmEuYT11Lk0uYShhKQp0PXRoaXMuYgpz
-PXRoaXMuYwp0LmZpcnN0Q2hpbGQ/dC5yZW1vdmVDaGlsZChzKTp0LmFwcGVuZENoaWxkKHMpfSwKJFM6
-MzB9ClAuVnMucHJvdG90eXBlPXsKJDA6ZnVuY3Rpb24oKXt0aGlzLmEuJDAoKX0sCiRDOiIkMCIsCiRS
-OjAsCiRTOjB9ClAuRnQucHJvdG90eXBlPXsKJDA6ZnVuY3Rpb24oKXt0aGlzLmEuJDAoKX0sCiRDOiIk
-MCIsCiRSOjAsCiRTOjB9ClAuVzMucHJvdG90eXBlPXsKQ1k6ZnVuY3Rpb24oYSxiKXtpZihzZWxmLnNl
-dFRpbWVvdXQhPW51bGwpc2VsZi5zZXRUaW1lb3V0KEgudFIobmV3IFAueUgodGhpcyxiKSwwKSxhKQpl
-bHNlIHRocm93IEguYihQLkw0KCJgc2V0VGltZW91dCgpYCBub3QgZm91bmQuIikpfX0KUC55SC5wcm90
-b3R5cGU9ewokMDpmdW5jdGlvbigpe3RoaXMuYi4kMCgpfSwKJEM6IiQwIiwKJFI6MCwKJFM6MX0KUC5p
-aC5wcm90b3R5cGU9ewphTTpmdW5jdGlvbihhLGIpe3ZhciB0LHM9dGhpcyxyPXMuJHRpCnIuQygiMS8/
-IikuYShiKQppZighcy5iKXMuYS5YZihiKQplbHNle3Q9cy5hCmlmKHIuQygiYjg8MT4iKS5iKGIpKXQu
-Y1UoYikKZWxzZSB0LlgyKHIuYy5hKGIpKX19LAp3MDpmdW5jdGlvbihhLGIpe3ZhciB0CmlmKGI9PW51
-bGwpYj1QLnYwKGEpCnQ9dGhpcy5hCmlmKHRoaXMuYil0LlpMKGEsYikKZWxzZSB0Lk5rKGEsYil9fQpQ
-LldNLnByb3RvdHlwZT17CiQxOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmEuJDIoMCxhKX0sCiRTOjI5
-fQpQLlNYLnByb3RvdHlwZT17CiQyOmZ1bmN0aW9uKGEsYil7dGhpcy5hLiQyKDEsbmV3IEguYnEoYSx1
-LmwuYShiKSkpfSwKJEM6IiQyIiwKJFI6MiwKJFM6MjZ9ClAuR3MucHJvdG90eXBlPXsKJDI6ZnVuY3Rp
-b24oYSxiKXt0aGlzLmEoSC51UChhKSxiKX0sCiRTOjMyfQpQLkZ5LnByb3RvdHlwZT17Cnc6ZnVuY3Rp
-b24oYSl7cmV0dXJuIkl0ZXJhdGlvbk1hcmtlcigiK3RoaXMuYisiLCAiK0guRWoodGhpcy5hKSsiKSJ9
-fQpQLkdWLnByb3RvdHlwZT17CmdsOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5jCmlmKHQ9PW51bGwpcmV0
-dXJuIHRoaXMuJHRpLmMuYSh0aGlzLmIpCnJldHVybiB0LmdsKCl9LApGOmZ1bmN0aW9uKCl7dmFyIHQs
-cyxyLHEscCxvLG49dGhpcwpmb3IodD1uLiR0aS5DKCJBbjwxPiIpOyEwOyl7cz1uLmMKaWYocyE9bnVs
-bClpZihzLkYoKSlyZXR1cm4hMAplbHNlIG4uc1g5KG51bGwpCnI9ZnVuY3Rpb24oYSxiLGMpe3ZhciBt
-LGw9Ygp3aGlsZSh0cnVlKXRyeXtyZXR1cm4gYShsLG0pfWNhdGNoKGspe209awpsPWN9fShuLmEsMCwx
-KQppZihyIGluc3RhbmNlb2YgUC5GeSl7cT1yLmIKaWYocT09PTIpe3A9bi5kCmlmKHA9PW51bGx8fHAu
-bGVuZ3RoPT09MCl7bi5zRUMobnVsbCkKcmV0dXJuITF9aWYoMD49cC5sZW5ndGgpcmV0dXJuIEguT0go
-cCwtMSkKbi5hPXAucG9wKCkKY29udGludWV9ZWxzZXtzPXIuYQppZihxPT09Myl0aHJvdyBzCmVsc2V7
-bz10LmEoSi5JVChzKSkKaWYobyBpbnN0YW5jZW9mIFAuR1Ype3M9bi5kCmlmKHM9PW51bGwpcz1uLmQ9
-W10KQy5ObS5pKHMsbi5hKQpuLmE9by5hCmNvbnRpbnVlfWVsc2V7bi5zWDkobykKY29udGludWV9fX19
-ZWxzZXtuLnNFQyhyKQpyZXR1cm4hMH19cmV0dXJuITF9LApzRUM6ZnVuY3Rpb24oYSl7dGhpcy5iPXRo
-aXMuJHRpLkMoIjE/IikuYShhKX0sCnNYOTpmdW5jdGlvbihhKXt0aGlzLmM9dGhpcy4kdGkuQygiQW48
-MT4/IikuYShhKX0sCiRpQW46MX0KUC5xNC5wcm90b3R5cGU9ewpna3o6ZnVuY3Rpb24oYSl7cmV0dXJu
-IG5ldyBQLkdWKHRoaXMuYSgpLHRoaXMuJHRpLkMoIkdWPDE+IikpfX0KUC5iOC5wcm90b3R5cGU9e30K
-UC5QZi5wcm90b3R5cGU9ewp3MDpmdW5jdGlvbihhLGIpe3ZhciB0ClAuVUkoYSwiZXJyb3IiLHUuSykK
-dD10aGlzLmEKaWYodC5hIT09MCl0aHJvdyBILmIoUC5QVigiRnV0dXJlIGFscmVhZHkgY29tcGxldGVk
-IikpCmlmKGI9PW51bGwpYj1QLnYwKGEpCnQuTmsoYSxiKX0sCnBtOmZ1bmN0aW9uKGEpe3JldHVybiB0
-aGlzLncwKGEsbnVsbCl9fQpQLlpmLnByb3RvdHlwZT17CmFNOmZ1bmN0aW9uKGEsYil7dmFyIHQscz10
-aGlzLiR0aQpzLkMoIjEvPyIpLmEoYikKdD10aGlzLmEKaWYodC5hIT09MCl0aHJvdyBILmIoUC5QVigi
-RnV0dXJlIGFscmVhZHkgY29tcGxldGVkIikpCnQuWGYocy5DKCIxLyIpLmEoYikpfX0KUC5GZS5wcm90
-b3R5cGU9ewpIUjpmdW5jdGlvbihhKXtpZigodGhpcy5jJjE1KSE9PTYpcmV0dXJuITAKcmV0dXJuIHRo
-aXMuYi5iLmJ2KHUuYWwuYSh0aGlzLmQpLGEuYSx1LnksdS5LKX0sCkt3OmZ1bmN0aW9uKGEpe3ZhciB0
-PXRoaXMuZSxzPXUueixyPXUuSyxxPXRoaXMuJHRpLkMoIjIvIikscD10aGlzLmIuYgppZih1LmFnLmIo
-dCkpcmV0dXJuIHEuYShwLnJwKHQsYS5hLGEuYixzLHIsdS5sKSkKZWxzZSByZXR1cm4gcS5hKHAuYnYo
-dS5iSS5hKHQpLGEuYSxzLHIpKX19ClAudnMucHJvdG90eXBlPXsKU3E6ZnVuY3Rpb24oYSxiLGMpe3Zh
-ciB0LHMscixxPXRoaXMuJHRpCnEuS3EoYykuQygiMS8oMikiKS5hKGEpCnQ9JC5YMwppZih0IT09Qy5O
-VSl7Yy5DKCJAPDAvPiIpLktxKHEuYykuQygiMSgyKSIpLmEoYSkKaWYoYiE9bnVsbCliPVAuVkgoYix0
-KX1zPW5ldyBQLnZzKCQuWDMsYy5DKCJ2czwwPiIpKQpyPWI9PW51bGw/MTozCnRoaXMueGYobmV3IFAu
-RmUocyxyLGEsYixxLkMoIkA8MT4iKS5LcShjKS5DKCJGZTwxLDI+IikpKQpyZXR1cm4gc30sClc3OmZ1
-bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuU3EoYSxudWxsLGIpfSwKUWQ6ZnVuY3Rpb24oYSxiLGMpe3Zh
-ciB0LHM9dGhpcy4kdGkKcy5LcShjKS5DKCIxLygyKSIpLmEoYSkKdD1uZXcgUC52cygkLlgzLGMuQygi
-dnM8MD4iKSkKdGhpcy54ZihuZXcgUC5GZSh0LDE5LGEsYixzLkMoIkA8MT4iKS5LcShjKS5DKCJGZTwx
-LDI+IikpKQpyZXR1cm4gdH0sCk9BOmZ1bmN0aW9uKGEpe3ZhciB0LHMscgp1LmI3LmEobnVsbCkKdD10
-aGlzLiR0aQpzPSQuWDMKcj1uZXcgUC52cyhzLHQpCmlmKHMhPT1DLk5VKWE9UC5WSChhLHMpCnRoaXMu
-eGYobmV3IFAuRmUociwyLG51bGwsYSx0LkMoIkA8MT4iKS5LcSh0LmMpLkMoIkZlPDEsMj4iKSkpCnJl
-dHVybiByfSwKeGY6ZnVuY3Rpb24oYSl7dmFyIHQscz10aGlzLHI9cy5hCmlmKHI8PTEpe2EuYT11LkYu
-YShzLmMpCnMuYz1hfWVsc2V7aWYocj09PTIpe3Q9dS5jLmEocy5jKQpyPXQuYQppZihyPDQpe3QueGYo
-YSkKcmV0dXJufXMuYT1yCnMuYz10LmN9UC5UayhudWxsLG51bGwscy5iLHUuTS5hKG5ldyBQLmRhKHMs
-YSkpKX19LApqUTpmdW5jdGlvbihhKXt2YXIgdCxzLHIscSxwLG8sbj10aGlzLG09e30KbS5hPWEKaWYo
-YT09bnVsbClyZXR1cm4KdD1uLmEKaWYodDw9MSl7cz11LkYuYShuLmMpCm4uYz1hCmlmKHMhPW51bGwp
-e3I9YS5hCmZvcihxPWE7ciE9bnVsbDtxPXIscj1wKXA9ci5hCnEuYT1zfX1lbHNle2lmKHQ9PT0yKXtv
-PXUuYy5hKG4uYykKdD1vLmEKaWYodDw0KXtvLmpRKGEpCnJldHVybn1uLmE9dApuLmM9by5jfW0uYT1u
-Lk44KGEpClAuVGsobnVsbCxudWxsLG4uYix1Lk0uYShuZXcgUC5vUShtLG4pKSl9fSwKYWg6ZnVuY3Rp
-b24oKXt2YXIgdD11LkYuYSh0aGlzLmMpCnRoaXMuYz1udWxsCnJldHVybiB0aGlzLk44KHQpfSwKTjg6
-ZnVuY3Rpb24oYSl7dmFyIHQscyxyCmZvcih0PWEscz1udWxsO3QhPW51bGw7cz10LHQ9cil7cj10LmEK
-dC5hPXN9cmV0dXJuIHN9LApISDpmdW5jdGlvbihhKXt2YXIgdCxzPXRoaXMscj1zLiR0aQpyLkMoIjEv
-IikuYShhKQppZihyLkMoImI4PDE+IikuYihhKSlpZihyLmIoYSkpUC5BOShhLHMpCmVsc2UgUC5rMyhh
-LHMpCmVsc2V7dD1zLmFoKCkKci5jLmEoYSkKcy5hPTQKcy5jPWEKUC5IWihzLHQpfX0sClgyOmZ1bmN0
-aW9uKGEpe3ZhciB0LHM9dGhpcwpzLiR0aS5jLmEoYSkKdD1zLmFoKCkKcy5hPTQKcy5jPWEKUC5IWihz
-LHQpfSwKWkw6ZnVuY3Rpb24oYSxiKXt2YXIgdCxzLHI9dGhpcwp1LmwuYShiKQp0PXIuYWgoKQpzPVAu
-VGwoYSxiKQpyLmE9OApyLmM9cwpQLkhaKHIsdCl9LApYZjpmdW5jdGlvbihhKXt2YXIgdD10aGlzLiR0
-aQp0LkMoIjEvIikuYShhKQppZih0LkMoImI4PDE+IikuYihhKSl7dGhpcy5jVShhKQpyZXR1cm59dGhp
-cy53VSh0LmMuYShhKSl9LAp3VTpmdW5jdGlvbihhKXt2YXIgdD10aGlzCnQuJHRpLmMuYShhKQp0LmE9
-MQpQLlRrKG51bGwsbnVsbCx0LmIsdS5NLmEobmV3IFAucnQodCxhKSkpfSwKY1U6ZnVuY3Rpb24oYSl7
-dmFyIHQ9dGhpcyxzPXQuJHRpCnMuQygiYjg8MT4iKS5hKGEpCmlmKHMuYihhKSl7aWYoYS5hPT09OCl7
-dC5hPTEKUC5UayhudWxsLG51bGwsdC5iLHUuTS5hKG5ldyBQLktGKHQsYSkpKX1lbHNlIFAuQTkoYSx0
-KQpyZXR1cm59UC5rMyhhLHQpfSwKTms6ZnVuY3Rpb24oYSxiKXt0aGlzLmE9MQpQLlRrKG51bGwsbnVs
-bCx0aGlzLmIsdS5NLmEobmV3IFAuWkwodGhpcyxhLGIpKSl9LAokaWI4OjF9ClAuZGEucHJvdG90eXBl
-PXsKJDA6ZnVuY3Rpb24oKXtQLkhaKHRoaXMuYSx0aGlzLmIpfSwKJFM6MH0KUC5vUS5wcm90b3R5cGU9
-ewokMDpmdW5jdGlvbigpe1AuSFoodGhpcy5iLHRoaXMuYS5hKX0sCiRTOjB9ClAucFYucHJvdG90eXBl
-PXsKJDE6ZnVuY3Rpb24oYSl7dmFyIHQ9dGhpcy5hCnQuYT0wCnQuSEgoYSl9LAokUzoxMX0KUC5VNy5w
-cm90b3R5cGU9ewokMjpmdW5jdGlvbihhLGIpe3UubC5hKGIpCnRoaXMuYS5aTChhLGIpfSwKJEM6IiQy
-IiwKJFI6MiwKJFM6Mzh9ClAudnIucHJvdG90eXBlPXsKJDA6ZnVuY3Rpb24oKXt0aGlzLmEuWkwodGhp
-cy5iLHRoaXMuYyl9LAokUzowfQpQLnJ0LnByb3RvdHlwZT17CiQwOmZ1bmN0aW9uKCl7dGhpcy5hLlgy
-KHRoaXMuYil9LAokUzowfQpQLktGLnByb3RvdHlwZT17CiQwOmZ1bmN0aW9uKCl7UC5BOSh0aGlzLmIs
-dGhpcy5hKX0sCiRTOjB9ClAuWkwucHJvdG90eXBlPXsKJDA6ZnVuY3Rpb24oKXt0aGlzLmEuWkwodGhp
-cy5iLHRoaXMuYyl9LAokUzowfQpQLlJULnByb3RvdHlwZT17CiQwOmZ1bmN0aW9uKCl7dmFyIHQscyxy
-LHEscCxvLG49dGhpcyxtPW51bGwKdHJ5e3I9bi5hLmEKbT1yLmIuYi56eih1LmZPLmEoci5kKSx1Lnop
-fWNhdGNoKHEpe3Q9SC5SdShxKQpzPUgudHMocSkKaWYobi5jKXtyPXUubi5hKG4uYi5hLmMpLmEKcD10
-CnA9cj09bnVsbD9wPT1udWxsOnI9PT1wCnI9cH1lbHNlIHI9ITEKcD1uLmEKaWYocilwLmM9dS5uLmEo
-bi5iLmEuYykKZWxzZSBwLmM9UC5UbCh0LHMpCnAuYj0hMApyZXR1cm59aWYobSBpbnN0YW5jZW9mIFAu
-dnMmJm0uYT49NCl7aWYobS5hPT09OCl7cj1uLmEKci5jPXUubi5hKG0uYykKci5iPSEwfXJldHVybn1p
-Zih1LmQuYihtKSl7bz1uLmIuYQpyPW4uYQpyLmM9bS5XNyhuZXcgUC5qWihvKSx1LnopCnIuYj0hMX19
-LAokUzoxfQpQLmpaLnByb3RvdHlwZT17CiQxOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmF9LAokUzoz
-OX0KUC5ycS5wcm90b3R5cGU9ewokMDpmdW5jdGlvbigpe3ZhciB0LHMscixxLHAsbyxuLG0KdHJ5e3I9
-dGhpcy5hCnE9ci5hCnA9cS4kdGkKbz1wLmMKbj1vLmEodGhpcy5iKQpyLmM9cS5iLmIuYnYocC5DKCIy
-LygxKSIpLmEocS5kKSxuLHAuQygiMi8iKSxvKX1jYXRjaChtKXt0PUguUnUobSkKcz1ILnRzKG0pCnI9
-dGhpcy5hCnIuYz1QLlRsKHQscykKci5iPSEwfX0sCiRTOjF9ClAuUlcucHJvdG90eXBlPXsKJDA6ZnVu
-Y3Rpb24oKXt2YXIgdCxzLHIscSxwLG8sbixtLGw9dGhpcwp0cnl7dD11Lm4uYShsLmEuYS5jKQpxPWwu
-YgppZihILm9UKHEuYS5IUih0KSkmJnEuYS5lIT1udWxsKXtxLmM9cS5hLkt3KHQpCnEuYj0hMX19Y2F0
-Y2gocCl7cz1ILlJ1KHApCnI9SC50cyhwKQpxPXUubi5hKGwuYS5hLmMpCm89cS5hCm49cwptPWwuYgpp
-ZihvPT1udWxsP249PW51bGw6bz09PW4pbS5jPXEKZWxzZSBtLmM9UC5UbChzLHIpCm0uYj0hMH19LAok
-UzoxfQpQLk9NLnByb3RvdHlwZT17fQpQLnFoLnByb3RvdHlwZT17CmdBOmZ1bmN0aW9uKGEpe3ZhciB0
-LHMscj10aGlzLHE9e30scD1uZXcgUC52cygkLlgzLHUuZkopCnEuYT0wCnQ9SC5MaChyKQpzPXQuQygi
-figxKT8iKS5hKG5ldyBQLkI1KHEscikpCnUuWi5hKG5ldyBQLnVPKHEscCkpClcuSkUoci5hLHIuYixz
-LCExLHQuYykKcmV0dXJuIHB9fQpQLkI1LnByb3RvdHlwZT17CiQxOmZ1bmN0aW9uKGEpe0guTGgodGhp
-cy5iKS5jLmEoYSk7Kyt0aGlzLmEuYX0sCiRTOmZ1bmN0aW9uKCl7cmV0dXJuIEguTGgodGhpcy5iKS5D
-KCJjOCgxKSIpfX0KUC51Ty5wcm90b3R5cGU9ewokMDpmdW5jdGlvbigpe3RoaXMuYi5ISCh0aGlzLmEu
-YSl9LAokUzowfQpQLk1PLnByb3RvdHlwZT17fQpQLmtULnByb3RvdHlwZT17fQpQLnhJLnByb3RvdHlw
-ZT17fQpQLkN3LnByb3RvdHlwZT17Cnc6ZnVuY3Rpb24oYSl7cmV0dXJuIEguRWoodGhpcy5hKX0sCiRp
-WFM6MSwKZ0lJOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYn19ClAubTAucHJvdG90eXBlPXskaUpCOjF9
-ClAucEsucHJvdG90eXBlPXsKJDA6ZnVuY3Rpb24oKXt2YXIgdD1ILmIodGhpcy5hKQp0LnN0YWNrPUou
-aih0aGlzLmIpCnRocm93IHR9LAokUzowfQpQLkppLnByb3RvdHlwZT17CmJIOmZ1bmN0aW9uKGEpe3Zh
-ciB0LHMscixxPW51bGwKdS5NLmEoYSkKdHJ5e2lmKEMuTlU9PT0kLlgzKXthLiQwKCkKcmV0dXJufVAu
-VDgocSxxLHRoaXMsYSx1LkgpfWNhdGNoKHIpe3Q9SC5SdShyKQpzPUgudHMocikKUC5MMihxLHEsdGhp
-cyx0LHUubC5hKHMpKX19LApEbDpmdW5jdGlvbihhLGIsYyl7dmFyIHQscyxyLHE9bnVsbApjLkMoIn4o
-MCkiKS5hKGEpCmMuYShiKQp0cnl7aWYoQy5OVT09PSQuWDMpe2EuJDEoYikKcmV0dXJufVAueXYocSxx
-LHRoaXMsYSxiLHUuSCxjKX1jYXRjaChyKXt0PUguUnUocikKcz1ILnRzKHIpClAuTDIocSxxLHRoaXMs
-dCx1LmwuYShzKSl9fSwKUlQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IFAuaGoodGhpcyxiLkMoIjAo
-KSIpLmEoYSksYil9LApHWTpmdW5jdGlvbihhKXtyZXR1cm4gbmV3IFAuVnAodGhpcyx1Lk0uYShhKSl9
-LApQeTpmdW5jdGlvbihhLGIpe3JldHVybiBuZXcgUC5PUih0aGlzLGIuQygifigwKSIpLmEoYSksYil9
-LApxOmZ1bmN0aW9uKGEsYil7cmV0dXJuIG51bGx9LAp6ejpmdW5jdGlvbihhLGIpe2IuQygiMCgpIiku
-YShhKQppZigkLlgzPT09Qy5OVSlyZXR1cm4gYS4kMCgpCnJldHVybiBQLlQ4KG51bGwsbnVsbCx0aGlz
-LGEsYil9LApidjpmdW5jdGlvbihhLGIsYyxkKXtjLkMoIkA8MD4iKS5LcShkKS5DKCIxKDIpIikuYShh
-KQpkLmEoYikKaWYoJC5YMz09PUMuTlUpcmV0dXJuIGEuJDEoYikKcmV0dXJuIFAueXYobnVsbCxudWxs
-LHRoaXMsYSxiLGMsZCl9LApycDpmdW5jdGlvbihhLGIsYyxkLGUsZil7ZC5DKCJAPDA+IikuS3EoZSku
-S3EoZikuQygiMSgyLDMpIikuYShhKQplLmEoYikKZi5hKGMpCmlmKCQuWDM9PT1DLk5VKXJldHVybiBh
-LiQyKGIsYykKcmV0dXJuIFAuUXgobnVsbCxudWxsLHRoaXMsYSxiLGMsZCxlLGYpfSwKTGo6ZnVuY3Rp
-b24oYSxiLGMsZCl7cmV0dXJuIGIuQygiQDwwPiIpLktxKGMpLktxKGQpLkMoIjEoMiwzKSIpLmEoYSl9
-fQpQLmhqLnByb3RvdHlwZT17CiQwOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYS56eih0aGlzLmIsdGhp
-cy5jKX0sCiRTOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYy5DKCIwKCkiKX19ClAuVnAucHJvdG90eXBl
-PXsKJDA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hLmJIKHRoaXMuYil9LAokUzoxfQpQLk9SLnByb3Rv
-dHlwZT17CiQxOmZ1bmN0aW9uKGEpe3ZhciB0PXRoaXMuYwpyZXR1cm4gdGhpcy5hLkRsKHRoaXMuYix0
-LmEoYSksdCl9LAokUzpmdW5jdGlvbigpe3JldHVybiB0aGlzLmMuQygifigwKSIpfX0KUC5iNi5wcm90
-b3R5cGU9ewpna3o6ZnVuY3Rpb24oYSl7dmFyIHQ9dGhpcyxzPW5ldyBQLmxtKHQsdC5yLEguTGgodCku
-QygibG08MT4iKSkKcy5jPXQuZQpyZXR1cm4gc30sCmdBOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmF9
-LAp0ZzpmdW5jdGlvbihhLGIpe3ZhciB0LHMKaWYoYiE9PSJfX3Byb3RvX18iKXt0PXRoaXMuYgppZih0
-PT1udWxsKXJldHVybiExCnJldHVybiB1LkouYSh0W2JdKSE9bnVsbH1lbHNle3M9dGhpcy5QUihiKQpy
-ZXR1cm4gc319LApQUjpmdW5jdGlvbihhKXt2YXIgdD10aGlzLmQKaWYodD09bnVsbClyZXR1cm4hMQpy
-ZXR1cm4gdGhpcy5ERih0W3RoaXMuTihhKV0sYSk+PTB9LAppOmZ1bmN0aW9uKGEsYil7dmFyIHQscyxy
-PXRoaXMKSC5MaChyKS5jLmEoYikKaWYodHlwZW9mIGI9PSJzdHJpbmciJiZiIT09Il9fcHJvdG9fXyIp
-e3Q9ci5iCnJldHVybiByLlModD09bnVsbD9yLmI9UC5UMigpOnQsYil9ZWxzZSBpZih0eXBlb2YgYj09
-Im51bWJlciImJihiJjEwNzM3NDE4MjMpPT09Yil7cz1yLmMKcmV0dXJuIHIuUyhzPT1udWxsP3IuYz1Q
-LlQyKCk6cyxiKX1lbHNlIHJldHVybiByLkI3KGIpfSwKQjc6ZnVuY3Rpb24oYSl7dmFyIHQscyxyLHE9
-dGhpcwpILkxoKHEpLmMuYShhKQp0PXEuZAppZih0PT1udWxsKXQ9cS5kPVAuVDIoKQpzPXEuTihhKQpy
-PXRbc10KaWYocj09bnVsbCl0W3NdPVtxLnlvKGEpXQplbHNle2lmKHEuREYocixhKT49MClyZXR1cm4h
-MQpyLnB1c2gocS55byhhKSl9cmV0dXJuITB9LApSOmZ1bmN0aW9uKGEsYil7dmFyIHQ9dGhpcwppZih0
-eXBlb2YgYj09InN0cmluZyImJmIhPT0iX19wcm90b19fIilyZXR1cm4gdC5MKHQuYixiKQplbHNlIGlm
-KHR5cGVvZiBiPT0ibnVtYmVyIiYmKGImMTA3Mzc0MTgyMyk9PT1iKXJldHVybiB0LkwodC5jLGIpCmVs
-c2UgcmV0dXJuIHQucWcoYil9LApxZzpmdW5jdGlvbihhKXt2YXIgdCxzLHIscSxwPXRoaXMsbz1wLmQK
-aWYobz09bnVsbClyZXR1cm4hMQp0PXAuTihhKQpzPW9bdF0Kcj1wLkRGKHMsYSkKaWYocjwwKXJldHVy
-biExCnE9cy5zcGxpY2UociwxKVswXQppZigwPT09cy5sZW5ndGgpZGVsZXRlIG9bdF0KcC5HUyhxKQpy
-ZXR1cm4hMH0sClM6ZnVuY3Rpb24oYSxiKXtILkxoKHRoaXMpLmMuYShiKQppZih1LkouYShhW2JdKSE9
-bnVsbClyZXR1cm4hMQphW2JdPXRoaXMueW8oYikKcmV0dXJuITB9LApMOmZ1bmN0aW9uKGEsYil7dmFy
-IHQKaWYoYT09bnVsbClyZXR1cm4hMQp0PXUuSi5hKGFbYl0pCmlmKHQ9PW51bGwpcmV0dXJuITEKdGhp
-cy5HUyh0KQpkZWxldGUgYVtiXQpyZXR1cm4hMH0sClg6ZnVuY3Rpb24oKXt0aGlzLnI9MTA3Mzc0MTgy
-MyZ0aGlzLnIrMX0sCnlvOmZ1bmN0aW9uKGEpe3ZhciB0LHM9dGhpcyxyPW5ldyBQLmJuKEguTGgocyku
-Yy5hKGEpKQppZihzLmU9PW51bGwpcy5lPXMuZj1yCmVsc2V7dD1zLmYKdC50b1N0cmluZwpyLmM9dApz
-LmY9dC5iPXJ9KytzLmEKcy5YKCkKcmV0dXJuIHJ9LApHUzpmdW5jdGlvbihhKXt2YXIgdD10aGlzLHM9
-YS5jLHI9YS5iCmlmKHM9PW51bGwpdC5lPXIKZWxzZSBzLmI9cgppZihyPT1udWxsKXQuZj1zCmVsc2Ug
-ci5jPXM7LS10LmEKdC5YKCl9LApOOmZ1bmN0aW9uKGEpe3JldHVybiBKLmhmKGEpJjEwNzM3NDE4MjN9
-LApERjpmdW5jdGlvbihhLGIpe3ZhciB0LHMKaWYoYT09bnVsbClyZXR1cm4tMQp0PWEubGVuZ3RoCmZv
-cihzPTA7czx0OysrcylpZihKLlJNKGFbc10uYSxiKSlyZXR1cm4gcwpyZXR1cm4tMX19ClAuYm4ucHJv
-dG90eXBlPXt9ClAubG0ucHJvdG90eXBlPXsKZ2w6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kfSwKRjpm
-dW5jdGlvbigpe3ZhciB0PXRoaXMscz10LmMscj10LmEKaWYodC5iIT09ci5yKXRocm93IEguYihQLmE0
-KHIpKQplbHNlIGlmKHM9PW51bGwpe3Quc2oobnVsbCkKcmV0dXJuITF9ZWxzZXt0LnNqKHQuJHRpLkMo
-IjE/IikuYShzLmEpKQp0LmM9cy5iCnJldHVybiEwfX0sCnNqOmZ1bmN0aW9uKGEpe3RoaXMuZD10aGlz
-LiR0aS5DKCIxPyIpLmEoYSl9LAokaUFuOjF9ClAubVcucHJvdG90eXBlPXt9ClAuTFUucHJvdG90eXBl
-PXskaWJROjEsJGljWDoxLCRpek06MX0KUC5sRC5wcm90b3R5cGU9ewpna3o6ZnVuY3Rpb24oYSl7cmV0
-dXJuIG5ldyBILmE3KGEsdGhpcy5nQShhKSxILnooYSkuQygiYTc8bEQuRT4iKSl9LApFOmZ1bmN0aW9u
-KGEsYil7cmV0dXJuIHRoaXMucShhLGIpfSwKSzpmdW5jdGlvbihhLGIpe3ZhciB0LHMKSC56KGEpLkMo
-In4obEQuRSkiKS5hKGIpCnQ9dGhpcy5nQShhKQpmb3Iocz0wO3M8dDsrK3Mpe2IuJDEodGhpcy5xKGEs
-cykpCmlmKHQhPT10aGlzLmdBKGEpKXRocm93IEguYihQLmE0KGEpKX19LApFMjpmdW5jdGlvbihhLGIs
-Yyl7dmFyIHQ9SC56KGEpCnJldHVybiBuZXcgSC5sSihhLHQuS3EoYykuQygiMShsRC5FKSIpLmEoYiks
-dC5DKCJAPGxELkU+IikuS3EoYykuQygibEo8MSwyPiIpKX0sCmR1OmZ1bmN0aW9uKGEsYixjLGQpe3Zh
-ciB0CkgueihhKS5DKCJsRC5FPyIpLmEoZCkKUC5qQihiLGMsdGhpcy5nQShhKSkKZm9yKHQ9Yjt0PGM7
-Kyt0KXRoaXMuWShhLHQsZCl9LAp3OmZ1bmN0aW9uKGEpe3JldHVybiBQLldFKGEsIlsiLCJdIil9fQpQ
-LmlsLnByb3RvdHlwZT17fQpQLnJhLnByb3RvdHlwZT17CiQyOmZ1bmN0aW9uKGEsYil7dmFyIHQscz10
-aGlzLmEKaWYoIXMuYSl0aGlzLmIuYSs9IiwgIgpzLmE9ITEKcz10aGlzLmIKdD1zLmErPUguRWooYSkK
-cy5hPXQrIjogIgpzLmErPUguRWooYil9LAokUzo0M30KUC5Zay5wcm90b3R5cGU9ewpLOmZ1bmN0aW9u
-KGEsYil7dmFyIHQscwpILkxoKHRoaXMpLkMoIn4oWWsuSyxZay5WKSIpLmEoYikKZm9yKHQ9Si5JVCh0
-aGlzLmdWKCkpO3QuRigpOyl7cz10LmdsKCkKYi4kMihzLHRoaXMucSgwLHMpKX19LApnUHU6ZnVuY3Rp
-b24oYSl7cmV0dXJuIEouTTEodGhpcy5nVigpLG5ldyBQLnlRKHRoaXMpLEguTGgodGhpcykuQygiTjM8
-WWsuSyxZay5WPiIpKX0sCng0OmZ1bmN0aW9uKGEpe3JldHVybiBKLnpsKHRoaXMuZ1YoKSxhKX0sCmdB
-OmZ1bmN0aW9uKGEpe3JldHVybiBKLkhtKHRoaXMuZ1YoKSl9LAp3OmZ1bmN0aW9uKGEpe3JldHVybiBQ
-Lm5PKHRoaXMpfSwKJGlaMDoxfQpQLnlRLnByb3RvdHlwZT17CiQxOmZ1bmN0aW9uKGEpe3ZhciB0PXRo
-aXMuYSxzPUguTGgodCkKcy5DKCJZay5LIikuYShhKQpyZXR1cm4gbmV3IFAuTjMoYSx0LnEoMCxhKSxz
-LkMoIkA8WWsuSz4iKS5LcShzLkMoIllrLlYiKSkuQygiTjM8MSwyPiIpKX0sCiRTOmZ1bmN0aW9uKCl7
-cmV0dXJuIEguTGgodGhpcy5hKS5DKCJOMzxZay5LLFlrLlY+KFlrLkspIil9fQpQLktQLnByb3RvdHlw
-ZT17Clk6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0PUguTGgodGhpcykKdC5jLmEoYikKdC5RWzFdLmEoYykK
-dGhyb3cgSC5iKFAuTDQoIkNhbm5vdCBtb2RpZnkgdW5tb2RpZmlhYmxlIG1hcCIpKX19ClAuUG4ucHJv
-dG90eXBlPXsKcTpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmEucSgwLGIpfSwKWTpmdW5jdGlvbihh
-LGIsYyl7dmFyIHQ9SC5MaCh0aGlzKQp0aGlzLmEuWSgwLHQuYy5hKGIpLHQuUVsxXS5hKGMpKX0sCng0
-OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmEueDQoYSl9LApLOmZ1bmN0aW9uKGEsYil7dGhpcy5hLkso
-MCxILkxoKHRoaXMpLkMoIn4oMSwyKSIpLmEoYikpfSwKZ0E6ZnVuY3Rpb24oYSl7dmFyIHQ9dGhpcy5h
-CnJldHVybiB0LmdBKHQpfSwKdzpmdW5jdGlvbihhKXtyZXR1cm4gSi5qKHRoaXMuYSl9LApnUHU6ZnVu
-Y3Rpb24oYSl7dmFyIHQ9dGhpcy5hCnJldHVybiB0LmdQdSh0KX0sCiRpWjA6MX0KUC5Hai5wcm90b3R5
-cGU9e30KUC5NYS5wcm90b3R5cGU9ewp3OmZ1bmN0aW9uKGEpe3JldHVybiBQLldFKHRoaXMsInsiLCJ9
-Iil9fQpQLlZqLnByb3RvdHlwZT17JGliUToxLCRpY1g6MSwkaXh1OjF9ClAuWHYucHJvdG90eXBlPXsK
-RlY6ZnVuY3Rpb24oYSxiKXt2YXIgdApmb3IodD1KLklUKEguTGgodGhpcykuQygiY1g8MT4iKS5hKGIp
-KTt0LkYoKTspdGhpcy5pKDAsdC5nbCgpKX0sCnc6ZnVuY3Rpb24oYSl7cmV0dXJuIFAuV0UodGhpcywi
-eyIsIn0iKX0sCnpWOmZ1bmN0aW9uKGEsYil7dmFyIHQscz1QLnJqKHRoaXMsdGhpcy5yLEguTGgodGhp
-cykuYykKaWYoIXMuRigpKXJldHVybiIiCmlmKGI9PT0iIil7dD0iIgpkbyB0Kz1ILkVqKHMuZCkKd2hp
-bGUocy5GKCkpfWVsc2V7dD0iIitILkVqKHMuZCkKZm9yKDtzLkYoKTspdD10K2IrSC5FaihzLmQpfXJl
-dHVybiB0LmNoYXJDb2RlQXQoMCk9PTA/dDp0fSwKJGliUToxLAokaWNYOjEsCiRpeHU6MX0KUC5uWS5w
-cm90b3R5cGU9e30KUC5XWS5wcm90b3R5cGU9e30KUC5SVS5wcm90b3R5cGU9e30KUC51dy5wcm90b3R5
-cGU9ewpxOmZ1bmN0aW9uKGEsYil7dmFyIHQscz10aGlzLmIKaWYocz09bnVsbClyZXR1cm4gdGhpcy5j
-LnEoMCxiKQplbHNlIGlmKHR5cGVvZiBiIT0ic3RyaW5nIilyZXR1cm4gbnVsbAplbHNle3Q9c1tiXQpy
-ZXR1cm4gdHlwZW9mIHQ9PSJ1bmRlZmluZWQiP3RoaXMuZmIoYik6dH19LApnQTpmdW5jdGlvbihhKXty
-ZXR1cm4gdGhpcy5iPT1udWxsP3RoaXMuYy5hOnRoaXMuQ2YoKS5sZW5ndGh9LApnVjpmdW5jdGlvbigp
-e2lmKHRoaXMuYj09bnVsbCl7dmFyIHQ9dGhpcy5jCnJldHVybiBuZXcgSC5pNSh0LEguTGgodCkuQygi
-aTU8MT4iKSl9cmV0dXJuIG5ldyBQLmk4KHRoaXMpfSwKWTpmdW5jdGlvbihhLGIsYyl7dmFyIHQscyxy
-PXRoaXMKaWYoci5iPT1udWxsKXIuYy5ZKDAsYixjKQplbHNlIGlmKHIueDQoYikpe3Q9ci5iCnRbYl09
-YwpzPXIuYQppZihzPT1udWxsP3QhPW51bGw6cyE9PXQpc1tiXT1udWxsfWVsc2Ugci5YSygpLlkoMCxi
-LGMpfSwKeDQ6ZnVuY3Rpb24oYSl7aWYodGhpcy5iPT1udWxsKXJldHVybiB0aGlzLmMueDQoYSkKcmV0
-dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLmEsYSl9LApLOmZ1bmN0
-aW9uKGEsYil7dmFyIHQscyxyLHEscD10aGlzCnUuY0EuYShiKQppZihwLmI9PW51bGwpcmV0dXJuIHAu
-Yy5LKDAsYikKdD1wLkNmKCkKZm9yKHM9MDtzPHQubGVuZ3RoOysrcyl7cj10W3NdCnE9cC5iW3JdCmlm
-KHR5cGVvZiBxPT0idW5kZWZpbmVkIil7cT1QLlFlKHAuYVtyXSkKcC5iW3JdPXF9Yi4kMihyLHEpCmlm
-KHQhPT1wLmMpdGhyb3cgSC5iKFAuYTQocCkpfX0sCkNmOmZ1bmN0aW9uKCl7dmFyIHQ9dS5iTS5hKHRo
-aXMuYykKaWYodD09bnVsbCl0PXRoaXMuYz1ILlZNKE9iamVjdC5rZXlzKHRoaXMuYSksdS5zKQpyZXR1
-cm4gdH0sClhLOmZ1bmN0aW9uKCl7dmFyIHQscyxyLHEscCxvPXRoaXMKaWYoby5iPT1udWxsKXJldHVy
-biBvLmMKdD1QLkZsKHUuTix1LnopCnM9by5DZigpCmZvcihyPTA7cT1zLmxlbmd0aCxyPHE7KytyKXtw
-PXNbcl0KdC5ZKDAscCxvLnEoMCxwKSl9aWYocT09PTApQy5ObS5pKHMsIiIpCmVsc2UgQy5ObS5zQShz
-LDApCm8uYT1vLmI9bnVsbApyZXR1cm4gby5jPXR9LApmYjpmdW5jdGlvbihhKXt2YXIgdAppZighT2Jq
-ZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuYSxhKSlyZXR1cm4gbnVsbAp0PVAu
-UWUodGhpcy5hW2FdKQpyZXR1cm4gdGhpcy5iW2FdPXR9fQpQLmk4LnByb3RvdHlwZT17CmdBOmZ1bmN0
-aW9uKGEpe3ZhciB0PXRoaXMuYQpyZXR1cm4gdC5nQSh0KX0sCkU6ZnVuY3Rpb24oYSxiKXt2YXIgdD10
-aGlzLmEKaWYodC5iPT1udWxsKXQ9dC5nVigpLkUoMCxiKQplbHNle3Q9dC5DZigpCmlmKGI8MHx8Yj49
-dC5sZW5ndGgpcmV0dXJuIEguT0godCxiKQp0PXRbYl19cmV0dXJuIHR9LApna3o6ZnVuY3Rpb24oYSl7
-dmFyIHQ9dGhpcy5hCmlmKHQuYj09bnVsbCl7dD10LmdWKCkKdD10Lmdreih0KX1lbHNle3Q9dC5DZigp
-CnQ9bmV3IEoubTEodCx0Lmxlbmd0aCxILnQ2KHQpLkMoIm0xPDE+IikpfXJldHVybiB0fSwKdGc6ZnVu
-Y3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5hLng0KGIpfX0KUC5wZy5wcm90b3R5cGU9ewokMDpmdW5jdGlv
-bigpe3ZhciB0LHMKdHJ5e3Q9bmV3IFRleHREZWNvZGVyKCJ1dGYtOCIse2ZhdGFsOnRydWV9KQpyZXR1
-cm4gdH1jYXRjaChzKXtILlJ1KHMpfXJldHVybiBudWxsfSwKJFM6NDV9ClAuQ1YucHJvdG90eXBlPXsK
-eXI6ZnVuY3Rpb24oYSxhMCxhMSl7dmFyIHQscyxyLHEscCxvLG4sbSxsLGssaixpLGgsZyxmLGUsZCxj
-LGI9IkludmFsaWQgYmFzZTY0IGVuY29kaW5nIGxlbmd0aCAiCmExPVAuakIoYTAsYTEsYS5sZW5ndGgp
-CnQ9JC5WNygpCmZvcihzPWEwLHI9cyxxPW51bGwscD0tMSxvPS0xLG49MDtzPGExO3M9bSl7bT1zKzEK
-bD1DLnhCLlcoYSxzKQppZihsPT09Mzcpe2s9bSsyCmlmKGs8PWExKXtqPUgub28oQy54Qi5XKGEsbSkp
-Cmk9SC5vbyhDLnhCLlcoYSxtKzEpKQpoPWoqMTYraS0oaSYyNTYpCmlmKGg9PT0zNyloPS0xCm09a31l
-bHNlIGg9LTF9ZWxzZSBoPWwKaWYoMDw9aCYmaDw9MTI3KXtpZihoPDB8fGg+PXQubGVuZ3RoKXJldHVy
-biBILk9IKHQsaCkKZz10W2hdCmlmKGc+PTApe2g9Qy54Qi5tKCJBQkNERUZHSElKS0xNTk9QUVJTVFVW
-V1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvIixnKQppZihoPT09bCljb250
-aW51ZQpsPWh9ZWxzZXtpZihnPT09LTEpe2lmKHA8MCl7Zj1xPT1udWxsP251bGw6cS5hLmxlbmd0aApp
-ZihmPT1udWxsKWY9MApwPWYrKHMtcikKbz1zfSsrbgppZihsPT09NjEpY29udGludWV9bD1ofWlmKGch
-PT0tMil7aWYocT09bnVsbCl7cT1uZXcgUC5SbigiIikKZj1xfWVsc2UgZj1xCmYuYSs9Qy54Qi5Oaihh
-LHIscykKZi5hKz1ILkx3KGwpCnI9bQpjb250aW51ZX19dGhyb3cgSC5iKFAucnIoIkludmFsaWQgYmFz
-ZTY0IGRhdGEiLGEscykpfWlmKHEhPW51bGwpe2Y9cS5hKz1DLnhCLk5qKGEscixhMSkKZT1mLmxlbmd0
-aAppZihwPj0wKVAueE0oYSxvLGExLHAsbixlKQplbHNle2Q9Qy5qbi56WShlLTEsNCkrMQppZihkPT09
-MSl0aHJvdyBILmIoUC5ycihiLGEsYTEpKQpmb3IoO2Q8NDspe2YrPSI9IgpxLmE9ZjsrK2R9fWY9cS5h
-CnJldHVybiBDLnhCLmk3KGEsYTAsYTEsZi5jaGFyQ29kZUF0KDApPT0wP2Y6Zil9Yz1hMS1hMAppZihw
-Pj0wKVAueE0oYSxvLGExLHAsbixjKQplbHNle2Q9Qy5qbi56WShjLDQpCmlmKGQ9PT0xKXRocm93IEgu
-YihQLnJyKGIsYSxhMSkpCmlmKGQ+MSlhPUMueEIuaTcoYSxhMSxhMSxkPT09Mj8iPT0iOiI9Iil9cmV0
-dXJuIGF9fQpQLlU4LnByb3RvdHlwZT17fQpQLlVrLnByb3RvdHlwZT17fQpQLndJLnByb3RvdHlwZT17
-fQpQLlppLnByb3RvdHlwZT17fQpQLmJ5LnByb3RvdHlwZT17CnBXOmZ1bmN0aW9uKGEsYixjKXt2YXIg
-dAp1LmZWLmEoYykKdD1QLkJTKGIsdGhpcy5nSGUoKS5hKQpyZXR1cm4gdH0sCmdIZTpmdW5jdGlvbigp
-e3JldHVybiBDLkEzfX0KUC5NeC5wcm90b3R5cGU9e30KUC51NS5wcm90b3R5cGU9ewpnWkU6ZnVuY3Rp
-b24oKXtyZXR1cm4gQy5Ra319ClAuRTMucHJvdG90eXBlPXsKV0o6ZnVuY3Rpb24oYSl7dmFyIHQscyxy
-PVAuakIoMCxudWxsLGEubGVuZ3RoKSxxPXItMAppZihxPT09MClyZXR1cm4gbmV3IFVpbnQ4QXJyYXko
-MCkKdD1uZXcgVWludDhBcnJheShxKjMpCnM9bmV3IFAuUncodCkKaWYocy5HeChhLDAscikhPT1yKXMu
-TzYoSi5hNihhLHItMSksMCkKcmV0dXJuIG5ldyBVaW50OEFycmF5KHQuc3ViYXJyYXkoMCxILnJNKDAs
-cy5iLHQubGVuZ3RoKSkpfX0KUC5Sdy5wcm90b3R5cGU9ewpPNjpmdW5jdGlvbihhLGIpe3ZhciB0LHM9
-dGhpcyxyPXMuYyxxPXMuYixwPXErMSxvPXIubGVuZ3RoCmlmKChiJjY0NTEyKT09PTU2MzIwKXt0PTY1
-NTM2KygoYSYxMDIzKTw8MTApfGImMTAyMwpzLmI9cAppZihxPj1vKXJldHVybiBILk9IKHIscSkKcltx
-XT0yNDB8dD4+PjE4CnE9cy5iPXArMQppZihwPj1vKXJldHVybiBILk9IKHIscCkKcltwXT0xMjh8dD4+
-PjEyJjYzCnA9cy5iPXErMQppZihxPj1vKXJldHVybiBILk9IKHIscSkKcltxXT0xMjh8dD4+PjYmNjMK
-cy5iPXArMQppZihwPj1vKXJldHVybiBILk9IKHIscCkKcltwXT0xMjh8dCY2MwpyZXR1cm4hMH1lbHNl
-e3MuYj1wCmlmKHE+PW8pcmV0dXJuIEguT0gocixxKQpyW3FdPTIyNHxhPj4+MTIKcT1zLmI9cCsxCmlm
-KHA+PW8pcmV0dXJuIEguT0gocixwKQpyW3BdPTEyOHxhPj4+NiY2MwpzLmI9cSsxCmlmKHE+PW8pcmV0
-dXJuIEguT0gocixxKQpyW3FdPTEyOHxhJjYzCnJldHVybiExfX0sCkd4OmZ1bmN0aW9uKGEsYixjKXt2
-YXIgdCxzLHIscSxwLG8sbixtPXRoaXMKaWYoYiE9PWMmJihDLnhCLm0oYSxjLTEpJjY0NTEyKT09PTU1
-Mjk2KS0tYwpmb3IodD1tLmMscz10Lmxlbmd0aCxyPWI7cjxjOysrcil7cT1DLnhCLlcoYSxyKQppZihx
-PD0xMjcpe3A9bS5iCmlmKHA+PXMpYnJlYWsKbS5iPXArMQp0W3BdPXF9ZWxzZSBpZigocSY2NDUxMik9
-PT01NTI5Nil7aWYobS5iKzM+PXMpYnJlYWsKbz1yKzEKaWYobS5PNihxLEMueEIuVyhhLG8pKSlyPW99
-ZWxzZSBpZihxPD0yMDQ3KXtwPW0uYgpuPXArMQppZihuPj1zKWJyZWFrCm0uYj1uCmlmKHA+PXMpcmV0
-dXJuIEguT0godCxwKQp0W3BdPTE5MnxxPj4+NgptLmI9bisxCnRbbl09MTI4fHEmNjN9ZWxzZXtwPW0u
-YgppZihwKzI+PXMpYnJlYWsKbj1tLmI9cCsxCmlmKHA+PXMpcmV0dXJuIEguT0godCxwKQp0W3BdPTIy
-NHxxPj4+MTIKcD1tLmI9bisxCmlmKG4+PXMpcmV0dXJuIEguT0godCxuKQp0W25dPTEyOHxxPj4+NiY2
-MwptLmI9cCsxCmlmKHA+PXMpcmV0dXJuIEguT0godCxwKQp0W3BdPTEyOHxxJjYzfX1yZXR1cm4gcn19
-ClAuR1kucHJvdG90eXBlPXsKV0o6ZnVuY3Rpb24oYSl7dmFyIHQscyxyLHEscCxvLG4sbSxsCnUuTC5h
-KGEpCnQ9UC5reSghMSxhLDAsbnVsbCkKaWYodCE9bnVsbClyZXR1cm4gdApzPVAuakIoMCxudWxsLEou
-SG0oYSkpCnI9UC5jUChhLDAscykKaWYocj4wKXtxPVAuSE0oYSwwLHIpCmlmKHI9PT1zKXJldHVybiBx
-CnA9bmV3IFAuUm4ocSkKbz1yCm49ITF9ZWxzZXtwPW5ldyBQLlJuKCIiKQpvPTAKbj0hMH1tPW5ldyBQ
-LmJ6KCExLHApCm0uYz1uCm0uTUUoYSxvLHMpCnUuZWcuYShhKQppZihtLmU+MCl7SC52aChQLnJyKCJV
+bi0xfX0KUC5ibi5wcm90b3R5cGU9e30KUC5sbS5wcm90b3R5cGU9ewpnbDpmdW5jdGlvbigpe3JldHVy
+biB0aGlzLmR9LApGOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxzPXQuYQppZih0LmIhPT1zLnIpdGhyb3cg
+SC5iKFAuYTQocykpCmVsc2V7cz10LmMKaWYocz09bnVsbCl7dC5zaihudWxsKQpyZXR1cm4hMX1lbHNl
+e3Quc2oodC4kdGkuYy5hKHMuYSkpCnQuYz10LmMuYgpyZXR1cm4hMH19fSwKc2o6ZnVuY3Rpb24oYSl7
+dGhpcy5kPXRoaXMuJHRpLmMuYShhKX0sCiRpQW46MX0KUC5tVy5wcm90b3R5cGU9e30KUC5MVS5wcm90
+b3R5cGU9eyRpYlE6MSwkaWNYOjEsJGl6TToxfQpQLmxELnByb3RvdHlwZT17CmdrejpmdW5jdGlvbihh
+KXtyZXR1cm4gbmV3IEguYTcoYSx0aGlzLmdBKGEpLEgucShhKS5DKCJhNzxsRC5FPiIpKX0sCkU6ZnVu
+Y3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5xKGEsYil9LApLOmZ1bmN0aW9uKGEsYil7dmFyIHQscwpILnEo
+YSkuQygifihsRC5FKSIpLmEoYikKdD10aGlzLmdBKGEpCmZvcihzPTA7czx0Oysrcyl7Yi4kMSh0aGlz
+LnEoYSxzKSkKaWYodCE9PXRoaXMuZ0EoYSkpdGhyb3cgSC5iKFAuYTQoYSkpfX0sCmdvcjpmdW5jdGlv
+bihhKXtyZXR1cm4gdGhpcy5nQShhKSE9PTB9LApFMjpmdW5jdGlvbihhLGIsYyl7dmFyIHQ9SC5xKGEp
+CnJldHVybiBuZXcgSC5sSihhLHQuS3EoYykuQygiMShsRC5FKSIpLmEoYiksdC5DKCJAPGxELkU+Iiku
+S3EoYykuQygibEo8MSwyPiIpKX0sCmR1OmZ1bmN0aW9uKGEsYixjLGQpe3ZhciB0CkgucShhKS5DKCJs
+RC5FIikuYShkKQpQLmpCKGIsYyx0aGlzLmdBKGEpKQpmb3IodD1iO3Q8YzsrK3QpdGhpcy5ZKGEsdCxk
+KX0sClo6ZnVuY3Rpb24oYSl7cmV0dXJuIFAuV0UoYSwiWyIsIl0iKX19ClAuaWwucHJvdG90eXBlPXt9
+ClAucmEucHJvdG90eXBlPXsKJDI6ZnVuY3Rpb24oYSxiKXt2YXIgdCxzPXRoaXMuYQppZighcy5hKXRo
+aXMuYi5hKz0iLCAiCnMuYT0hMQpzPXRoaXMuYgp0PXMuYSs9SC5kKGEpCnMuYT10KyI6ICIKcy5hKz1I
+LmQoYil9LAokUzoxfQpQLllrLnByb3RvdHlwZT17Cks6ZnVuY3Rpb24oYSxiKXt2YXIgdCxzCkguTGgo
+dGhpcykuQygifihZay5LLFlrLlYpIikuYShiKQpmb3IodD1KLklUKHRoaXMuZ1YoKSk7dC5GKCk7KXtz
+PXQuZ2woKQpiLiQyKHMsdGhpcy5xKDAscykpfX0sCmdQdTpmdW5jdGlvbihhKXtyZXR1cm4gSi5NMSh0
+aGlzLmdWKCksbmV3IFAueVEodGhpcyksSC5MaCh0aGlzKS5DKCJOMzxZay5LLFlrLlY+IikpfSwKeDQ6
+ZnVuY3Rpb24oYSl7cmV0dXJuIEouemwodGhpcy5nVigpLGEpfSwKZ0E6ZnVuY3Rpb24oYSl7cmV0dXJu
+IEouSCh0aGlzLmdWKCkpfSwKZ2wwOmZ1bmN0aW9uKGEpe3JldHVybiBKLkNpKHRoaXMuZ1YoKSl9LApa
+OmZ1bmN0aW9uKGEpe3JldHVybiBQLm5PKHRoaXMpfSwKJGlaMDoxfQpQLnlRLnByb3RvdHlwZT17CiQx
+OmZ1bmN0aW9uKGEpe3ZhciB0PXRoaXMuYSxzPUguTGgodCkKcy5DKCJZay5LIikuYShhKQpyZXR1cm4g
+bmV3IFAuTjMoYSx0LnEoMCxhKSxzLkMoIkA8WWsuSz4iKS5LcShzLkMoIllrLlYiKSkuQygiTjM8MSwy
+PiIpKX0sCiRTOmZ1bmN0aW9uKCl7cmV0dXJuIEguTGgodGhpcy5hKS5DKCJOMzxZay5LLFlrLlY+KFlr
+LkspIil9fQpQLktQLnByb3RvdHlwZT17Clk6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0PUguTGgodGhpcykK
+dC5jLmEoYikKdC5RWzFdLmEoYykKdGhyb3cgSC5iKFAuTDQoIkNhbm5vdCBtb2RpZnkgdW5tb2RpZmlh
+YmxlIG1hcCIpKX19ClAuUG4ucHJvdG90eXBlPXsKcTpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmEu
+cSgwLGIpfSwKWTpmdW5jdGlvbihhLGIsYyl7dmFyIHQ9SC5MaCh0aGlzKQp0aGlzLmEuWSgwLHQuYy5h
+KGIpLHQuUVsxXS5hKGMpKX0sCng0OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmEueDQoYSl9LApLOmZ1
+bmN0aW9uKGEsYil7dGhpcy5hLksoMCxILkxoKHRoaXMpLkMoIn4oMSwyKSIpLmEoYikpfSwKZ2wwOmZ1
+bmN0aW9uKGEpe3ZhciB0PXRoaXMuYQpyZXR1cm4gdC5nbDAodCl9LApnQTpmdW5jdGlvbihhKXt2YXIg
+dD10aGlzLmEKcmV0dXJuIHQuZ0EodCl9LApaOmZ1bmN0aW9uKGEpe3JldHVybiBKLkFjKHRoaXMuYSl9
+LApnUHU6ZnVuY3Rpb24oYSl7dmFyIHQ9dGhpcy5hCnJldHVybiB0LmdQdSh0KX0sCiRpWjA6MX0KUC5H
+ai5wcm90b3R5cGU9e30KUC5NYS5wcm90b3R5cGU9ewpaOmZ1bmN0aW9uKGEpe3JldHVybiBQLldFKHRo
+aXMsInsiLCJ9Iil9fQpQLlZqLnByb3RvdHlwZT17JGliUToxLCRpY1g6MSwkaXh1OjF9ClAuWHYucHJv
+dG90eXBlPXsKRlY6ZnVuY3Rpb24oYSxiKXt2YXIgdApmb3IodD1KLklUKEguTGgodGhpcykuQygiY1g8
+MT4iKS5hKGIpKTt0LkYoKTspdGhpcy5pKDAsdC5nbCgpKX0sClo6ZnVuY3Rpb24oYSl7cmV0dXJuIFAu
+V0UodGhpcywieyIsIn0iKX0sCnpWOmZ1bmN0aW9uKGEsYil7dmFyIHQscz1QLnJqKHRoaXMsdGhpcy5y
+LEguTGgodGhpcykuYykKaWYoIXMuRigpKXJldHVybiIiCmlmKGI9PT0iIil7dD0iIgpkbyB0Kz1ILmQo
+cy5kKQp3aGlsZShzLkYoKSl9ZWxzZXt0PUguZChzLmQpCmZvcig7cy5GKCk7KXQ9dCtiK0guZChzLmQp
+fXJldHVybiB0LmNoYXJDb2RlQXQoMCk9PTA/dDp0fSwKJGliUToxLAokaWNYOjEsCiRpeHU6MX0KUC5u
+WS5wcm90b3R5cGU9e30KUC5UQy5wcm90b3R5cGU9e30KUC5SVS5wcm90b3R5cGU9e30KUC51dy5wcm90
+b3R5cGU9ewpxOmZ1bmN0aW9uKGEsYil7dmFyIHQscz10aGlzLmIKaWYocz09bnVsbClyZXR1cm4gdGhp
+cy5jLnEoMCxiKQplbHNlIGlmKHR5cGVvZiBiIT0ic3RyaW5nIilyZXR1cm4gbnVsbAplbHNle3Q9c1ti
+XQpyZXR1cm4gdHlwZW9mIHQ9PSJ1bmRlZmluZWQiP3RoaXMuZmIoYik6dH19LApnQTpmdW5jdGlvbihh
+KXtyZXR1cm4gdGhpcy5iPT1udWxsP3RoaXMuYy5hOnRoaXMuQ2YoKS5sZW5ndGh9LApnbDA6ZnVuY3Rp
+b24oYSl7cmV0dXJuIHRoaXMuZ0EodGhpcyk9PT0wfSwKZ1Y6ZnVuY3Rpb24oKXtpZih0aGlzLmI9PW51
+bGwpe3ZhciB0PXRoaXMuYwpyZXR1cm4gbmV3IEguaTUodCxILkxoKHQpLkMoImk1PDE+IikpfXJldHVy
+biBuZXcgUC5pOCh0aGlzKX0sClk6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0LHMscj10aGlzCmlmKHIuYj09
+bnVsbClyLmMuWSgwLGIsYykKZWxzZSBpZihyLng0KGIpKXt0PXIuYgp0W2JdPWMKcz1yLmEKaWYocz09
+bnVsbD90IT1udWxsOnMhPT10KXNbYl09bnVsbH1lbHNlIHIuWEsoKS5ZKDAsYixjKX0sCng0OmZ1bmN0
+aW9uKGEpe2lmKHRoaXMuYj09bnVsbClyZXR1cm4gdGhpcy5jLng0KGEpCnJldHVybiBPYmplY3QucHJv
+dG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5hLGEpfSwKSzpmdW5jdGlvbihhLGIpe3ZhciB0
+LHMscixxLHA9dGhpcwp1LmNBLmEoYikKaWYocC5iPT1udWxsKXJldHVybiBwLmMuSygwLGIpCnQ9cC5D
+ZigpCmZvcihzPTA7czx0Lmxlbmd0aDsrK3Mpe3I9dFtzXQpxPXAuYltyXQppZih0eXBlb2YgcT09InVu
+ZGVmaW5lZCIpe3E9UC5RZShwLmFbcl0pCnAuYltyXT1xfWIuJDIocixxKQppZih0IT09cC5jKXRocm93
+IEguYihQLmE0KHApKX19LApDZjpmdW5jdGlvbigpe3ZhciB0PXUuai5hKHRoaXMuYykKaWYodD09bnVs
+bCl0PXRoaXMuYz1ILlZNKE9iamVjdC5rZXlzKHRoaXMuYSksdS5zKQpyZXR1cm4gdH0sClhLOmZ1bmN0
+aW9uKCl7dmFyIHQscyxyLHEscCxvPXRoaXMKaWYoby5iPT1udWxsKXJldHVybiBvLmMKdD1QLkZsKHUu
+Tix1LnopCnM9by5DZigpCmZvcihyPTA7cT1zLmxlbmd0aCxyPHE7KytyKXtwPXNbcl0KdC5ZKDAscCxv
+LnEoMCxwKSl9aWYocT09PTApQy5ObS5pKHMsbnVsbCkKZWxzZSBDLk5tLnNBKHMsMCkKby5hPW8uYj1u
+dWxsCnJldHVybiBvLmM9dH0sCmZiOmZ1bmN0aW9uKGEpe3ZhciB0CmlmKCFPYmplY3QucHJvdG90eXBl
+Lmhhc093blByb3BlcnR5LmNhbGwodGhpcy5hLGEpKXJldHVybiBudWxsCnQ9UC5RZSh0aGlzLmFbYV0p
+CnJldHVybiB0aGlzLmJbYV09dH19ClAuaTgucHJvdG90eXBlPXsKZ0E6ZnVuY3Rpb24oYSl7dmFyIHQ9
+dGhpcy5hCnJldHVybiB0LmdBKHQpfSwKRTpmdW5jdGlvbihhLGIpe3ZhciB0PXRoaXMuYQppZih0LmI9
+PW51bGwpdD10LmdWKCkuRSgwLGIpCmVsc2V7dD10LkNmKCkKaWYoYjwwfHxiPj10Lmxlbmd0aClyZXR1
+cm4gSC5rKHQsYikKdD10W2JdfXJldHVybiB0fSwKZ2t6OmZ1bmN0aW9uKGEpe3ZhciB0PXRoaXMuYQpp
+Zih0LmI9PW51bGwpe3Q9dC5nVigpCnQ9dC5na3oodCl9ZWxzZXt0PXQuQ2YoKQp0PW5ldyBKLm0xKHQs
+dC5sZW5ndGgsSC50Nih0KS5DKCJtMTwxPiIpKX1yZXR1cm4gdH0sCnRnOmZ1bmN0aW9uKGEsYil7cmV0
+dXJuIHRoaXMuYS54NChiKX19ClAuQ1YucHJvdG90eXBlPXsKeXI6ZnVuY3Rpb24oYSxhMCxhMSl7dmFy
+IHQscyxyLHEscCxvLG4sbSxsLGssaixpLGgsZyxmLGUsZCxjLGI9IkludmFsaWQgYmFzZTY0IGVuY29k
+aW5nIGxlbmd0aCAiCmExPVAuakIoYTAsYTEsYS5sZW5ndGgpCnQ9JC5WNygpCmZvcihzPWEwLHI9cyxx
+PW51bGwscD0tMSxvPS0xLG49MDtzPGExO3M9bSl7bT1zKzEKbD1DLnhCLlcoYSxzKQppZihsPT09Mzcp
+e2s9bSsyCmlmKGs8PWExKXtqPUgub28oQy54Qi5XKGEsbSkpCmk9SC5vbyhDLnhCLlcoYSxtKzEpKQpo
+PWoqMTYraS0oaSYyNTYpCmlmKGg9PT0zNyloPS0xCm09a31lbHNlIGg9LTF9ZWxzZSBoPWwKaWYoMDw9
+aCYmaDw9MTI3KXtpZihoPDB8fGg+PXQubGVuZ3RoKXJldHVybiBILmsodCxoKQpnPXRbaF0KaWYoZz49
+MCl7aD1DLnhCLm0oIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1
+dnd4eXowMTIzNDU2Nzg5Ky8iLGcpCmlmKGg9PT1sKWNvbnRpbnVlCmw9aH1lbHNle2lmKGc9PT0tMSl7
+aWYocDwwKXtmPXE9PW51bGw/bnVsbDpxLmEubGVuZ3RoCmlmKGY9PW51bGwpZj0wCnA9Zisocy1yKQpv
+PXN9KytuCmlmKGw9PT02MSljb250aW51ZX1sPWh9aWYoZyE9PS0yKXtpZihxPT1udWxsKXE9bmV3IFAu
+Um4oIiIpCnEuYSs9Qy54Qi5OaihhLHIscykKcS5hKz1ILkx3KGwpCnI9bQpjb250aW51ZX19dGhyb3cg
+SC5iKFAucnIoIkludmFsaWQgYmFzZTY0IGRhdGEiLGEscykpfWlmKHEhPW51bGwpe2Y9cS5hKz1DLnhC
+Lk5qKGEscixhMSkKZT1mLmxlbmd0aAppZihwPj0wKVAueE0oYSxvLGExLHAsbixlKQplbHNle2Q9Qy5q
+bi56WShlLTEsNCkrMQppZihkPT09MSl0aHJvdyBILmIoUC5ycihiLGEsYTEpKQpmb3IoO2Q8NDspe2Yr
+PSI9IgpxLmE9ZjsrK2R9fWY9cS5hCnJldHVybiBDLnhCLmk3KGEsYTAsYTEsZi5jaGFyQ29kZUF0KDAp
+PT0wP2Y6Zil9Yz1hMS1hMAppZihwPj0wKVAueE0oYSxvLGExLHAsbixjKQplbHNle2Q9Qy5qbi56WShj
+LDQpCmlmKGQ9PT0xKXRocm93IEguYihQLnJyKGIsYSxhMSkpCmlmKGQ+MSlhPUMueEIuaTcoYSxhMSxh
+MSxkPT09Mj8iPT0iOiI9Iil9cmV0dXJuIGF9fQpQLlU4LnByb3RvdHlwZT17fQpQLlVrLnByb3RvdHlw
+ZT17fQpQLndJLnByb3RvdHlwZT17fQpQLlppLnByb3RvdHlwZT17fQpQLlVkLnByb3RvdHlwZT17Clo6
+ZnVuY3Rpb24oYSl7dmFyIHQ9UC5oKHRoaXMuYSkKcmV0dXJuKHRoaXMuYiE9bnVsbD8iQ29udmVydGlu
+ZyBvYmplY3QgdG8gYW4gZW5jb2RhYmxlIG9iamVjdCBmYWlsZWQ6IjoiQ29udmVydGluZyBvYmplY3Qg
+ZGlkIG5vdCByZXR1cm4gYW4gZW5jb2RhYmxlIG9iamVjdDoiKSsiICIrdH19ClAuSzgucHJvdG90eXBl
+PXsKWjpmdW5jdGlvbihhKXtyZXR1cm4iQ3ljbGljIGVycm9yIGluIEpTT04gc3RyaW5naWZ5In19ClAu
+YnkucHJvdG90eXBlPXsKcFc6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0CnUuZXAuYShjKQp0PVAuQlMoYix0
+aGlzLmdIZSgpLmEpCnJldHVybiB0fSwKT0I6ZnVuY3Rpb24oYSxiKXt2YXIgdAp1LmJjLmEoYikKdD1Q
+LnVYKGEsdGhpcy5nWkUoKS5iLG51bGwpCnJldHVybiB0fSwKZ1pFOmZ1bmN0aW9uKCl7cmV0dXJuIEMu
+blh9LApnSGU6ZnVuY3Rpb24oKXtyZXR1cm4gQy5BM319ClAub2oucHJvdG90eXBlPXt9ClAuTXgucHJv
+dG90eXBlPXt9ClAuU2gucHJvdG90eXBlPXsKdnA6ZnVuY3Rpb24oYSl7dmFyIHQscyxyLHEscCxvLG49
+YS5sZW5ndGgKZm9yKHQ9Si5yWShhKSxzPXRoaXMuYyxyPTAscT0wO3E8bjsrK3Epe3A9dC5XKGEscSkK
+aWYocD45Miljb250aW51ZQppZihwPDMyKXtpZihxPnIpcy5hKz1DLnhCLk5qKGEscixxKQpyPXErMQpz
+LmErPUguTHcoOTIpCnN3aXRjaChwKXtjYXNlIDg6cy5hKz1ILkx3KDk4KQpicmVhawpjYXNlIDk6cy5h
+Kz1ILkx3KDExNikKYnJlYWsKY2FzZSAxMDpzLmErPUguTHcoMTEwKQpicmVhawpjYXNlIDEyOnMuYSs9
+SC5MdygxMDIpCmJyZWFrCmNhc2UgMTM6cy5hKz1ILkx3KDExNCkKYnJlYWsKZGVmYXVsdDpzLmErPUgu
+THcoMTE3KQpzLmErPUguTHcoNDgpCnMuYSs9SC5Mdyg0OCkKbz1wPj4+NCYxNQpzLmErPUguTHcobzwx
+MD80OCtvOjg3K28pCm89cCYxNQpzLmErPUguTHcobzwxMD80OCtvOjg3K28pCmJyZWFrfX1lbHNlIGlm
+KHA9PT0zNHx8cD09PTkyKXtpZihxPnIpcy5hKz1DLnhCLk5qKGEscixxKQpyPXErMQpzLmErPUguTHco
+OTIpCnMuYSs9SC5MdyhwKX19aWYocj09PTApcy5hKz1ILmQoYSkKZWxzZSBpZihyPG4pcy5hKz10Lk5q
+KGEscixuKX0sCkpuOmZ1bmN0aW9uKGEpe3ZhciB0LHMscixxCmZvcih0PXRoaXMuYSxzPXQubGVuZ3Ro
+LHI9MDtyPHM7KytyKXtxPXRbcl0KaWYoYT09bnVsbD9xPT1udWxsOmE9PT1xKXRocm93IEguYihuZXcg
+UC5LOChhLG51bGwpKX1DLk5tLmkodCxhKX0sCmlVOmZ1bmN0aW9uKGEpe3ZhciB0LHMscixxLHA9dGhp
+cwppZihwLnRNKGEpKXJldHVybgpwLkpuKGEpCnRyeXt0PXAuYi4kMShhKQppZighcC50TSh0KSl7cj1Q
+Lkd5KGEsbnVsbCxwLmdWSygpKQp0aHJvdyBILmIocil9cj1wLmEKaWYoMD49ci5sZW5ndGgpcmV0dXJu
+IEguayhyLC0xKQpyLnBvcCgpfWNhdGNoKHEpe3M9SC5SdShxKQpyPVAuR3koYSxzLHAuZ1ZLKCkpCnRo
+cm93IEguYihyKX19LAp0TTpmdW5jdGlvbihhKXt2YXIgdCxzLHI9dGhpcwppZih0eXBlb2YgYT09Im51
+bWJlciIpe2lmKCFpc0Zpbml0ZShhKSlyZXR1cm4hMQpyLmMuYSs9Qy5DRC5aKGEpCnJldHVybiEwfWVs
+c2UgaWYoYT09PSEwKXtyLmMuYSs9InRydWUiCnJldHVybiEwfWVsc2UgaWYoYT09PSExKXtyLmMuYSs9
+ImZhbHNlIgpyZXR1cm4hMH1lbHNlIGlmKGE9PW51bGwpe3IuYy5hKz0ibnVsbCIKcmV0dXJuITB9ZWxz
+ZSBpZih0eXBlb2YgYT09InN0cmluZyIpe3Q9ci5jCnQuYSs9JyInCnIudnAoYSkKdC5hKz0nIicKcmV0
+dXJuITB9ZWxzZSBpZih1LmouYihhKSl7ci5KbihhKQpyLmxLKGEpCnQ9ci5hCmlmKDA+PXQubGVuZ3Ro
+KXJldHVybiBILmsodCwtMSkKdC5wb3AoKQpyZXR1cm4hMH1lbHNlIGlmKHUuRy5iKGEpKXtyLkpuKGEp
+CnM9ci5qdyhhKQp0PXIuYQppZigwPj10Lmxlbmd0aClyZXR1cm4gSC5rKHQsLTEpCnQucG9wKCkKcmV0
+dXJuIHN9ZWxzZSByZXR1cm4hMX0sCmxLOmZ1bmN0aW9uKGEpe3ZhciB0LHMscj10aGlzLmMKci5hKz0i
+WyIKdD1KLlU2KGEpCmlmKHQuZ29yKGEpKXt0aGlzLmlVKHQucShhLDApKQpmb3Iocz0xO3M8dC5nQShh
+KTsrK3Mpe3IuYSs9IiwiCnRoaXMuaVUodC5xKGEscykpfX1yLmErPSJdIn0sCmp3OmZ1bmN0aW9uKGEp
+e3ZhciB0LHMscixxLHAsbyxuPXRoaXMsbT17fQppZihhLmdsMChhKSl7bi5jLmErPSJ7fSIKcmV0dXJu
+ITB9dD1hLmdBKGEpKjIKcz1uZXcgQXJyYXkodCkKcy5maXhlZCRsZW5ndGg9QXJyYXkKcj1tLmE9MApt
+LmI9ITAKYS5LKDAsbmV3IFAudGkobSxzKSkKaWYoIW0uYilyZXR1cm4hMQpxPW4uYwpxLmErPSJ7Igpm
+b3IocD0nIic7cjx0O3IrPTIscD0nLCInKXtxLmErPXAKbi52cChILmMoc1tyXSkpCnEuYSs9JyI6Jwpv
+PXIrMQppZihvPj10KXJldHVybiBILmsocyxvKQpuLmlVKHNbb10pfXEuYSs9In0iCnJldHVybiEwfX0K
+UC50aS5wcm90b3R5cGU9ewokMjpmdW5jdGlvbihhLGIpe3ZhciB0LHMKaWYodHlwZW9mIGEhPSJzdHJp
+bmciKXRoaXMuYS5iPSExCnQ9dGhpcy5iCnM9dGhpcy5hCkMuTm0uWSh0LHMuYSsrLGEpCkMuTm0uWSh0
+LHMuYSsrLGIpfSwKJFM6MX0KUC50dS5wcm90b3R5cGU9ewpnVks6ZnVuY3Rpb24oKXt2YXIgdD10aGlz
+LmMuYQpyZXR1cm4gdC5jaGFyQ29kZUF0KDApPT0wP3Q6dH19ClAudTUucHJvdG90eXBlPXsKZ1pFOmZ1
+bmN0aW9uKCl7cmV0dXJuIEMuUWt9fQpQLkUzLnByb3RvdHlwZT17CldKOmZ1bmN0aW9uKGEpe3ZhciB0
+LHMscj1QLmpCKDAsbnVsbCxhLmxlbmd0aCkscT1yLTAKaWYocT09PTApcmV0dXJuIG5ldyBVaW50OEFy
+cmF5KDApCnQ9bmV3IFVpbnQ4QXJyYXkocSozKQpzPW5ldyBQLlJ3KHQpCmlmKHMuR3goYSwwLHIpIT09
+cilzLk82KEouYTYoYSxyLTEpLDApCnJldHVybiBuZXcgVWludDhBcnJheSh0LnN1YmFycmF5KDAsSC5y
+TSgwLHMuYix0Lmxlbmd0aCkpKX19ClAuUncucHJvdG90eXBlPXsKTzY6ZnVuY3Rpb24oYSxiKXt2YXIg
+dCxzPXRoaXMscj1zLmMscT1zLmIscD1xKzEsbz1yLmxlbmd0aAppZigoYiY2NDUxMik9PT01NjMyMCl7
+dD02NTUzNisoKGEmMTAyMyk8PDEwKXxiJjEwMjMKcy5iPXAKaWYocT49bylyZXR1cm4gSC5rKHIscSkK
+cltxXT0yNDB8dD4+PjE4CnE9cy5iPXArMQppZihwPj1vKXJldHVybiBILmsocixwKQpyW3BdPTEyOHx0
+Pj4+MTImNjMKcD1zLmI9cSsxCmlmKHE+PW8pcmV0dXJuIEguayhyLHEpCnJbcV09MTI4fHQ+Pj42JjYz
+CnMuYj1wKzEKaWYocD49bylyZXR1cm4gSC5rKHIscCkKcltwXT0xMjh8dCY2MwpyZXR1cm4hMH1lbHNl
+e3MuYj1wCmlmKHE+PW8pcmV0dXJuIEguayhyLHEpCnJbcV09MjI0fGE+Pj4xMgpxPXMuYj1wKzEKaWYo
+cD49bylyZXR1cm4gSC5rKHIscCkKcltwXT0xMjh8YT4+PjYmNjMKcy5iPXErMQppZihxPj1vKXJldHVy
+biBILmsocixxKQpyW3FdPTEyOHxhJjYzCnJldHVybiExfX0sCkd4OmZ1bmN0aW9uKGEsYixjKXt2YXIg
+dCxzLHIscSxwLG8sbixtPXRoaXMKaWYoYiE9PWMmJihDLnhCLm0oYSxjLTEpJjY0NTEyKT09PTU1Mjk2
+KS0tYwpmb3IodD1tLmMscz10Lmxlbmd0aCxyPWI7cjxjOysrcil7cT1DLnhCLlcoYSxyKQppZihxPD0x
+Mjcpe3A9bS5iCmlmKHA+PXMpYnJlYWsKbS5iPXArMQp0W3BdPXF9ZWxzZSBpZigocSY2NDUxMik9PT01
+NTI5Nil7aWYobS5iKzM+PXMpYnJlYWsKbz1yKzEKaWYobS5PNihxLEMueEIuVyhhLG8pKSlyPW99ZWxz
+ZSBpZihxPD0yMDQ3KXtwPW0uYgpuPXArMQppZihuPj1zKWJyZWFrCm0uYj1uCmlmKHA+PXMpcmV0dXJu
+IEguayh0LHApCnRbcF09MTkyfHE+Pj42Cm0uYj1uKzEKdFtuXT0xMjh8cSY2M31lbHNle3A9bS5iCmlm
+KHArMj49cylicmVhawpuPW0uYj1wKzEKaWYocD49cylyZXR1cm4gSC5rKHQscCkKdFtwXT0yMjR8cT4+
+PjEyCnA9bS5iPW4rMQppZihuPj1zKXJldHVybiBILmsodCxuKQp0W25dPTEyOHxxPj4+NiY2MwptLmI9
+cCsxCmlmKHA+PXMpcmV0dXJuIEguayh0LHApCnRbcF09MTI4fHEmNjN9fXJldHVybiByfX0KUC5HWS5w
+cm90b3R5cGU9ewpXSjpmdW5jdGlvbihhKXt2YXIgdCxzLHIscSxwLG8sbixtLGwKdS5MLmEoYSkKdD1Q
+Lmt5KCExLGEsMCxudWxsKQppZih0IT1udWxsKXJldHVybiB0CnM9UC5qQigwLG51bGwsSi5IKGEpKQpy
+PVAuY1AoYSwwLHMpCmlmKHI+MCl7cT1QLkhNKGEsMCxyKQppZihyPT09cylyZXR1cm4gcQpwPW5ldyBQ
+LlJuKHEpCm89cgpuPSExfWVsc2V7bz0wCnA9bnVsbApuPSEwfWlmKHA9PW51bGwpcD1uZXcgUC5Sbigi
+IikKbT1uZXcgUC5ieighMSxwKQptLmM9bgptLk1FKGEsbyxzKQppZihtLmU+MCl7SC52aChQLnJyKCJV
bmZpbmlzaGVkIFVURi04IG9jdGV0IHNlcXVlbmNlIixhLHMpKQpwLmErPUguTHcoNjU1MzMpCm0uZj1t
LmU9bS5kPTB9bD1wLmEKcmV0dXJuIGwuY2hhckNvZGVBdCgwKT09MD9sOmx9fQpQLmJ6LnByb3RvdHlw
ZT17Ck1FOmZ1bmN0aW9uKGEsYixjKXt2YXIgdCxzLHIscSxwLG8sbixtLGwsayxqLGksaD10aGlzLGc9
@@ -2722,1471 +2809,1540 @@
cz4wKXtkb3tpZihvPT09YylicmVhayAkbGFiZWwwJDAKbj1xLnEoYSxvKQppZih0eXBlb2YgbiE9PSJu
dW1iZXIiKXJldHVybiBuLnpNKCkKaWYoKG4mMTkyKSE9PTEyOCl7bT1QLnJyKGcrQy5qbi5XWihuLDE2
KSxhLG8pCnRocm93IEguYihtKX1lbHNle3Q9KHQ8PDZ8biY2Myk+Pj4wOy0tczsrK299fXdoaWxlKHM+
-MCkKbT1yLTEKaWYobTwwfHxtPj00KXJldHVybiBILk9IKEMuR2IsbSkKaWYodDw9Qy5HYlttXSl7bT1Q
-LnJyKCJPdmVybG9uZyBlbmNvZGluZyBvZiAweCIrQy5qbi5XWih0LDE2KSxhLG8tci0xKQp0aHJvdyBI
-LmIobSl9aWYodD4xMTE0MTExKXttPVAucnIoIkNoYXJhY3RlciBvdXRzaWRlIHZhbGlkIFVuaWNvZGUg
-cmFuZ2U6IDB4IitDLmpuLldaKHQsMTYpLGEsby1yLTEpCnRocm93IEguYihtKX1pZighaC5jfHx0IT09
-NjUyNzkpcC5hKz1ILkx3KHQpCmguYz0hMX1mb3IobT1vPGM7bTspe2w9UC5jUChhLG8sYykKaWYobD4w
-KXtoLmM9ITEKaz1vK2wKcC5hKz1QLkhNKGEsbyxrKQppZihrPT09YylicmVha31lbHNlIGs9bwpqPWsr
-MQpuPXEucShhLGspCmlmKHR5cGVvZiBuIT09Im51bWJlciIpcmV0dXJuIG4uSigpCmlmKG48MCl7aT1Q
-LnJyKCJOZWdhdGl2ZSBVVEYtOCBjb2RlIHVuaXQ6IC0weCIrQy5qbi5XWigtbiwxNiksYSxqLTEpCnRo
-cm93IEguYihpKX1lbHNle2lmKChuJjIyNCk9PT0xOTIpe3Q9biYzMQpzPTEKcj0xCmNvbnRpbnVlICRs
-YWJlbDAkMH1pZigobiYyNDApPT09MjI0KXt0PW4mMTUKcz0yCnI9Mgpjb250aW51ZSAkbGFiZWwwJDB9
-aWYoKG4mMjQ4KT09PTI0MCYmbjwyNDUpe3Q9biY3CnM9MwpyPTMKY29udGludWUgJGxhYmVsMCQwfWk9
-UC5ycihnK0Muam4uV1oobiwxNiksYSxqLTEpCnRocm93IEguYihpKX19YnJlYWsgJGxhYmVsMCQwfWlm
-KHM+MCl7aC5kPXQKaC5lPXMKaC5mPXJ9fX0KUC5XRi5wcm90b3R5cGU9ewokMjpmdW5jdGlvbihhLGIp
-e3ZhciB0LHMscgp1LmZvLmEoYSkKdD10aGlzLmIKcz10aGlzLmEKdC5hKz1zLmEKcj10LmErPUguRWoo
-YS5hKQp0LmE9cisiOiAiCnQuYSs9UC5wKGIpCnMuYT0iLCAifSwKJFM6NDZ9ClAuYTIucHJvdG90eXBl
-PXt9ClAuaVAucHJvdG90eXBlPXsKRE46ZnVuY3Rpb24oYSxiKXtpZihiPT1udWxsKXJldHVybiExCnJl
-dHVybiBiIGluc3RhbmNlb2YgUC5pUCYmdGhpcy5hPT09Yi5hJiYhMH0sCmdpTzpmdW5jdGlvbihhKXt2
-YXIgdD10aGlzLmEKcmV0dXJuKHReQy5qbi53Ryh0LDMwKSkmMTA3Mzc0MTgyM30sCnc6ZnVuY3Rpb24o
-YSl7dmFyIHQ9dGhpcyxzPVAuR3EoSC50Sih0KSkscj1QLmgwKEguTlModCkpLHE9UC5oMChILmpBKHQp
-KSxwPVAuaDAoSC5JWCh0KSksbz1QLmgwKEguY2godCkpLG49UC5oMChILkpkKHQpKSxtPVAuVngoSC5v
-MSh0KSksbD1zKyItIityKyItIitxKyIgIitwKyI6IitvKyI6IituKyIuIittCnJldHVybiBsfX0KUC5D
-UC5wcm90b3R5cGU9e30KUC5YUy5wcm90b3R5cGU9ewpnSUk6ZnVuY3Rpb24oKXtyZXR1cm4gSC50cyh0
-aGlzLiR0aHJvd25Kc0Vycm9yKX19ClAuQzYucHJvdG90eXBlPXsKdzpmdW5jdGlvbihhKXt2YXIgdD10
-aGlzLmEKaWYodCE9bnVsbClyZXR1cm4iQXNzZXJ0aW9uIGZhaWxlZDogIitQLnAodCkKcmV0dXJuIkFz
-c2VydGlvbiBmYWlsZWQifX0KUC5uLnByb3RvdHlwZT17Cnc6ZnVuY3Rpb24oYSl7cmV0dXJuIlRocm93
-IG9mIG51bGwuIn19ClAudS5wcm90b3R5cGU9ewpnWjpmdW5jdGlvbigpe3JldHVybiJJbnZhbGlkIGFy
-Z3VtZW50IisoIXRoaXMuYT8iKHMpIjoiIil9LApndTpmdW5jdGlvbigpe3JldHVybiIifSwKdzpmdW5j
-dGlvbihhKXt2YXIgdCxzLHI9dGhpcyxxPXIuYyxwPXE9PW51bGw/IiI6IiAoIitxKyIpIixvPXIuZCxu
-PW89PW51bGw/IiI6IjogIitILkVqKG8pLG09ci5nWigpK3ArbgppZighci5hKXJldHVybiBtCnQ9ci5n
-dSgpCnM9UC5wKHIuYikKcmV0dXJuIG0rdCsiOiAiK3N9fQpQLmJKLnByb3RvdHlwZT17CmdaOmZ1bmN0
-aW9uKCl7cmV0dXJuIlJhbmdlRXJyb3IifSwKZ3U6ZnVuY3Rpb24oKXt2YXIgdCxzPXRoaXMuZSxyPXRo
-aXMuZgppZihzPT1udWxsKXQ9ciE9bnVsbD8iOiBOb3QgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICIrSC5F
-aihyKToiIgplbHNlIGlmKHI9PW51bGwpdD0iOiBOb3QgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICIr
-SC5FaihzKQplbHNlIGlmKHI+cyl0PSI6IE5vdCBpbiByYW5nZSAiK0guRWoocykrIi4uIitILkVqKHIp
-KyIsIGluY2x1c2l2ZSIKZWxzZSB0PXI8cz8iOiBWYWxpZCB2YWx1ZSByYW5nZSBpcyBlbXB0eSI6Ijog
-T25seSB2YWxpZCB2YWx1ZSBpcyAiK0guRWoocykKcmV0dXJuIHR9fQpQLmVZLnByb3RvdHlwZT17Cmda
-OmZ1bmN0aW9uKCl7cmV0dXJuIlJhbmdlRXJyb3IifSwKZ3U6ZnVuY3Rpb24oKXt2YXIgdCxzPUgudVAo
-dGhpcy5iKQppZih0eXBlb2YgcyE9PSJudW1iZXIiKXJldHVybiBzLkooKQppZihzPDApcmV0dXJuIjog
-aW5kZXggbXVzdCBub3QgYmUgbmVnYXRpdmUiCnQ9dGhpcy5mCmlmKHQ9PT0wKXJldHVybiI6IG5vIGlu
-ZGljZXMgYXJlIHZhbGlkIgpyZXR1cm4iOiBpbmRleCBzaG91bGQgYmUgbGVzcyB0aGFuICIrdH0sCmdB
-OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmZ9fQpQLm1wLnByb3RvdHlwZT17Cnc6ZnVuY3Rpb24oYSl7
-dmFyIHQscyxyLHEscCxvLG4sbSxsPXRoaXMsaz17fSxqPW5ldyBQLlJuKCIiKQprLmE9IiIKdD1sLmMK
-Zm9yKHM9dC5sZW5ndGgscj0wLHE9IiIscD0iIjtyPHM7KytyLHA9IiwgIil7bz10W3JdCmouYT1xK3AK
-cT1qLmErPVAucChvKQprLmE9IiwgIn1sLmQuSygwLG5ldyBQLldGKGssaikpCm49UC5wKGwuYSkKbT1q
-LncoMCkKcz0iTm9TdWNoTWV0aG9kRXJyb3I6IG1ldGhvZCBub3QgZm91bmQ6ICciK0guRWoobC5iLmEp
-KyInXG5SZWNlaXZlcjogIituKyJcbkFyZ3VtZW50czogWyIrbSsiXSIKcmV0dXJuIHN9fQpQLnViLnBy
-b3RvdHlwZT17Cnc6ZnVuY3Rpb24oYSl7cmV0dXJuIlVuc3VwcG9ydGVkIG9wZXJhdGlvbjogIit0aGlz
-LmF9fQpQLmRzLnByb3RvdHlwZT17Cnc6ZnVuY3Rpb24oYSl7dmFyIHQ9dGhpcy5hCnJldHVybiB0IT1u
-dWxsPyJVbmltcGxlbWVudGVkRXJyb3I6ICIrdDoiVW5pbXBsZW1lbnRlZEVycm9yIn19ClAubGoucHJv
-dG90eXBlPXsKdzpmdW5jdGlvbihhKXtyZXR1cm4iQmFkIHN0YXRlOiAiK3RoaXMuYX19ClAuVVYucHJv
-dG90eXBlPXsKdzpmdW5jdGlvbihhKXt2YXIgdD10aGlzLmEKaWYodD09bnVsbClyZXR1cm4iQ29uY3Vy
-cmVudCBtb2RpZmljYXRpb24gZHVyaW5nIGl0ZXJhdGlvbi4iCnJldHVybiJDb25jdXJyZW50IG1vZGlm
-aWNhdGlvbiBkdXJpbmcgaXRlcmF0aW9uOiAiK1AucCh0KSsiLiJ9fQpQLms1LnByb3RvdHlwZT17Cnc6
-ZnVuY3Rpb24oYSl7cmV0dXJuIk91dCBvZiBNZW1vcnkifSwKZ0lJOmZ1bmN0aW9uKCl7cmV0dXJuIG51
-bGx9LAokaVhTOjF9ClAuS1kucHJvdG90eXBlPXsKdzpmdW5jdGlvbihhKXtyZXR1cm4iU3RhY2sgT3Zl
-cmZsb3cifSwKZ0lJOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LAokaVhTOjF9ClAuYy5wcm90b3R5cGU9
-ewp3OmZ1bmN0aW9uKGEpe3ZhciB0PXRoaXMuYQpyZXR1cm4gdD09bnVsbD8iUmVhZGluZyBzdGF0aWMg
-dmFyaWFibGUgZHVyaW5nIGl0cyBpbml0aWFsaXphdGlvbiI6IlJlYWRpbmcgc3RhdGljIHZhcmlhYmxl
-ICciK3QrIicgZHVyaW5nIGl0cyBpbml0aWFsaXphdGlvbiJ9fQpQLkNELnByb3RvdHlwZT17Cnc6ZnVu
-Y3Rpb24oYSl7cmV0dXJuIkV4Y2VwdGlvbjogIit0aGlzLmF9fQpQLmFFLnByb3RvdHlwZT17Cnc6ZnVu
-Y3Rpb24oYSl7dmFyIHQscyxyLHEscCxvLG4sbSxsLGssaixpLGg9dGhpcy5hLGc9aCE9bnVsbCYmIiIh
-PT1oPyJGb3JtYXRFeGNlcHRpb246ICIrSC5FaihoKToiRm9ybWF0RXhjZXB0aW9uIixmPXRoaXMuYyxl
-PXRoaXMuYgppZih0eXBlb2YgZT09InN0cmluZyIpe2lmKGYhPW51bGwpdD1mPDB8fGY+ZS5sZW5ndGgK
-ZWxzZSB0PSExCmlmKHQpZj1udWxsCmlmKGY9PW51bGwpe2lmKGUubGVuZ3RoPjc4KWU9Qy54Qi5Oaihl
-LDAsNzUpKyIuLi4iCnJldHVybiBnKyJcbiIrZX1mb3Iocz0xLHI9MCxxPSExLHA9MDtwPGY7KytwKXtv
-PUMueEIuVyhlLHApCmlmKG89PT0xMCl7aWYociE9PXB8fCFxKSsrcwpyPXArMQpxPSExfWVsc2UgaWYo
-bz09PTEzKXsrK3MKcj1wKzEKcT0hMH19Zz1zPjE/ZysoIiAoYXQgbGluZSAiK3MrIiwgY2hhcmFjdGVy
-ICIrKGYtcisxKSsiKVxuIik6ZysoIiAoYXQgY2hhcmFjdGVyICIrKGYrMSkrIilcbiIpCm49ZS5sZW5n
-dGgKZm9yKHA9ZjtwPG47KytwKXtvPUMueEIubShlLHApCmlmKG89PT0xMHx8bz09PTEzKXtuPXAKYnJl
-YWt9fWlmKG4tcj43OClpZihmLXI8NzUpe209cis3NQpsPXIKaz0iIgpqPSIuLi4ifWVsc2V7aWYobi1m
-PDc1KXtsPW4tNzUKbT1uCmo9IiJ9ZWxzZXtsPWYtMzYKbT1mKzM2Cmo9Ii4uLiJ9az0iLi4uIn1lbHNl
-e209bgpsPXIKaz0iIgpqPSIifWk9Qy54Qi5OaihlLGwsbSkKcmV0dXJuIGcraytpK2orIlxuIitDLnhC
-Lkl4KCIgIixmLWwray5sZW5ndGgpKyJeXG4ifWVsc2UgcmV0dXJuIGYhPW51bGw/ZysoIiAoYXQgb2Zm
-c2V0ICIrSC5FaihmKSsiKSIpOmd9fQpQLkVILnByb3RvdHlwZT17fQpQLklmLnByb3RvdHlwZT17fQpQ
-LmNYLnByb3RvdHlwZT17CkUyOmZ1bmN0aW9uKGEsYixjKXt2YXIgdD1ILkxoKHRoaXMpCnJldHVybiBI
-LksxKHRoaXMsdC5LcShjKS5DKCIxKGNYLkUpIikuYShiKSx0LkMoImNYLkUiKSxjKX0sCmV2OmZ1bmN0
-aW9uKGEsYil7dmFyIHQ9SC5MaCh0aGlzKQpyZXR1cm4gbmV3IEguVTUodGhpcyx0LkMoImEyKGNYLkUp
-IikuYShiKSx0LkMoIlU1PGNYLkU+IikpfSwKZ0E6ZnVuY3Rpb24oYSl7dmFyIHQscz10aGlzLmdreih0
-aGlzKQpmb3IodD0wO3MuRigpOykrK3QKcmV0dXJuIHR9LApnbDA6ZnVuY3Rpb24oYSl7cmV0dXJuIXRo
-aXMuZ2t6KHRoaXMpLkYoKX0sCmdyODpmdW5jdGlvbihhKXt2YXIgdCxzPXRoaXMuZ2t6KHRoaXMpCmlm
-KCFzLkYoKSl0aHJvdyBILmIoSC5XcCgpKQp0PXMuZ2woKQppZihzLkYoKSl0aHJvdyBILmIoSC5kVSgp
-KQpyZXR1cm4gdH0sCkU6ZnVuY3Rpb24oYSxiKXt2YXIgdCxzLHIKUC5rMShiLCJpbmRleCIpCmZvcih0
-PXRoaXMuZ2t6KHRoaXMpLHM9MDt0LkYoKTspe3I9dC5nbCgpCmlmKGI9PT1zKXJldHVybiByOysrc310
-aHJvdyBILmIoUC5DZihiLHRoaXMsImluZGV4IixudWxsLHMpKX0sCnc6ZnVuY3Rpb24oYSl7cmV0dXJu
-IFAuRVAodGhpcywiKCIsIikiKX19ClAuQW4ucHJvdG90eXBlPXt9ClAuek0ucHJvdG90eXBlPXskaWJR
-OjEsJGljWDoxfQpQLlowLnByb3RvdHlwZT17fQpQLk4zLnByb3RvdHlwZT17Cnc6ZnVuY3Rpb24oYSl7
-cmV0dXJuIk1hcEVudHJ5KCIrSC5FaihKLmoodGhpcy5hKSkrIjogIitILkVqKEouaih0aGlzLmIpKSsi
-KSJ9fQpQLmM4LnByb3RvdHlwZT17CmdpTzpmdW5jdGlvbihhKXtyZXR1cm4gUC5NaC5wcm90b3R5cGUu
-Z2lPLmNhbGwodGhpcyx0aGlzKX0sCnc6ZnVuY3Rpb24oYSl7cmV0dXJuIm51bGwifX0KUC5sZi5wcm90
-b3R5cGU9e30KUC5NaC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlAuTWgsJGlNaDoxLApETjpmdW5jdGlv
-bihhLGIpe3JldHVybiB0aGlzPT09Yn0sCmdpTzpmdW5jdGlvbihhKXtyZXR1cm4gSC5lUSh0aGlzKX0s
-Cnc6ZnVuY3Rpb24oYSl7cmV0dXJuIkluc3RhbmNlIG9mICciK0guRWooSC5NKHRoaXMpKSsiJyJ9LApl
-NzpmdW5jdGlvbihhLGIpe3Uuby5hKGIpCnRocm93IEguYihQLmxyKHRoaXMsYi5nV2EoKSxiLmduZCgp
-LGIuZ1ZtKCkpKX0sCnRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudyh0aGlzKX19ClAuT2Qu
-cHJvdG90eXBlPXt9ClAuaWIucHJvdG90eXBlPXskaU9kOjF9ClAueHUucHJvdG90eXBlPXt9ClAuR3ou
-cHJvdG90eXBlPXt9ClAuWmQucHJvdG90eXBlPXsKdzpmdW5jdGlvbihhKXtyZXR1cm4iIn0sCiRpR3o6
-MX0KUC5xVS5wcm90b3R5cGU9eyRpdlg6MX0KUC5Sbi5wcm90b3R5cGU9ewpnQTpmdW5jdGlvbihhKXty
-ZXR1cm4gdGhpcy5hLmxlbmd0aH0sCnc6ZnVuY3Rpb24oYSl7dmFyIHQ9dGhpcy5hCnJldHVybiB0LmNo
-YXJDb2RlQXQoMCk9PTA/dDp0fSwKJGlCTDoxfQpQLkdELnByb3RvdHlwZT17fQpQLm4xLnByb3RvdHlw
-ZT17CiQyOmZ1bmN0aW9uKGEsYil7dmFyIHQscyxyLHEKdS5mLmEoYSkKSC5oKGIpCnQ9Si5yWShiKS5P
-WShiLCI9IikKaWYodD09PS0xKXtpZihiIT09IiIpYS5ZKDAsUC5rdShiLDAsYi5sZW5ndGgsdGhpcy5h
-LCEwKSwiIil9ZWxzZSBpZih0IT09MCl7cz1DLnhCLk5qKGIsMCx0KQpyPUMueEIuRyhiLHQrMSkKcT10
-aGlzLmEKYS5ZKDAsUC5rdShzLDAscy5sZW5ndGgscSwhMCksUC5rdShyLDAsci5sZW5ndGgscSwhMCkp
-fXJldHVybiBhfSwKJFM6MTl9ClAuY1MucHJvdG90eXBlPXsKJDI6ZnVuY3Rpb24oYSxiKXt0aHJvdyBI
-LmIoUC5ycigiSWxsZWdhbCBJUHY0IGFkZHJlc3MsICIrYSx0aGlzLmEsYikpfSwKJFM6NTB9ClAuVkMu
-cHJvdG90eXBlPXsKJDI6ZnVuY3Rpb24oYSxiKXt0aHJvdyBILmIoUC5ycigiSWxsZWdhbCBJUHY2IGFk
-ZHJlc3MsICIrYSx0aGlzLmEsYikpfSwKJDE6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuJDIoYSxudWxs
-KX0sCiRTOjUxfQpQLkpULnByb3RvdHlwZT17CiQyOmZ1bmN0aW9uKGEsYil7dmFyIHQKaWYoYi1hPjQp
-dGhpcy5hLiQyKCJhbiBJUHY2IHBhcnQgY2FuIG9ubHkgY29udGFpbiBhIG1heGltdW0gb2YgNCBoZXgg
-ZGlnaXRzIixhKQp0PVAuUUEoQy54Qi5Oaih0aGlzLmIsYSxiKSwxNikKaWYodHlwZW9mIHQhPT0ibnVt
-YmVyIilyZXR1cm4gdC5KKCkKaWYodDwwfHx0PjY1NTM1KXRoaXMuYS4kMigiZWFjaCBwYXJ0IG11c3Qg
-YmUgaW4gdGhlIHJhbmdlIG9mIGAweDAuLjB4RkZGRmAiLGEpCnJldHVybiB0fSwKJFM6MjB9ClAuRG4u
-cHJvdG90eXBlPXsKZ25EOmZ1bmN0aW9uKCl7dmFyIHQscyxyLHE9dGhpcyxwPXEueAppZihwPT1udWxs
-KXtwPXEuYQp0PXAubGVuZ3RoIT09MD8iIitwKyI6IjoiIgpzPXEuYwpyPXM9PW51bGwKaWYoIXJ8fHA9
-PT0iZmlsZSIpe3A9dCsiLy8iCnQ9cS5iCmlmKHQubGVuZ3RoIT09MClwPXArdCsiQCIKaWYoIXIpcCs9
-cwp0PXEuZAppZih0IT1udWxsKXA9cCsiOiIrSC5Faih0KX1lbHNlIHA9dApwKz1xLmUKdD1xLmYKaWYo
-dCE9bnVsbClwPXArIj8iK3QKdD1xLnIKaWYodCE9bnVsbClwPXArIiMiK3QKcD1wLmNoYXJDb2RlQXQo
-MCk9PTA/cDpwCmlmKHEueD09bnVsbClxLng9cAplbHNlIHA9SC52aChILnlSKCJGaWVsZCAnX3RleHQn
-IGhhcyBiZWVuIGFzc2lnbmVkIGR1cmluZyBpbml0aWFsaXphdGlvbi4iKSl9cmV0dXJuIHB9LApnRmo6
-ZnVuY3Rpb24oKXt2YXIgdCxzPXRoaXMscj1zLnkKaWYocj09bnVsbCl7dD1zLmUKaWYodC5sZW5ndGgh
-PT0wJiZDLnhCLlcodCwwKT09PTQ3KXQ9Qy54Qi5HKHQsMSkKcj10Lmxlbmd0aD09PTA/Qy54RDpQLkFG
-KG5ldyBILmxKKEguVk0odC5zcGxpdCgiLyIpLHUucyksdS5kTy5hKFAuUEgoKSksdS5kbyksdS5OKQpp
-ZihzLnk9PW51bGwpcy5zS3AocikKZWxzZSByPUgudmgoSC55UigiRmllbGQgJ3BhdGhTZWdtZW50cycg
-aGFzIGJlZW4gYXNzaWduZWQgZHVyaW5nIGluaXRpYWxpemF0aW9uLiIpKX1yZXR1cm4gcn0sCmdpTzpm
-dW5jdGlvbihhKXt2YXIgdD10aGlzLHM9dC56CmlmKHM9PW51bGwpe3M9Qy54Qi5naU8odC5nbkQoKSkK
-aWYodC56PT1udWxsKXQuej1zCmVsc2Ugcz1ILnZoKEgueVIoIkZpZWxkICdoYXNoQ29kZScgaGFzIGJl
-ZW4gYXNzaWduZWQgZHVyaW5nIGluaXRpYWxpemF0aW9uLiIpKX1yZXR1cm4gc30sCmdoWTpmdW5jdGlv
-bigpe3ZhciB0PXRoaXMscz10LlEKaWYocz09bnVsbCl7cz1uZXcgUC5HaihQLldYKHQuZ3RQKCkpLHUu
-ZHcpCmlmKHQuUT09bnVsbCl0LnNOTShzKQplbHNlIHM9SC52aChILnlSKCJGaWVsZCAncXVlcnlQYXJh
-bWV0ZXJzJyBoYXMgYmVlbiBhc3NpZ25lZCBkdXJpbmcgaW5pdGlhbGl6YXRpb24uIikpfXJldHVybiBz
-fSwKZ2t1OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYn0sCmdKZjpmdW5jdGlvbihhKXt2YXIgdD10aGlz
-LmMKaWYodD09bnVsbClyZXR1cm4iIgppZihDLnhCLm4odCwiWyIpKXJldHVybiBDLnhCLk5qKHQsMSx0
-Lmxlbmd0aC0xKQpyZXR1cm4gdH0sCmd0cDpmdW5jdGlvbihhKXt2YXIgdD10aGlzLmQKcmV0dXJuIHQ9
-PW51bGw/UC53Syh0aGlzLmEpOnR9LApndFA6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmYKcmV0dXJuIHQ9
-PW51bGw/IiI6dH0sCmdLYTpmdW5jdGlvbigpe3ZhciB0PXRoaXMucgpyZXR1cm4gdD09bnVsbD8iIjp0
-fSwKbm06ZnVuY3Rpb24oYSxiKXt2YXIgdCxzLHIscSxwLG8sbixtLGwsaz10aGlzCnUuVS5hKG51bGwp
-CnUuYzkuYShiKQp0PWsuYQpzPXQ9PT0iZmlsZSIKcj1rLmIKcT1rLmQKcD1rLmMKaWYoIShwIT1udWxs
-KSlwPXIubGVuZ3RoIT09MHx8cSE9bnVsbHx8cz8iIjpudWxsCm89ay5lCmlmKCFzKW49cCE9bnVsbCYm
-by5sZW5ndGghPT0wCmVsc2Ugbj0hMAppZihuJiYhQy54Qi5uKG8sIi8iKSlvPSIvIitvCm09bwpsPVAu
-bGUobnVsbCwwLDAsYikKcmV0dXJuIG5ldyBQLkRuKHQscixwLHEsbSxsLGsucil9LApKaDpmdW5jdGlv
-bihhLGIpe3ZhciB0LHMscixxLHAsbwpmb3IodD0wLHM9MDtDLnhCLlFpKGIsIi4uLyIscyk7KXtzKz0z
-OysrdH1yPUMueEIuY24oYSwiLyIpCndoaWxlKCEwKXtpZighKHI+MCYmdD4wKSlicmVhawpxPUMueEIu
-UGsoYSwiLyIsci0xKQppZihxPDApYnJlYWsKcD1yLXEKbz1wIT09MgppZighb3x8cD09PTMpaWYoQy54
-Qi5tKGEscSsxKT09PTQ2KW89IW98fEMueEIubShhLHErMik9PT00NgplbHNlIG89ITEKZWxzZSBvPSEx
-CmlmKG8pYnJlYWs7LS10CnI9cX1yZXR1cm4gQy54Qi5pNyhhLHIrMSxudWxsLEMueEIuRyhiLHMtMyp0
-KSl9LApaSTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5tUyhQLmhLKGEpKX0sCm1TOmZ1bmN0aW9uKGEp
-e3ZhciB0LHMscixxLHAsbyxuLG0sbCxrPXRoaXMsaj1udWxsCmlmKGEuZ0ZpKCkubGVuZ3RoIT09MCl7
-dD1hLmdGaSgpCmlmKGEuZ2NqKCkpe3M9YS5na3UoKQpyPWEuZ0pmKGEpCnE9YS5neEEoKT9hLmd0cChh
-KTpqfWVsc2V7cT1qCnI9cQpzPSIifXA9UC54ZShhLmdJaShhKSkKbz1hLmdRRCgpP2EuZ3RQKCk6an1l
-bHNle3Q9ay5hCmlmKGEuZ2NqKCkpe3M9YS5na3UoKQpyPWEuZ0pmKGEpCnE9UC53QihhLmd4QSgpP2Eu
-Z3RwKGEpOmosdCkKcD1QLnhlKGEuZ0lpKGEpKQpvPWEuZ1FEKCk/YS5ndFAoKTpqfWVsc2V7cz1rLmIK
-cj1rLmMKcT1rLmQKaWYoYS5nSWkoYSk9PT0iIil7cD1rLmUKbz1hLmdRRCgpP2EuZ3RQKCk6ay5mfWVs
-c2V7aWYoYS5ndFQoKSlwPVAueGUoYS5nSWkoYSkpCmVsc2V7bj1rLmUKaWYobi5sZW5ndGg9PT0wKWlm
-KHI9PW51bGwpcD10Lmxlbmd0aD09PTA/YS5nSWkoYSk6UC54ZShhLmdJaShhKSkKZWxzZSBwPVAueGUo
-Ii8iK2EuZ0lpKGEpKQplbHNle209ay5KaChuLGEuZ0lpKGEpKQpsPXQubGVuZ3RoPT09MAppZighbHx8
-ciE9bnVsbHx8Qy54Qi5uKG4sIi8iKSlwPVAueGUobSkKZWxzZSBwPVAud0YobSwhbHx8ciE9bnVsbCl9
-fW89YS5nUUQoKT9hLmd0UCgpOmp9fX1yZXR1cm4gbmV3IFAuRG4odCxzLHIscSxwLG8sYS5nWjgoKT9h
-LmdLYSgpOmopfSwKZ2NqOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYyE9bnVsbH0sCmd4QTpmdW5jdGlv
-bigpe3JldHVybiB0aGlzLmQhPW51bGx9LApnUUQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mIT1udWxs
-fSwKZ1o4OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuciE9bnVsbH0sCmd0VDpmdW5jdGlvbigpe3JldHVy
-biBDLnhCLm4odGhpcy5lLCIvIil9LAp0NDpmdW5jdGlvbigpe3ZhciB0LHM9dGhpcyxyPXMuYQppZihy
-IT09IiImJnIhPT0iZmlsZSIpdGhyb3cgSC5iKFAuTDQoIkNhbm5vdCBleHRyYWN0IGEgZmlsZSBwYXRo
-IGZyb20gYSAiK3IrIiBVUkkiKSkKaWYocy5ndFAoKSE9PSIiKXRocm93IEguYihQLkw0KCJDYW5ub3Qg
-ZXh0cmFjdCBhIGZpbGUgcGF0aCBmcm9tIGEgVVJJIHdpdGggYSBxdWVyeSBjb21wb25lbnQiKSkKaWYo
-cy5nS2EoKSE9PSIiKXRocm93IEguYihQLkw0KCJDYW5ub3QgZXh0cmFjdCBhIGZpbGUgcGF0aCBmcm9t
-IGEgVVJJIHdpdGggYSBmcmFnbWVudCBjb21wb25lbnQiKSkKcj0kLndRKCkKaWYoSC5vVChyKSlyPVAu
-bW4ocykKZWxzZXtpZihzLmMhPW51bGwmJnMuZ0pmKHMpIT09IiIpSC52aChQLkw0KCJDYW5ub3QgZXh0
-cmFjdCBhIG5vbi1XaW5kb3dzIGZpbGUgcGF0aCBmcm9tIGEgZmlsZSBVUkkgd2l0aCBhbiBhdXRob3Jp
-dHkiKSkKdD1zLmdGaigpClAua0UodCwhMSkKcj1QLnZnKEMueEIubihzLmUsIi8iKT8iIisiLyI6IiIs
-dCwiLyIpCnI9ci5jaGFyQ29kZUF0KDApPT0wP3I6cn1yZXR1cm4gcn0sCnc6ZnVuY3Rpb24oYSl7cmV0
-dXJuIHRoaXMuZ25EKCl9LApETjpmdW5jdGlvbihhLGIpe3ZhciB0PXRoaXMKaWYoYj09bnVsbClyZXR1
-cm4hMQppZih0PT09YilyZXR1cm4hMApyZXR1cm4gdS5kRC5iKGIpJiZ0LmE9PT1iLmdGaSgpJiZ0LmMh
-PW51bGw9PT1iLmdjaigpJiZ0LmI9PT1iLmdrdSgpJiZ0LmdKZih0KT09PWIuZ0pmKGIpJiZ0Lmd0cCh0
-KT09PWIuZ3RwKGIpJiZ0LmU9PT1iLmdJaShiKSYmdC5mIT1udWxsPT09Yi5nUUQoKSYmdC5ndFAoKT09
-PWIuZ3RQKCkmJnQuciE9bnVsbD09PWIuZ1o4KCkmJnQuZ0thKCk9PT1iLmdLYSgpfSwKc0twOmZ1bmN0
-aW9uKGEpe3RoaXMueT11LmJrLmEoYSl9LApzTk06ZnVuY3Rpb24oYSl7dGhpcy5RPXUuY1ouYShhKX0s
-CiRpaUQ6MSwKZ0ZpOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYX0sCmdJaTpmdW5jdGlvbihhKXtyZXR1
-cm4gdGhpcy5lfX0KUC5SWi5wcm90b3R5cGU9ewokMTpmdW5jdGlvbihhKXtyZXR1cm4gUC5lUChDLlpK
-LEguaChhKSxDLnhNLCExKX0sCiRTOjZ9ClAuTUUucHJvdG90eXBlPXsKJDI6ZnVuY3Rpb24oYSxiKXt2
-YXIgdD10aGlzLmIscz10aGlzLmEKdC5hKz1zLmEKcy5hPSImIgpzPXQuYSs9SC5FaihQLmVQKEMuRjMs
-YSxDLnhNLCEwKSkKaWYoYiE9bnVsbCYmYi5sZW5ndGghPT0wKXt0LmE9cysiPSIKdC5hKz1ILkVqKFAu
-ZVAoQy5GMyxiLEMueE0sITApKX19LAokUzoyMn0KUC55NS5wcm90b3R5cGU9ewokMjpmdW5jdGlvbihh
-LGIpe3ZhciB0LHMKSC5oKGEpCmlmKGI9PW51bGx8fHR5cGVvZiBiPT0ic3RyaW5nIil0aGlzLmEuJDIo
-YSxILmsoYikpCmVsc2UgZm9yKHQ9Si5JVCh1Lm0uYShiKSkscz10aGlzLmE7dC5GKCk7KXMuJDIoYSxI
-LmgodC5nbCgpKSl9LAokUzoxMn0KUC5QRS5wcm90b3R5cGU9ewpnbFI6ZnVuY3Rpb24oKXt2YXIgdCxz
-LHIscSxwPXRoaXMsbz1udWxsLG49cC5jCmlmKG49PW51bGwpe249cC5iCmlmKDA+PW4ubGVuZ3RoKXJl
-dHVybiBILk9IKG4sMCkKdD1wLmEKbj1uWzBdKzEKcz1DLnhCLlhVKHQsIj8iLG4pCnI9dC5sZW5ndGgK
-aWYocz49MCl7cT1QLlBJKHQscysxLHIsQy5WQywhMSkKcj1zfWVsc2UgcT1vCm49cC5jPW5ldyBQLnFl
-KCJkYXRhIiwiIixvLG8sUC5QSSh0LG4scixDLldkLCExKSxxLG8pfXJldHVybiBufSwKdzpmdW5jdGlv
-bihhKXt2YXIgdCxzPXRoaXMuYgppZigwPj1zLmxlbmd0aClyZXR1cm4gSC5PSChzLDApCnQ9dGhpcy5h
-CnJldHVybiBzWzBdPT09LTE/ImRhdGE6Iit0OnR9fQpQLnEzLnByb3RvdHlwZT17CiQxOmZ1bmN0aW9u
-KGEpe3JldHVybiBuZXcgVWludDhBcnJheSg5Nil9LAokUzoyM30KUC55SS5wcm90b3R5cGU9ewokMjpm
-dW5jdGlvbihhLGIpe3ZhciB0PXRoaXMuYQppZihhPj10Lmxlbmd0aClyZXR1cm4gSC5PSCh0LGEpCnQ9
-dFthXQpKLkNNKHQsMCw5NixiKQpyZXR1cm4gdH0sCiRTOjI0fQpQLmM2LnByb3RvdHlwZT17CiQzOmZ1
-bmN0aW9uKGEsYixjKXt2YXIgdCxzLHIscQpmb3IodD1iLmxlbmd0aCxzPWEubGVuZ3RoLHI9MDtyPHQ7
-KytyKXtxPUMueEIuVyhiLHIpXjk2CmlmKHE+PXMpcmV0dXJuIEguT0goYSxxKQphW3FdPWN9fX0KUC5x
-ZC5wcm90b3R5cGU9ewokMzpmdW5jdGlvbihhLGIsYyl7dmFyIHQscyxyLHEKZm9yKHQ9Qy54Qi5XKGIs
-MCkscz1DLnhCLlcoYiwxKSxyPWEubGVuZ3RoO3Q8PXM7Kyt0KXtxPSh0Xjk2KT4+PjAKaWYocT49cily
-ZXR1cm4gSC5PSChhLHEpCmFbcV09Y319fQpQLlVmLnByb3RvdHlwZT17CmdjajpmdW5jdGlvbigpe3Jl
-dHVybiB0aGlzLmM+MH0sCmd4QTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmM+MCYmdGhpcy5kKzE8dGhp
-cy5lfSwKZ1FEOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZjx0aGlzLnJ9LApnWjg6ZnVuY3Rpb24oKXty
-ZXR1cm4gdGhpcy5yPHRoaXMuYS5sZW5ndGh9LApnTnc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5iPT09
-NCYmQy54Qi5uKHRoaXMuYSwiZmlsZSIpfSwKZ3ZoOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYj09PTQm
-JkMueEIubih0aGlzLmEsImh0dHAiKX0sCmdSZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmI9PT01JiZD
-LnhCLm4odGhpcy5hLCJodHRwcyIpfSwKZ3RUOmZ1bmN0aW9uKCl7cmV0dXJuIEMueEIuUWkodGhpcy5h
-LCIvIix0aGlzLmUpfSwKZ0ZpOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy54CnJldHVybiB0PT1udWxsP3Ro
-aXMueD10aGlzLlUyKCk6dH0sClUyOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxzPXQuYgppZihzPD0wKXJl
-dHVybiIiCmlmKHQuZ3ZoKCkpcmV0dXJuImh0dHAiCmlmKHQuZ1JlKCkpcmV0dXJuImh0dHBzIgppZih0
-LmdOdygpKXJldHVybiJmaWxlIgppZihzPT09NyYmQy54Qi5uKHQuYSwicGFja2FnZSIpKXJldHVybiJw
-YWNrYWdlIgpyZXR1cm4gQy54Qi5Oaih0LmEsMCxzKX0sCmdrdTpmdW5jdGlvbigpe3ZhciB0PXRoaXMu
-YyxzPXRoaXMuYiszCnJldHVybiB0PnM/Qy54Qi5Oaih0aGlzLmEscyx0LTEpOiIifSwKZ0pmOmZ1bmN0
-aW9uKGEpe3ZhciB0PXRoaXMuYwpyZXR1cm4gdD4wP0MueEIuTmoodGhpcy5hLHQsdGhpcy5kKToiIn0s
-Cmd0cDpmdW5jdGlvbihhKXt2YXIgdD10aGlzCmlmKHQuZ3hBKCkpcmV0dXJuIFAuUUEoQy54Qi5Oaih0
-LmEsdC5kKzEsdC5lKSxudWxsKQppZih0Lmd2aCgpKXJldHVybiA4MAppZih0LmdSZSgpKXJldHVybiA0
-NDMKcmV0dXJuIDB9LApnSWk6ZnVuY3Rpb24oYSl7cmV0dXJuIEMueEIuTmoodGhpcy5hLHRoaXMuZSx0
-aGlzLmYpfSwKZ3RQOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5mLHM9dGhpcy5yCnJldHVybiB0PHM/Qy54
-Qi5Oaih0aGlzLmEsdCsxLHMpOiIifSwKZ0thOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5yLHM9dGhpcy5h
-CnJldHVybiB0PHMubGVuZ3RoP0MueEIuRyhzLHQrMSk6IiJ9LApnRmo6ZnVuY3Rpb24oKXt2YXIgdCxz
-LHI9dGhpcy5lLHE9dGhpcy5mLHA9dGhpcy5hCmlmKEMueEIuUWkocCwiLyIscikpKytyCmlmKHI9PT1x
-KXJldHVybiBDLnhECnQ9SC5WTShbXSx1LnMpCmZvcihzPXI7czxxOysrcylpZihDLnhCLm0ocCxzKT09
-PTQ3KXtDLk5tLmkodCxDLnhCLk5qKHAscixzKSkKcj1zKzF9Qy5ObS5pKHQsQy54Qi5OaihwLHIscSkp
-CnJldHVybiBQLkFGKHQsdS5OKX0sCmdoWTpmdW5jdGlvbigpe2lmKHRoaXMuZj49dGhpcy5yKXJldHVy
-biBDLldPCnJldHVybiBuZXcgUC5HaihQLldYKHRoaXMuZ3RQKCkpLHUuZHcpfSwKa1g6ZnVuY3Rpb24o
-YSl7dmFyIHQ9dGhpcy5kKzEKcmV0dXJuIHQrYS5sZW5ndGg9PT10aGlzLmUmJkMueEIuUWkodGhpcy5h
-LGEsdCl9LApOOTpmdW5jdGlvbigpe3ZhciB0PXRoaXMscz10LnIscj10LmEKaWYocz49ci5sZW5ndGgp
-cmV0dXJuIHQKcmV0dXJuIG5ldyBQLlVmKEMueEIuTmoociwwLHMpLHQuYix0LmMsdC5kLHQuZSx0LmYs
-cyx0LngpfSwKbm06ZnVuY3Rpb24oYSxiKXt2YXIgdCxzLHIscSxwLG8sbixtLGwsayxqPXRoaXMsaT1u
-dWxsCnUuVS5hKG51bGwpCnUuYzkuYShiKQp0PWouZ0ZpKCkKcz10PT09ImZpbGUiCnI9ai5jCnE9cj4w
-P0MueEIuTmooai5hLGouYiszLHIpOiIiCnA9ai5neEEoKT9qLmd0cChqKTppCnI9ai5jCmlmKHI+MClv
-PUMueEIuTmooai5hLHIsai5kKQplbHNlIG89cS5sZW5ndGghPT0wfHxwIT1udWxsfHxzPyIiOmkKcj1q
-LmEKbj1DLnhCLk5qKHIsai5lLGouZikKaWYoIXMpbT1vIT1udWxsJiZuLmxlbmd0aCE9PTAKZWxzZSBt
-PSEwCmlmKG0mJiFDLnhCLm4obiwiLyIpKW49Ii8iK24KbD1QLmxlKGksMCwwLGIpCm09ai5yCms9bTxy
-Lmxlbmd0aD9DLnhCLkcocixtKzEpOmkKcmV0dXJuIG5ldyBQLkRuKHQscSxvLHAsbixsLGspfSwKWkk6
-ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMubVMoUC5oSyhhKSl9LAptUzpmdW5jdGlvbihhKXtpZihhIGlu
-c3RhbmNlb2YgUC5VZilyZXR1cm4gdGhpcy51MSh0aGlzLGEpCnJldHVybiB0aGlzLnZzKCkubVMoYSl9
-LAp1MTpmdW5jdGlvbihhLGIpe3ZhciB0LHMscixxLHAsbyxuLG0sbCxrLGosaSxoPWIuYgppZihoPjAp
-cmV0dXJuIGIKdD1iLmMKaWYodD4wKXtzPWEuYgppZihzPD0wKXJldHVybiBiCmlmKGEuZ053KCkpcj1i
-LmUhPT1iLmYKZWxzZSBpZihhLmd2aCgpKXI9IWIua1goIjgwIikKZWxzZSByPSFhLmdSZSgpfHwhYi5r
-WCgiNDQzIikKaWYocil7cT1zKzEKcmV0dXJuIG5ldyBQLlVmKEMueEIuTmooYS5hLDAscSkrQy54Qi5H
-KGIuYSxoKzEpLHMsdCtxLGIuZCtxLGIuZStxLGIuZitxLGIucitxLGEueCl9ZWxzZSByZXR1cm4gdGhp
-cy52cygpLm1TKGIpfXA9Yi5lCmg9Yi5mCmlmKHA9PT1oKXt0PWIucgppZihoPHQpe3M9YS5mCnE9cy1o
-CnJldHVybiBuZXcgUC5VZihDLnhCLk5qKGEuYSwwLHMpK0MueEIuRyhiLmEsaCksYS5iLGEuYyxhLmQs
-YS5lLGgrcSx0K3EsYS54KX1oPWIuYQppZih0PGgubGVuZ3RoKXtzPWEucgpyZXR1cm4gbmV3IFAuVWYo
-Qy54Qi5OaihhLmEsMCxzKStDLnhCLkcoaCx0KSxhLmIsYS5jLGEuZCxhLmUsYS5mLHQrKHMtdCksYS54
-KX1yZXR1cm4gYS5OOSgpfXQ9Yi5hCmlmKEMueEIuUWkodCwiLyIscCkpe3M9YS5lCnE9cy1wCnJldHVy
-biBuZXcgUC5VZihDLnhCLk5qKGEuYSwwLHMpK0MueEIuRyh0LHApLGEuYixhLmMsYS5kLHMsaCtxLGIu
-citxLGEueCl9bz1hLmUKbj1hLmYKaWYobz09PW4mJmEuYz4wKXtmb3IoO0MueEIuUWkodCwiLi4vIixw
-KTspcCs9MwpxPW8tcCsxCnJldHVybiBuZXcgUC5VZihDLnhCLk5qKGEuYSwwLG8pKyIvIitDLnhCLkco
-dCxwKSxhLmIsYS5jLGEuZCxvLGgrcSxiLnIrcSxhLngpfW09YS5hCmZvcihsPW87Qy54Qi5RaShtLCIu
-Li8iLGwpOylsKz0zCms9MAp3aGlsZSghMCl7aj1wKzMKaWYoIShqPD1oJiZDLnhCLlFpKHQsIi4uLyIs
-cCkpKWJyZWFrOysrawpwPWp9Zm9yKGk9IiI7bj5sOyl7LS1uCmlmKEMueEIubShtLG4pPT09NDcpe2lm
-KGs9PT0wKXtpPSIvIgpicmVha30tLWsKaT0iLyJ9fWlmKG49PT1sJiZhLmI8PTAmJiFDLnhCLlFpKG0s
-Ii8iLG8pKXtwLT1rKjMKaT0iIn1xPW4tcCtpLmxlbmd0aApyZXR1cm4gbmV3IFAuVWYoQy54Qi5Oaiht
-LDAsbikraStDLnhCLkcodCxwKSxhLmIsYS5jLGEuZCxvLGgrcSxiLnIrcSxhLngpfSwKdDQ6ZnVuY3Rp
-b24oKXt2YXIgdCxzLHIscT10aGlzCmlmKHEuYj49MCYmIXEuZ053KCkpdGhyb3cgSC5iKFAuTDQoIkNh
-bm5vdCBleHRyYWN0IGEgZmlsZSBwYXRoIGZyb20gYSAiK3EuZ0ZpKCkrIiBVUkkiKSkKdD1xLmYKcz1x
-LmEKaWYodDxzLmxlbmd0aCl7aWYodDxxLnIpdGhyb3cgSC5iKFAuTDQoIkNhbm5vdCBleHRyYWN0IGEg
-ZmlsZSBwYXRoIGZyb20gYSBVUkkgd2l0aCBhIHF1ZXJ5IGNvbXBvbmVudCIpKQp0aHJvdyBILmIoUC5M
-NCgiQ2Fubm90IGV4dHJhY3QgYSBmaWxlIHBhdGggZnJvbSBhIFVSSSB3aXRoIGEgZnJhZ21lbnQgY29t
-cG9uZW50IikpfXI9JC53USgpCmlmKEgub1QocikpdD1QLm1uKHEpCmVsc2V7aWYocS5jPHEuZClILnZo
-KFAuTDQoIkNhbm5vdCBleHRyYWN0IGEgbm9uLVdpbmRvd3MgZmlsZSBwYXRoIGZyb20gYSBmaWxlIFVS
-SSB3aXRoIGFuIGF1dGhvcml0eSIpKQp0PUMueEIuTmoocyxxLmUsdCl9cmV0dXJuIHR9LApnaU86ZnVu
-Y3Rpb24oYSl7dmFyIHQ9dGhpcy55CnJldHVybiB0PT1udWxsP3RoaXMueT1DLnhCLmdpTyh0aGlzLmEp
-OnR9LApETjpmdW5jdGlvbihhLGIpe2lmKGI9PW51bGwpcmV0dXJuITEKaWYodGhpcz09PWIpcmV0dXJu
-ITAKcmV0dXJuIHUuZEQuYihiKSYmdGhpcy5hPT09Yi53KDApfSwKdnM6ZnVuY3Rpb24oKXt2YXIgdD10
-aGlzLHM9bnVsbCxyPXQuZ0ZpKCkscT10LmdrdSgpLHA9dC5jPjA/dC5nSmYodCk6cyxvPXQuZ3hBKCk/
-dC5ndHAodCk6cyxuPXQuYSxtPXQuZixsPUMueEIuTmoobix0LmUsbSksaz10LnIKbT1tPGs/dC5ndFAo
-KTpzCnJldHVybiBuZXcgUC5EbihyLHEscCxvLGwsbSxrPG4ubGVuZ3RoP3QuZ0thKCk6cyl9LAp3OmZ1
-bmN0aW9uKGEpe3JldHVybiB0aGlzLmF9LAokaWlEOjF9ClAucWUucHJvdG90eXBlPXt9ClcucUUucHJv
-dG90eXBlPXt9ClcuR2gucHJvdG90eXBlPXsKdzpmdW5jdGlvbihhKXtyZXR1cm4gU3RyaW5nKGEpfSwK
-JGlHaDoxfQpXLmZZLnByb3RvdHlwZT17Cnc6ZnVuY3Rpb24oYSl7cmV0dXJuIFN0cmluZyhhKX19Clcu
-bkIucHJvdG90eXBlPXskaW5COjF9ClcuQXoucHJvdG90eXBlPXskaUF6OjF9ClcuUVAucHJvdG90eXBl
-PXskaVFQOjF9ClcubngucHJvdG90eXBlPXsKZ0E6ZnVuY3Rpb24oYSl7cmV0dXJuIGEubGVuZ3RofX0K
-Vy5vSi5wcm90b3R5cGU9ewpnQTpmdW5jdGlvbihhKXtyZXR1cm4gYS5sZW5ndGh9fQpXLmlkLnByb3Rv
-dHlwZT17fQpXLlFGLnByb3RvdHlwZT17fQpXLk5oLnByb3RvdHlwZT17Cnc6ZnVuY3Rpb24oYSl7cmV0
-dXJuIFN0cmluZyhhKX19ClcuYWUucHJvdG90eXBlPXsKRGM6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5j
-cmVhdGVIVE1MRG9jdW1lbnQoYil9fQpXLklCLnByb3RvdHlwZT17Cnc6ZnVuY3Rpb24oYSl7cmV0dXJu
-IlJlY3RhbmdsZSAoIitILkVqKGEubGVmdCkrIiwgIitILkVqKGEudG9wKSsiKSAiK0guRWooYS53aWR0
-aCkrIiB4ICIrSC5FaihhLmhlaWdodCl9LApETjpmdW5jdGlvbihhLGIpe2lmKGI9PW51bGwpcmV0dXJu
-ITEKcmV0dXJuIHUucS5iKGIpJiZhLmxlZnQ9PT1iLmxlZnQmJmEudG9wPT09Yi50b3AmJmEud2lkdGg9
-PT1iLndpZHRoJiZhLmhlaWdodD09PWIuaGVpZ2h0fSwKZ2lPOmZ1bmN0aW9uKGEpe3JldHVybiBXLnJF
-KEMuQ0QuZ2lPKGEubGVmdCksQy5DRC5naU8oYS50b3ApLEMuQ0QuZ2lPKGEud2lkdGgpLEMuQ0QuZ2lP
-KGEuaGVpZ2h0KSl9LAokaXRuOjF9ClcubjcucHJvdG90eXBlPXsKZ0E6ZnVuY3Rpb24oYSl7cmV0dXJu
-IGEubGVuZ3RofX0KVy53ei5wcm90b3R5cGU9ewpnQTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5hLmxl
-bmd0aH0sCnE6ZnVuY3Rpb24oYSxiKXt2YXIgdApILnVQKGIpCnQ9dGhpcy5hCmlmKGI8MHx8Yj49dC5s
-ZW5ndGgpcmV0dXJuIEguT0godCxiKQpyZXR1cm4gdGhpcy4kdGkuYy5hKHRbYl0pfSwKWTpmdW5jdGlv
-bihhLGIsYyl7dGhpcy4kdGkuYy5hKGMpCnRocm93IEguYihQLkw0KCJDYW5ub3QgbW9kaWZ5IGxpc3Qi
-KSl9fQpXLmN2LnByb3RvdHlwZT17CmdRZzpmdW5jdGlvbihhKXtyZXR1cm4gbmV3IFcuaTcoYSl9LApn
-UDpmdW5jdGlvbihhKXtyZXR1cm4gbmV3IFcuSTQoYSl9LApzUDpmdW5jdGlvbihhLGIpe3ZhciB0CnUu
-US5hKGIpCnQ9dGhpcy5nUChhKQp0LlYxKDApCnQuRlYoMCxiKX0sCnc6ZnVuY3Rpb24oYSl7cmV0dXJu
-IGEubG9jYWxOYW1lfSwKRkY6ZnVuY3Rpb24oYSl7dmFyIHQ9ISFhLnNjcm9sbEludG9WaWV3SWZOZWVk
-ZWQKaWYodClhLnNjcm9sbEludG9WaWV3SWZOZWVkZWQoKQplbHNlIGEuc2Nyb2xsSW50b1ZpZXcoKX0s
-Cm56OmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIHQscz10aGlzLnI2KGEsYyxkLGUpCnN3aXRjaChiLnRv
-TG93ZXJDYXNlKCkpe2Nhc2UiYmVmb3JlYmVnaW4iOnQ9YS5wYXJlbnROb2RlCnQudG9TdHJpbmcKSi5F
-aCh0LHMsYSkKYnJlYWsKY2FzZSJhZnRlcmJlZ2luIjp0PWEuY2hpbGROb2Rlcwp0aGlzLm1LKGEscyx0
+MCkKbT1yLTEKaWYobTwwfHxtPj00KXJldHVybiBILmsoQy5HYixtKQppZih0PD1DLkdiW21dKXttPVAu
+cnIoIk92ZXJsb25nIGVuY29kaW5nIG9mIDB4IitDLmpuLldaKHQsMTYpLGEsby1yLTEpCnRocm93IEgu
+YihtKX1pZih0PjExMTQxMTEpe209UC5ycigiQ2hhcmFjdGVyIG91dHNpZGUgdmFsaWQgVW5pY29kZSBy
+YW5nZTogMHgiK0Muam4uV1oodCwxNiksYSxvLXItMSkKdGhyb3cgSC5iKG0pfWlmKCFoLmN8fHQhPT02
+NTI3OSlwLmErPUguTHcodCkKaC5jPSExfWZvcihtPW88YzttOyl7bD1QLmNQKGEsbyxjKQppZihsPjAp
+e2guYz0hMQprPW8rbApwLmErPVAuSE0oYSxvLGspCmlmKGs9PT1jKWJyZWFrfWVsc2Ugaz1vCmo9aysx
+Cm49cS5xKGEsaykKaWYodHlwZW9mIG4hPT0ibnVtYmVyIilyZXR1cm4gbi5KKCkKaWYobjwwKXtpPVAu
+cnIoIk5lZ2F0aXZlIFVURi04IGNvZGUgdW5pdDogLTB4IitDLmpuLldaKC1uLDE2KSxhLGotMSkKdGhy
+b3cgSC5iKGkpfWVsc2V7aWYoKG4mMjI0KT09PTE5Mil7dD1uJjMxCnM9MQpyPTEKY29udGludWUgJGxh
+YmVsMCQwfWlmKChuJjI0MCk9PT0yMjQpe3Q9biYxNQpzPTIKcj0yCmNvbnRpbnVlICRsYWJlbDAkMH1p
+ZigobiYyNDgpPT09MjQwJiZuPDI0NSl7dD1uJjcKcz0zCnI9Mwpjb250aW51ZSAkbGFiZWwwJDB9aT1Q
+LnJyKGcrQy5qbi5XWihuLDE2KSxhLGotMSkKdGhyb3cgSC5iKGkpfX1icmVhayAkbGFiZWwwJDB9aWYo
+cz4wKXtoLmQ9dApoLmU9cwpoLmY9cn19fQpQLldGLnByb3RvdHlwZT17CiQyOmZ1bmN0aW9uKGEsYil7
+dmFyIHQscyxyCnUuZm8uYShhKQp0PXRoaXMuYgpzPXRoaXMuYQp0LmErPXMuYQpyPXQuYSs9SC5kKGEu
+YSkKdC5hPXIrIjogIgp0LmErPVAuaChiKQpzLmE9IiwgIn0sCiRTOjQxfQpQLmEyLnByb3RvdHlwZT17
+fQpQLmlQLnByb3RvdHlwZT17CkROOmZ1bmN0aW9uKGEsYil7aWYoYj09bnVsbClyZXR1cm4hMQpyZXR1
+cm4gYiBpbnN0YW5jZW9mIFAuaVAmJnRoaXMuYT09PWIuYSYmITB9LApnaU86ZnVuY3Rpb24oYSl7dmFy
+IHQ9dGhpcy5hCnJldHVybih0XkMuam4ud0codCwzMCkpJjEwNzM3NDE4MjN9LApaOmZ1bmN0aW9uKGEp
+e3ZhciB0PXRoaXMscz1QLkdxKEgudEoodCkpLHI9UC5oMChILk5TKHQpKSxxPVAuaDAoSC5qQSh0KSks
+cD1QLmgwKEguSVgodCkpLG89UC5oMChILmNoKHQpKSxuPVAuaDAoSC5KZCh0KSksbT1QLlZ4KEguVmEo
+dCkpLGw9cysiLSIrcisiLSIrcSsiICIrcCsiOiIrbysiOiIrbisiLiIrbQpyZXR1cm4gbH19ClAuQ1Au
+cHJvdG90eXBlPXt9ClAuWFMucHJvdG90eXBlPXsKZ0lJOmZ1bmN0aW9uKCl7cmV0dXJuIEgudHModGhp
+cy4kdGhyb3duSnNFcnJvcil9fQpQLkM2LnByb3RvdHlwZT17Clo6ZnVuY3Rpb24oYSl7dmFyIHQ9dGhp
+cy5hCmlmKHQhPW51bGwpcmV0dXJuIkFzc2VydGlvbiBmYWlsZWQ6ICIrUC5oKHQpCnJldHVybiJBc3Nl
+cnRpb24gZmFpbGVkIn19ClAuTEsucHJvdG90eXBlPXsKWjpmdW5jdGlvbihhKXtyZXR1cm4iVGhyb3cg
+b2YgbnVsbC4ifX0KUC5BVC5wcm90b3R5cGU9ewpnTDpmdW5jdGlvbigpe3JldHVybiJJbnZhbGlkIGFy
+Z3VtZW50IisoIXRoaXMuYT8iKHMpIjoiIil9LApndTpmdW5jdGlvbigpe3JldHVybiIifSwKWjpmdW5j
+dGlvbihhKXt2YXIgdCxzLHIscSxwPXRoaXMsbz1wLmMsbj1vIT1udWxsPyIgKCIrbysiKSI6IiIKbz1w
+LmQKdD1vPT1udWxsPyIiOiI6ICIrSC5kKG8pCnM9cC5nTCgpK24rdAppZighcC5hKXJldHVybiBzCnI9
+cC5ndSgpCnE9UC5oKHAuYikKcmV0dXJuIHMrcisiOiAiK3F9fQpQLmJKLnByb3RvdHlwZT17CmdMOmZ1
+bmN0aW9uKCl7cmV0dXJuIlJhbmdlRXJyb3IifSwKZ3U6ZnVuY3Rpb24oKXt2YXIgdCxzLHI9dGhpcy5l
+CmlmKHI9PW51bGwpe3I9dGhpcy5mCnQ9ciE9bnVsbD8iOiBOb3QgbGVzcyB0aGFuIG9yIGVxdWFsIHRv
+ICIrSC5kKHIpOiIifWVsc2V7cz10aGlzLmYKaWYocz09bnVsbCl0PSI6IE5vdCBncmVhdGVyIHRoYW4g
+b3IgZXF1YWwgdG8gIitILmQocikKZWxzZSBpZihzPnIpdD0iOiBOb3QgaW4gcmFuZ2UgIitILmQocikr
+Ii4uIitILmQocykrIiwgaW5jbHVzaXZlIgplbHNlIHQ9czxyPyI6IFZhbGlkIHZhbHVlIHJhbmdlIGlz
+IGVtcHR5IjoiOiBPbmx5IHZhbGlkIHZhbHVlIGlzICIrSC5kKHIpfXJldHVybiB0fX0KUC5lWS5wcm90
+b3R5cGU9ewpnTDpmdW5jdGlvbigpe3JldHVybiJSYW5nZUVycm9yIn0sCmd1OmZ1bmN0aW9uKCl7dmFy
+IHQscz1ILldZKHRoaXMuYikKaWYodHlwZW9mIHMhPT0ibnVtYmVyIilyZXR1cm4gcy5KKCkKaWYoczww
+KXJldHVybiI6IGluZGV4IG11c3Qgbm90IGJlIG5lZ2F0aXZlIgp0PXRoaXMuZgppZih0PT09MClyZXR1
+cm4iOiBubyBpbmRpY2VzIGFyZSB2YWxpZCIKcmV0dXJuIjogaW5kZXggc2hvdWxkIGJlIGxlc3MgdGhh
+biAiK0guZCh0KX0sCmdBOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmZ9fQpQLm1wLnByb3RvdHlwZT17
+Clo6ZnVuY3Rpb24oYSl7dmFyIHQscyxyLHEscCxvLG4sbSxsPXRoaXMsaz17fSxqPW5ldyBQLlJuKCIi
+KQprLmE9IiIKZm9yKHQ9bC5jLHM9dC5sZW5ndGgscj0wLHE9IiIscD0iIjtyPHM7KytyLHA9IiwgIil7
+bz10W3JdCmouYT1xK3AKcT1qLmErPVAuaChvKQprLmE9IiwgIn1sLmQuSygwLG5ldyBQLldGKGssaikp
+Cm49UC5oKGwuYSkKbT1qLlooMCkKdD0iTm9TdWNoTWV0aG9kRXJyb3I6IG1ldGhvZCBub3QgZm91bmQ6
+ICciK0guZChsLmIuYSkrIidcblJlY2VpdmVyOiAiK24rIlxuQXJndW1lbnRzOiBbIittKyJdIgpyZXR1
+cm4gdH19ClAudWIucHJvdG90eXBlPXsKWjpmdW5jdGlvbihhKXtyZXR1cm4iVW5zdXBwb3J0ZWQgb3Bl
+cmF0aW9uOiAiK3RoaXMuYX19ClAuZHMucHJvdG90eXBlPXsKWjpmdW5jdGlvbihhKXt2YXIgdD10aGlz
+LmEKcmV0dXJuIHQhPW51bGw/IlVuaW1wbGVtZW50ZWRFcnJvcjogIit0OiJVbmltcGxlbWVudGVkRXJy
+b3IifX0KUC5sai5wcm90b3R5cGU9ewpaOmZ1bmN0aW9uKGEpe3JldHVybiJCYWQgc3RhdGU6ICIrdGhp
+cy5hfX0KUC5VVi5wcm90b3R5cGU9ewpaOmZ1bmN0aW9uKGEpe3ZhciB0PXRoaXMuYQppZih0PT1udWxs
+KXJldHVybiJDb25jdXJyZW50IG1vZGlmaWNhdGlvbiBkdXJpbmcgaXRlcmF0aW9uLiIKcmV0dXJuIkNv
+bmN1cnJlbnQgbW9kaWZpY2F0aW9uIGR1cmluZyBpdGVyYXRpb246ICIrUC5oKHQpKyIuIn19ClAuazUu
+cHJvdG90eXBlPXsKWjpmdW5jdGlvbihhKXtyZXR1cm4iT3V0IG9mIE1lbW9yeSJ9LApnSUk6ZnVuY3Rp
+b24oKXtyZXR1cm4gbnVsbH0sCiRpWFM6MX0KUC5LWS5wcm90b3R5cGU9ewpaOmZ1bmN0aW9uKGEpe3Jl
+dHVybiJTdGFjayBPdmVyZmxvdyJ9LApnSUk6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sCiRpWFM6MX0K
+UC50Ny5wcm90b3R5cGU9ewpaOmZ1bmN0aW9uKGEpe3ZhciB0PXRoaXMuYQpyZXR1cm4gdD09bnVsbD8i
+UmVhZGluZyBzdGF0aWMgdmFyaWFibGUgZHVyaW5nIGl0cyBpbml0aWFsaXphdGlvbiI6IlJlYWRpbmcg
+c3RhdGljIHZhcmlhYmxlICciK3QrIicgZHVyaW5nIGl0cyBpbml0aWFsaXphdGlvbiJ9fQpQLkNELnBy
+b3RvdHlwZT17Clo6ZnVuY3Rpb24oYSl7cmV0dXJuIkV4Y2VwdGlvbjogIit0aGlzLmF9LAokaVJ6OjF9
+ClAuYUUucHJvdG90eXBlPXsKWjpmdW5jdGlvbihhKXt2YXIgdCxzLHIscSxwLG8sbixtLGwsayxqLGks
+aD10aGlzLmEsZz1oIT1udWxsJiYiIiE9PWg/IkZvcm1hdEV4Y2VwdGlvbjogIitILmQoaCk6IkZvcm1h
+dEV4Y2VwdGlvbiIsZj10aGlzLmMsZT10aGlzLmIKaWYodHlwZW9mIGU9PSJzdHJpbmciKXtpZihmIT1u
+dWxsKWg9ZjwwfHxmPmUubGVuZ3RoCmVsc2UgaD0hMQppZihoKWY9bnVsbAppZihmPT1udWxsKXt0PWUu
+bGVuZ3RoPjc4P0MueEIuTmooZSwwLDc1KSsiLi4uIjplCnJldHVybiBnKyJcbiIrdH1mb3Iocz0xLHI9
+MCxxPSExLHA9MDtwPGY7KytwKXtvPUMueEIuVyhlLHApCmlmKG89PT0xMCl7aWYociE9PXB8fCFxKSsr
+cwpyPXArMQpxPSExfWVsc2UgaWYobz09PTEzKXsrK3MKcj1wKzEKcT0hMH19Zz1zPjE/ZysoIiAoYXQg
+bGluZSAiK3MrIiwgY2hhcmFjdGVyICIrKGYtcisxKSsiKVxuIik6ZysoIiAoYXQgY2hhcmFjdGVyICIr
+KGYrMSkrIilcbiIpCm49ZS5sZW5ndGgKZm9yKHA9ZjtwPG47KytwKXtvPUMueEIubShlLHApCmlmKG89
+PT0xMHx8bz09PTEzKXtuPXAKYnJlYWt9fWlmKG4tcj43OClpZihmLXI8NzUpe209cis3NQpsPXIKaz0i
+IgpqPSIuLi4ifWVsc2V7aWYobi1mPDc1KXtsPW4tNzUKbT1uCmo9IiJ9ZWxzZXtsPWYtMzYKbT1mKzM2
+Cmo9Ii4uLiJ9az0iLi4uIn1lbHNle209bgpsPXIKaz0iIgpqPSIifWk9Qy54Qi5OaihlLGwsbSkKcmV0
+dXJuIGcraytpK2orIlxuIitDLnhCLkl4KCIgIixmLWwray5sZW5ndGgpKyJeXG4ifWVsc2UgcmV0dXJu
+IGYhPW51bGw/ZysoIiAoYXQgb2Zmc2V0ICIrSC5kKGYpKyIpIik6Z30sCiRpUno6MX0KUC5FSC5wcm90
+b3R5cGU9e30KUC5JZi5wcm90b3R5cGU9e30KUC5jWC5wcm90b3R5cGU9ewpFMjpmdW5jdGlvbihhLGIs
+Yyl7dmFyIHQ9SC5MaCh0aGlzKQpyZXR1cm4gSC5LMSh0aGlzLHQuS3EoYykuQygiMShjWC5FKSIpLmEo
+YiksdC5DKCJjWC5FIiksYyl9LApldjpmdW5jdGlvbihhLGIpe3ZhciB0PUguTGgodGhpcykKcmV0dXJu
+IG5ldyBILlU1KHRoaXMsdC5DKCJhMihjWC5FKSIpLmEoYiksdC5DKCJVNTxjWC5FPiIpKX0sCmdBOmZ1
+bmN0aW9uKGEpe3ZhciB0LHM9dGhpcy5na3oodGhpcykKZm9yKHQ9MDtzLkYoKTspKyt0CnJldHVybiB0
+fSwKZ2wwOmZ1bmN0aW9uKGEpe3JldHVybiF0aGlzLmdreih0aGlzKS5GKCl9LApncjg6ZnVuY3Rpb24o
+YSl7dmFyIHQscz10aGlzLmdreih0aGlzKQppZighcy5GKCkpdGhyb3cgSC5iKEguV3AoKSkKdD1zLmds
+KCkKaWYocy5GKCkpdGhyb3cgSC5iKEguZFUoKSkKcmV0dXJuIHR9LApFOmZ1bmN0aW9uKGEsYil7dmFy
+IHQscyxyLHE9ImluZGV4IgpQLlVJKGIscSx1LnEpClAuazEoYixxKQpmb3IodD10aGlzLmdreih0aGlz
+KSxzPTA7dC5GKCk7KXtyPXQuZ2woKQppZihiPT09cylyZXR1cm4gcjsrK3N9dGhyb3cgSC5iKFAudChi
+LHRoaXMscSxudWxsLHMpKX0sClo6ZnVuY3Rpb24oYSl7cmV0dXJuIFAuRVAodGhpcywiKCIsIikiKX19
+ClAuQW4ucHJvdG90eXBlPXt9ClAuek0ucHJvdG90eXBlPXskaWJROjEsJGljWDoxfQpQLlowLnByb3Rv
+dHlwZT17fQpQLk4zLnByb3RvdHlwZT17Clo6ZnVuY3Rpb24oYSl7cmV0dXJuIk1hcEVudHJ5KCIrSC5k
+KHRoaXMuYSkrIjogIitILmQodGhpcy5iKSsiKSJ9fQpQLmM4LnByb3RvdHlwZT17CmdpTzpmdW5jdGlv
+bihhKXtyZXR1cm4gUC5NaC5wcm90b3R5cGUuZ2lPLmNhbGwodGhpcyx0aGlzKX0sClo6ZnVuY3Rpb24o
+YSl7cmV0dXJuIm51bGwifX0KUC5sZi5wcm90b3R5cGU9e30KUC5NaC5wcm90b3R5cGU9e2NvbnN0cnVj
+dG9yOlAuTWgsJGlNaDoxLApETjpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzPT09Yn0sCmdpTzpmdW5j
+dGlvbihhKXtyZXR1cm4gSC5lUSh0aGlzKX0sClo6ZnVuY3Rpb24oYSl7cmV0dXJuIkluc3RhbmNlIG9m
+ICciK0guZChILmxoKHRoaXMpKSsiJyJ9LAplNzpmdW5jdGlvbihhLGIpe3Uuby5hKGIpCnRocm93IEgu
+YihQLmxyKHRoaXMsYi5nV2EoKSxiLmduZCgpLGIuZ1ZtKCkpKX0sCnRvU3RyaW5nOmZ1bmN0aW9uKCl7
+cmV0dXJuIHRoaXMuWih0aGlzKX19ClAuT2QucHJvdG90eXBlPXt9ClAuaWIucHJvdG90eXBlPXskaU9k
+OjF9ClAueHUucHJvdG90eXBlPXt9ClAuR3oucHJvdG90eXBlPXt9ClAuWmQucHJvdG90eXBlPXsKWjpm
+dW5jdGlvbihhKXtyZXR1cm4iIn0sCiRpR3o6MX0KUC5xVS5wcm90b3R5cGU9eyRpdlg6MX0KUC5Sbi5w
+cm90b3R5cGU9ewpnQTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5hLmxlbmd0aH0sClo6ZnVuY3Rpb24o
+YSl7dmFyIHQ9dGhpcy5hCnJldHVybiB0LmNoYXJDb2RlQXQoMCk9PTA/dDp0fSwKJGlCTDoxfQpQLkdE
+LnByb3RvdHlwZT17fQpQLm4xLnByb3RvdHlwZT17CiQyOmZ1bmN0aW9uKGEsYil7dmFyIHQscyxyLHEK
+dS5mLmEoYSkKSC5jKGIpCnQ9Si5yWShiKS5PWShiLCI9IikKaWYodD09PS0xKXtpZihiIT09IiIpYS5Z
+KDAsUC5rdShiLDAsYi5sZW5ndGgsdGhpcy5hLCEwKSwiIil9ZWxzZSBpZih0IT09MCl7cz1DLnhCLk5q
+KGIsMCx0KQpyPUMueEIuRyhiLHQrMSkKcT10aGlzLmEKYS5ZKDAsUC5rdShzLDAscy5sZW5ndGgscSwh
+MCksUC5rdShyLDAsci5sZW5ndGgscSwhMCkpfXJldHVybiBhfSwKJFM6Mjd9ClAuY1MucHJvdG90eXBl
+PXsKJDI6ZnVuY3Rpb24oYSxiKXt0aHJvdyBILmIoUC5ycigiSWxsZWdhbCBJUHY0IGFkZHJlc3MsICIr
+YSx0aGlzLmEsYikpfSwKJFM6NDN9ClAuVkMucHJvdG90eXBlPXsKJDI6ZnVuY3Rpb24oYSxiKXt0aHJv
+dyBILmIoUC5ycigiSWxsZWdhbCBJUHY2IGFkZHJlc3MsICIrYSx0aGlzLmEsYikpfSwKJDE6ZnVuY3Rp
+b24oYSl7cmV0dXJuIHRoaXMuJDIoYSxudWxsKX0sCiRTOjM3fQpQLkpULnByb3RvdHlwZT17CiQyOmZ1
+bmN0aW9uKGEsYil7dmFyIHQKaWYoYi1hPjQpdGhpcy5hLiQyKCJhbiBJUHY2IHBhcnQgY2FuIG9ubHkg
+Y29udGFpbiBhIG1heGltdW0gb2YgNCBoZXggZGlnaXRzIixhKQp0PVAuUUEoQy54Qi5Oaih0aGlzLmIs
+YSxiKSxudWxsLDE2KQppZih0eXBlb2YgdCE9PSJudW1iZXIiKXJldHVybiB0LkooKQppZih0PDB8fHQ+
+NjU1MzUpdGhpcy5hLiQyKCJlYWNoIHBhcnQgbXVzdCBiZSBpbiB0aGUgcmFuZ2Ugb2YgYDB4MC4uMHhG
+RkZGYCIsYSkKcmV0dXJuIHR9LAokUzo0MH0KUC5Ebi5wcm90b3R5cGU9ewpna3U6ZnVuY3Rpb24oKXty
+ZXR1cm4gdGhpcy5ifSwKZ0pmOmZ1bmN0aW9uKGEpe3ZhciB0PXRoaXMuYwppZih0PT1udWxsKXJldHVy
+biIiCmlmKEMueEIubih0LCJbIikpcmV0dXJuIEMueEIuTmoodCwxLHQubGVuZ3RoLTEpCnJldHVybiB0
+fSwKZ3RwOmZ1bmN0aW9uKGEpe3ZhciB0PXRoaXMuZAppZih0PT1udWxsKXJldHVybiBQLndLKHRoaXMu
+YSkKcmV0dXJuIHR9LApndFA6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmYKcmV0dXJuIHQ9PW51bGw/IiI6
+dH0sCmdLYTpmdW5jdGlvbigpe3ZhciB0PXRoaXMucgpyZXR1cm4gdD09bnVsbD8iIjp0fSwKbm06ZnVu
+Y3Rpb24oYSxiKXt2YXIgdCxzLHIscSxwLG8sbixtLGw9dGhpcwp1LlguYShudWxsKQp1LmIuYShiKQp0
+PWwuYQpzPXQ9PT0iZmlsZSIKcj1sLmIKcT1sLmQKcD1sLmMKaWYoIShwIT1udWxsKSlwPXIubGVuZ3Ro
+IT09MHx8cSE9bnVsbHx8cz8iIjpudWxsCm89bC5lCmlmKCFzKW49cCE9bnVsbCYmby5sZW5ndGghPT0w
+CmVsc2Ugbj0hMAppZihuJiYhQy54Qi5uKG8sIi8iKSlvPSIvIitvCm09UC5sZShudWxsLDAsMCxiKQpy
+ZXR1cm4gbmV3IFAuRG4odCxyLHAscSxvLG0sbC5yKX0sCmdGajpmdW5jdGlvbigpe3ZhciB0LHM9dGhp
+cy54CmlmKHMhPW51bGwpcmV0dXJuIHMKdD10aGlzLmUKaWYodC5sZW5ndGghPT0wJiZDLnhCLlcodCww
+KT09PTQ3KXQ9Qy54Qi5HKHQsMSkKcz10PT09IiI/Qy54RDpQLkFGKG5ldyBILmxKKEguVk0odC5zcGxp
+dCgiLyIpLHUucyksdS5kTy5hKFAuUEgoKSksdS5kbyksdS5OKQp0aGlzLnNvNihzKQpyZXR1cm4gc30s
+CmdoWTpmdW5jdGlvbigpe3ZhciB0LHM9dGhpcwppZihzLlE9PW51bGwpe3Q9cy5mCnMuc1JIKG5ldyBQ
+LkdqKFAuV1godD09bnVsbD8iIjp0KSx1LmR3KSl9cmV0dXJuIHMuUX0sCkpoOmZ1bmN0aW9uKGEsYil7
+dmFyIHQscyxyLHEscCxvCmZvcih0PTAscz0wO0MueEIuUWkoYiwiLi4vIixzKTspe3MrPTM7Kyt0fXI9
+Qy54Qi5jbihhLCIvIikKd2hpbGUoITApe2lmKCEocj4wJiZ0PjApKWJyZWFrCnE9Qy54Qi5QayhhLCIv
+IixyLTEpCmlmKHE8MClicmVhawpwPXItcQpvPXAhPT0yCmlmKCFvfHxwPT09MylpZihDLnhCLm0oYSxx
+KzEpPT09NDYpbz0hb3x8Qy54Qi5tKGEscSsyKT09PTQ2CmVsc2Ugbz0hMQplbHNlIG89ITEKaWYobyli
+cmVhazstLXQKcj1xfXJldHVybiBDLnhCLmk3KGEscisxLG51bGwsQy54Qi5HKGIscy0zKnQpKX0sClpJ
+OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLm1TKFAuaEsoYSkpfSwKbVM6ZnVuY3Rpb24oYSl7dmFyIHQs
+cyxyLHEscCxvLG4sbSxsLGs9dGhpcyxqPW51bGwKaWYoYS5nRmkoKS5sZW5ndGghPT0wKXt0PWEuZ0Zp
+KCkKaWYoYS5nY2ooKSl7cz1hLmdrdSgpCnI9YS5nSmYoYSkKcT1hLmd4QSgpP2EuZ3RwKGEpOmp9ZWxz
+ZXtxPWoKcj1xCnM9IiJ9cD1QLnhlKGEuZ0lpKGEpKQpvPWEuZ1FEKCk/YS5ndFAoKTpqfWVsc2V7dD1r
+LmEKaWYoYS5nY2ooKSl7cz1hLmdrdSgpCnI9YS5nSmYoYSkKcT1QLndCKGEuZ3hBKCk/YS5ndHAoYSk6
+aix0KQpwPVAueGUoYS5nSWkoYSkpCm89YS5nUUQoKT9hLmd0UCgpOmp9ZWxzZXtzPWsuYgpyPWsuYwpx
+PWsuZAppZihhLmdJaShhKT09PSIiKXtwPWsuZQpvPWEuZ1FEKCk/YS5ndFAoKTprLmZ9ZWxzZXtpZihh
+Lmd0VCgpKXA9UC54ZShhLmdJaShhKSkKZWxzZXtuPWsuZQppZihuLmxlbmd0aD09PTApaWYocj09bnVs
+bClwPXQubGVuZ3RoPT09MD9hLmdJaShhKTpQLnhlKGEuZ0lpKGEpKQplbHNlIHA9UC54ZSgiLyIrYS5n
+SWkoYSkpCmVsc2V7bT1rLkpoKG4sYS5nSWkoYSkpCmw9dC5sZW5ndGg9PT0wCmlmKCFsfHxyIT1udWxs
+fHxDLnhCLm4obiwiLyIpKXA9UC54ZShtKQplbHNlIHA9UC53RihtLCFsfHxyIT1udWxsKX19bz1hLmdR
+RCgpP2EuZ3RQKCk6an19fXJldHVybiBuZXcgUC5Ebih0LHMscixxLHAsbyxhLmdaOCgpP2EuZ0thKCk6
+ail9LApnY2o6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jIT1udWxsfSwKZ3hBOmZ1bmN0aW9uKCl7cmV0
+dXJuIHRoaXMuZCE9bnVsbH0sCmdRRDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmYhPW51bGx9LApnWjg6
+ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yIT1udWxsfSwKZ3RUOmZ1bmN0aW9uKCl7cmV0dXJuIEMueEIu
+bih0aGlzLmUsIi8iKX0sCnQ0OmZ1bmN0aW9uKCl7dmFyIHQscyxyPXRoaXMscT1yLmEKaWYocSE9PSIi
+JiZxIT09ImZpbGUiKXRocm93IEguYihQLkw0KCJDYW5ub3QgZXh0cmFjdCBhIGZpbGUgcGF0aCBmcm9t
+IGEgIitILmQocSkrIiBVUkkiKSkKcT1yLmYKaWYoKHE9PW51bGw/IiI6cSkhPT0iIil0aHJvdyBILmIo
+UC5MNCgiQ2Fubm90IGV4dHJhY3QgYSBmaWxlIHBhdGggZnJvbSBhIFVSSSB3aXRoIGEgcXVlcnkgY29t
+cG9uZW50IikpCnE9ci5yCmlmKChxPT1udWxsPyIiOnEpIT09IiIpdGhyb3cgSC5iKFAuTDQoIkNhbm5v
+dCBleHRyYWN0IGEgZmlsZSBwYXRoIGZyb20gYSBVUkkgd2l0aCBhIGZyYWdtZW50IGNvbXBvbmVudCIp
+KQp0PSQuT3goKQppZihILm9UKHQpKXE9UC5tbihyKQplbHNle2lmKHIuYyE9bnVsbCYmci5nSmYocikh
+PT0iIilILnZoKFAuTDQoIkNhbm5vdCBleHRyYWN0IGEgbm9uLVdpbmRvd3MgZmlsZSBwYXRoIGZyb20g
+YSBmaWxlIFVSSSB3aXRoIGFuIGF1dGhvcml0eSIpKQpzPXIuZ0ZqKCkKUC5rRShzLCExKQpxPVAudmco
+Qy54Qi5uKHIuZSwiLyIpPyIvIjoiIixzLCIvIikKcT1xLmNoYXJDb2RlQXQoMCk9PTA/cTpxfXJldHVy
+biBxfSwKWjpmdW5jdGlvbihhKXt2YXIgdCxzLHIscT10aGlzLHA9cS55CmlmKHA9PW51bGwpe3A9cS5h
+CnQ9cC5sZW5ndGghPT0wP3ArIjoiOiIiCnM9cS5jCnI9cz09bnVsbAppZighcnx8cD09PSJmaWxlIil7
+cD10KyIvLyIKdD1xLmIKaWYodC5sZW5ndGghPT0wKXA9cCt0KyJAIgppZighcilwKz1zCnQ9cS5kCmlm
+KHQhPW51bGwpcD1wKyI6IitILmQodCl9ZWxzZSBwPXQKcCs9cS5lCnQ9cS5mCmlmKHQhPW51bGwpcD1w
+KyI/Iit0CnQ9cS5yCmlmKHQhPW51bGwpcD1wKyIjIit0CnA9cS55PXAuY2hhckNvZGVBdCgwKT09MD9w
+OnB9cmV0dXJuIHB9LApETjpmdW5jdGlvbihhLGIpe3ZhciB0LHMscj10aGlzCmlmKGI9PW51bGwpcmV0
+dXJuITEKaWYocj09PWIpcmV0dXJuITAKaWYodS5kRC5iKGIpKWlmKHIuYT09Yi5nRmkoKSlpZihyLmMh
+PW51bGw9PT1iLmdjaigpKWlmKHIuYj09Yi5na3UoKSlpZihyLmdKZihyKT09Yi5nSmYoYikpaWYoci5n
+dHAocik9PWIuZ3RwKGIpKWlmKHIuZT09PWIuZ0lpKGIpKXt0PXIuZgpzPXQ9PW51bGwKaWYoIXM9PT1i
+LmdRRCgpKXtpZihzKXQ9IiIKaWYodD09PWIuZ3RQKCkpe3Q9ci5yCnM9dD09bnVsbAppZighcz09PWIu
+Z1o4KCkpe2lmKHMpdD0iIgp0PXQ9PT1iLmdLYSgpfWVsc2UgdD0hMX1lbHNlIHQ9ITF9ZWxzZSB0PSEx
+fWVsc2UgdD0hMQplbHNlIHQ9ITEKZWxzZSB0PSExCmVsc2UgdD0hMQplbHNlIHQ9ITEKZWxzZSB0PSEx
+CmVsc2UgdD0hMQpyZXR1cm4gdH0sCmdpTzpmdW5jdGlvbihhKXt2YXIgdD10aGlzLnoKcmV0dXJuIHQ9
+PW51bGw/dGhpcy56PUMueEIuZ2lPKHRoaXMuWigwKSk6dH0sCnNvNjpmdW5jdGlvbihhKXt0aGlzLng9
+dS5hLmEoYSl9LApzUkg6ZnVuY3Rpb24oYSl7dGhpcy5RPXUuZi5hKGEpfSwKJGlpRDoxLApnRmk6ZnVu
+Y3Rpb24oKXtyZXR1cm4gdGhpcy5hfSwKZ0lpOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmV9fQpQLmUx
+LnByb3RvdHlwZT17CiQxOmZ1bmN0aW9uKGEpe3Rocm93IEguYihQLnJyKCJJbnZhbGlkIHBvcnQiLHRo
+aXMuYSx0aGlzLmIrMSkpfSwKJFM6MTV9ClAuTlkucHJvdG90eXBlPXsKJDE6ZnVuY3Rpb24oYSl7dmFy
+IHQ9IklsbGVnYWwgcGF0aCBjaGFyYWN0ZXIgIgpILmMoYSkKaWYoSi56bChhLCIvIikpaWYodGhpcy5h
+KXRocm93IEguYihQLnhZKHQrYSkpCmVsc2UgdGhyb3cgSC5iKFAuTDQodCthKSl9LAokUzoxNX0KUC5S
+Wi5wcm90b3R5cGU9ewokMTpmdW5jdGlvbihhKXtyZXR1cm4gUC5lUChDLlpKLEguYyhhKSxDLnhNLCEx
+KX0sCiRTOjV9ClAuTUUucHJvdG90eXBlPXsKJDI6ZnVuY3Rpb24oYSxiKXt2YXIgdD10aGlzLmIscz10
+aGlzLmEKdC5hKz1zLmEKcy5hPSImIgpzPXQuYSs9SC5kKFAuZVAoQy5GMyxhLEMueE0sITApKQppZihi
+IT1udWxsJiZiLmxlbmd0aCE9PTApe3QuYT1zKyI9Igp0LmErPUguZChQLmVQKEMuRjMsYixDLnhNLCEw
+KSl9fSwKJFM6MjJ9ClAueTUucHJvdG90eXBlPXsKJDI6ZnVuY3Rpb24oYSxiKXt2YXIgdCxzCkguYyhh
+KQppZihiPT1udWxsfHx0eXBlb2YgYj09InN0cmluZyIpdGhpcy5hLiQyKGEsSC5jKGIpKQplbHNlIGZv
+cih0PUouSVQodS5SLmEoYikpLHM9dGhpcy5hO3QuRigpOylzLiQyKGEsSC5jKHQuZ2woKSkpfSwKJFM6
+MTR9ClAuUEUucHJvdG90eXBlPXsKZ2xSOmZ1bmN0aW9uKCl7dmFyIHQscyxyLHEscD10aGlzLG89bnVs
+bCxuPXAuYwppZihuIT1udWxsKXJldHVybiBuCm49cC5iCmlmKDA+PW4ubGVuZ3RoKXJldHVybiBILmso
+biwwKQp0PXAuYQpuPW5bMF0rMQpzPUMueEIuWFUodCwiPyIsbikKcj10Lmxlbmd0aAppZihzPj0wKXtx
+PVAuUEkodCxzKzEscixDLlZDLCExKQpyPXN9ZWxzZSBxPW8KcmV0dXJuIHAuYz1uZXcgUC5xZSgiZGF0
+YSIsbyxvLG8sUC5QSSh0LG4scixDLldkLCExKSxxLG8pfSwKWjpmdW5jdGlvbihhKXt2YXIgdCxzPXRo
+aXMuYgppZigwPj1zLmxlbmd0aClyZXR1cm4gSC5rKHMsMCkKdD10aGlzLmEKcmV0dXJuIHNbMF09PT0t
+MT8iZGF0YToiK3Q6dH19ClAucTMucHJvdG90eXBlPXsKJDE6ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBV
+aW50OEFycmF5KDk2KX0sCiRTOjIzfQpQLnlJLnByb3RvdHlwZT17CiQyOmZ1bmN0aW9uKGEsYil7dmFy
+IHQ9dGhpcy5hCmlmKGE+PXQubGVuZ3RoKXJldHVybiBILmsodCxhKQp0PXRbYV0KSi5DTSh0LDAsOTYs
+YikKcmV0dXJuIHR9LAokUzoyNH0KUC5jNi5wcm90b3R5cGU9ewokMzpmdW5jdGlvbihhLGIsYyl7dmFy
+IHQscyxyLHEKZm9yKHQ9Yi5sZW5ndGgscz1hLmxlbmd0aCxyPTA7cjx0Oysrcil7cT1DLnhCLlcoYixy
+KV45NgppZihxPj1zKXJldHVybiBILmsoYSxxKQphW3FdPWN9fX0KUC5xZC5wcm90b3R5cGU9ewokMzpm
+dW5jdGlvbihhLGIsYyl7dmFyIHQscyxyLHEKZm9yKHQ9Qy54Qi5XKGIsMCkscz1DLnhCLlcoYiwxKSxy
+PWEubGVuZ3RoO3Q8PXM7Kyt0KXtxPSh0Xjk2KT4+PjAKaWYocT49cilyZXR1cm4gSC5rKGEscSkKYVtx
+XT1jfX19ClAuVWYucHJvdG90eXBlPXsKZ2NqOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYz4wfSwKZ3hB
+OmZ1bmN0aW9uKCl7dmFyIHQscwppZih0aGlzLmM+MCl7dD10aGlzLmQKaWYodHlwZW9mIHQhPT0ibnVt
+YmVyIilyZXR1cm4gdC5oKCkKcz10aGlzLmUKaWYodHlwZW9mIHMhPT0ibnVtYmVyIilyZXR1cm4gSC5w
+WShzKQpzPXQrMTxzCnQ9c31lbHNlIHQ9ITEKcmV0dXJuIHR9LApnUUQ6ZnVuY3Rpb24oKXt2YXIgdD10
+aGlzLmYKaWYodHlwZW9mIHQhPT0ibnVtYmVyIilyZXR1cm4gdC5KKCkKcmV0dXJuIHQ8dGhpcy5yfSwK
+Z1o4OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucjx0aGlzLmEubGVuZ3RofSwKZ053OmZ1bmN0aW9uKCl7
+cmV0dXJuIHRoaXMuYj09PTQmJkMueEIubih0aGlzLmEsImZpbGUiKX0sCmd2aDpmdW5jdGlvbigpe3Jl
+dHVybiB0aGlzLmI9PT00JiZDLnhCLm4odGhpcy5hLCJodHRwIil9LApnUmU6ZnVuY3Rpb24oKXtyZXR1
+cm4gdGhpcy5iPT09NSYmQy54Qi5uKHRoaXMuYSwiaHR0cHMiKX0sCmd0VDpmdW5jdGlvbigpe3JldHVy
+biBDLnhCLlFpKHRoaXMuYSwiLyIsdGhpcy5lKX0sCmdGaTpmdW5jdGlvbigpe3ZhciB0LHM9dGhpcyxy
+PSJwYWNrYWdlIixxPXMuYgppZihxPD0wKXJldHVybiIiCnQ9cy54CmlmKHQhPW51bGwpcmV0dXJuIHQK
+aWYocy5ndmgoKSlxPXMueD0iaHR0cCIKZWxzZSBpZihzLmdSZSgpKXtzLng9Imh0dHBzIgpxPSJodHRw
+cyJ9ZWxzZSBpZihzLmdOdygpKXtzLng9ImZpbGUiCnE9ImZpbGUifWVsc2UgaWYocT09PTcmJkMueEIu
+bihzLmEscikpe3MueD1yCnE9cn1lbHNle3E9Qy54Qi5OaihzLmEsMCxxKQpzLng9cX1yZXR1cm4gcX0s
+CmdrdTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuYyxzPXRoaXMuYiszCnJldHVybiB0PnM/Qy54Qi5Oaih0
+aGlzLmEscyx0LTEpOiIifSwKZ0pmOmZ1bmN0aW9uKGEpe3ZhciB0PXRoaXMuYwpyZXR1cm4gdD4wP0Mu
+eEIuTmoodGhpcy5hLHQsdGhpcy5kKToiIn0sCmd0cDpmdW5jdGlvbihhKXt2YXIgdCxzPXRoaXMKaWYo
+cy5neEEoKSl7dD1zLmQKaWYodHlwZW9mIHQhPT0ibnVtYmVyIilyZXR1cm4gdC5oKCkKcmV0dXJuIFAu
+UUEoQy54Qi5OaihzLmEsdCsxLHMuZSksbnVsbCxudWxsKX1pZihzLmd2aCgpKXJldHVybiA4MAppZihz
+LmdSZSgpKXJldHVybiA0NDMKcmV0dXJuIDB9LApnSWk6ZnVuY3Rpb24oYSl7cmV0dXJuIEMueEIuTmoo
+dGhpcy5hLHRoaXMuZSx0aGlzLmYpfSwKZ3RQOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5mLHM9dGhpcy5y
+CmlmKHR5cGVvZiB0IT09Im51bWJlciIpcmV0dXJuIHQuSigpCnJldHVybiB0PHM/Qy54Qi5Oaih0aGlz
+LmEsdCsxLHMpOiIifSwKZ0thOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5yLHM9dGhpcy5hCnJldHVybiB0
+PHMubGVuZ3RoP0MueEIuRyhzLHQrMSk6IiJ9LApnRmo6ZnVuY3Rpb24oKXt2YXIgdCxzLHI9dGhpcy5l
+LHE9dGhpcy5mLHA9dGhpcy5hCmlmKEMueEIuUWkocCwiLyIscikpe2lmKHR5cGVvZiByIT09Im51bWJl
+ciIpcmV0dXJuIHIuaCgpOysrcn1pZihyPT1xKXJldHVybiBDLnhECnQ9SC5WTShbXSx1LnMpCnM9cgp3
+aGlsZSghMCl7aWYodHlwZW9mIHMhPT0ibnVtYmVyIilyZXR1cm4gcy5KKCkKaWYodHlwZW9mIHEhPT0i
+bnVtYmVyIilyZXR1cm4gSC5wWShxKQppZighKHM8cSkpYnJlYWsKaWYoQy54Qi5tKHAscyk9PT00Nyl7
+Qy5ObS5pKHQsQy54Qi5OaihwLHIscykpCnI9cysxfSsrc31DLk5tLmkodCxDLnhCLk5qKHAscixxKSkK
+cmV0dXJuIFAuQUYodCx1Lk4pfSwKZ2hZOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5mCmlmKHR5cGVvZiB0
+IT09Im51bWJlciIpcmV0dXJuIHQuSigpCmlmKHQ+PXRoaXMucilyZXR1cm4gQy5XTwpyZXR1cm4gbmV3
+IFAuR2ooUC5XWCh0aGlzLmd0UCgpKSx1LmR3KX0sCmtYOmZ1bmN0aW9uKGEpe3ZhciB0LHM9dGhpcy5k
+CmlmKHR5cGVvZiBzIT09Im51bWJlciIpcmV0dXJuIHMuaCgpCnQ9cysxCnJldHVybiB0K2EubGVuZ3Ro
+PT09dGhpcy5lJiZDLnhCLlFpKHRoaXMuYSxhLHQpfSwKTjk6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLHM9
+dC5yLHI9dC5hCmlmKHM+PXIubGVuZ3RoKXJldHVybiB0CnJldHVybiBuZXcgUC5VZihDLnhCLk5qKHIs
+MCxzKSx0LmIsdC5jLHQuZCx0LmUsdC5mLHMsdC54KX0sCm5tOmZ1bmN0aW9uKGEsYil7dmFyIHQscyxy
+LHEscCxvLG4sbSxsLGssaj10aGlzLGk9bnVsbAp1LlguYShudWxsKQp1LmIuYShiKQp0PWouZ0ZpKCkK
+cz10PT09ImZpbGUiCnI9ai5jCnE9cj4wP0MueEIuTmooai5hLGouYiszLHIpOiIiCnA9ai5neEEoKT9q
+Lmd0cChqKTppCnI9ai5jCmlmKHI+MClvPUMueEIuTmooai5hLHIsai5kKQplbHNlIG89cS5sZW5ndGgh
+PT0wfHxwIT1udWxsfHxzPyIiOmkKcj1qLmEKbj1DLnhCLk5qKHIsai5lLGouZikKaWYoIXMpbT1vIT1u
+dWxsJiZuLmxlbmd0aCE9PTAKZWxzZSBtPSEwCmlmKG0mJiFDLnhCLm4obiwiLyIpKW49Ii8iK24KbD1Q
+LmxlKGksMCwwLGIpCm09ai5yCms9bTxyLmxlbmd0aD9DLnhCLkcocixtKzEpOmkKcmV0dXJuIG5ldyBQ
+LkRuKHQscSxvLHAsbixsLGspfSwKWkk6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMubVMoUC5oSyhhKSl9
+LAptUzpmdW5jdGlvbihhKXtpZihhIGluc3RhbmNlb2YgUC5VZilyZXR1cm4gdGhpcy51MSh0aGlzLGEp
+CnJldHVybiB0aGlzLnZzKCkubVMoYSl9LAp1MTpmdW5jdGlvbihhLGIpe3ZhciB0LHMscixxLHAsbyxu
+LG0sbCxrLGosaSxoLGcsZixlPWIuYgppZihlPjApcmV0dXJuIGIKdD1iLmMKaWYodD4wKXtzPWEuYgpp
+ZihzPD0wKXJldHVybiBiCmlmKGEuZ053KCkpcj1iLmUhPWIuZgplbHNlIGlmKGEuZ3ZoKCkpcj0hYi5r
+WCgiODAiKQplbHNlIHI9IWEuZ1JlKCl8fCFiLmtYKCI0NDMiKQppZihyKXtxPXMrMQpwPUMueEIuTmoo
+YS5hLDAscSkrQy54Qi5HKGIuYSxlKzEpCmU9Yi5kCmlmKHR5cGVvZiBlIT09Im51bWJlciIpcmV0dXJu
+IGUuaCgpCm89Yi5lCmlmKHR5cGVvZiBvIT09Im51bWJlciIpcmV0dXJuIG8uaCgpCm49Yi5mCmlmKHR5
+cGVvZiBuIT09Im51bWJlciIpcmV0dXJuIG4uaCgpCnJldHVybiBuZXcgUC5VZihwLHMsdCtxLGUrcSxv
+K3EsbitxLGIucitxLGEueCl9ZWxzZSByZXR1cm4gdGhpcy52cygpLm1TKGIpfW09Yi5lCmU9Yi5mCmlm
+KG09PWUpe3Q9Yi5yCmlmKHR5cGVvZiBlIT09Im51bWJlciIpcmV0dXJuIGUuSigpCmlmKGU8dCl7cz1h
+LmYKaWYodHlwZW9mIHMhPT0ibnVtYmVyIilyZXR1cm4gcy5ITigpCnE9cy1lCnJldHVybiBuZXcgUC5V
+ZihDLnhCLk5qKGEuYSwwLHMpK0MueEIuRyhiLmEsZSksYS5iLGEuYyxhLmQsYS5lLGUrcSx0K3EsYS54
+KX1lPWIuYQppZih0PGUubGVuZ3RoKXtzPWEucgpyZXR1cm4gbmV3IFAuVWYoQy54Qi5OaihhLmEsMCxz
+KStDLnhCLkcoZSx0KSxhLmIsYS5jLGEuZCxhLmUsYS5mLHQrKHMtdCksYS54KX1yZXR1cm4gYS5OOSgp
+fXQ9Yi5hCmlmKEMueEIuUWkodCwiLyIsbSkpe3M9YS5lCmlmKHR5cGVvZiBzIT09Im51bWJlciIpcmV0
+dXJuIHMuSE4oKQppZih0eXBlb2YgbSE9PSJudW1iZXIiKXJldHVybiBILnBZKG0pCnE9cy1tCnA9Qy54
+Qi5OaihhLmEsMCxzKStDLnhCLkcodCxtKQppZih0eXBlb2YgZSE9PSJudW1iZXIiKXJldHVybiBlLmgo
+KQpyZXR1cm4gbmV3IFAuVWYocCxhLmIsYS5jLGEuZCxzLGUrcSxiLnIrcSxhLngpfWw9YS5lCms9YS5m
+CmlmKGw9PWsmJmEuYz4wKXtmb3IoO0MueEIuUWkodCwiLi4vIixtKTspe2lmKHR5cGVvZiBtIT09Im51
+bWJlciIpcmV0dXJuIG0uaCgpCm0rPTN9aWYodHlwZW9mIGwhPT0ibnVtYmVyIilyZXR1cm4gbC5ITigp
+CmlmKHR5cGVvZiBtIT09Im51bWJlciIpcmV0dXJuIEgucFkobSkKcT1sLW0rMQpwPUMueEIuTmooYS5h
+LDAsbCkrIi8iK0MueEIuRyh0LG0pCmlmKHR5cGVvZiBlIT09Im51bWJlciIpcmV0dXJuIGUuaCgpCnJl
+dHVybiBuZXcgUC5VZihwLGEuYixhLmMsYS5kLGwsZStxLGIucitxLGEueCl9aj1hLmEKZm9yKGk9bDtD
+LnhCLlFpKGosIi4uLyIsaSk7KXtpZih0eXBlb2YgaSE9PSJudW1iZXIiKXJldHVybiBpLmgoKQppKz0z
+fWg9MAp3aGlsZSghMCl7aWYodHlwZW9mIG0hPT0ibnVtYmVyIilyZXR1cm4gbS5oKCkKZz1tKzMKaWYo
+dHlwZW9mIGUhPT0ibnVtYmVyIilyZXR1cm4gSC5wWShlKQppZighKGc8PWUmJkMueEIuUWkodCwiLi4v
+IixtKSkpYnJlYWs7KytoCm09Z31mPSIiCndoaWxlKCEwKXtpZih0eXBlb2YgayE9PSJudW1iZXIiKXJl
+dHVybiBrLm9zKCkKaWYodHlwZW9mIGkhPT0ibnVtYmVyIilyZXR1cm4gSC5wWShpKQppZighKGs+aSkp
+YnJlYWs7LS1rCmlmKEMueEIubShqLGspPT09NDcpe2lmKGg9PT0wKXtmPSIvIgpicmVha30tLWgKZj0i
+LyJ9fWlmKGs9PT1pJiZhLmI8PTAmJiFDLnhCLlFpKGosIi8iLGwpKXttLT1oKjMKZj0iIn1xPWstbStm
+Lmxlbmd0aApyZXR1cm4gbmV3IFAuVWYoQy54Qi5OaihqLDAsaykrZitDLnhCLkcodCxtKSxhLmIsYS5j
+LGEuZCxsLGUrcSxiLnIrcSxhLngpfSwKdDQ6ZnVuY3Rpb24oKXt2YXIgdCxzLHIscSxwPXRoaXMKaWYo
+cC5iPj0wJiYhcC5nTncoKSl0aHJvdyBILmIoUC5MNCgiQ2Fubm90IGV4dHJhY3QgYSBmaWxlIHBhdGgg
+ZnJvbSBhICIrSC5kKHAuZ0ZpKCkpKyIgVVJJIikpCnQ9cC5mCnM9cC5hCmlmKHR5cGVvZiB0IT09Im51
+bWJlciIpcmV0dXJuIHQuSigpCmlmKHQ8cy5sZW5ndGgpe2lmKHQ8cC5yKXRocm93IEguYihQLkw0KCJD
+YW5ub3QgZXh0cmFjdCBhIGZpbGUgcGF0aCBmcm9tIGEgVVJJIHdpdGggYSBxdWVyeSBjb21wb25lbnQi
+KSkKdGhyb3cgSC5iKFAuTDQoIkNhbm5vdCBleHRyYWN0IGEgZmlsZSBwYXRoIGZyb20gYSBVUkkgd2l0
+aCBhIGZyYWdtZW50IGNvbXBvbmVudCIpKX1yPSQuT3goKQppZihILm9UKHIpKXQ9UC5tbihwKQplbHNl
+e3E9cC5kCmlmKHR5cGVvZiBxIT09Im51bWJlciIpcmV0dXJuIEgucFkocSkKaWYocC5jPHEpSC52aChQ
+Lkw0KCJDYW5ub3QgZXh0cmFjdCBhIG5vbi1XaW5kb3dzIGZpbGUgcGF0aCBmcm9tIGEgZmlsZSBVUkkg
+d2l0aCBhbiBhdXRob3JpdHkiKSkKdD1DLnhCLk5qKHMscC5lLHQpfXJldHVybiB0fSwKZ2lPOmZ1bmN0
+aW9uKGEpe3ZhciB0PXRoaXMueQpyZXR1cm4gdD09bnVsbD90aGlzLnk9Qy54Qi5naU8odGhpcy5hKTp0
+fSwKRE46ZnVuY3Rpb24oYSxiKXtpZihiPT1udWxsKXJldHVybiExCmlmKHRoaXM9PT1iKXJldHVybiEw
+CnJldHVybiB1LmRELmIoYikmJnRoaXMuYT09PWIuWigwKX0sCnZzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhp
+cyxzPW51bGwscj10LmdGaSgpLHE9dC5na3UoKSxwPXQuYz4wP3QuZ0pmKHQpOnMsbz10Lmd4QSgpP3Qu
+Z3RwKHQpOnMsbj10LmEsbT10LmYsbD1DLnhCLk5qKG4sdC5lLG0pLGs9dC5yCmlmKHR5cGVvZiBtIT09
+Im51bWJlciIpcmV0dXJuIG0uSigpCm09bTxrP3QuZ3RQKCk6cwpyZXR1cm4gbmV3IFAuRG4ocixxLHAs
+byxsLG0sazxuLmxlbmd0aD90LmdLYSgpOnMpfSwKWjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5hfSwK
+JGlpRDoxfQpQLnFlLnByb3RvdHlwZT17fQpXLnFFLnByb3RvdHlwZT17fQpXLkdoLnByb3RvdHlwZT17
+Clo6ZnVuY3Rpb24oYSl7cmV0dXJuIFN0cmluZyhhKX0sCiRpR2g6MX0KVy5mWS5wcm90b3R5cGU9ewpa
+OmZ1bmN0aW9uKGEpe3JldHVybiBTdHJpbmcoYSl9fQpXLm5CLnByb3RvdHlwZT17JGluQjoxfQpXLkF6
+LnByb3RvdHlwZT17JGlBejoxfQpXLlFQLnByb3RvdHlwZT17JGlRUDoxfQpXLm54LnByb3RvdHlwZT17
+CmdBOmZ1bmN0aW9uKGEpe3JldHVybiBhLmxlbmd0aH19Clcub0oucHJvdG90eXBlPXsKZ0E6ZnVuY3Rp
+b24oYSl7cmV0dXJuIGEubGVuZ3RofX0KVy5pZC5wcm90b3R5cGU9e30KVy5RRi5wcm90b3R5cGU9e30K
+Vy5OaC5wcm90b3R5cGU9ewpaOmZ1bmN0aW9uKGEpe3JldHVybiBTdHJpbmcoYSl9fQpXLklCLnByb3Rv
+dHlwZT17Clo6ZnVuY3Rpb24oYSl7cmV0dXJuIlJlY3RhbmdsZSAoIitILmQoYS5sZWZ0KSsiLCAiK0gu
+ZChhLnRvcCkrIikgIitILmQoYS53aWR0aCkrIiB4ICIrSC5kKGEuaGVpZ2h0KX0sCkROOmZ1bmN0aW9u
+KGEsYil7aWYoYj09bnVsbClyZXR1cm4hMQpyZXR1cm4gdS5PLmIoYikmJmEubGVmdD09Yi5sZWZ0JiZh
+LnRvcD09Yi50b3AmJmEud2lkdGg9PWIud2lkdGgmJmEuaGVpZ2h0PT1iLmhlaWdodH0sCmdpTzpmdW5j
+dGlvbihhKXtyZXR1cm4gVy5yRShKLmhmKGEubGVmdCksSi5oZihhLnRvcCksSi5oZihhLndpZHRoKSxK
+LmhmKGEuaGVpZ2h0KSl9LAokaXRuOjF9ClcubjcucHJvdG90eXBlPXsKZ0E6ZnVuY3Rpb24oYSl7cmV0
+dXJuIGEubGVuZ3RofX0KVy53ei5wcm90b3R5cGU9ewpnQTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5h
+Lmxlbmd0aH0sCnE6ZnVuY3Rpb24oYSxiKXt2YXIgdApILldZKGIpCnQ9dGhpcy5hCmlmKGI8MHx8Yj49
+dC5sZW5ndGgpcmV0dXJuIEguayh0LGIpCnJldHVybiB0aGlzLiR0aS5jLmEodFtiXSl9LApZOmZ1bmN0
+aW9uKGEsYixjKXt0aGlzLiR0aS5jLmEoYykKdGhyb3cgSC5iKFAuTDQoIkNhbm5vdCBtb2RpZnkgbGlz
+dCIpKX19ClcuY3YucHJvdG90eXBlPXsKZ1FnOmZ1bmN0aW9uKGEpe3JldHVybiBuZXcgVy5pNyhhKX0s
+CmdQOmZ1bmN0aW9uKGEpe3JldHVybiBuZXcgVy5JNChhKX0sCnNQOmZ1bmN0aW9uKGEsYil7dmFyIHQK
+dS5YLmEoYikKdD10aGlzLmdQKGEpCnQuVjEoMCkKdC5GVigwLGIpfSwKWjpmdW5jdGlvbihhKXtyZXR1
+cm4gYS5sb2NhbE5hbWV9LApGRjpmdW5jdGlvbihhKXt2YXIgdD0hIWEuc2Nyb2xsSW50b1ZpZXdJZk5l
+ZWRlZAppZih0KWEuc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCgpCmVsc2UgYS5zY3JvbGxJbnRvVmlldygp
+fSwKbno6ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgdCxzPXRoaXMucjYoYSxjLGQsZSkKc3dpdGNoKGIu
+dG9Mb3dlckNhc2UoKSl7Y2FzZSJiZWZvcmViZWdpbiI6YS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShz
+LGEpCmJyZWFrCmNhc2UiYWZ0ZXJiZWdpbiI6dD1hLmNoaWxkTm9kZXMKYS5pbnNlcnRCZWZvcmUocyx0
Lmxlbmd0aD4wP3RbMF06bnVsbCkKYnJlYWsKY2FzZSJiZWZvcmVlbmQiOmEuYXBwZW5kQ2hpbGQocykK
-YnJlYWsKY2FzZSJhZnRlcmVuZCI6dD1hLnBhcmVudE5vZGUKdC50b1N0cmluZwpKLkVoKHQscyxhLm5l
-eHRTaWJsaW5nKQpicmVhawpkZWZhdWx0OkgudmgoUC54WSgiSW52YWxpZCBwb3NpdGlvbiAiK2IpKX19
-LApyNjpmdW5jdGlvbihhLGIsYyxkKXt2YXIgdCxzLHIscQppZihjPT1udWxsKXtpZihkPT1udWxsKXt0
-PSQubHQKaWYodD09bnVsbCl7dD1ILlZNKFtdLHUucCkKcz1uZXcgVy52RCh0KQpDLk5tLmkodCxXLlR3
-KG51bGwpKQpDLk5tLmkodCxXLkJsKCkpCiQubHQ9cwpkPXN9ZWxzZSBkPXR9dD0kLkVVCmlmKHQ9PW51
-bGwpe3Q9bmV3IFcuS28oZCkKJC5FVT10CmM9dH1lbHNle3QuYT1kCmM9dH19ZWxzZSBpZihkIT1udWxs
-KXRocm93IEguYihQLnhZKCJ2YWxpZGF0b3IgY2FuIG9ubHkgYmUgcGFzc2VkIGlmIHRyZWVTYW5pdGl6
-ZXIgaXMgbnVsbCIpKQppZigkLnhvPT1udWxsKXt0PWRvY3VtZW50CnM9Qy5tSC5EYyh0LmltcGxlbWVu
-dGF0aW9uLCIiKQokLnhvPXMKJC5CTz1zLmNyZWF0ZVJhbmdlKCkKcz0kLnhvLmNyZWF0ZUVsZW1lbnQo
-ImJhc2UiKQp1LmNSLmEocykKcy5ocmVmPXQuYmFzZVVSSQokLnhvLmhlYWQuYXBwZW5kQ2hpbGQocyl9
-dD0kLnhvCmlmKHQuYm9keT09bnVsbCl7cz10LmNyZWF0ZUVsZW1lbnQoImJvZHkiKQpDLkJaLnNYRyh0
-LHUuay5hKHMpKX10PSQueG8KaWYodS5rLmIoYSkpe3Q9dC5ib2R5CnQudG9TdHJpbmcKcj10fWVsc2V7
-dC50b1N0cmluZwpyPXQuY3JlYXRlRWxlbWVudChhLnRhZ05hbWUpCiQueG8uYm9keS5hcHBlbmRDaGls
-ZChyKX1pZigiY3JlYXRlQ29udGV4dHVhbEZyYWdtZW50IiBpbiB3aW5kb3cuUmFuZ2UucHJvdG90eXBl
-JiYhQy5ObS50ZyhDLlNxLGEudGFnTmFtZSkpeyQuQk8uc2VsZWN0Tm9kZUNvbnRlbnRzKHIpCnE9JC5C
-Ty5jcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQoYil9ZWxzZXtKLndmKHIsYikKcT0kLnhvLmNyZWF0ZURv
-Y3VtZW50RnJhZ21lbnQoKQpmb3IoO3Q9ci5maXJzdENoaWxkLHQhPW51bGw7KXEuYXBwZW5kQ2hpbGQo
-dCl9aWYociE9PSQueG8uYm9keSlKLkx0KHIpCmMuUG4ocSkKZG9jdW1lbnQuYWRvcHROb2RlKHEpCnJl
-dHVybiBxfSwKQUg6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB0aGlzLnI2KGEsYixjLG51bGwpfSwKc2hm
-OmZ1bmN0aW9uKGEsYil7dGhpcy5ZQyhhLGIpfSwKcGs6ZnVuY3Rpb24oYSxiLGMpe3RoaXMuc2E0KGEs
-bnVsbCkKYi50b1N0cmluZwphLmFwcGVuZENoaWxkKHRoaXMucjYoYSxiLG51bGwsYykpfSwKWUM6ZnVu
-Y3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5wayhhLGIsbnVsbCl9LApzUk46ZnVuY3Rpb24oYSxiKXthLmlu
-bmVySFRNTD1ifSwKZ25zOmZ1bmN0aW9uKGEpe3JldHVybiBhLnRhZ05hbWV9LApnVmw6ZnVuY3Rpb24o
-YSl7cmV0dXJuIG5ldyBXLmV1KGEsImNsaWNrIiwhMSx1LkcpfSwKJGljdjoxfQpXLkN2LnByb3RvdHlw
-ZT17CiQxOmZ1bmN0aW9uKGEpe3JldHVybiB1LmguYih1LkEuYShhKSl9LAokUzoyNX0KVy5lYS5wcm90
-b3R5cGU9eyRpZWE6MX0KVy5EMC5wcm90b3R5cGU9ewpPbjpmdW5jdGlvbihhLGIsYyxkKXt1LmJ3LmEo
-YykKaWYoYyE9bnVsbCl0aGlzLnYoYSxiLGMsZCl9LApCOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gdGhp
-cy5PbihhLGIsYyxudWxsKX0sCnY6ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIGEuYWRkRXZlbnRMaXN0
-ZW5lcihiLEgudFIodS5idy5hKGMpLDEpLGQpfSwKJGlEMDoxfQpXLlQ1LnByb3RvdHlwZT17JGlUNTox
-fQpXLmg0LnByb3RvdHlwZT17CmdBOmZ1bmN0aW9uKGEpe3JldHVybiBhLmxlbmd0aH19ClcuYnIucHJv
-dG90eXBlPXsKZ0E6ZnVuY3Rpb24oYSl7cmV0dXJuIGEubGVuZ3RofX0KVy5WYi5wcm90b3R5cGU9ewpz
-WEc6ZnVuY3Rpb24oYSxiKXthLmJvZHk9Yn19ClcuZkoucHJvdG90eXBlPXsKZW86ZnVuY3Rpb24oYSxi
-LGMsZCl7cmV0dXJuIGEub3BlbihiLGMsITApfSwKJGlmSjoxfQpXLmJVLnByb3RvdHlwZT17CiQyOmZ1
-bmN0aW9uKGEsYil7dGhpcy5hLnNldFJlcXVlc3RIZWFkZXIoSC5oKGEpLEguaChiKSl9LAokUzo3fQpX
-LmhILnByb3RvdHlwZT17CiQxOmZ1bmN0aW9uKGEpe3ZhciB0LHMscixxLHAKdS5nWi5hKGEpCnQ9dGhp
-cy5hCnM9dC5zdGF0dXMKcj1zPj0yMDAmJnM8MzAwCnE9cz4zMDcmJnM8NDAwCnM9cnx8cz09PTB8fHM9
-PT0zMDR8fHEKcD10aGlzLmIKaWYocylwLmFNKDAsdCkKZWxzZSBwLnBtKGEpfSwKJFM6Mjd9Clcud2Eu
-cHJvdG90eXBlPXt9ClcuU2cucHJvdG90eXBlPXskaVNnOjF9ClcudTgucHJvdG90eXBlPXsKZ0RyOmZ1
-bmN0aW9uKGEpe2lmKCJvcmlnaW4iIGluIGEpcmV0dXJuIGEub3JpZ2luCnJldHVybiBhLnByb3RvY29s
-KyIvLyIrYS5ob3N0fSwKdzpmdW5jdGlvbihhKXtyZXR1cm4gU3RyaW5nKGEpfSwKJGl1ODoxfQpXLk9L
-LnByb3RvdHlwZT17JGlPSzoxfQpXLmU3LnByb3RvdHlwZT17CmdyODpmdW5jdGlvbihhKXt2YXIgdD10
-aGlzLmEscz10LmNoaWxkTm9kZXMubGVuZ3RoCmlmKHM9PT0wKXRocm93IEguYihQLlBWKCJObyBlbGVt
-ZW50cyIpKQppZihzPjEpdGhyb3cgSC5iKFAuUFYoIk1vcmUgdGhhbiBvbmUgZWxlbWVudCIpKQp0PXQu
-Zmlyc3RDaGlsZAp0LnRvU3RyaW5nCnJldHVybiB0fSwKRlY6ZnVuY3Rpb24oYSxiKXt2YXIgdCxzLHIs
-cSxwCnUuZWguYShiKQp0PWIuYQpzPXRoaXMuYQppZih0IT09cylmb3Iocj10LmNoaWxkTm9kZXMubGVu
-Z3RoLHE9MDtxPHI7KytxKXtwPXQuZmlyc3RDaGlsZApwLnRvU3RyaW5nCnMuYXBwZW5kQ2hpbGQocCl9
-cmV0dXJufSwKWTpmdW5jdGlvbihhLGIsYyl7dmFyIHQscwp1LkEuYShjKQp0PXRoaXMuYQpzPXQuY2hp
-bGROb2RlcwppZihiPDB8fGI+PXMubGVuZ3RoKXJldHVybiBILk9IKHMsYikKdC5yZXBsYWNlQ2hpbGQo
-YyxzW2JdKX0sCmdrejpmdW5jdGlvbihhKXt2YXIgdD10aGlzLmEuY2hpbGROb2RlcwpyZXR1cm4gbmV3
-IFcuVzkodCx0Lmxlbmd0aCxILnoodCkuQygiVzk8R20uRT4iKSl9LApnQTpmdW5jdGlvbihhKXtyZXR1
-cm4gdGhpcy5hLmNoaWxkTm9kZXMubGVuZ3RofSwKcTpmdW5jdGlvbihhLGIpe3ZhciB0CkgudVAoYikK
-dD10aGlzLmEuY2hpbGROb2RlcwppZihiPDB8fGI+PXQubGVuZ3RoKXJldHVybiBILk9IKHQsYikKcmV0
-dXJuIHRbYl19fQpXLnVILnByb3RvdHlwZT17CndnOmZ1bmN0aW9uKGEpe3ZhciB0PWEucGFyZW50Tm9k
-ZQppZih0IT1udWxsKXQucmVtb3ZlQ2hpbGQoYSl9LApENDpmdW5jdGlvbihhKXt2YXIgdApmb3IoO3Q9
-YS5maXJzdENoaWxkLHQhPW51bGw7KWEucmVtb3ZlQ2hpbGQodCl9LAp3OmZ1bmN0aW9uKGEpe3ZhciB0
-PWEubm9kZVZhbHVlCnJldHVybiB0PT1udWxsP3RoaXMuVShhKTp0fSwKc2E0OmZ1bmN0aW9uKGEsYil7
-YS50ZXh0Q29udGVudD1ifSwKbUs6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBhLmluc2VydEJlZm9yZShi
-LGMpfSwKJGl1SDoxfQpXLkJILnByb3RvdHlwZT17CmdBOmZ1bmN0aW9uKGEpe3JldHVybiBhLmxlbmd0
-aH0sCnE6ZnVuY3Rpb24oYSxiKXtILnVQKGIpCmlmKGI+Pj4wIT09Ynx8Yj49YS5sZW5ndGgpdGhyb3cg
-SC5iKFAuQ2YoYixhLG51bGwsbnVsbCxudWxsKSkKcmV0dXJuIGFbYl19LApZOmZ1bmN0aW9uKGEsYixj
-KXt1LkEuYShjKQp0aHJvdyBILmIoUC5MNCgiQ2Fubm90IGFzc2lnbiBlbGVtZW50IG9mIGltbXV0YWJs
-ZSBMaXN0LiIpKX0sCkU6ZnVuY3Rpb24oYSxiKXtpZihiPDB8fGI+PWEubGVuZ3RoKXJldHVybiBILk9I
-KGEsYikKcmV0dXJuIGFbYl19LAokaWJROjEsCiRpWGo6MSwKJGljWDoxLAokaXpNOjF9ClcuU04ucHJv
-dG90eXBlPXt9ClcuZXcucHJvdG90eXBlPXskaWV3OjF9ClcubHAucHJvdG90eXBlPXsKZ0E6ZnVuY3Rp
-b24oYSl7cmV0dXJuIGEubGVuZ3RofX0KVy5UYi5wcm90b3R5cGU9ewpyNjpmdW5jdGlvbihhLGIsYyxk
-KXt2YXIgdCxzCmlmKCJjcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQiIGluIHdpbmRvdy5SYW5nZS5wcm90
-b3R5cGUpcmV0dXJuIHRoaXMuRFcoYSxiLGMsZCkKdD1XLlU5KCI8dGFibGU+IitILkVqKGIpKyI8L3Rh
-YmxlPiIsYyxkKQpzPWRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKQp0LnRvU3RyaW5nCm5l
-dyBXLmU3KHMpLkZWKDAsbmV3IFcuZTcodCkpCnJldHVybiBzfX0KVy5Jdi5wcm90b3R5cGU9ewpyNjpm
-dW5jdGlvbihhLGIsYyxkKXt2YXIgdCxzLHIscQppZigiY3JlYXRlQ29udGV4dHVhbEZyYWdtZW50IiBp
-biB3aW5kb3cuUmFuZ2UucHJvdG90eXBlKXJldHVybiB0aGlzLkRXKGEsYixjLGQpCnQ9ZG9jdW1lbnQK
-cz10LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKQp0PW5ldyBXLmU3KEMuSWUucjYodC5jcmVhdGVFbGVt
-ZW50KCJ0YWJsZSIpLGIsYyxkKSkKcj10LmdyOCh0KQpyLnRvU3RyaW5nCnQ9bmV3IFcuZTcocikKcT10
-LmdyOCh0KQpxLnRvU3RyaW5nCm5ldyBXLmU3KHMpLkZWKDAsbmV3IFcuZTcocSkpCnJldHVybiBzfX0K
-Vy5XUC5wcm90b3R5cGU9ewpyNjpmdW5jdGlvbihhLGIsYyxkKXt2YXIgdCxzLHIKaWYoImNyZWF0ZUNv
-bnRleHR1YWxGcmFnbWVudCIgaW4gd2luZG93LlJhbmdlLnByb3RvdHlwZSlyZXR1cm4gdGhpcy5EVyhh
-LGIsYyxkKQp0PWRvY3VtZW50CnM9dC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkKdD1uZXcgVy5lNyhD
-LkllLnI2KHQuY3JlYXRlRWxlbWVudCgidGFibGUiKSxiLGMsZCkpCnI9dC5ncjgodCkKci50b1N0cmlu
-ZwpuZXcgVy5lNyhzKS5GVigwLG5ldyBXLmU3KHIpKQpyZXR1cm4gc319ClcueVkucHJvdG90eXBlPXsK
-cGs6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0CnRoaXMuc2E0KGEsbnVsbCkKSi5iVChhLmNvbnRlbnQpCmIu
-dG9TdHJpbmcKdD10aGlzLnI2KGEsYixudWxsLGMpCmEuY29udGVudC5hcHBlbmRDaGlsZCh0KX0sCllD
-OmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMucGsoYSxiLG51bGwpfSwKJGl5WToxfQpXLnc2LnByb3Rv
-dHlwZT17fQpXLks1LnByb3RvdHlwZT17ClBvOmZ1bmN0aW9uKGEsYixjKXt2YXIgdD1XLlAxKGEub3Bl
-bihiLGMpKQpyZXR1cm4gdH0sCmdtVzpmdW5jdGlvbihhKXtyZXR1cm4gYS5sb2NhdGlvbn0sClV4OmZ1
-bmN0aW9uKGEsYil7cmV0dXJuIGEuYWxlcnQoYil9LAp1czpmdW5jdGlvbihhLGIpe3JldHVybiBhLmNv
-bmZpcm0oYil9LAokaUs1OjEsCiRpdjY6MX0KVy5DbS5wcm90b3R5cGU9eyRpQ206MX0KVy5DUS5wcm90
-b3R5cGU9eyRpQ1E6MX0KVy53NC5wcm90b3R5cGU9ewp3OmZ1bmN0aW9uKGEpe3JldHVybiJSZWN0YW5n
-bGUgKCIrSC5FaihhLmxlZnQpKyIsICIrSC5FaihhLnRvcCkrIikgIitILkVqKGEud2lkdGgpKyIgeCAi
-K0guRWooYS5oZWlnaHQpfSwKRE46ZnVuY3Rpb24oYSxiKXtpZihiPT1udWxsKXJldHVybiExCnJldHVy
-biB1LnEuYihiKSYmYS5sZWZ0PT09Yi5sZWZ0JiZhLnRvcD09PWIudG9wJiZhLndpZHRoPT09Yi53aWR0
-aCYmYS5oZWlnaHQ9PT1iLmhlaWdodH0sCmdpTzpmdW5jdGlvbihhKXtyZXR1cm4gVy5yRShDLkNELmdp
-TyhhLmxlZnQpLEMuQ0QuZ2lPKGEudG9wKSxDLkNELmdpTyhhLndpZHRoKSxDLkNELmdpTyhhLmhlaWdo
-dCkpfX0KVy5yaC5wcm90b3R5cGU9ewpnQTpmdW5jdGlvbihhKXtyZXR1cm4gYS5sZW5ndGh9LApxOmZ1
-bmN0aW9uKGEsYil7SC51UChiKQppZihiPj4+MCE9PWJ8fGI+PWEubGVuZ3RoKXRocm93IEguYihQLkNm
-KGIsYSxudWxsLG51bGwsbnVsbCkpCnJldHVybiBhW2JdfSwKWTpmdW5jdGlvbihhLGIsYyl7dS5BLmEo
-YykKdGhyb3cgSC5iKFAuTDQoIkNhbm5vdCBhc3NpZ24gZWxlbWVudCBvZiBpbW11dGFibGUgTGlzdC4i
-KSl9LApFOmZ1bmN0aW9uKGEsYil7aWYoYjwwfHxiPj1hLmxlbmd0aClyZXR1cm4gSC5PSChhLGIpCnJl
-dHVybiBhW2JdfSwKJGliUToxLAokaVhqOjEsCiRpY1g6MSwKJGl6TToxfQpXLmNmLnByb3RvdHlwZT17
-Cks6ZnVuY3Rpb24oYSxiKXt2YXIgdCxzLHIscSxwCnUuZUEuYShiKQpmb3IodD10aGlzLmdWKCkscz10
-Lmxlbmd0aCxyPXRoaXMuYSxxPTA7cTx0Lmxlbmd0aDt0Lmxlbmd0aD09PXN8fCgwLEgubGspKHQpLCsr
-cSl7cD10W3FdCmIuJDIocCxyLmdldEF0dHJpYnV0ZShwKSl9fSwKZ1Y6ZnVuY3Rpb24oKXt2YXIgdCxz
-LHIscSxwPXRoaXMuYS5hdHRyaWJ1dGVzLG89SC5WTShbXSx1LnMpCmZvcih0PXAubGVuZ3RoLHM9dS5o
-OSxyPTA7cjx0Oysrcil7aWYocj49cC5sZW5ndGgpcmV0dXJuIEguT0gocCxyKQpxPXMuYShwW3JdKQpp
-ZihxLm5hbWVzcGFjZVVSST09bnVsbClDLk5tLmkobyxxLm5hbWUpfXJldHVybiBvfX0KVy5pNy5wcm90
-b3R5cGU9ewp4NDpmdW5jdGlvbihhKXt2YXIgdD10aGlzLmEuaGFzQXR0cmlidXRlKGEpCnJldHVybiB0
-fSwKcTpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmEuZ2V0QXR0cmlidXRlKEguaChiKSl9LApZOmZ1
-bmN0aW9uKGEsYixjKXt0aGlzLmEuc2V0QXR0cmlidXRlKGIsYyl9LApnQTpmdW5jdGlvbihhKXtyZXR1
-cm4gdGhpcy5nVigpLmxlbmd0aH19ClcuU3kucHJvdG90eXBlPXsKeDQ6ZnVuY3Rpb24oYSl7dmFyIHQ9
-dGhpcy5hLmEuaGFzQXR0cmlidXRlKCJkYXRhLSIrdGhpcy5PKGEpKQpyZXR1cm4gdH0sCnE6ZnVuY3Rp
-b24oYSxiKXtyZXR1cm4gdGhpcy5hLmEuZ2V0QXR0cmlidXRlKCJkYXRhLSIrdGhpcy5PKEguaChiKSkp
-fSwKWTpmdW5jdGlvbihhLGIsYyl7dGhpcy5hLmEuc2V0QXR0cmlidXRlKCJkYXRhLSIrdGhpcy5PKGIp
-LGMpfSwKSzpmdW5jdGlvbihhLGIpe3RoaXMuYS5LKDAsbmV3IFcuS1ModGhpcyx1LmVBLmEoYikpKX0s
-CmdWOmZ1bmN0aW9uKCl7dmFyIHQ9SC5WTShbXSx1LnMpCnRoaXMuYS5LKDAsbmV3IFcuQTModGhpcyx0
-KSkKcmV0dXJuIHR9LApnQTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5nVigpLmxlbmd0aH0sCms6ZnVu
-Y3Rpb24oYSl7dmFyIHQscyxyPUguVk0oYS5zcGxpdCgiLSIpLHUucykKZm9yKHQ9MTt0PHIubGVuZ3Ro
-OysrdCl7cz1yW3RdCmlmKHMubGVuZ3RoPjApQy5ObS5ZKHIsdCxzWzBdLnRvVXBwZXJDYXNlKCkrSi5L
-VihzLDEpKX1yZXR1cm4gQy5ObS56VihyLCIiKX0sCk86ZnVuY3Rpb24oYSl7dmFyIHQscyxyLHEscApm
-b3IodD1hLmxlbmd0aCxzPTAscj0iIjtzPHQ7KytzKXtxPWFbc10KcD1xLnRvTG93ZXJDYXNlKCkKcj0o
-cSE9PXAmJnM+MD9yKyItIjpyKStwfXJldHVybiByLmNoYXJDb2RlQXQoMCk9PTA/cjpyfX0KVy5LUy5w
-cm90b3R5cGU9ewokMjpmdW5jdGlvbihhLGIpe2lmKEouclkoYSkubihhLCJkYXRhLSIpKXRoaXMuYi4k
-Mih0aGlzLmEuayhDLnhCLkcoYSw1KSksYil9LAokUzo3fQpXLkEzLnByb3RvdHlwZT17CiQyOmZ1bmN0
-aW9uKGEsYil7aWYoSi5yWShhKS5uKGEsImRhdGEtIikpQy5ObS5pKHRoaXMuYix0aGlzLmEuayhDLnhC
-LkcoYSw1KSkpfSwKJFM6N30KVy5JNC5wcm90b3R5cGU9ewpERzpmdW5jdGlvbigpe3ZhciB0LHMscixx
-LHA9UC5Mcyh1Lk4pCmZvcih0PXRoaXMuYS5jbGFzc05hbWUuc3BsaXQoIiAiKSxzPXQubGVuZ3RoLHI9
-MDtyPHM7KytyKXtxPUouVDAodFtyXSkKaWYocS5sZW5ndGghPT0wKXAuaSgwLHEpfXJldHVybiBwfSwK
-cDpmdW5jdGlvbihhKXt0aGlzLmEuY2xhc3NOYW1lPXUuQy5hKGEpLnpWKDAsIiAiKX0sCmdBOmZ1bmN0
-aW9uKGEpe3JldHVybiB0aGlzLmEuY2xhc3NMaXN0Lmxlbmd0aH0sClYxOmZ1bmN0aW9uKGEpe3RoaXMu
-YS5jbGFzc05hbWU9IiJ9LAp0ZzpmdW5jdGlvbihhLGIpe3ZhciB0PXRoaXMuYS5jbGFzc0xpc3QuY29u
-dGFpbnMoYikKcmV0dXJuIHR9LAppOmZ1bmN0aW9uKGEsYil7dmFyIHQ9dGhpcy5hLmNsYXNzTGlzdCxz
-PXQuY29udGFpbnMoYikKdC5hZGQoYikKcmV0dXJuIXN9LApSOmZ1bmN0aW9uKGEsYil7dmFyIHQ9dGhp
-cy5hLmNsYXNzTGlzdCxzPXQuY29udGFpbnMoYikKdC5yZW1vdmUoYikKcmV0dXJuIHN9LApGVjpmdW5j
-dGlvbihhLGIpe1cuVE4odGhpcy5hLHUuUS5hKGIpKX19ClcuRmsucHJvdG90eXBlPXt9ClcuUk8ucHJv
-dG90eXBlPXt9ClcuZXUucHJvdG90eXBlPXt9ClcueEMucHJvdG90eXBlPXt9Clcudk4ucHJvdG90eXBl
-PXsKJDE6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuYS4kMSh1LkIuYShhKSl9LAokUzoyOH0KVy5KUS5w
-cm90b3R5cGU9ewpDWTpmdW5jdGlvbihhKXt2YXIgdAppZigkLm9yLmE9PT0wKXtmb3IodD0wO3Q8MjYy
-OysrdCkkLm9yLlkoMCxDLmNtW3RdLFcucFMoKSkKZm9yKHQ9MDt0PDEyOysrdCkkLm9yLlkoMCxDLkJJ
-W3RdLFcuVjQoKSl9fSwKaTA6ZnVuY3Rpb24oYSl7cmV0dXJuICQuQU4oKS50ZygwLFcuclMoYSkpfSwK
-RWI6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0PSQub3IucSgwLFcuclMoYSkrIjo6IitiKQppZih0PT1udWxs
-KXQ9JC5vci5xKDAsIio6OiIrYikKaWYodD09bnVsbClyZXR1cm4hMQpyZXR1cm4gSC55OCh0LiQ0KGEs
-YixjLHRoaXMpKX0sCiRpa0Y6MX0KVy5HbS5wcm90b3R5cGU9ewpna3o6ZnVuY3Rpb24oYSl7cmV0dXJu
-IG5ldyBXLlc5KGEsdGhpcy5nQShhKSxILnooYSkuQygiVzk8R20uRT4iKSl9fQpXLnZELnByb3RvdHlw
-ZT17CmkwOmZ1bmN0aW9uKGEpe3JldHVybiBDLk5tLlZyKHRoaXMuYSxuZXcgVy5VdihhKSl9LApFYjpm
-dW5jdGlvbihhLGIsYyl7cmV0dXJuIEMuTm0uVnIodGhpcy5hLG5ldyBXLkVnKGEsYixjKSl9LAokaWtG
-OjF9ClcuVXYucHJvdG90eXBlPXsKJDE6ZnVuY3Rpb24oYSl7cmV0dXJuIHUuZS5hKGEpLmkwKHRoaXMu
-YSl9LAokUzoxM30KVy5FZy5wcm90b3R5cGU9ewokMTpmdW5jdGlvbihhKXtyZXR1cm4gdS5lLmEoYSku
-RWIodGhpcy5hLHRoaXMuYix0aGlzLmMpfSwKJFM6MTN9ClcubTYucHJvdG90eXBlPXsKQ1k6ZnVuY3Rp
-b24oYSxiLGMsZCl7dmFyIHQscyxyCnRoaXMuYS5GVigwLGMpCnQ9Yi5ldigwLG5ldyBXLkVvKCkpCnM9
-Yi5ldigwLG5ldyBXLldrKCkpCnRoaXMuYi5GVigwLHQpCnI9dGhpcy5jCnIuRlYoMCxDLnhEKQpyLkZW
-KDAscyl9LAppMDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5hLnRnKDAsVy5yUyhhKSl9LApFYjpmdW5j
-dGlvbihhLGIsYyl7dmFyIHQ9dGhpcyxzPVcuclMoYSkscj10LmMKaWYoci50ZygwLHMrIjo6IitiKSly
-ZXR1cm4gdC5kLkR0KGMpCmVsc2UgaWYoci50ZygwLCIqOjoiK2IpKXJldHVybiB0LmQuRHQoYykKZWxz
-ZXtyPXQuYgppZihyLnRnKDAscysiOjoiK2IpKXJldHVybiEwCmVsc2UgaWYoci50ZygwLCIqOjoiK2Ip
-KXJldHVybiEwCmVsc2UgaWYoci50ZygwLHMrIjo6KiIpKXJldHVybiEwCmVsc2UgaWYoci50ZygwLCIq
-OjoqIikpcmV0dXJuITB9cmV0dXJuITF9LAokaWtGOjF9ClcuRW8ucHJvdG90eXBlPXsKJDE6ZnVuY3Rp
-b24oYSl7cmV0dXJuIUMuTm0udGcoQy5CSSxILmgoYSkpfSwKJFM6MTR9ClcuV2sucHJvdG90eXBlPXsK
-JDE6ZnVuY3Rpb24oYSl7cmV0dXJuIEMuTm0udGcoQy5CSSxILmgoYSkpfSwKJFM6MTR9ClcuY3QucHJv
-dG90eXBlPXsKRWI6ZnVuY3Rpb24oYSxiLGMpe2lmKHRoaXMuakYoYSxiLGMpKXJldHVybiEwCmlmKGI9
-PT0idGVtcGxhdGUiJiZjPT09IiIpcmV0dXJuITAKaWYoYS5nZXRBdHRyaWJ1dGUoInRlbXBsYXRlIik9
-PT0iIilyZXR1cm4gdGhpcy5lLnRnKDAsYikKcmV0dXJuITF9fQpXLklBLnByb3RvdHlwZT17CiQxOmZ1
-bmN0aW9uKGEpe3JldHVybiJURU1QTEFURTo6IitILkVqKEguaChhKSl9LAokUzo2fQpXLk93LnByb3Rv
-dHlwZT17CmkwOmZ1bmN0aW9uKGEpe3ZhciB0CmlmKHUuZXcuYihhKSlyZXR1cm4hMQp0PXUuZzcuYihh
-KQppZih0JiZXLnJTKGEpPT09ImZvcmVpZ25PYmplY3QiKXJldHVybiExCmlmKHQpcmV0dXJuITAKcmV0
-dXJuITF9LApFYjpmdW5jdGlvbihhLGIsYyl7aWYoYj09PSJpcyJ8fEMueEIubihiLCJvbiIpKXJldHVy
-biExCnJldHVybiB0aGlzLmkwKGEpfSwKJGlrRjoxfQpXLlc5LnByb3RvdHlwZT17CkY6ZnVuY3Rpb24o
-KXt2YXIgdD10aGlzLHM9dC5jKzEscj10LmIKaWYoczxyKXt0LnNNKEoueDkodC5hLHMpKQp0LmM9cwpy
-ZXR1cm4hMH10LnNNKG51bGwpCnQuYz1yCnJldHVybiExfSwKZ2w6ZnVuY3Rpb24oKXtyZXR1cm4gdGhp
-cy5kfSwKc006ZnVuY3Rpb24oYSl7dGhpcy5kPXRoaXMuJHRpLkMoIjE/IikuYShhKX0sCiRpQW46MX0K
-Vy5kVy5wcm90b3R5cGU9ewpnbVc6ZnVuY3Rpb24oYSl7cmV0dXJuIFcuSEgodGhpcy5hLmxvY2F0aW9u
-KX0sCiRpRDA6MSwKJGl2NjoxfQpXLkZiLnByb3RvdHlwZT17fQpXLmtGLnByb3RvdHlwZT17fQpXLm1r
-LnByb3RvdHlwZT17JGl5MDoxfQpXLktvLnByb3RvdHlwZT17ClBuOmZ1bmN0aW9uKGEpe3ZhciB0PXRo
-aXMscz1uZXcgVy5mbSh0KQp0LmI9ITEKcy4kMihhLG51bGwpCmZvcig7dC5iOyl7dC5iPSExCnMuJDIo
-YSxudWxsKX19LApFUDpmdW5jdGlvbihhLGIpe3ZhciB0PXRoaXMuYj0hMAppZihiIT1udWxsP2IhPT1h
-LnBhcmVudE5vZGU6dClKLkx0KGEpCmVsc2UgYi5yZW1vdmVDaGlsZChhKX0sCkk0OmZ1bmN0aW9uKGEs
-Yil7dmFyIHQscyxyLHEscCxvPSEwLG49bnVsbCxtPW51bGwKdHJ5e249Si5pZyhhKQptPW4uYS5nZXRB
-dHRyaWJ1dGUoImlzIikKdS5oLmEoYSkKdD1mdW5jdGlvbihjKXtpZighKGMuYXR0cmlidXRlcyBpbnN0
-YW5jZW9mIE5hbWVkTm9kZU1hcCkpcmV0dXJuIHRydWUKaWYoYy5pZD09J2xhc3RDaGlsZCd8fGMubmFt
-ZT09J2xhc3RDaGlsZCd8fGMuaWQ9PSdwcmV2aW91c1NpYmxpbmcnfHxjLm5hbWU9PSdwcmV2aW91c1Np
-YmxpbmcnfHxjLmlkPT0nY2hpbGRyZW4nfHxjLm5hbWU9PSdjaGlsZHJlbicpcmV0dXJuIHRydWUKdmFy
-IGw9Yy5jaGlsZE5vZGVzCmlmKGMubGFzdENoaWxkJiZjLmxhc3RDaGlsZCE9PWxbbC5sZW5ndGgtMV0p
-cmV0dXJuIHRydWUKaWYoYy5jaGlsZHJlbilpZighKGMuY2hpbGRyZW4gaW5zdGFuY2VvZiBIVE1MQ29s
-bGVjdGlvbnx8Yy5jaGlsZHJlbiBpbnN0YW5jZW9mIE5vZGVMaXN0KSlyZXR1cm4gdHJ1ZQp2YXIgaz0w
-CmlmKGMuY2hpbGRyZW4paz1jLmNoaWxkcmVuLmxlbmd0aApmb3IodmFyIGo9MDtqPGs7aisrKXt2YXIg
-aT1jLmNoaWxkcmVuW2pdCmlmKGkuaWQ9PSdhdHRyaWJ1dGVzJ3x8aS5uYW1lPT0nYXR0cmlidXRlcyd8
-fGkuaWQ9PSdsYXN0Q2hpbGQnfHxpLm5hbWU9PSdsYXN0Q2hpbGQnfHxpLmlkPT0ncHJldmlvdXNTaWJs
-aW5nJ3x8aS5uYW1lPT0ncHJldmlvdXNTaWJsaW5nJ3x8aS5pZD09J2NoaWxkcmVuJ3x8aS5uYW1lPT0n
-Y2hpbGRyZW4nKXJldHVybiB0cnVlfXJldHVybiBmYWxzZX0oYSkKbz1ILm9UKHQpPyEwOiEoYS5hdHRy
-aWJ1dGVzIGluc3RhbmNlb2YgTmFtZWROb2RlTWFwKX1jYXRjaChxKXtILlJ1KHEpfXM9ImVsZW1lbnQg
-dW5wcmludGFibGUiCnRyeXtzPUouaihhKX1jYXRjaChxKXtILlJ1KHEpfXRyeXtyPVcuclMoYSkKdGhp
-cy5rUih1LmguYShhKSxiLG8scyxyLHUudi5hKG4pLEguayhtKSl9Y2F0Y2gocSl7aWYoSC5SdShxKSBp
-bnN0YW5jZW9mIFAudSl0aHJvdyBxCmVsc2V7dGhpcy5FUChhLGIpCndpbmRvdwpwPSJSZW1vdmluZyBj
-b3JydXB0ZWQgZWxlbWVudCAiK0guRWoocykKaWYodHlwZW9mIGNvbnNvbGUhPSJ1bmRlZmluZWQiKXdp
-bmRvdy5jb25zb2xlLndhcm4ocCl9fX0sCmtSOmZ1bmN0aW9uKGEsYixjLGQsZSxmLGcpe3ZhciB0LHMs
-cixxLHAsbyxuPXRoaXMKaWYoYyl7bi5FUChhLGIpCndpbmRvdwp0PSJSZW1vdmluZyBlbGVtZW50IGR1
-ZSB0byBjb3JydXB0ZWQgYXR0cmlidXRlcyBvbiA8IitkKyI+IgppZih0eXBlb2YgY29uc29sZSE9InVu
-ZGVmaW5lZCIpd2luZG93LmNvbnNvbGUud2Fybih0KQpyZXR1cm59aWYoIW4uYS5pMChhKSl7bi5FUChh
-LGIpCndpbmRvdwp0PSJSZW1vdmluZyBkaXNhbGxvd2VkIGVsZW1lbnQgPCIrZSsiPiBmcm9tICIrSC5F
-aihiKQppZih0eXBlb2YgY29uc29sZSE9InVuZGVmaW5lZCIpd2luZG93LmNvbnNvbGUud2Fybih0KQpy
-ZXR1cm59aWYoZyE9bnVsbClpZighbi5hLkViKGEsImlzIixnKSl7bi5FUChhLGIpCndpbmRvdwp0PSJS
-ZW1vdmluZyBkaXNhbGxvd2VkIHR5cGUgZXh0ZW5zaW9uIDwiK2UrJyBpcz0iJytnKyciPicKaWYodHlw
-ZW9mIGNvbnNvbGUhPSJ1bmRlZmluZWQiKXdpbmRvdy5jb25zb2xlLndhcm4odCkKcmV0dXJufXQ9Zi5n
-VigpCnM9SC5WTSh0LnNsaWNlKDApLEgudDYodCkuQygiamQ8MT4iKSkKZm9yKHI9Zi5nVigpLmxlbmd0
-aC0xLHQ9Zi5hO3I+PTA7LS1yKXtpZihyPj1zLmxlbmd0aClyZXR1cm4gSC5PSChzLHIpCnE9c1tyXQpw
-PW4uYQpvPUouY0gocSkKSC5oKHEpCmlmKCFwLkViKGEsbyx0LmdldEF0dHJpYnV0ZShxKSkpe3dpbmRv
-dwpwPSJSZW1vdmluZyBkaXNhbGxvd2VkIGF0dHJpYnV0ZSA8IitlKyIgIitxKyc9IicrSC5Faih0Lmdl
-dEF0dHJpYnV0ZShxKSkrJyI+JwppZih0eXBlb2YgY29uc29sZSE9InVuZGVmaW5lZCIpd2luZG93LmNv
-bnNvbGUud2FybihwKQp0LnJlbW92ZUF0dHJpYnV0ZShxKX19aWYodS5hVy5iKGEpKW4uUG4oYS5jb250
-ZW50KX0sCiRpb246MX0KVy5mbS5wcm90b3R5cGU9ewokMjpmdW5jdGlvbihhLGIpe3ZhciB0LHMscixx
-LHAsbyxuPXRoaXMuYQpzd2l0Y2goYS5ub2RlVHlwZSl7Y2FzZSAxOm4uSTQoYSxiKQpicmVhawpjYXNl
-IDg6Y2FzZSAxMTpjYXNlIDM6Y2FzZSA0OmJyZWFrCmRlZmF1bHQ6bi5FUChhLGIpfXQ9YS5sYXN0Q2hp
-bGQKZm9yKHI9dS5BO251bGwhPXQ7KXtzPW51bGwKdHJ5e3M9dC5wcmV2aW91c1NpYmxpbmcKaWYocyE9
-bnVsbCl7cT1zLm5leHRTaWJsaW5nCnA9dApwPXE9PW51bGw/cCE9bnVsbDpxIT09cApxPXB9ZWxzZSBx
-PSExCmlmKHEpe3E9UC5QVigiQ29ycnVwdCBIVE1MIikKdGhyb3cgSC5iKHEpfX1jYXRjaChvKXtILlJ1
-KG8pCnE9ci5hKHQpCm4uYj0hMAppZihhIT09cS5wYXJlbnROb2RlKXtwPXEucGFyZW50Tm9kZQppZihw
-IT1udWxsKXAucmVtb3ZlQ2hpbGQocSl9ZWxzZSBhLnJlbW92ZUNoaWxkKHEpCnQ9bnVsbApzPWEubGFz
-dENoaWxkfWlmKHQhPW51bGwpdGhpcy4kMih0LGEpCnQ9c319LAokUzozMX0KVy5MZS5wcm90b3R5cGU9
-e30KVy5LNy5wcm90b3R5cGU9e30KVy5yQi5wcm90b3R5cGU9e30KVy5YVy5wcm90b3R5cGU9e30KVy5v
-YS5wcm90b3R5cGU9e30KUC5pSi5wcm90b3R5cGU9ewpWSDpmdW5jdGlvbihhKXt2YXIgdCxzPXRoaXMu
-YSxyPXMubGVuZ3RoCmZvcih0PTA7dDxyOysrdClpZihzW3RdPT09YSlyZXR1cm4gdApDLk5tLmkocyxh
-KQpDLk5tLmkodGhpcy5iLG51bGwpCnJldHVybiByfSwKUHY6ZnVuY3Rpb24oYSl7dmFyIHQscyxyLHE9
-dGhpcyxwPXt9CmlmKGE9PW51bGwpcmV0dXJuIGEKaWYoSC5sKGEpKXJldHVybiBhCmlmKHR5cGVvZiBh
-PT0ibnVtYmVyIilyZXR1cm4gYQppZih0eXBlb2YgYT09InN0cmluZyIpcmV0dXJuIGEKaWYoYSBpbnN0
-YW5jZW9mIFAuaVApcmV0dXJuIG5ldyBEYXRlKGEuYSkKaWYodS5mdi5iKGEpKXRocm93IEguYihQLlNZ
-KCJzdHJ1Y3R1cmVkIGNsb25lIG9mIFJlZ0V4cCIpKQppZih1LmM4LmIoYSkpcmV0dXJuIGEKaWYodS53
-LmIoYSkpcmV0dXJuIGEKaWYodS5JLmIoYSkpcmV0dXJuIGEKdD11LmRFLmIoYSl8fCExCmlmKHQpcmV0
-dXJuIGEKaWYodS52LmIoYSkpe3M9cS5WSChhKQp0PXEuYgppZihzPj10Lmxlbmd0aClyZXR1cm4gSC5P
-SCh0LHMpCnI9cC5hPXRbc10KaWYociE9bnVsbClyZXR1cm4gcgpyPXt9CnAuYT1yCkMuTm0uWSh0LHMs
-cikKYS5LKDAsbmV3IFAuamcocCxxKSkKcmV0dXJuIHAuYX1pZih1LmouYihhKSl7cz1xLlZIKGEpCnA9
-cS5iCmlmKHM+PXAubGVuZ3RoKXJldHVybiBILk9IKHAscykKcj1wW3NdCmlmKHIhPW51bGwpcmV0dXJu
-IHIKcmV0dXJuIHEuZWsoYSxzKX1pZih1LmVILmIoYSkpe3M9cS5WSChhKQp0PXEuYgppZihzPj10Lmxl
-bmd0aClyZXR1cm4gSC5PSCh0LHMpCnI9cC5iPXRbc10KaWYociE9bnVsbClyZXR1cm4gcgpyPXt9CnAu
-Yj1yCkMuTm0uWSh0LHMscikKcS5pbShhLG5ldyBQLlRhKHAscSkpCnJldHVybiBwLmJ9dGhyb3cgSC5i
-KFAuU1koInN0cnVjdHVyZWQgY2xvbmUgb2Ygb3RoZXIgdHlwZSIpKX0sCmVrOmZ1bmN0aW9uKGEsYil7
-dmFyIHQscz1KLlU2KGEpLHI9cy5nQShhKSxxPW5ldyBBcnJheShyKQpDLk5tLlkodGhpcy5iLGIscSkK
-Zm9yKHQ9MDt0PHI7Kyt0KUMuTm0uWShxLHQsdGhpcy5QdihzLnEoYSx0KSkpCnJldHVybiBxfX0KUC5q
-Zy5wcm90b3R5cGU9ewokMjpmdW5jdGlvbihhLGIpe3RoaXMuYS5hW2FdPXRoaXMuYi5QdihiKX0sCiRT
-OjJ9ClAuVGEucHJvdG90eXBlPXsKJDI6ZnVuY3Rpb24oYSxiKXt0aGlzLmEuYlthXT10aGlzLmIuUHYo
-Yil9LAokUzoyfQpQLkJmLnByb3RvdHlwZT17CmltOmZ1bmN0aW9uKGEsYil7dmFyIHQscyxyLHEKdS5i
-OC5hKGIpCmZvcih0PU9iamVjdC5rZXlzKGEpLHM9dC5sZW5ndGgscj0wO3I8czsrK3Ipe3E9dFtyXQpi
-LiQyKHEsYVtxXSl9fX0KUC5Bcy5wcm90b3R5cGU9ewpUOmZ1bmN0aW9uKGEpe3ZhciB0CkguaChhKQp0
-PSQuaEcoKS5iCmlmKHR5cGVvZiBhIT0ic3RyaW5nIilILnZoKEgudEwoYSkpCmlmKHQudGVzdChhKSly
-ZXR1cm4gYQp0aHJvdyBILmIoUC5MMyhhLCJ2YWx1ZSIsIk5vdCBhIHZhbGlkIGNsYXNzIHRva2VuIikp
-fSwKdzpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5ERygpLnpWKDAsIiAiKX0sCmdrejpmdW5jdGlvbihh
-KXt2YXIgdD10aGlzLkRHKCkKcmV0dXJuIFAucmoodCx0LnIsSC5MaCh0KS5jKX0sCmdBOmZ1bmN0aW9u
-KGEpe3JldHVybiB0aGlzLkRHKCkuYX0sCnRnOmZ1bmN0aW9uKGEsYil7dGhpcy5UKGIpCnJldHVybiB0
-aGlzLkRHKCkudGcoMCxiKX0sCmk6ZnVuY3Rpb24oYSxiKXt2YXIgdAp0aGlzLlQoYikKdD10aGlzLk9T
-KG5ldyBQLkdFKGIpKQpyZXR1cm4gSC55OCh0PT1udWxsPyExOnQpfSwKUjpmdW5jdGlvbihhLGIpe3Zh
-ciB0LHMKdGhpcy5UKGIpCnQ9dGhpcy5ERygpCnM9dC5SKDAsYikKdGhpcy5wKHQpCnJldHVybiBzfSwK
-RlY6ZnVuY3Rpb24oYSxiKXt0aGlzLk9TKG5ldyBQLk43KHRoaXMsdS5RLmEoYikpKX0sClYxOmZ1bmN0
-aW9uKGEpe3RoaXMuT1MobmV3IFAudVEoKSl9LApPUzpmdW5jdGlvbihhKXt2YXIgdCxzCnUuYlUuYShh
-KQp0PXRoaXMuREcoKQpzPWEuJDEodCkKdGhpcy5wKHQpCnJldHVybiBzfX0KUC5HRS5wcm90b3R5cGU9
-ewokMTpmdW5jdGlvbihhKXtyZXR1cm4gdS5DLmEoYSkuaSgwLHRoaXMuYSl9LAokUzozM30KUC5ONy5w
-cm90b3R5cGU9ewokMTpmdW5jdGlvbihhKXt2YXIgdD10aGlzLmIscz1ILnQ2KHQpCnJldHVybiB1LkMu
-YShhKS5GVigwLG5ldyBILmxKKHQscy5DKCJxVSgxKSIpLmEodGhpcy5hLmd1TSgpKSxzLkMoImxKPDEs
-cVU+IikpKX0sCiRTOjE1fQpQLnVRLnByb3RvdHlwZT17CiQxOmZ1bmN0aW9uKGEpe3UuQy5hKGEpCmlm
-KGEuYT4wKXthLmI9YS5jPWEuZD1hLmU9YS5mPW51bGwKYS5hPTAKYS5YKCl9cmV0dXJuIG51bGx9LAok
-UzoxNX0KUC5oRi5wcm90b3R5cGU9eyRpaEY6MX0KUC5QQy5wcm90b3R5cGU9ewokMTpmdW5jdGlvbihh
-KXt2YXIgdAp1LlkuYShhKQp0PWZ1bmN0aW9uKGIsYyxkKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4g
-YihjLGQsdGhpcyxBcnJheS5wcm90b3R5cGUuc2xpY2UuYXBwbHkoYXJndW1lbnRzKSl9fShQLlI0LGEs
-ITEpClAuRG0odCwkLncoKSxhKQpyZXR1cm4gdH0sCiRTOjV9ClAubXQucHJvdG90eXBlPXsKJDE6ZnVu
-Y3Rpb24oYSl7cmV0dXJuIG5ldyB0aGlzLmEoYSl9LAokUzo1fQpQLk56LnByb3RvdHlwZT17CiQxOmZ1
-bmN0aW9uKGEpe3JldHVybiBuZXcgUC5yNyhhKX0sCiRTOjUzfQpQLlFTLnByb3RvdHlwZT17CiQxOmZ1
-bmN0aW9uKGEpe3JldHVybiBuZXcgUC5UeihhLHUuYW0pfSwKJFM6MzZ9ClAubnAucHJvdG90eXBlPXsK
-JDE6ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBQLkU0KGEpfSwKJFM6Mzd9ClAuRTQucHJvdG90eXBlPXsK
-cTpmdW5jdGlvbihhLGIpe2lmKHR5cGVvZiBiIT0ic3RyaW5nIiYmdHlwZW9mIGIhPSJudW1iZXIiKXRo
-cm93IEguYihQLnhZKCJwcm9wZXJ0eSBpcyBub3QgYSBTdHJpbmcgb3IgbnVtIikpCnJldHVybiBQLkw3
-KHRoaXMuYVtiXSl9LApZOmZ1bmN0aW9uKGEsYixjKXtpZih0eXBlb2YgYiE9InN0cmluZyImJnR5cGVv
-ZiBiIT0ibnVtYmVyIil0aHJvdyBILmIoUC54WSgicHJvcGVydHkgaXMgbm90IGEgU3RyaW5nIG9yIG51
-bSIpKQp0aGlzLmFbYl09UC53WShjKX0sCkROOmZ1bmN0aW9uKGEsYil7aWYoYj09bnVsbClyZXR1cm4h
-MQpyZXR1cm4gYiBpbnN0YW5jZW9mIFAuRTQmJnRoaXMuYT09PWIuYX0sCnc6ZnVuY3Rpb24oYSl7dmFy
-IHQscwp0cnl7dD1TdHJpbmcodGhpcy5hKQpyZXR1cm4gdH1jYXRjaChzKXtILlJ1KHMpCnQ9dGhpcy54
-YigwKQpyZXR1cm4gdH19LApWNzpmdW5jdGlvbihhLGIpe3ZhciB0LHM9dGhpcy5hCmlmKGI9PW51bGwp
-dD1udWxsCmVsc2V7dD1ILnQ2KGIpCnQ9UC5DSChuZXcgSC5sSihiLHQuQygiQCgxKSIpLmEoUC5pRygp
-KSx0LkMoImxKPDEsQD4iKSksITAsdS56KX1yZXR1cm4gUC5MNyhzW2FdLmFwcGx5KHMsdCkpfSwKZ2lP
-OmZ1bmN0aW9uKGEpe3JldHVybiAwfX0KUC5yNy5wcm90b3R5cGU9e30KUC5Uei5wcm90b3R5cGU9ewpj
-UDpmdW5jdGlvbihhKXt2YXIgdD10aGlzLHM9YTwwfHxhPj10LmdBKHQpCmlmKHMpdGhyb3cgSC5iKFAu
-VEUoYSwwLHQuZ0EodCksbnVsbCxudWxsKSl9LApxOmZ1bmN0aW9uKGEsYil7aWYoSC5vayhiKSl0aGlz
-LmNQKGIpCnJldHVybiB0aGlzLiR0aS5jLmEodGhpcy5VcigwLGIpKX0sClk6ZnVuY3Rpb24oYSxiLGMp
-e3RoaXMuY1AoYikKdGhpcy5lNCgwLGIsYyl9LApnQTpmdW5jdGlvbihhKXt2YXIgdD10aGlzLmEubGVu
-Z3RoCmlmKHR5cGVvZiB0PT09Im51bWJlciImJnQ+Pj4wPT09dClyZXR1cm4gdAp0aHJvdyBILmIoUC5Q
-VigiQmFkIEpzQXJyYXkgbGVuZ3RoIikpfSwKJGliUToxLAokaWNYOjEsCiRpek06MX0KUC5jby5wcm90
-b3R5cGU9e30KUC5iQi5wcm90b3R5cGU9eyRpYkI6MX0KUC5LZS5wcm90b3R5cGU9ewpERzpmdW5jdGlv
-bigpe3ZhciB0LHMscixxLHA9dGhpcy5hLmdldEF0dHJpYnV0ZSgiY2xhc3MiKSxvPVAuTHModS5OKQpp
-ZihwPT1udWxsKXJldHVybiBvCmZvcih0PXAuc3BsaXQoIiAiKSxzPXQubGVuZ3RoLHI9MDtyPHM7Kyty
-KXtxPUouVDAodFtyXSkKaWYocS5sZW5ndGghPT0wKW8uaSgwLHEpfXJldHVybiBvfSwKcDpmdW5jdGlv
-bihhKXt0aGlzLmEuc2V0QXR0cmlidXRlKCJjbGFzcyIsYS56VigwLCIgIikpfX0KUC5kNS5wcm90b3R5
-cGU9ewpnUDpmdW5jdGlvbihhKXtyZXR1cm4gbmV3IFAuS2UoYSl9LApzaGY6ZnVuY3Rpb24oYSxiKXt0
-aGlzLllDKGEsYil9LApyNjpmdW5jdGlvbihhLGIsYyxkKXt2YXIgdCxzLHIscSxwLG8KaWYoZD09bnVs
-bCl7dD1ILlZNKFtdLHUucCkKZD1uZXcgVy52RCh0KQpDLk5tLmkodCxXLlR3KG51bGwpKQpDLk5tLmko
-dCxXLkJsKCkpCkMuTm0uaSh0LG5ldyBXLk93KCkpfWM9bmV3IFcuS28oZCkKcz0nPHN2ZyB2ZXJzaW9u
-PSIxLjEiPicrSC5FaihiKSsiPC9zdmc+Igp0PWRvY3VtZW50CnI9dC5ib2R5CnIudG9TdHJpbmcKcT1D
-LlJZLkFIKHIscyxjKQpwPXQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpCnQ9bmV3IFcuZTcocSkKbz10
-LmdyOCh0KQpmb3IoO3Q9by5maXJzdENoaWxkLHQhPW51bGw7KXAuYXBwZW5kQ2hpbGQodCkKcmV0dXJu
-IHB9LApuejpmdW5jdGlvbihhLGIsYyxkLGUpe3Rocm93IEguYihQLkw0KCJDYW5ub3QgaW52b2tlIGlu
-c2VydEFkamFjZW50SHRtbCBvbiBTVkcuIikpfSwKZ1ZsOmZ1bmN0aW9uKGEpe3JldHVybiBuZXcgVy5l
-dShhLCJjbGljayIsITEsdS5HKX0sCiRpZDU6MX0KUC5uNi5wcm90b3R5cGU9eyRpYlE6MSwkaWNYOjEs
-JGl6TToxLCRpQVM6MX0KVS5kMi5wcm90b3R5cGU9e30KVS5TZS5wcm90b3R5cGU9e30KVS5NbC5wcm90
-b3R5cGU9e30KVS55RC5wcm90b3R5cGU9e30KVS53Yi5wcm90b3R5cGU9e30KQi5qOC5wcm90b3R5cGU9
-e30KQi5xcC5wcm90b3R5cGU9e30KVC5tUS5wcm90b3R5cGU9e30KTC5lLnByb3RvdHlwZT17CiQxOmZ1
-bmN0aW9uKGEpe3ZhciB0LHMscixxLHAsbyxuCnUuYUwuYShhKQp0PXdpbmRvdy5sb2NhdGlvbi5wYXRo
-bmFtZQpzPUwuRzYod2luZG93LmxvY2F0aW9uLmhyZWYpCnI9TC5hSyh3aW5kb3cubG9jYXRpb24uaHJl
-ZikKTC5HZSgpCmlmKHQhPT0iLyImJnQhPT1KLlQwKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5yb290
-IikudGV4dENvbnRlbnQpKUwuRzcodCxzLHIsITAsbmV3IEwuVlcodCxzLHIpKQpxPWRvY3VtZW50CnA9
-Si5xRihxLnF1ZXJ5U2VsZWN0b3IoIi5hcHBseS1taWdyYXRpb24iKSkKbz1wLiR0aQpuPW8uQygifigx
-KT8iKS5hKG5ldyBMLm9aKCkpCnUuWi5hKG51bGwpClcuSkUocC5hLHAuYixuLCExLG8uYykKbz1KLnFG
-KHEucXVlcnlTZWxlY3RvcigiLnJlcnVuLW1pZ3JhdGlvbiIpKQpuPW8uJHRpClcuSkUoby5hLG8uYixu
-LkMoIn4oMSk/IikuYShuZXcgTC5IaSgpKSwhMSxuLmMpCm49Si5xRihxLnF1ZXJ5U2VsZWN0b3IoIi5y
-ZXBvcnQtcHJvYmxlbSIpKQpvPW4uJHRpClcuSkUobi5hLG4uYixvLkMoIn4oMSk/IikuYShuZXcgTC5C
-VCgpKSwhMSxvLmMpCnE9Si5xRihxLnF1ZXJ5U2VsZWN0b3IoIi5wb3B1cC1wYW5lIC5jbG9zZSIpKQpv
-PXEuJHRpClcuSkUocS5hLHEuYixvLkMoIn4oMSk/IikuYShuZXcgTC5QWSgpKSwhMSxvLmMpfSwKJFM6
-MTZ9CkwuVlcucHJvdG90eXBlPXsKJDA6ZnVuY3Rpb24oKXtMLkZyKHRoaXMuYSx0aGlzLmIsdGhpcy5j
-KX0sCiRTOjB9Ckwub1oucHJvdG90eXBlPXsKJDE6ZnVuY3Rpb24oYSl7dS5PLmEoYSkKaWYoQy5vbC51
-cyh3aW5kb3csIlRoaXMgd2lsbCBhcHBseSB0aGUgY2hhbmdlcyB5b3UndmUgcHJldmlld2VkIHRvIHlv
+YnJlYWsKY2FzZSJhZnRlcmVuZCI6YS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShzLGEubmV4dFNpYmxp
+bmcpCmJyZWFrCmRlZmF1bHQ6SC52aChQLnhZKCJJbnZhbGlkIHBvc2l0aW9uICIrYikpfX0sCnI2OmZ1
+bmN0aW9uKGEsYixjLGQpe3ZhciB0LHMscixxCmlmKGM9PW51bGwpe2lmKGQ9PW51bGwpe3Q9JC5sdApp
+Zih0PT1udWxsKXt0PUguVk0oW10sdS5rKQpzPW5ldyBXLnZEKHQpCkMuTm0uaSh0LFcuVHcobnVsbCkp
+CkMuTm0uaSh0LFcuQmwoKSkKJC5sdD1zCmQ9c31lbHNlIGQ9dH10PSQuRVUKaWYodD09bnVsbCl7dD1u
+ZXcgVy5LbyhkKQokLkVVPXQKYz10fWVsc2V7dC5hPWQKYz10fX1lbHNlIGlmKGQhPW51bGwpdGhyb3cg
+SC5iKFAueFkoInZhbGlkYXRvciBjYW4gb25seSBiZSBwYXNzZWQgaWYgdHJlZVNhbml0aXplciBpcyBu
+dWxsIikpCmlmKCQueG89PW51bGwpe3Q9ZG9jdW1lbnQKcz10LmltcGxlbWVudGF0aW9uLmNyZWF0ZUhU
+TUxEb2N1bWVudCgiIikKJC54bz1zCiQuQk89cy5jcmVhdGVSYW5nZSgpCnM9JC54by5jcmVhdGVFbGVt
+ZW50KCJiYXNlIikKdS5jUi5hKHMpCnMuaHJlZj10LmJhc2VVUkkKJC54by5oZWFkLmFwcGVuZENoaWxk
+KHMpfXQ9JC54bwppZih0LmJvZHk9PW51bGwpe3M9dC5jcmVhdGVFbGVtZW50KCJib2R5IikKdC5ib2R5
+PXUuaS5hKHMpfXQ9JC54bwppZih1LmkuYihhKSlyPXQuYm9keQplbHNle3I9dC5jcmVhdGVFbGVtZW50
+KGEudGFnTmFtZSkKJC54by5ib2R5LmFwcGVuZENoaWxkKHIpfWlmKCJjcmVhdGVDb250ZXh0dWFsRnJh
+Z21lbnQiIGluIHdpbmRvdy5SYW5nZS5wcm90b3R5cGUmJiFDLk5tLnRnKEMuU3EsYS50YWdOYW1lKSl7
+JC5CTy5zZWxlY3ROb2RlQ29udGVudHMocikKcT0kLkJPLmNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudChi
+KX1lbHNle3IuaW5uZXJIVE1MPWIKcT0kLnhvLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKQpmb3IoO3Q9
+ci5maXJzdENoaWxkLHQhPW51bGw7KXEuYXBwZW5kQ2hpbGQodCl9dD0kLnhvLmJvZHkKaWYocj09bnVs
+bD90IT1udWxsOnIhPT10KUouTHQocikKYy5QbihxKQpkb2N1bWVudC5hZG9wdE5vZGUocSkKcmV0dXJu
+IHF9LApBSDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMucjYoYSxiLGMsbnVsbCl9LApzaGY6ZnVu
+Y3Rpb24oYSxiKXt0aGlzLllDKGEsYil9LApwazpmdW5jdGlvbihhLGIsYyl7YS50ZXh0Q29udGVudD1u
+dWxsCmEuYXBwZW5kQ2hpbGQodGhpcy5yNihhLGIsbnVsbCxjKSl9LApZQzpmdW5jdGlvbihhLGIpe3Jl
+dHVybiB0aGlzLnBrKGEsYixudWxsKX0sCmduczpmdW5jdGlvbihhKXtyZXR1cm4gYS50YWdOYW1lfSwK
+Z1ZsOmZ1bmN0aW9uKGEpe3JldHVybiBuZXcgVy5ldShhLCJjbGljayIsITEsdS5RKX0sCiRpY3Y6MX0K
+Vy5Ddi5wcm90b3R5cGU9ewokMTpmdW5jdGlvbihhKXtyZXR1cm4gdS5oLmIodS5BLmEoYSkpfSwKJFM6
+MjF9ClcuZWEucHJvdG90eXBlPXskaWVhOjF9ClcuRDAucHJvdG90eXBlPXsKT246ZnVuY3Rpb24oYSxi
+LGMsZCl7dS5VLmEoYykKaWYoYyE9bnVsbCl0aGlzLnYoYSxiLGMsZCl9LApCOmZ1bmN0aW9uKGEsYixj
+KXtyZXR1cm4gdGhpcy5PbihhLGIsYyxudWxsKX0sCnY6ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIGEu
+YWRkRXZlbnRMaXN0ZW5lcihiLEgudFIodS5VLmEoYyksMSksZCl9LAokaUQwOjF9ClcuVDUucHJvdG90
+eXBlPXskaVQ1OjF9ClcuaDQucHJvdG90eXBlPXsKZ0E6ZnVuY3Rpb24oYSl7cmV0dXJuIGEubGVuZ3Ro
+fX0KVy5ici5wcm90b3R5cGU9ewpnQTpmdW5jdGlvbihhKXtyZXR1cm4gYS5sZW5ndGh9fQpXLlZiLnBy
+b3RvdHlwZT17fQpXLmZKLnByb3RvdHlwZT17CmVvOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBhLm9w
+ZW4oYixjLCEwKX0sCiRpZko6MX0KVy5iVS5wcm90b3R5cGU9ewokMjpmdW5jdGlvbihhLGIpe3RoaXMu
+YS5zZXRSZXF1ZXN0SGVhZGVyKEguYyhhKSxILmMoYikpfSwKJFM6OX0KVy5oSC5wcm90b3R5cGU9ewok
+MTpmdW5jdGlvbihhKXt2YXIgdCxzLHIscSxwCnUucC5hKGEpCnQ9dGhpcy5hCnM9dC5zdGF0dXMKaWYo
+dHlwZW9mIHMhPT0ibnVtYmVyIilyZXR1cm4gcy50QigpCnI9cz49MjAwJiZzPDMwMApxPXM+MzA3JiZz
+PDQwMApzPXJ8fHM9PT0wfHxzPT09MzA0fHxxCnA9dGhpcy5iCmlmKHMpcC5hTSgwLHQpCmVsc2UgcC5w
+bShhKX0sCiRTOjE2fQpXLndhLnByb3RvdHlwZT17fQpXLlNnLnByb3RvdHlwZT17JGlTZzoxfQpXLnU4
+LnByb3RvdHlwZT17CmdEcjpmdW5jdGlvbihhKXtpZigib3JpZ2luIiBpbiBhKXJldHVybiBhLm9yaWdp
+bgpyZXR1cm4gSC5kKGEucHJvdG9jb2wpKyIvLyIrSC5kKGEuaG9zdCl9LApaOmZ1bmN0aW9uKGEpe3Jl
+dHVybiBTdHJpbmcoYSl9LAokaXU4OjF9ClcuT0sucHJvdG90eXBlPXskaU9LOjF9ClcuZTcucHJvdG90
+eXBlPXsKZ3I4OmZ1bmN0aW9uKGEpe3ZhciB0PXRoaXMuYSxzPXQuY2hpbGROb2Rlcy5sZW5ndGgKaWYo
+cz09PTApdGhyb3cgSC5iKFAuUFYoIk5vIGVsZW1lbnRzIikpCmlmKHM+MSl0aHJvdyBILmIoUC5QVigi
+TW9yZSB0aGFuIG9uZSBlbGVtZW50IikpCnJldHVybiB0LmZpcnN0Q2hpbGR9LApGVjpmdW5jdGlvbihh
+LGIpe3ZhciB0LHMscixxCnUuZWguYShiKQp0PWIuYQpzPXRoaXMuYQppZih0IT09cylmb3Iocj10LmNo
+aWxkTm9kZXMubGVuZ3RoLHE9MDtxPHI7KytxKXMuYXBwZW5kQ2hpbGQodC5maXJzdENoaWxkKQpyZXR1
+cm59LApZOmZ1bmN0aW9uKGEsYixjKXt2YXIgdCxzCnUuQS5hKGMpCnQ9dGhpcy5hCnM9dC5jaGlsZE5v
+ZGVzCmlmKGI8MHx8Yj49cy5sZW5ndGgpcmV0dXJuIEguayhzLGIpCnQucmVwbGFjZUNoaWxkKGMsc1ti
+XSl9LApna3o6ZnVuY3Rpb24oYSl7dmFyIHQ9dGhpcy5hLmNoaWxkTm9kZXMKcmV0dXJuIG5ldyBXLlc5
+KHQsdC5sZW5ndGgsSC5xKHQpLkMoIlc5PEdtLkU+IikpfSwKZ0E6ZnVuY3Rpb24oYSl7cmV0dXJuIHRo
+aXMuYS5jaGlsZE5vZGVzLmxlbmd0aH0sCnE6ZnVuY3Rpb24oYSxiKXt2YXIgdApILldZKGIpCnQ9dGhp
+cy5hLmNoaWxkTm9kZXMKaWYoYjwwfHxiPj10Lmxlbmd0aClyZXR1cm4gSC5rKHQsYikKcmV0dXJuIHRb
+Yl19fQpXLnVILnByb3RvdHlwZT17CndnOmZ1bmN0aW9uKGEpe3ZhciB0PWEucGFyZW50Tm9kZQppZih0
+IT1udWxsKXQucmVtb3ZlQ2hpbGQoYSl9LApENDpmdW5jdGlvbihhKXt2YXIgdApmb3IoO3Q9YS5maXJz
+dENoaWxkLHQhPW51bGw7KWEucmVtb3ZlQ2hpbGQodCl9LApaOmZ1bmN0aW9uKGEpe3ZhciB0PWEubm9k
+ZVZhbHVlCnJldHVybiB0PT1udWxsP3RoaXMuVShhKTp0fSwKJGl1SDoxfQpXLkJILnByb3RvdHlwZT17
+CmdBOmZ1bmN0aW9uKGEpe3JldHVybiBhLmxlbmd0aH0sCnE6ZnVuY3Rpb24oYSxiKXtILldZKGIpCmlm
+KGI+Pj4wIT09Ynx8Yj49YS5sZW5ndGgpdGhyb3cgSC5iKFAudChiLGEsbnVsbCxudWxsLG51bGwpKQpy
+ZXR1cm4gYVtiXX0sClk6ZnVuY3Rpb24oYSxiLGMpe3UuQS5hKGMpCnRocm93IEguYihQLkw0KCJDYW5u
+b3QgYXNzaWduIGVsZW1lbnQgb2YgaW1tdXRhYmxlIExpc3QuIikpfSwKRTpmdW5jdGlvbihhLGIpe2lm
+KGI8MHx8Yj49YS5sZW5ndGgpcmV0dXJuIEguayhhLGIpCnJldHVybiBhW2JdfSwKJGliUToxLAokaVhq
+OjEsCiRpY1g6MSwKJGl6TToxfQpXLlNOLnByb3RvdHlwZT17fQpXLmV3LnByb3RvdHlwZT17JGlldzox
+fQpXLmxwLnByb3RvdHlwZT17CmdBOmZ1bmN0aW9uKGEpe3JldHVybiBhLmxlbmd0aH19ClcuVGIucHJv
+dG90eXBlPXsKcjY6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIHQscwppZigiY3JlYXRlQ29udGV4dHVhbEZy
+YWdtZW50IiBpbiB3aW5kb3cuUmFuZ2UucHJvdG90eXBlKXJldHVybiB0aGlzLkRXKGEsYixjLGQpCnQ9
+Vy5VOSgiPHRhYmxlPiIrSC5kKGIpKyI8L3RhYmxlPiIsYyxkKQpzPWRvY3VtZW50LmNyZWF0ZURvY3Vt
+ZW50RnJhZ21lbnQoKQpzLnRvU3RyaW5nCnQudG9TdHJpbmcKbmV3IFcuZTcocykuRlYoMCxuZXcgVy5l
+Nyh0KSkKcmV0dXJuIHN9fQpXLkl2LnByb3RvdHlwZT17CnI2OmZ1bmN0aW9uKGEsYixjLGQpe3ZhciB0
+LHMscixxCmlmKCJjcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQiIGluIHdpbmRvdy5SYW5nZS5wcm90b3R5
+cGUpcmV0dXJuIHRoaXMuRFcoYSxiLGMsZCkKdD1kb2N1bWVudApzPXQuY3JlYXRlRG9jdW1lbnRGcmFn
+bWVudCgpCnQ9Qy5JZS5yNih0LmNyZWF0ZUVsZW1lbnQoInRhYmxlIiksYixjLGQpCnQudG9TdHJpbmcK
+dD1uZXcgVy5lNyh0KQpyPXQuZ3I4KHQpCnIudG9TdHJpbmcKdD1uZXcgVy5lNyhyKQpxPXQuZ3I4KHQp
+CnMudG9TdHJpbmcKcS50b1N0cmluZwpuZXcgVy5lNyhzKS5GVigwLG5ldyBXLmU3KHEpKQpyZXR1cm4g
+c319ClcuV1AucHJvdG90eXBlPXsKcjY6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIHQscyxyCmlmKCJjcmVh
+dGVDb250ZXh0dWFsRnJhZ21lbnQiIGluIHdpbmRvdy5SYW5nZS5wcm90b3R5cGUpcmV0dXJuIHRoaXMu
+RFcoYSxiLGMsZCkKdD1kb2N1bWVudApzPXQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpCnQ9Qy5JZS5y
+Nih0LmNyZWF0ZUVsZW1lbnQoInRhYmxlIiksYixjLGQpCnQudG9TdHJpbmcKdD1uZXcgVy5lNyh0KQpy
+PXQuZ3I4KHQpCnMudG9TdHJpbmcKci50b1N0cmluZwpuZXcgVy5lNyhzKS5GVigwLG5ldyBXLmU3KHIp
+KQpyZXR1cm4gc319ClcueVkucHJvdG90eXBlPXsKcGs6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0LHMKYS50
+ZXh0Q29udGVudD1udWxsCnQ9YS5jb250ZW50CnQudG9TdHJpbmcKSi5iVCh0KQpzPXRoaXMucjYoYSxi
+LG51bGwsYykKYS5jb250ZW50LmFwcGVuZENoaWxkKHMpfSwKWUM6ZnVuY3Rpb24oYSxiKXtyZXR1cm4g
+dGhpcy5wayhhLGIsbnVsbCl9LAokaXlZOjF9ClcudzYucHJvdG90eXBlPXt9ClcuSzUucHJvdG90eXBl
+PXsKUG86ZnVuY3Rpb24oYSxiLGMpe3ZhciB0PVcuUDEoYS5vcGVuKGIsYykpCnJldHVybiB0fSwKZ21X
+OmZ1bmN0aW9uKGEpe3JldHVybiBhLmxvY2F0aW9ufSwKJGlLNToxLAokaXY2OjF9ClcuQ20ucHJvdG90
+eXBlPXskaUNtOjF9ClcuQ1EucHJvdG90eXBlPXskaUNROjF9ClcudzQucHJvdG90eXBlPXsKWjpmdW5j
+dGlvbihhKXtyZXR1cm4iUmVjdGFuZ2xlICgiK0guZChhLmxlZnQpKyIsICIrSC5kKGEudG9wKSsiKSAi
+K0guZChhLndpZHRoKSsiIHggIitILmQoYS5oZWlnaHQpfSwKRE46ZnVuY3Rpb24oYSxiKXtpZihiPT1u
+dWxsKXJldHVybiExCnJldHVybiB1Lk8uYihiKSYmYS5sZWZ0PT1iLmxlZnQmJmEudG9wPT1iLnRvcCYm
+YS53aWR0aD09Yi53aWR0aCYmYS5oZWlnaHQ9PWIuaGVpZ2h0fSwKZ2lPOmZ1bmN0aW9uKGEpe3JldHVy
+biBXLnJFKEouaGYoYS5sZWZ0KSxKLmhmKGEudG9wKSxKLmhmKGEud2lkdGgpLEouaGYoYS5oZWlnaHQp
+KX19ClcucmgucHJvdG90eXBlPXsKZ0E6ZnVuY3Rpb24oYSl7cmV0dXJuIGEubGVuZ3RofSwKcTpmdW5j
+dGlvbihhLGIpe0guV1koYikKaWYoYj4+PjAhPT1ifHxiPj1hLmxlbmd0aCl0aHJvdyBILmIoUC50KGIs
+YSxudWxsLG51bGwsbnVsbCkpCnJldHVybiBhW2JdfSwKWTpmdW5jdGlvbihhLGIsYyl7dS5BLmEoYykK
+dGhyb3cgSC5iKFAuTDQoIkNhbm5vdCBhc3NpZ24gZWxlbWVudCBvZiBpbW11dGFibGUgTGlzdC4iKSl9
+LApFOmZ1bmN0aW9uKGEsYil7aWYoYjwwfHxiPj1hLmxlbmd0aClyZXR1cm4gSC5rKGEsYikKcmV0dXJu
+IGFbYl19LAokaWJROjEsCiRpWGo6MSwKJGljWDoxLAokaXpNOjF9ClcuY2YucHJvdG90eXBlPXsKSzpm
+dW5jdGlvbihhLGIpe3ZhciB0LHMscixxLHAKdS5lQS5hKGIpCmZvcih0PXRoaXMuZ1YoKSxzPXQubGVu
+Z3RoLHI9dGhpcy5hLHE9MDtxPHQubGVuZ3RoO3QubGVuZ3RoPT09c3x8KDAsSC5saykodCksKytxKXtw
+PXRbcV0KYi4kMihwLHIuZ2V0QXR0cmlidXRlKHApKX19LApnVjpmdW5jdGlvbigpe3ZhciB0LHMscixx
+LHA9dGhpcy5hLmF0dHJpYnV0ZXMsbz1ILlZNKFtdLHUucykKZm9yKHQ9cC5sZW5ndGgscz11Lmg5LHI9
+MDtyPHQ7KytyKXtpZihyPj1wLmxlbmd0aClyZXR1cm4gSC5rKHAscikKcT1zLmEocFtyXSkKaWYocS5u
+YW1lc3BhY2VVUkk9PW51bGwpQy5ObS5pKG8scS5uYW1lKX1yZXR1cm4gb30sCmdsMDpmdW5jdGlvbihh
+KXtyZXR1cm4gdGhpcy5nVigpLmxlbmd0aD09PTB9fQpXLmk3LnByb3RvdHlwZT17Cng0OmZ1bmN0aW9u
+KGEpe3JldHVybiB0aGlzLmEuaGFzQXR0cmlidXRlKGEpfSwKcTpmdW5jdGlvbihhLGIpe3JldHVybiB0
+aGlzLmEuZ2V0QXR0cmlidXRlKEguYyhiKSl9LApZOmZ1bmN0aW9uKGEsYixjKXt0aGlzLmEuc2V0QXR0
+cmlidXRlKGIsYyl9LApnQTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5nVigpLmxlbmd0aH19ClcuU3ku
+cHJvdG90eXBlPXsKeDQ6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuYS5hLmhhc0F0dHJpYnV0ZSgiZGF0
+YS0iK3RoaXMuTyhhKSl9LApxOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuYS5hLmdldEF0dHJpYnV0
+ZSgiZGF0YS0iK3RoaXMuTyhILmMoYikpKX0sClk6ZnVuY3Rpb24oYSxiLGMpe3RoaXMuYS5hLnNldEF0
+dHJpYnV0ZSgiZGF0YS0iK3RoaXMuTyhiKSxjKX0sCks6ZnVuY3Rpb24oYSxiKXt0aGlzLmEuSygwLG5l
+dyBXLktTKHRoaXMsdS5lQS5hKGIpKSl9LApnVjpmdW5jdGlvbigpe3ZhciB0PUguVk0oW10sdS5zKQp0
+aGlzLmEuSygwLG5ldyBXLkEzKHRoaXMsdCkpCnJldHVybiB0fSwKZ0E6ZnVuY3Rpb24oYSl7cmV0dXJu
+IHRoaXMuZ1YoKS5sZW5ndGh9LApnbDA6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZ1YoKS5sZW5ndGg9
+PT0wfSwKazpmdW5jdGlvbihhKXt2YXIgdCxzLHI9SC5WTShhLnNwbGl0KCItIiksdS5zKQpmb3IodD0x
+O3Q8ci5sZW5ndGg7Kyt0KXtzPXJbdF0KaWYocy5sZW5ndGg+MClDLk5tLlkocix0LHNbMF0udG9VcHBl
+ckNhc2UoKStKLktWKHMsMSkpfXJldHVybiBDLk5tLnpWKHIsIiIpfSwKTzpmdW5jdGlvbihhKXt2YXIg
+dCxzLHIscSxwCmZvcih0PWEubGVuZ3RoLHM9MCxyPSIiO3M8dDsrK3Mpe3E9YVtzXQpwPXEudG9Mb3dl
+ckNhc2UoKQpyPShxIT09cCYmcz4wP3IrIi0iOnIpK3B9cmV0dXJuIHIuY2hhckNvZGVBdCgwKT09MD9y
+OnJ9fQpXLktTLnByb3RvdHlwZT17CiQyOmZ1bmN0aW9uKGEsYil7aWYoSi5yWShhKS5uKGEsImRhdGEt
+IikpdGhpcy5iLiQyKHRoaXMuYS5rKEMueEIuRyhhLDUpKSxiKX0sCiRTOjl9ClcuQTMucHJvdG90eXBl
+PXsKJDI6ZnVuY3Rpb24oYSxiKXtpZihKLnJZKGEpLm4oYSwiZGF0YS0iKSlDLk5tLmkodGhpcy5iLHRo
+aXMuYS5rKEMueEIuRyhhLDUpKSl9LAokUzo5fQpXLkk0LnByb3RvdHlwZT17Cnc6ZnVuY3Rpb24oKXt2
+YXIgdCxzLHIscSxwPVAuTHModS5OKQpmb3IodD10aGlzLmEuY2xhc3NOYW1lLnNwbGl0KCIgIikscz10
+Lmxlbmd0aCxyPTA7cjxzOysrcil7cT1KLlQwKHRbcl0pCmlmKHEubGVuZ3RoIT09MClwLmkoMCxxKX1y
+ZXR1cm4gcH0sCnA6ZnVuY3Rpb24oYSl7dGhpcy5hLmNsYXNzTmFtZT11LkMuYShhKS56VigwLCIgIil9
+LApnQTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5hLmNsYXNzTGlzdC5sZW5ndGh9LApWMTpmdW5jdGlv
+bihhKXt0aGlzLmEuY2xhc3NOYW1lPSIifSwKdGc6ZnVuY3Rpb24oYSxiKXt2YXIgdD10aGlzLmEuY2xh
+c3NMaXN0LmNvbnRhaW5zKGIpCnJldHVybiB0fSwKaTpmdW5jdGlvbihhLGIpe3ZhciB0PXRoaXMuYS5j
+bGFzc0xpc3Qscz10LmNvbnRhaW5zKGIpCnQuYWRkKGIpCnJldHVybiFzfSwKUjpmdW5jdGlvbihhLGIp
+e3ZhciB0PXRoaXMuYS5jbGFzc0xpc3Qscz10LmNvbnRhaW5zKGIpCnQucmVtb3ZlKGIpCnJldHVybiBz
+fSwKRlY6ZnVuY3Rpb24oYSxiKXtXLlROKHRoaXMuYSx1LlguYShiKSl9fQpXLkZrLnByb3RvdHlwZT17
+fQpXLlJPLnByb3RvdHlwZT17fQpXLmV1LnByb3RvdHlwZT17fQpXLnhDLnByb3RvdHlwZT17fQpXLnZO
+LnByb3RvdHlwZT17CiQxOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmEuJDEodS5CLmEoYSkpfSwKJFM6
+Mjh9ClcuSlEucHJvdG90eXBlPXsKQ1k6ZnVuY3Rpb24oYSl7dmFyIHQKaWYoJC5vci5hPT09MCl7Zm9y
+KHQ9MDt0PDI2MjsrK3QpJC5vci5ZKDAsQy5jbVt0XSxXLnBTKCkpCmZvcih0PTA7dDwxMjsrK3QpJC5v
+ci5ZKDAsQy5CSVt0XSxXLlY0KCkpfX0sCmkwOmZ1bmN0aW9uKGEpe3JldHVybiAkLkFOKCkudGcoMCxX
+LnJTKGEpKX0sCkViOmZ1bmN0aW9uKGEsYixjKXt2YXIgdD0kLm9yLnEoMCxILmQoVy5yUyhhKSkrIjo6
+IitiKQppZih0PT1udWxsKXQ9JC5vci5xKDAsIio6OiIrYikKaWYodD09bnVsbClyZXR1cm4hMQpyZXR1
+cm4gSC5FOSh0LiQ0KGEsYixjLHRoaXMpKX0sCiRpa0Y6MX0KVy5HbS5wcm90b3R5cGU9ewpna3o6ZnVu
+Y3Rpb24oYSl7cmV0dXJuIG5ldyBXLlc5KGEsdGhpcy5nQShhKSxILnEoYSkuQygiVzk8R20uRT4iKSl9
+fQpXLnZELnByb3RvdHlwZT17CmkwOmZ1bmN0aW9uKGEpe3JldHVybiBDLk5tLlZyKHRoaXMuYSxuZXcg
+Vy5VdihhKSl9LApFYjpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIEMuTm0uVnIodGhpcy5hLG5ldyBXLkVn
+KGEsYixjKSl9LAokaWtGOjF9ClcuVXYucHJvdG90eXBlPXsKJDE6ZnVuY3Rpb24oYSl7cmV0dXJuIHUu
+ZS5hKGEpLmkwKHRoaXMuYSl9LAokUzoxN30KVy5FZy5wcm90b3R5cGU9ewokMTpmdW5jdGlvbihhKXty
+ZXR1cm4gdS5lLmEoYSkuRWIodGhpcy5hLHRoaXMuYix0aGlzLmMpfSwKJFM6MTd9ClcubTYucHJvdG90
+eXBlPXsKQ1k6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIHQscyxyCnRoaXMuYS5GVigwLGMpCnQ9Yi5ldigw
+LG5ldyBXLkVvKCkpCnM9Yi5ldigwLG5ldyBXLldrKCkpCnRoaXMuYi5GVigwLHQpCnI9dGhpcy5jCnIu
+RlYoMCxDLnhEKQpyLkZWKDAscyl9LAppMDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5hLnRnKDAsVy5y
+UyhhKSl9LApFYjpmdW5jdGlvbihhLGIsYyl7dmFyIHQ9dGhpcyxzPVcuclMoYSkscj10LmMKaWYoci50
+ZygwLEguZChzKSsiOjoiK2IpKXJldHVybiB0LmQuRHQoYykKZWxzZSBpZihyLnRnKDAsIio6OiIrYikp
+cmV0dXJuIHQuZC5EdChjKQplbHNle3I9dC5iCmlmKHIudGcoMCxILmQocykrIjo6IitiKSlyZXR1cm4h
+MAplbHNlIGlmKHIudGcoMCwiKjo6IitiKSlyZXR1cm4hMAplbHNlIGlmKHIudGcoMCxILmQocykrIjo6
+KiIpKXJldHVybiEwCmVsc2UgaWYoci50ZygwLCIqOjoqIikpcmV0dXJuITB9cmV0dXJuITF9LAokaWtG
+OjF9ClcuRW8ucHJvdG90eXBlPXsKJDE6ZnVuY3Rpb24oYSl7cmV0dXJuIUMuTm0udGcoQy5CSSxILmMo
+YSkpfSwKJFM6N30KVy5Xay5wcm90b3R5cGU9ewokMTpmdW5jdGlvbihhKXtyZXR1cm4gQy5ObS50ZyhD
+LkJJLEguYyhhKSl9LAokUzo3fQpXLmN0LnByb3RvdHlwZT17CkViOmZ1bmN0aW9uKGEsYixjKXtpZih0
+aGlzLmpGKGEsYixjKSlyZXR1cm4hMAppZihiPT09InRlbXBsYXRlIiYmYz09PSIiKXJldHVybiEwCmlm
+KGEuZ2V0QXR0cmlidXRlKCJ0ZW1wbGF0ZSIpPT09IiIpcmV0dXJuIHRoaXMuZS50ZygwLGIpCnJldHVy
+biExfX0KVy5JQS5wcm90b3R5cGU9ewokMTpmdW5jdGlvbihhKXtyZXR1cm4iVEVNUExBVEU6OiIrSC5k
+KEguYyhhKSl9LAokUzo1fQpXLk93LnByb3RvdHlwZT17CmkwOmZ1bmN0aW9uKGEpe3ZhciB0CmlmKHUu
+ZXcuYihhKSlyZXR1cm4hMQp0PXUuZzcuYihhKQppZih0JiZXLnJTKGEpPT09ImZvcmVpZ25PYmplY3Qi
+KXJldHVybiExCmlmKHQpcmV0dXJuITAKcmV0dXJuITF9LApFYjpmdW5jdGlvbihhLGIsYyl7aWYoYj09
+PSJpcyJ8fEMueEIubihiLCJvbiIpKXJldHVybiExCnJldHVybiB0aGlzLmkwKGEpfSwKJGlrRjoxfQpX
+Llc5LnByb3RvdHlwZT17CkY6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLHM9dC5jKzEscj10LmIKaWYoczxy
+KXt0LnNNKEoueDkodC5hLHMpKQp0LmM9cwpyZXR1cm4hMH10LnNNKG51bGwpCnQuYz1yCnJldHVybiEx
+fSwKZ2w6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kfSwKc006ZnVuY3Rpb24oYSl7dGhpcy5kPXRoaXMu
+JHRpLmMuYShhKX0sCiRpQW46MX0KVy5kVy5wcm90b3R5cGU9ewpnbVc6ZnVuY3Rpb24oYSl7cmV0dXJu
+IFcuSEgodGhpcy5hLmxvY2F0aW9uKX0sCiRpRDA6MSwKJGl2NjoxfQpXLkZiLnByb3RvdHlwZT17fQpX
+LmtGLnByb3RvdHlwZT17fQpXLm1rLnByb3RvdHlwZT17JGl5MDoxfQpXLktvLnByb3RvdHlwZT17ClBu
+OmZ1bmN0aW9uKGEpe3ZhciB0PXRoaXMscz1uZXcgVy5mbSh0KQp0LmI9ITEKcy4kMihhLG51bGwpCmZv
+cig7dC5iOyl7dC5iPSExCnMuJDIoYSxudWxsKX19LApFUDpmdW5jdGlvbihhLGIpe3ZhciB0PXRoaXMu
+Yj0hMAppZihiIT1udWxsP2IhPT1hLnBhcmVudE5vZGU6dClKLkx0KGEpCmVsc2UgYi5yZW1vdmVDaGls
+ZChhKX0sCkk0OmZ1bmN0aW9uKGEsYil7dmFyIHQscyxyLHEscCxvPSEwLG49bnVsbCxtPW51bGwKdHJ5
+e249Si5pZyhhKQptPW4uYS5nZXRBdHRyaWJ1dGUoImlzIikKdS5oLmEoYSkKdD1mdW5jdGlvbihjKXtp
+ZighKGMuYXR0cmlidXRlcyBpbnN0YW5jZW9mIE5hbWVkTm9kZU1hcCkpcmV0dXJuIHRydWUKaWYoYy5p
+ZD09J2xhc3RDaGlsZCd8fGMubmFtZT09J2xhc3RDaGlsZCd8fGMuaWQ9PSdwcmV2aW91c1NpYmxpbmcn
+fHxjLm5hbWU9PSdwcmV2aW91c1NpYmxpbmcnfHxjLmlkPT0nY2hpbGRyZW4nfHxjLm5hbWU9PSdjaGls
+ZHJlbicpcmV0dXJuIHRydWUKdmFyIGw9Yy5jaGlsZE5vZGVzCmlmKGMubGFzdENoaWxkJiZjLmxhc3RD
+aGlsZCE9PWxbbC5sZW5ndGgtMV0pcmV0dXJuIHRydWUKaWYoYy5jaGlsZHJlbilpZighKGMuY2hpbGRy
+ZW4gaW5zdGFuY2VvZiBIVE1MQ29sbGVjdGlvbnx8Yy5jaGlsZHJlbiBpbnN0YW5jZW9mIE5vZGVMaXN0
+KSlyZXR1cm4gdHJ1ZQp2YXIgaz0wCmlmKGMuY2hpbGRyZW4paz1jLmNoaWxkcmVuLmxlbmd0aApmb3Io
+dmFyIGo9MDtqPGs7aisrKXt2YXIgaT1jLmNoaWxkcmVuW2pdCmlmKGkuaWQ9PSdhdHRyaWJ1dGVzJ3x8
+aS5uYW1lPT0nYXR0cmlidXRlcyd8fGkuaWQ9PSdsYXN0Q2hpbGQnfHxpLm5hbWU9PSdsYXN0Q2hpbGQn
+fHxpLmlkPT0ncHJldmlvdXNTaWJsaW5nJ3x8aS5uYW1lPT0ncHJldmlvdXNTaWJsaW5nJ3x8aS5pZD09
+J2NoaWxkcmVuJ3x8aS5uYW1lPT0nY2hpbGRyZW4nKXJldHVybiB0cnVlfXJldHVybiBmYWxzZX0oYSkK
+bz1ILm9UKHQpPyEwOiEoYS5hdHRyaWJ1dGVzIGluc3RhbmNlb2YgTmFtZWROb2RlTWFwKX1jYXRjaChx
+KXtILlJ1KHEpfXM9ImVsZW1lbnQgdW5wcmludGFibGUiCnRyeXtzPUouQWMoYSl9Y2F0Y2gocSl7SC5S
+dShxKX10cnl7cj1XLnJTKGEpCnRoaXMua1IodS5oLmEoYSksYixvLHMscix1LkcuYShuKSxILmMobSkp
+fWNhdGNoKHEpe2lmKEguUnUocSkgaW5zdGFuY2VvZiBQLkFUKXRocm93IHEKZWxzZXt0aGlzLkVQKGEs
+YikKd2luZG93CnA9IlJlbW92aW5nIGNvcnJ1cHRlZCBlbGVtZW50ICIrSC5kKHMpCmlmKHR5cGVvZiBj
+b25zb2xlIT0idW5kZWZpbmVkIil3aW5kb3cuY29uc29sZS53YXJuKHApfX19LAprUjpmdW5jdGlvbihh
+LGIsYyxkLGUsZixnKXt2YXIgdCxzLHIscSxwLG8sbj10aGlzCmlmKGMpe24uRVAoYSxiKQp3aW5kb3cK
+dD0iUmVtb3ZpbmcgZWxlbWVudCBkdWUgdG8gY29ycnVwdGVkIGF0dHJpYnV0ZXMgb24gPCIrZCsiPiIK
+aWYodHlwZW9mIGNvbnNvbGUhPSJ1bmRlZmluZWQiKXdpbmRvdy5jb25zb2xlLndhcm4odCkKcmV0dXJu
+fWlmKCFuLmEuaTAoYSkpe24uRVAoYSxiKQp3aW5kb3cKdD0iUmVtb3ZpbmcgZGlzYWxsb3dlZCBlbGVt
+ZW50IDwiK0guZChlKSsiPiBmcm9tICIrSC5kKGIpCmlmKHR5cGVvZiBjb25zb2xlIT0idW5kZWZpbmVk
+Iil3aW5kb3cuY29uc29sZS53YXJuKHQpCnJldHVybn1pZihnIT1udWxsKWlmKCFuLmEuRWIoYSwiaXMi
+LGcpKXtuLkVQKGEsYikKd2luZG93CnQ9IlJlbW92aW5nIGRpc2FsbG93ZWQgdHlwZSBleHRlbnNpb24g
+PCIrSC5kKGUpKycgaXM9IicrZysnIj4nCmlmKHR5cGVvZiBjb25zb2xlIT0idW5kZWZpbmVkIil3aW5k
+b3cuY29uc29sZS53YXJuKHQpCnJldHVybn10PWYuZ1YoKQpzPUguVk0odC5zbGljZSgwKSxILnQ2KHQp
+LkMoImpkPDE+IikpCmZvcihyPWYuZ1YoKS5sZW5ndGgtMSx0PWYuYTtyPj0wOy0tcil7aWYocj49cy5s
+ZW5ndGgpcmV0dXJuIEguayhzLHIpCnE9c1tyXQpwPW4uYQpvPUouY0gocSkKSC5jKHEpCmlmKCFwLkVi
+KGEsbyx0LmdldEF0dHJpYnV0ZShxKSkpe3dpbmRvdwpwPSJSZW1vdmluZyBkaXNhbGxvd2VkIGF0dHJp
+YnV0ZSA8IitILmQoZSkrIiAiK3ErJz0iJytILmQodC5nZXRBdHRyaWJ1dGUocSkpKyciPicKaWYodHlw
+ZW9mIGNvbnNvbGUhPSJ1bmRlZmluZWQiKXdpbmRvdy5jb25zb2xlLndhcm4ocCkKdC5yZW1vdmVBdHRy
+aWJ1dGUocSl9fWlmKHUuYVcuYihhKSluLlBuKGEuY29udGVudCl9LAokaW9uOjF9ClcuZm0ucHJvdG90
+eXBlPXsKJDI6ZnVuY3Rpb24oYSxiKXt2YXIgdCxzLHIscSxwLG8sbj10aGlzLmEKc3dpdGNoKGEubm9k
+ZVR5cGUpe2Nhc2UgMTpuLkk0KGEsYikKYnJlYWsKY2FzZSA4OmNhc2UgMTE6Y2FzZSAzOmNhc2UgNDpi
+cmVhawpkZWZhdWx0Om4uRVAoYSxiKX10PWEubGFzdENoaWxkCmZvcihyPXUuQTtudWxsIT10Oyl7cz1u
+dWxsCnRyeXtzPXQucHJldmlvdXNTaWJsaW5nCmlmKHMhPW51bGwpe3E9cy5uZXh0U2libGluZwpwPXQK
+cD1xPT1udWxsP3AhPW51bGw6cSE9PXAKcT1wfWVsc2UgcT0hMQppZihxKXtxPVAuUFYoIkNvcnJ1cHQg
+SFRNTCIpCnRocm93IEguYihxKX19Y2F0Y2gobyl7SC5SdShvKQpxPXIuYSh0KQpuLmI9ITAKcD1xLnBh
+cmVudE5vZGUKcD1hPT1udWxsP3AhPW51bGw6YSE9PXAKaWYocCl7cD1xLnBhcmVudE5vZGUKaWYocCE9
+bnVsbClwLnJlbW92ZUNoaWxkKHEpfWVsc2UgYS5yZW1vdmVDaGlsZChxKQp0PW51bGwKcz1hLmxhc3RD
+aGlsZH1pZih0IT1udWxsKXRoaXMuJDIodCxhKQp0PXN9fSwKJFM6MzF9ClcuTGUucHJvdG90eXBlPXt9
+ClcuSzcucHJvdG90eXBlPXt9ClcuckIucHJvdG90eXBlPXt9ClcuWFcucHJvdG90eXBlPXt9Clcub2Eu
+cHJvdG90eXBlPXt9ClAuaUoucHJvdG90eXBlPXsKVkg6ZnVuY3Rpb24oYSl7dmFyIHQscz10aGlzLmEs
+cj1zLmxlbmd0aApmb3IodD0wO3Q8cjsrK3QpaWYoc1t0XT09PWEpcmV0dXJuIHQKQy5ObS5pKHMsYSkK
+Qy5ObS5pKHRoaXMuYixudWxsKQpyZXR1cm4gcn0sClB2OmZ1bmN0aW9uKGEpe3ZhciB0LHMscixxPXRo
+aXMscD17fQppZihhPT1udWxsKXJldHVybiBhCmlmKEguclEoYSkpcmV0dXJuIGEKaWYodHlwZW9mIGE9
+PSJudW1iZXIiKXJldHVybiBhCmlmKHR5cGVvZiBhPT0ic3RyaW5nIilyZXR1cm4gYQppZihhIGluc3Rh
+bmNlb2YgUC5pUClyZXR1cm4gbmV3IERhdGUoYS5hKQppZih1LmZ2LmIoYSkpdGhyb3cgSC5iKFAubigi
+c3RydWN0dXJlZCBjbG9uZSBvZiBSZWdFeHAiKSkKaWYodS5jOC5iKGEpKXJldHVybiBhCmlmKHUuZC5i
+KGEpKXJldHVybiBhCmlmKHUuSS5iKGEpKXJldHVybiBhCnQ9dS5kRS5iKGEpfHwhMQppZih0KXJldHVy
+biBhCmlmKHUuRy5iKGEpKXtzPXEuVkgoYSkKdD1xLmIKaWYocz49dC5sZW5ndGgpcmV0dXJuIEguayh0
+LHMpCnI9cC5hPXRbc10KaWYociE9bnVsbClyZXR1cm4gcgpyPXt9CnAuYT1yCkMuTm0uWSh0LHMscikK
+YS5LKDAsbmV3IFAuamcocCxxKSkKcmV0dXJuIHAuYX1pZih1LmouYihhKSl7cz1xLlZIKGEpCnA9cS5i
+CmlmKHM+PXAubGVuZ3RoKXJldHVybiBILmsocCxzKQpyPXBbc10KaWYociE9bnVsbClyZXR1cm4gcgpy
+ZXR1cm4gcS5layhhLHMpfWlmKHUuZUguYihhKSl7cz1xLlZIKGEpCnQ9cS5iCmlmKHM+PXQubGVuZ3Ro
+KXJldHVybiBILmsodCxzKQpyPXAuYj10W3NdCmlmKHIhPW51bGwpcmV0dXJuIHIKcj17fQpwLmI9cgpD
+Lk5tLlkodCxzLHIpCnEuaW0oYSxuZXcgUC5UYShwLHEpKQpyZXR1cm4gcC5ifXRocm93IEguYihQLm4o
+InN0cnVjdHVyZWQgY2xvbmUgb2Ygb3RoZXIgdHlwZSIpKX0sCmVrOmZ1bmN0aW9uKGEsYil7dmFyIHQs
+cz1KLlU2KGEpLHI9cy5nQShhKSxxPW5ldyBBcnJheShyKQpDLk5tLlkodGhpcy5iLGIscSkKZm9yKHQ9
+MDt0PHI7Kyt0KUMuTm0uWShxLHQsdGhpcy5QdihzLnEoYSx0KSkpCnJldHVybiBxfX0KUC5qZy5wcm90
+b3R5cGU9ewokMjpmdW5jdGlvbihhLGIpe3RoaXMuYS5hW2FdPXRoaXMuYi5QdihiKX0sCiRTOjF9ClAu
+VGEucHJvdG90eXBlPXsKJDI6ZnVuY3Rpb24oYSxiKXt0aGlzLmEuYlthXT10aGlzLmIuUHYoYil9LAok
+UzoxfQpQLkJmLnByb3RvdHlwZT17CmltOmZ1bmN0aW9uKGEsYil7dmFyIHQscyxyLHEKdS5iOC5hKGIp
+CmZvcih0PU9iamVjdC5rZXlzKGEpLHM9dC5sZW5ndGgscj0wO3I8czsrK3Ipe3E9dFtyXQpiLiQyKHEs
+YVtxXSl9fX0KUC5Bcy5wcm90b3R5cGU9ewpUOmZ1bmN0aW9uKGEpe3ZhciB0CkguYyhhKQp0PSQuaEco
+KS5iCmlmKHR5cGVvZiBhIT0ic3RyaW5nIilILnZoKEguSShhKSkKaWYodC50ZXN0KGEpKXJldHVybiBh
+CnRocm93IEguYihQLkwzKGEsInZhbHVlIiwiTm90IGEgdmFsaWQgY2xhc3MgdG9rZW4iKSl9LApaOmZ1
+bmN0aW9uKGEpe3JldHVybiB0aGlzLncoKS56VigwLCIgIil9LApna3o6ZnVuY3Rpb24oYSl7dmFyIHQ9
+dGhpcy53KCkKcmV0dXJuIFAucmoodCx0LnIsSC5MaCh0KS5jKX0sCmdBOmZ1bmN0aW9uKGEpe3JldHVy
+biB0aGlzLncoKS5hfSwKdGc6ZnVuY3Rpb24oYSxiKXt0aGlzLlQoYikKcmV0dXJuIHRoaXMudygpLnRn
+KDAsYil9LAppOmZ1bmN0aW9uKGEsYil7dGhpcy5UKGIpCnJldHVybiBILkU5KHRoaXMuT1MobmV3IFAu
+R0UoYikpKX0sClI6ZnVuY3Rpb24oYSxiKXt2YXIgdCxzCnRoaXMuVChiKQp0PXRoaXMudygpCnM9dC5S
+KDAsYikKdGhpcy5wKHQpCnJldHVybiBzfSwKRlY6ZnVuY3Rpb24oYSxiKXt0aGlzLk9TKG5ldyBQLk43
+KHRoaXMsdS5YLmEoYikpKX0sClYxOmZ1bmN0aW9uKGEpe3RoaXMuT1MobmV3IFAudVEoKSl9LApPUzpm
+dW5jdGlvbihhKXt2YXIgdCxzCnUuYlUuYShhKQp0PXRoaXMudygpCnM9YS4kMSh0KQp0aGlzLnAodCkK
+cmV0dXJuIHN9fQpQLkdFLnByb3RvdHlwZT17CiQxOmZ1bmN0aW9uKGEpe3JldHVybiB1LkMuYShhKS5p
+KDAsdGhpcy5hKX0sCiRTOjMyfQpQLk43LnByb3RvdHlwZT17CiQxOmZ1bmN0aW9uKGEpe3ZhciB0PXRo
+aXMuYixzPUgudDYodCkKcmV0dXJuIHUuQy5hKGEpLkZWKDAsbmV3IEgubEoodCxzLkMoInFVKDEpIiku
+YSh0aGlzLmEuZ3VNKCkpLHMuQygibEo8MSxxVT4iKSkpfSwKJFM6MjB9ClAudVEucHJvdG90eXBlPXsK
+JDE6ZnVuY3Rpb24oYSl7dS5DLmEoYSkKaWYoYS5hPjApe2EuYj1hLmM9YS5kPWEuZT1hLmY9bnVsbAph
+LmE9MAphLlgoKX1yZXR1cm4gbnVsbH0sCiRTOjIwfQpQLmhGLnByb3RvdHlwZT17JGloRjoxfQpQLlBD
+LnByb3RvdHlwZT17CiQxOmZ1bmN0aW9uKGEpe3ZhciB0CnUuWi5hKGEpCnQ9ZnVuY3Rpb24oYixjLGQp
+e3JldHVybiBmdW5jdGlvbigpe3JldHVybiBiKGMsZCx0aGlzLEFycmF5LnByb3RvdHlwZS5zbGljZS5h
+cHBseShhcmd1bWVudHMpKX19KFAuUjQsYSwhMSkKUC5EbSh0LCQud1EoKSxhKQpyZXR1cm4gdH0sCiRT
+OjJ9ClAubXQucHJvdG90eXBlPXsKJDE6ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyB0aGlzLmEoYSl9LAok
+UzoyfQpQLk56LnByb3RvdHlwZT17CiQxOmZ1bmN0aW9uKGEpe3JldHVybiBuZXcgUC5yNyhhKX0sCiRT
+OjM0fQpQLlFTLnByb3RvdHlwZT17CiQxOmZ1bmN0aW9uKGEpe3JldHVybiBuZXcgUC5UeihhLHUuYW0p
+fSwKJFM6MzV9ClAubnAucHJvdG90eXBlPXsKJDE6ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBQLkU0KGEp
+fSwKJFM6MzZ9ClAuRTQucHJvdG90eXBlPXsKcTpmdW5jdGlvbihhLGIpe2lmKHR5cGVvZiBiIT0ic3Ry
+aW5nIiYmdHlwZW9mIGIhPSJudW1iZXIiKXRocm93IEguYihQLnhZKCJwcm9wZXJ0eSBpcyBub3QgYSBT
+dHJpbmcgb3IgbnVtIikpCnJldHVybiBQLkw3KHRoaXMuYVtiXSl9LApZOmZ1bmN0aW9uKGEsYixjKXtp
+Zih0eXBlb2YgYiE9InN0cmluZyImJnR5cGVvZiBiIT0ibnVtYmVyIil0aHJvdyBILmIoUC54WSgicHJv
+cGVydHkgaXMgbm90IGEgU3RyaW5nIG9yIG51bSIpKQp0aGlzLmFbYl09UC53WShjKX0sCkROOmZ1bmN0
+aW9uKGEsYil7aWYoYj09bnVsbClyZXR1cm4hMQpyZXR1cm4gYiBpbnN0YW5jZW9mIFAuRTQmJnRoaXMu
+YT09PWIuYX0sClo6ZnVuY3Rpb24oYSl7dmFyIHQscwp0cnl7dD1TdHJpbmcodGhpcy5hKQpyZXR1cm4g
+dH1jYXRjaChzKXtILlJ1KHMpCnQ9dGhpcy54YigwKQpyZXR1cm4gdH19LApWNzpmdW5jdGlvbihhLGIp
+e3ZhciB0LHM9dGhpcy5hCmlmKGI9PW51bGwpdD1udWxsCmVsc2V7dD1ILnQ2KGIpCnQ9UC5DSChuZXcg
+SC5sSihiLHQuQygiQCgxKSIpLmEoUC5pRygpKSx0LkMoImxKPDEsQD4iKSksITAsdS56KX1yZXR1cm4g
+UC5MNyhzW2FdLmFwcGx5KHMsdCkpfSwKZ2lPOmZ1bmN0aW9uKGEpe3JldHVybiAwfX0KUC5yNy5wcm90
+b3R5cGU9e30KUC5Uei5wcm90b3R5cGU9ewpjUDpmdW5jdGlvbihhKXt2YXIgdD10aGlzLHM9YTwwfHxh
+Pj10LmdBKHQpCmlmKHMpdGhyb3cgSC5iKFAuVEUoYSwwLHQuZ0EodCksbnVsbCxudWxsKSl9LApxOmZ1
+bmN0aW9uKGEsYil7aWYodHlwZW9mIGI9PSJudW1iZXIiJiZiPT09Qy5qbi55dShiKSl0aGlzLmNQKEgu
+V1koYikpCnJldHVybiB0aGlzLiR0aS5jLmEodGhpcy5VcigwLGIpKX0sClk6ZnVuY3Rpb24oYSxiLGMp
+e3ZhciB0CnRoaXMuJHRpLmMuYShjKQp0PUMuam4ueXUoYikKaWYoYj09PXQpdGhpcy5jUChiKQp0aGlz
+LmU0KDAsYixjKX0sCmdBOmZ1bmN0aW9uKGEpe3ZhciB0PXRoaXMuYS5sZW5ndGgKaWYodHlwZW9mIHQ9
+PT0ibnVtYmVyIiYmdD4+PjA9PT10KXJldHVybiB0CnRocm93IEguYihQLlBWKCJCYWQgSnNBcnJheSBs
+ZW5ndGgiKSl9LAokaWJROjEsCiRpY1g6MSwKJGl6TToxfQpQLmNvLnByb3RvdHlwZT17fQpQLm5kLnBy
+b3RvdHlwZT17JGluZDoxfQpQLktlLnByb3RvdHlwZT17Cnc6ZnVuY3Rpb24oKXt2YXIgdCxzLHIscSxw
+PXRoaXMuYS5nZXRBdHRyaWJ1dGUoImNsYXNzIiksbz1QLkxzKHUuTikKaWYocD09bnVsbClyZXR1cm4g
+bwpmb3IodD1wLnNwbGl0KCIgIikscz10Lmxlbmd0aCxyPTA7cjxzOysrcil7cT1KLlQwKHRbcl0pCmlm
+KHEubGVuZ3RoIT09MClvLmkoMCxxKX1yZXR1cm4gb30sCnA6ZnVuY3Rpb24oYSl7dGhpcy5hLnNldEF0
+dHJpYnV0ZSgiY2xhc3MiLGEuelYoMCwiICIpKX19ClAuZDUucHJvdG90eXBlPXsKZ1A6ZnVuY3Rpb24o
+YSl7cmV0dXJuIG5ldyBQLktlKGEpfSwKc2hmOmZ1bmN0aW9uKGEsYil7dGhpcy5ZQyhhLGIpfSwKcjY6
+ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIHQscyxyLHEscCxvCmlmKGQ9PW51bGwpe3Q9SC5WTShbXSx1Lmsp
+CmQ9bmV3IFcudkQodCkKQy5ObS5pKHQsVy5UdyhudWxsKSkKQy5ObS5pKHQsVy5CbCgpKQpDLk5tLmko
+dCxuZXcgVy5PdygpKX1jPW5ldyBXLktvKGQpCnM9JzxzdmcgdmVyc2lvbj0iMS4xIj4nK0guZChiKSsi
+PC9zdmc+Igp0PWRvY3VtZW50CnI9dC5ib2R5CnE9KHImJkMuUlkpLkFIKHIscyxjKQpwPXQuY3JlYXRl
+RG9jdW1lbnRGcmFnbWVudCgpCnEudG9TdHJpbmcKdD1uZXcgVy5lNyhxKQpvPXQuZ3I4KHQpCmZvcig7
+dD1vLmZpcnN0Q2hpbGQsdCE9bnVsbDspcC5hcHBlbmRDaGlsZCh0KQpyZXR1cm4gcH0sCm56OmZ1bmN0
+aW9uKGEsYixjLGQsZSl7dGhyb3cgSC5iKFAuTDQoIkNhbm5vdCBpbnZva2UgaW5zZXJ0QWRqYWNlbnRI
+dG1sIG9uIFNWRy4iKSl9LApnVmw6ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBXLmV1KGEsImNsaWNrIiwh
+MSx1LlEpfSwKJGlkNToxfQpQLm42LnByb3RvdHlwZT17JGliUToxLCRpY1g6MSwkaXpNOjEsJGllcTox
+fQpNLkg3LnByb3RvdHlwZT17Clo6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuYn19ClUuTEwucHJvdG90
+eXBlPXsKTHQ6ZnVuY3Rpb24oKXtyZXR1cm4gUC5FRihbIm5vZGVJZCIsdGhpcy5iLCJraW5kIix0aGlz
+LmEuYV0sdS5OLHUuSyl9fQpVLk1ELnByb3RvdHlwZT17CiQxOmZ1bmN0aW9uKGEpe3JldHVybiB1Lmdw
+LmEoYSkuYT09PXRoaXMuYS5xKDAsImtpbmQiKX0sCiRTOjUwfQpVLmQyLnByb3RvdHlwZT17Ckx0OmZ1
+bmN0aW9uKCl7dmFyIHQscyxyLHEscD10aGlzLG89dS5OLG49dS5LLG09UC5GbChvLG4pLGw9cC5hCmlm
+KGwhPW51bGwpe3Q9SC5WTShbXSx1LkopCmZvcihzPWwubGVuZ3RoLHI9MDtyPGwubGVuZ3RoO2wubGVu
+Z3RoPT09c3x8KDAsSC5saykobCksKytyKXtxPWxbcl0KQy5ObS5pKHQsUC5FRihbImRlc2NyaXB0aW9u
+IixxLmEsImhyZWYiLHEuYl0sbyxuKSl9bS5ZKDAsImVkaXRzIix0KX1tLlkoMCwiZXhwbGFuYXRpb24i
+LHAuYikKbS5ZKDAsImxpbmUiLHAuYykKbS5ZKDAsInBhdGgiLHAuZCkKbz1wLmUKaWYobyE9bnVsbCl7
+bj1ILlZNKFtdLHUuSikKZm9yKGw9by5sZW5ndGgscj0wO3I8by5sZW5ndGg7by5sZW5ndGg9PT1sfHwo
+MCxILmxrKShvKSwrK3IpQy5ObS5pKG4sb1tyXS5MdCgpKQptLlkoMCwidHJhY2VzIixuKX1yZXR1cm4g
+bX19ClUuU2UucHJvdG90eXBlPXsKTHQ6ZnVuY3Rpb24oKXtyZXR1cm4gUC5FRihbImRlc2NyaXB0aW9u
+Iix0aGlzLmEsImhyZWYiLHRoaXMuYl0sdS5OLHUuSyl9fQpVLk1sLnByb3RvdHlwZT17Ckx0OmZ1bmN0
+aW9uKCl7cmV0dXJuIFAuRUYoWyJocmVmIix0aGlzLmEsImxpbmUiLHRoaXMuYiwicGF0aCIsdGhpcy5j
+XSx1Lk4sdS5LKX19ClUueUQucHJvdG90eXBlPXsKTHQ6ZnVuY3Rpb24oKXt2YXIgdCxzLHIscT1ILlZN
+KFtdLHUuSikKZm9yKHQ9dGhpcy5iLHM9dC5sZW5ndGgscj0wO3I8dC5sZW5ndGg7dC5sZW5ndGg9PT1z
+fHwoMCxILmxrKSh0KSwrK3IpQy5ObS5pKHEsdFtyXS5MdCgpKQpyZXR1cm4gUC5FRihbImRlc2NyaXB0
+aW9uIix0aGlzLmEsImVudHJpZXMiLHFdLHUuTix1LkspfX0KVS53Yi5wcm90b3R5cGU9ewpMdDpmdW5j
+dGlvbigpe3ZhciB0LHMscj10aGlzLHE9UC5GbCh1Lk4sdS5LKQpxLlkoMCwiZGVzY3JpcHRpb24iLHIu
+YSkKdD1yLmIKaWYodCE9bnVsbClxLlkoMCwiZnVuY3Rpb24iLHQpCnQ9ci5jCmlmKHQhPW51bGwpcS5Z
+KDAsImxpbmsiLHQuTHQoKSkKdD1yLmQKaWYodC5sZW5ndGghPT0wKXtzPUgudDYodCkKcS5ZKDAsImhp
+bnRBY3Rpb25zIixuZXcgSC5sSih0LHMuQygiWjA8cVUsTWg+KDEpIikuYShuZXcgVS5iMCgpKSxzLkMo
+ImxKPDEsWjA8cVUsTWg+PiIpKS5icigwKSl9cmV0dXJuIHF9fQpVLmFOLnByb3RvdHlwZT17CiQxOmZ1
+bmN0aW9uKGEpe3JldHVybiBVLm56KHUuUy5hKGEpKX0sCiRTOjM4fQpVLmIwLnByb3RvdHlwZT17CiQx
+OmZ1bmN0aW9uKGEpe3JldHVybiB1LkYuYShhKS5MdCgpfSwKJFM6Mzl9CkIuajgucHJvdG90eXBlPXsK
+THQ6ZnVuY3Rpb24oKXtyZXR1cm4gUC5FRihbImxpbmUiLHRoaXMuYSwiZXhwbGFuYXRpb24iLHRoaXMu
+Yiwib2Zmc2V0Iix0aGlzLmNdLHUuTix1LkspfX0KQi5xcC5wcm90b3R5cGU9ewpMdDpmdW5jdGlvbigp
+e3ZhciB0LHMscixxLHAsbyxuLG09dGhpcyxsPXUuTixrPVAuRmwobCx1LmQzKQpmb3IodD1tLmQsdD10
+LmdQdSh0KSx0PXQuZ2t6KHQpLHM9dS5LLHI9dS5KO3QuRigpOyl7cT10LmdsKCkKcD1xLmEKbz1ILlZN
+KFtdLHIpCmZvcihxPUouSVQocS5iKTtxLkYoKTspe249cS5nbCgpCkMuTm0uaShvLFAuRUYoWyJsaW5l
+IixuLmEsImV4cGxhbmF0aW9uIixuLmIsIm9mZnNldCIsbi5jXSxsLHMpKX1rLlkoMCxwLG8pfXJldHVy
+biBQLkVGKFsicmVnaW9ucyIsbS5hLCJuYXZpZ2F0aW9uQ29udGVudCIsbS5iLCJzb3VyY2VDb2RlIixt
+LmMsImVkaXRzIixrXSxsLHMpfX0KVC5tUS5wcm90b3R5cGU9e30KTC5lLnByb3RvdHlwZT17CiQxOmZ1
+bmN0aW9uKGEpe3ZhciB0LHMscixxLHAsbyxuCnUuQi5hKGEpCnQ9d2luZG93LmxvY2F0aW9uLnBhdGhu
+YW1lCnM9TC5HNih3aW5kb3cubG9jYXRpb24uaHJlZikKcj1MLmFLKHdpbmRvdy5sb2NhdGlvbi5ocmVm
+KQpMLkdlKCkKaWYodCE9PSIvIiYmdCE9PUouVDAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLnJvb3Qi
+KS50ZXh0Q29udGVudCkpTC5HNyh0LHMsciwhMCxuZXcgTC5WVyh0LHMscikpCnE9ZG9jdW1lbnQKcD1K
+LnFGKHEucXVlcnlTZWxlY3RvcigiLmFwcGx5LW1pZ3JhdGlvbiIpKQpvPXAuJHRpCm49by5DKCJ+KDEp
+IikuYShuZXcgTC5vWigpKQp1Lk0uYShudWxsKQpXLkpFKHAuYSxwLmIsbiwhMSxvLmMpCm89Si5xRihx
+LnF1ZXJ5U2VsZWN0b3IoIi5yZXJ1bi1taWdyYXRpb24iKSkKbj1vLiR0aQpXLkpFKG8uYSxvLmIsbi5D
+KCJ+KDEpIikuYShuZXcgTC55OCgpKSwhMSxuLmMpCm49Si5xRihxLnF1ZXJ5U2VsZWN0b3IoIi5yZXBv
+cnQtcHJvYmxlbSIpKQpvPW4uJHRpClcuSkUobi5hLG4uYixvLkMoIn4oMSkiKS5hKG5ldyBMLkhpKCkp
+LCExLG8uYykKcT1KLnFGKHEucXVlcnlTZWxlY3RvcigiLnBvcHVwLXBhbmUgLmNsb3NlIikpCm89cS4k
+dGkKVy5KRShxLmEscS5iLG8uQygifigxKSIpLmEobmV3IEwuQlQoKSksITEsby5jKX0sCiRTOjE5fQpM
+LlZXLnByb3RvdHlwZT17CiQwOmZ1bmN0aW9uKCl7TC5Gcih0aGlzLmEsdGhpcy5iLHRoaXMuYyl9LAok
+UzowfQpMLm9aLnByb3RvdHlwZT17CiQxOmZ1bmN0aW9uKGEpe3UuVi5hKGEpCmlmKEgub1Qod2luZG93
+LmNvbmZpcm0oIlRoaXMgd2lsbCBhcHBseSB0aGUgY2hhbmdlcyB5b3UndmUgcHJldmlld2VkIHRvIHlv
dXIgd29ya2luZyBkaXJlY3RvcnkuIEl0IGlzIHJlY29tbWVuZGVkIHlvdSBjb21taXQgYW55IGNoYW5n
-ZXMgeW91IG1hZGUgYmVmb3JlIGRvaW5nIHRoaXMuIikpTC50eSgiL2FwcGx5LW1pZ3JhdGlvbiIpLlc3
-KG5ldyBMLmpyKCksdS5QKS5PQShuZXcgTC5xbCgpKX0sCiRTOjN9CkwuanIucHJvdG90eXBlPXsKJDE6
-ZnVuY3Rpb24oYSl7dmFyIHQKdS5hLmEoYSkKdD1kb2N1bWVudC5ib2R5CnQuY2xhc3NMaXN0LnJlbW92
-ZSgicHJvcG9zZWQiKQp0LmNsYXNzTGlzdC5hZGQoImFwcGxpZWQiKX0sCiRTOjQwfQpMLnFsLnByb3Rv
-dHlwZT17CiQyOmZ1bmN0aW9uKGEsYil7TC5DMigiQ291bGQgbm90IGFwcGx5IG1pZ3JhdGlvbiIsYSxi
-KX0sCiRDOiIkMiIsCiRSOjIsCiRTOjJ9CkwuSGkucHJvdG90eXBlPXsKJDE6ZnVuY3Rpb24oYSl7cmV0
-dXJuIHRoaXMueG4odS5PLmEoYSkpfSwKeG46ZnVuY3Rpb24oYSl7dmFyIHQ9MCxzPVAuRlgodS5QKSxy
-PTEscSxwPVtdLG8sbixtLGwKdmFyICRhc3luYyQkMT1QLmx6KGZ1bmN0aW9uKGIsYyl7aWYoYj09PTEp
-e3E9Ywp0PXJ9d2hpbGUodHJ1ZSlzd2l0Y2godCl7Y2FzZSAwOnI9Mwpkb2N1bWVudC5ib2R5LmNsYXNz
-TGlzdC5hZGQoInJlcnVubmluZyIpCnQ9NgpyZXR1cm4gUC5qUShMLnR5KCIvcmVydW4tbWlncmF0aW9u
-IiksJGFzeW5jJCQxKQpjYXNlIDY6d2luZG93LmxvY2F0aW9uLnJlbG9hZCgpCnAucHVzaCg1KQp0PTQK
-YnJlYWsKY2FzZSAzOnI9MgpsPXEKbz1ILlJ1KGwpCm49SC50cyhsKQpMLkMyKCJGYWlsZWQgdG8gcmVy
-dW4gbWlncmF0aW9uIixvLG4pCnAucHVzaCg1KQp0PTQKYnJlYWsKY2FzZSAyOnA9WzFdCmNhc2UgNDpy
-PTEKZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCJyZXJ1bm5pbmciKQp0PXAucG9wKCkKYnJl
-YWsKY2FzZSA1OnJldHVybiBQLnlDKG51bGwscykKY2FzZSAxOnJldHVybiBQLmYzKHEscyl9fSkKcmV0
-dXJuIFAuREkoJGFzeW5jJCQxLHMpfSwKJFM6NDF9CkwuQlQucHJvdG90eXBlPXsKJDE6ZnVuY3Rpb24o
-YSl7dmFyIHQKdS5PLmEoYSkKdD11LlgKQy5vbC5Qbyh3aW5kb3csUC5YZCgiaHR0cHMiLCJnaXRodWIu
-Y29tIiwiZGFydC1sYW5nL3Nkay9pc3N1ZXMvbmV3IixQLkVGKFsidGl0bGUiLCJDdXN0b21lci1yZXBv
-cnRlZCBpc3N1ZSB3aXRoIE5OQkQgbWlncmF0aW9uIHRvb2wiLCJsYWJlbHMiLCJhcmVhLWFuYWx5emVy
-LGFuYWx5emVyLW5uYmQtbWlncmF0aW9uLHR5cGUtYnVnIiwiYm9keSIsIiMjIyMgU3RlcHMgdG8gcmVw
-cm9kdWNlXG5cbiMjIyMgV2hhdCBkaWQgeW91IGV4cGVjdCB0byBoYXBwZW4/XG5cbiMjIyMgV2hhdCBh
-Y3R1YWxseSBoYXBwZW5lZD9cblxuX1NjcmVlbnNob3RzIGFyZSBhcHByZWNpYXRlZF9cblxuKipEYXJ0
-IFNESyB2ZXJzaW9uKio6ICIrSC5Faihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2RrLXZlcnNpb24i
-KS50ZXh0Q29udGVudCkrIlxuXG5UaGFua3MgZm9yIGZpbGluZyFcbiJdLHQsdCkpLmduRCgpLCJyZXBv
-cnQtcHJvYmxlbSIpfSwKJFM6M30KTC5QWS5wcm90b3R5cGU9ewokMTpmdW5jdGlvbihhKXt2YXIgdAp1
-Lk8uYShhKQp0PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5wb3B1cC1wYW5lIikuc3R5bGUKdC5kaXNw
-bGF5PSJub25lIgpyZXR1cm4ibm9uZSJ9LAokUzo0Mn0KTC5MLnByb3RvdHlwZT17CiQxOmZ1bmN0aW9u
-KGEpe3ZhciB0LHMscgp1LmFMLmEoYSkKdD13aW5kb3cubG9jYXRpb24ucGF0aG5hbWUKcz1MLkc2KHdp
-bmRvdy5sb2NhdGlvbi5ocmVmKQpyPUwuYUsod2luZG93LmxvY2F0aW9uLmhyZWYpCmlmKHQubGVuZ3Ro
-PjEpTC5HNyh0LHMsciwhMSxudWxsKQplbHNle0wuQkUodCxuZXcgQi5xcCgiIiwiIiwiIixDLkNNKSwh
-MCkKTC5CWCgiJm5ic3A7IixudWxsKX19LAokUzoxNn0KTC5XeC5wcm90b3R5cGU9ewokMTpmdW5jdGlv
-bihhKXt2YXIgdCxzLHIscT0iY29sbGFwc2VkIgp1Lk8uYShhKQp0PXRoaXMuYQpzPUouWUUodCkKcj10
-aGlzLmIKaWYoIXMuZ1AodCkudGcoMCxxKSl7cy5nUCh0KS5pKDAscSkKSi5kUihyKS5pKDAscSl9ZWxz
-ZXtzLmdQKHQpLlIoMCxxKQpKLmRSKHIpLlIoMCxxKX19LAokUzozfQpMLkFPLnByb3RvdHlwZT17CiQx
-OmZ1bmN0aW9uKGEpe3ZhciB0PUoucUYodS5nLmEoYSkpLHM9dC4kdGkscj1zLkMoIn4oMSk/IikuYShu
-ZXcgTC5kTih0aGlzLmEpKQp1LlouYShudWxsKQpXLkpFKHQuYSx0LmIsciwhMSxzLmMpfSwKJFM6NH0K
-TC5kTi5wcm90b3R5cGU9ewokMTpmdW5jdGlvbihhKXt2YXIgdAp1Lk8uYShhKQp0PWRvY3VtZW50LnF1
-ZXJ5U2VsZWN0b3IoInRhYmxlW2RhdGEtcGF0aF0iKQp0LnRvU3RyaW5nCkwudDIoYSx0aGlzLmEsdC5n
-ZXRBdHRyaWJ1dGUoImRhdGEtIituZXcgVy5TeShuZXcgVy5pNyh0KSkuTygicGF0aCIpKSl9LAokUzoz
-fQpMLkhvLnByb3RvdHlwZT17CiQxOmZ1bmN0aW9uKGEpe3ZhciB0LHMscgp1LmcuYShhKQp0PUoucUYo
-YSkKcz10LiR0aQpyPXMuQygifigxKT8iKS5hKG5ldyBMLnh6KGEsdGhpcy5hKSkKdS5aLmEobnVsbCkK
-Vy5KRSh0LmEsdC5iLHIsITEscy5jKX0sCiRTOjR9CkwueHoucHJvdG90eXBlPXsKJDE6ZnVuY3Rpb24o
-YSl7dmFyIHQKdS5PLmEoYSkKdD10aGlzLmEKTC5oWCh0aGlzLmIsUC5RQSh0LmdldEF0dHJpYnV0ZSgi
-ZGF0YS0iK25ldyBXLlN5KG5ldyBXLmk3KHQpKS5PKCJvZmZzZXQiKSksbnVsbCksUC5RQSh0LmdldEF0
-dHJpYnV0ZSgiZGF0YS0iK25ldyBXLlN5KG5ldyBXLmk3KHQpKS5PKCJsaW5lIikpLG51bGwpKX0sCiRT
-OjN9CkwuSUMucHJvdG90eXBlPXsKJDE6ZnVuY3Rpb24oYSl7dmFyIHQ9Si5xRih1LmcuYShhKSkscz10
-LiR0aQpzLkMoIn4oMSk/IikuYShMLmlTKCkpCnUuWi5hKG51bGwpClcuSkUodC5hLHQuYixMLmlTKCks
-ITEscy5jKX0sCiRTOjR9CkwuTDEucHJvdG90eXBlPXsKJDE6ZnVuY3Rpb24oYSl7dS5FLmEoYSkKdGhp
-cy5hLmFNKDAsdGhpcy5iKX0sCiRTOjQ0fQpMLm5ULnByb3RvdHlwZT17CiQwOmZ1bmN0aW9uKCl7TC5G
-cih0aGlzLmEuYSx0aGlzLmIsdGhpcy5jKX0sCiRTOjB9CkwuTlkucHJvdG90eXBlPXsKJDA6ZnVuY3Rp
-b24oKXtMLkZyKHRoaXMuYS5hLG51bGwsbnVsbCl9LAokUzowfQpMLmVYLnByb3RvdHlwZT17CiQxOmZ1
-bmN0aW9uKGEpe3UuZy5hKGEpCiQuekIoKS50b1N0cmluZwp1LmRILmEoJC5vdygpLnEoMCwiaGxqcyIp
-KS5WNygiaGlnaGxpZ2h0QmxvY2siLFthXSl9LAokUzo0fQpMLkRULnByb3RvdHlwZT17CiQxOmZ1bmN0
-aW9uKGEpe3ZhciB0LHMKdS5ELmEoYSkKdD1hLnN0YXR1cwppZih0PT09MjAwKXt0PUMuQ3QucFcoMCxh
-LnJlc3BvbnNlVGV4dCxudWxsKQpzPUouVTYodCkKTC5UMShuZXcgVS5kMihVLmpmKHMucSh0LCJlZGl0
-cyIpKSxILmgocy5xKHQsImV4cGxhbmF0aW9uIikpLEgudVAocy5xKHQsImxpbmUiKSksSC5oKHMucSh0
-LCJwYXRoIikpLFUuTmQocy5xKHQsInRyYWNlcyIpKSkpCkwuRnIodGhpcy5hLHRoaXMuYix0aGlzLmMp
-CkwueVgoIi5lZGl0LXBhbmVsIC5wYW5lbC1jb250ZW50IiwhMSl9ZWxzZSBDLm9sLlV4KHdpbmRvdywi
-UmVxdWVzdCBmYWlsZWQ7IHN0YXR1cyBvZiAiK3QpfSwKJFM6OH0KTC5lSC5wcm90b3R5cGU9ewokMjpm
-dW5jdGlvbihhLGIpe0wucUooImxvYWRSZWdpb25FeHBsYW5hdGlvbjogIitILkVqKGEpLGIpCkMub2wu
-VXgod2luZG93LCJDb3VsZCBub3QgbG9hZCAiK0guRWoodGhpcy5hKSsiICgiK0guRWooYSkrIikuIil9
-LAokQzoiJDIiLAokUjoyLAokUzoyfQpMLnl1LnByb3RvdHlwZT17CiQxOmZ1bmN0aW9uKGEpe3ZhciB0
-LHMscj10aGlzCnUuRC5hKGEpCnQ9YS5zdGF0dXMKaWYodD09PTIwMCl7cz1yLmEKTC5CRShzLEIuWWYo
-dS5iby5hKEMuQ3QucFcoMCxhLnJlc3BvbnNlVGV4dCxudWxsKSkpLHIuYikKdD1yLmMKTC5mRyh0LHIu
-ZCkKTC5CWChDLnhCLnRnKHMsIj8iKT9DLnhCLk5qKHMsMCxDLnhCLk9ZKHMsIj8iKSk6cyx0KQp0PXIu
-ZQppZih0IT1udWxsKXQuJDAoKX1lbHNlIEMub2wuVXgod2luZG93LCJSZXF1ZXN0IGZhaWxlZDsgc3Rh
-dHVzIG9mICIrdCl9LAokUzo4fQpMLnpELnByb3RvdHlwZT17CiQyOmZ1bmN0aW9uKGEsYil7TC5xSigi
-bG9hZEZpbGU6ICIrSC5FaihhKSxiKQpDLm9sLlV4KHdpbmRvdywiQ291bGQgbm90IGxvYWQgIit0aGlz
-LmErIiAoIitILkVqKGEpKyIpLiIpfSwKJEM6IiQyIiwKJFI6MiwKJFM6Mn0KTC5UVy5wcm90b3R5cGU9
-ewokMTpmdW5jdGlvbihhKXt2YXIgdCxzLHIKdS5ELmEoYSkKdD1hLnN0YXR1cwppZih0PT09MjAwKXtz
-PUMuQ3QucFcoMCxhLnJlc3BvbnNlVGV4dCxudWxsKQpyPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5u
-YXYtdHJlZSIpCkoubDUociwiIikKTC50WChyLEwubUsocykpfWVsc2UgQy5vbC5VeCh3aW5kb3csIlJl
-cXVlc3QgZmFpbGVkOyBzdGF0dXMgb2YgIit0KX0sCiRTOjh9CkwueHIucHJvdG90eXBlPXsKJDI6ZnVu
-Y3Rpb24oYSxiKXtMLnFKKCJsb2FkTmF2aWdhdGlvblRyZWU6ICIrSC5FaihhKSxiKQpDLm9sLlV4KHdp
-bmRvdywiQ291bGQgbm90IGxvYWQgIit0aGlzLmErIiAoIitILkVqKGEpKyIpLiIpfSwKJEM6IiQyIiwK
-JFI6MiwKJFM6Mn0KTC5FRS5wcm90b3R5cGU9ewokMTpmdW5jdGlvbihhKXt2YXIgdCxzCnUuTy5hKGEp
-CnQ9dGhpcy5hCnM9dGhpcy5iCkwuYWYod2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLHQscywhMCxuZXcg
-TC5RTCh0LHMpKQpMLmhYKHRoaXMuYyx0LHMpfSwKJFM6M30KTC5RTC5wcm90b3R5cGU9ewokMDpmdW5j
-dGlvbigpe0wuRnIod2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLHRoaXMuYSx0aGlzLmIpfSwKJFM6MH0K
-TC5WUy5wcm90b3R5cGU9ewokMTpmdW5jdGlvbihhKXt2YXIgdCxzPSJzZWxlY3RlZC1maWxlIgp1Lmcu
-YShhKQphLnRvU3RyaW5nCnQ9Si5ZRShhKQppZihhLmdldEF0dHJpYnV0ZSgiZGF0YS0iK25ldyBXLlN5
-KG5ldyBXLmk3KGEpKS5PKCJuYW1lIikpPT09dGhpcy5hLmEpdC5nUChhKS5pKDAscykKZWxzZSB0LmdQ
-KGEpLlIoMCxzKX0sCiRTOjR9CkwuVEQucHJvdG90eXBlPXsKJDE6ZnVuY3Rpb24oYSl7cmV0dXJuIEwu
-dDIodS5PLmEoYSksITAsbnVsbCl9LAokUzoxN30KTC5YQS5wcm90b3R5cGU9ewpFYjpmdW5jdGlvbihh
-LGIsYyl7cmV0dXJuITB9LAppMDpmdW5jdGlvbihhKXtyZXR1cm4hMH0sCiRpa0Y6MX0KTC5aWi5wcm90
-b3R5cGU9e30KTC5POS5wcm90b3R5cGU9ewp3OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmJ9fQpNLmxJ
-LnByb3RvdHlwZT17CldPOmZ1bmN0aW9uKGEsYil7dmFyIHQscz1udWxsCk0uWUYoImFic29sdXRlIixI
-LlZNKFtiLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsXSx1LmkpKQp0PXRoaXMuYQp0PXQuWXIo
-Yik+MCYmIXQuaEsoYikKaWYodClyZXR1cm4gYgp0PUQuUlgoKQpyZXR1cm4gdGhpcy5xNygwLHQsYixz
-LHMscyxzLHMscyl9LAp0TTpmdW5jdGlvbihhKXt2YXIgdCxzLHI9WC5DTChhLHRoaXMuYSkKci5JVigp
-CnQ9ci5kCnM9dC5sZW5ndGgKaWYocz09PTApe3Q9ci5iCnJldHVybiB0PT1udWxsPyIuIjp0fWlmKHM9
-PT0xKXt0PXIuYgpyZXR1cm4gdD09bnVsbD8iLiI6dH1pZigwPj1zKXJldHVybiBILk9IKHQsLTEpCnQu
-cG9wKCkKQy5ObS5tdihyLmUpCnIuSVYoKQpyZXR1cm4gci53KDApfSwKcTc6ZnVuY3Rpb24oYSxiLGMs
-ZCxlLGYsZyxoLGkpe3ZhciB0PUguVk0oW2IsYyxkLGUsZixnLGgsaV0sdS5pKQpNLllGKCJqb2luIix0
-KQpyZXR1cm4gdGhpcy5JUChuZXcgSC5VNSh0LHUuZ2YuYShuZXcgTS5NaSgpKSx1LmZpKSl9LApJUDpm
-dW5jdGlvbihhKXt2YXIgdCxzLHIscSxwLG8sbixtLGwKdS5lUy5hKGEpCmZvcih0PWEuJHRpLHM9dC5D
-KCJhMihjWC5FKSIpLmEobmV3IE0ucTcoKSkscj1hLmdreihhKSx0PW5ldyBILlNPKHIscyx0LkMoIlNP
-PGNYLkU+IikpLHM9dGhpcy5hLHE9ITEscD0hMSxvPSIiO3QuRigpOyl7bj1ILmgoci5nbCgpKQppZihz
-LmhLKG4pJiZwKXttPVguQ0wobixzKQpsPW8uY2hhckNvZGVBdCgwKT09MD9vOm8Kbz1DLnhCLk5qKGws
-MCxzLlNwKGwsITApKQptLmI9bwppZihzLmRzKG8pKUMuTm0uWShtLmUsMCxzLmdtSSgpKQpvPSIiK20u
-dygwKX1lbHNlIGlmKHMuWXIobik+MCl7cD0hcy5oSyhuKQpvPSIiK0guRWoobil9ZWxzZXtpZighKG4u
-bGVuZ3RoPjAmJnMuVWQoblswXSkpKWlmKHEpbys9cy5nbUkoKQpvKz1ufXE9cy5kcyhuKX1yZXR1cm4g
-by5jaGFyQ29kZUF0KDApPT0wP286b30sCm81OmZ1bmN0aW9uKGEpe3ZhciB0CmlmKCF0aGlzLnkzKGEp
-KXJldHVybiBhCnQ9WC5DTChhLHRoaXMuYSkKdC5yUigpCnJldHVybiB0LncoMCl9LAp5MzpmdW5jdGlv
-bihhKXt2YXIgdCxzLHIscSxwLG8sbixtLGwsawphLnRvU3RyaW5nCnQ9dGhpcy5hCnM9dC5ZcihhKQpp
-ZihzIT09MCl7aWYodD09PSQuS2soKSlmb3Iocj0wO3I8czsrK3IpaWYoQy54Qi5XKGEscik9PT00Nyly
-ZXR1cm4hMApxPXMKcD00N31lbHNle3E9MApwPW51bGx9Zm9yKG89bmV3IEgucWooYSkuYSxuPW8ubGVu
-Z3RoLHI9cSxtPW51bGw7cjxuOysrcixtPXAscD1sKXtsPUMueEIubShvLHIpCmlmKHQucjQobCkpe2lm
-KHQ9PT0kLktrKCkmJmw9PT00NylyZXR1cm4hMAppZihwIT1udWxsJiZ0LnI0KHApKXJldHVybiEwCmlm
-KHA9PT00NilrPW09PW51bGx8fG09PT00Nnx8dC5yNChtKQplbHNlIGs9ITEKaWYoaylyZXR1cm4hMH19
-aWYocD09bnVsbClyZXR1cm4hMAppZih0LnI0KHApKXJldHVybiEwCmlmKHA9PT00Nil0PW09PW51bGx8
-fHQucjQobSl8fG09PT00NgplbHNlIHQ9ITEKaWYodClyZXR1cm4hMApyZXR1cm4hMX0sCkhQOmZ1bmN0
-aW9uKGEsYil7dmFyIHQscyxyLHEscCxvPXRoaXMsbj0nVW5hYmxlIHRvIGZpbmQgYSBwYXRoIHRvICIn
-CmI9by5XTygwLGIpCnQ9by5hCmlmKHQuWXIoYik8PTAmJnQuWXIoYSk+MClyZXR1cm4gby5vNShhKQpp
-Zih0LllyKGEpPD0wfHx0LmhLKGEpKWE9by5XTygwLGEpCmlmKHQuWXIoYSk8PTAmJnQuWXIoYik+MCl0
-aHJvdyBILmIoWC5JNyhuK0guRWooYSkrJyIgZnJvbSAiJytILkVqKGIpKyciLicpKQpzPVguQ0woYix0
-KQpzLnJSKCkKcj1YLkNMKGEsdCkKci5yUigpCnE9cy5kCmlmKHEubGVuZ3RoPjAmJkouUk0ocVswXSwi
-LiIpKXJldHVybiByLncoMCkKcT1zLmIKcD1yLmIKaWYocSE9cClxPXE9PW51bGx8fHA9PW51bGx8fCF0
-Lk5jKHEscCkKZWxzZSBxPSExCmlmKHEpcmV0dXJuIHIudygwKQp3aGlsZSghMCl7cT1zLmQKaWYocS5s
-ZW5ndGg+MCl7cD1yLmQKcT1wLmxlbmd0aD4wJiZ0Lk5jKHFbMF0scFswXSl9ZWxzZSBxPSExCmlmKCFx
-KWJyZWFrCkMuTm0uVzQocy5kLDApCkMuTm0uVzQocy5lLDEpCkMuTm0uVzQoci5kLDApCkMuTm0uVzQo
-ci5lLDEpfXE9cy5kCmlmKHEubGVuZ3RoPjAmJkouUk0ocVswXSwiLi4iKSl0aHJvdyBILmIoWC5JNyhu
-K0guRWooYSkrJyIgZnJvbSAiJytILkVqKGIpKyciLicpKQpxPXUuWApDLk5tLlVHKHIuZCwwLFAuTzgo
-cy5kLmxlbmd0aCwiLi4iLCExLHEpKQpDLk5tLlkoci5lLDAsIiIpCkMuTm0uVUcoci5lLDEsUC5POChz
-LmQubGVuZ3RoLHQuZ21JKCksITEscSkpCnQ9ci5kCnE9dC5sZW5ndGgKaWYocT09PTApcmV0dXJuIi4i
-CmlmKHE+MSYmSi5STShDLk5tLmdyWih0KSwiLiIpKXt0PXIuZAppZigwPj10Lmxlbmd0aClyZXR1cm4g
-SC5PSCh0LC0xKQp0LnBvcCgpCnQ9ci5lCkMuTm0ubXYodCkKQy5ObS5tdih0KQpDLk5tLmkodCwiIil9
-ci5iPSIiCnIuSVYoKQpyZXR1cm4gci53KDApfX0KTS5NaS5wcm90b3R5cGU9ewokMTpmdW5jdGlvbihh
-KXtyZXR1cm4gSC5oKGEpIT1udWxsfSwKJFM6MTh9Ck0ucTcucHJvdG90eXBlPXsKJDE6ZnVuY3Rpb24o
-YSl7cmV0dXJuIEguaChhKSE9PSIifSwKJFM6MTh9Ck0uTm8ucHJvdG90eXBlPXsKJDE6ZnVuY3Rpb24o
-YSl7SC5oKGEpCnJldHVybiBhPT1udWxsPyJudWxsIjonIicrYSsnIid9LAokUzo0OH0KQi5mdi5wcm90
-b3R5cGU9ewp4WjpmdW5jdGlvbihhKXt2YXIgdCxzPXRoaXMuWXIoYSkKaWYocz4wKXJldHVybiBKLmxk
-KGEsMCxzKQppZih0aGlzLmhLKGEpKXtpZigwPj1hLmxlbmd0aClyZXR1cm4gSC5PSChhLDApCnQ9YVsw
-XX1lbHNlIHQ9bnVsbApyZXR1cm4gdH0sCk5jOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9PWJ9fQpYLldE
-LnByb3RvdHlwZT17CklWOmZ1bmN0aW9uKCl7dmFyIHQscyxyPXRoaXMKd2hpbGUoITApe3Q9ci5kCmlm
-KCEodC5sZW5ndGghPT0wJiZKLlJNKEMuTm0uZ3JaKHQpLCIiKSkpYnJlYWsKdD1yLmQKaWYoMD49dC5s
-ZW5ndGgpcmV0dXJuIEguT0godCwtMSkKdC5wb3AoKQpDLk5tLm12KHIuZSl9dD1yLmUKcz10Lmxlbmd0
-aAppZihzPjApQy5ObS5ZKHQscy0xLCIiKX0sCnJSOmZ1bmN0aW9uKCl7dmFyIHQscyxyLHEscCxvLG4s
-bT10aGlzLGw9SC5WTShbXSx1LmkpCmZvcih0PW0uZCxzPXQubGVuZ3RoLHI9MCxxPTA7cTx0Lmxlbmd0
-aDt0Lmxlbmd0aD09PXN8fCgwLEgubGspKHQpLCsrcSl7cD10W3FdCm89Si5pYShwKQppZighKG8uRE4o
-cCwiLiIpfHxvLkROKHAsIiIpKSlpZihvLkROKHAsIi4uIikpaWYobC5sZW5ndGg+MClsLnBvcCgpCmVs
-c2UgKytyCmVsc2UgQy5ObS5pKGwscCl9aWYobS5iPT1udWxsKUMuTm0uVUcobCwwLFAuTzgociwiLi4i
-LCExLHUuWCkpCmlmKGwubGVuZ3RoPT09MCYmbS5iPT1udWxsKUMuTm0uaShsLCIuIikKbj1QLmRIKGwu
-bGVuZ3RoLG5ldyBYLnFSKG0pLCEwLHUuWCkKdD1tLmIKdD10IT1udWxsJiZsLmxlbmd0aD4wJiZtLmEu
-ZHModCk/bS5hLmdtSSgpOiIiCkgudDYobikuYy5hKHQpCmlmKCEhbi5maXhlZCRsZW5ndGgpSC52aChQ
-Lkw0KCJpbnNlcnQiKSkKbi5zcGxpY2UoMCwwLHQpCm0uc25KKGwpCm0uc1BoKG4pCnQ9bS5iCmlmKHQh
-PW51bGwmJm0uYT09PSQuS2soKSl7dC50b1N0cmluZwptLmI9SC55cyh0LCIvIiwiXFwiKX1tLklWKCl9
-LAp3OmZ1bmN0aW9uKGEpe3ZhciB0LHMscj10aGlzLHE9ci5iCnE9cSE9bnVsbD8iIitxOiIiCmZvcih0
-PTA7dDxyLmQubGVuZ3RoOysrdCl7cz1yLmUKaWYodD49cy5sZW5ndGgpcmV0dXJuIEguT0gocyx0KQpz
-PXErSC5FaihzW3RdKQpxPXIuZAppZih0Pj1xLmxlbmd0aClyZXR1cm4gSC5PSChxLHQpCnE9cytILkVq
-KHFbdF0pfXErPUguRWooQy5ObS5nclooci5lKSkKcmV0dXJuIHEuY2hhckNvZGVBdCgwKT09MD9xOnF9
-LApzbko6ZnVuY3Rpb24oYSl7dGhpcy5kPXUuZUcuYShhKX0sCnNQaDpmdW5jdGlvbihhKXt0aGlzLmU9
-dS5lRy5hKGEpfX0KWC5xUi5wcm90b3R5cGU9ewokMTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5hLmEu
-Z21JKCl9LAokUzo0OX0KWC5kdi5wcm90b3R5cGU9ewp3OmZ1bmN0aW9uKGEpe3JldHVybiJQYXRoRXhj
-ZXB0aW9uOiAiK3RoaXMuYX19Ck8uekwucHJvdG90eXBlPXsKdzpmdW5jdGlvbihhKXtyZXR1cm4gdGhp
-cy5nb2ModGhpcyl9fQpFLk9GLnByb3RvdHlwZT17ClVkOmZ1bmN0aW9uKGEpe3JldHVybiBDLnhCLnRn
-KGEsIi8iKX0sCnI0OmZ1bmN0aW9uKGEpe3JldHVybiBhPT09NDd9LApkczpmdW5jdGlvbihhKXt2YXIg
-dD1hLmxlbmd0aApyZXR1cm4gdCE9PTAmJkMueEIubShhLHQtMSkhPT00N30sClNwOmZ1bmN0aW9uKGEs
-Yil7aWYoYS5sZW5ndGghPT0wJiZDLnhCLlcoYSwwKT09PTQ3KXJldHVybiAxCnJldHVybiAwfSwKWXI6
-ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuU3AoYSwhMSl9LApoSzpmdW5jdGlvbihhKXtyZXR1cm4hMX0s
-CmdvYzpmdW5jdGlvbigpe3JldHVybiJwb3NpeCJ9LApnbUk6ZnVuY3Rpb24oKXtyZXR1cm4iLyJ9fQpG
-LnJ1LnByb3RvdHlwZT17ClVkOmZ1bmN0aW9uKGEpe3JldHVybiBDLnhCLnRnKGEsIi8iKX0sCnI0OmZ1
-bmN0aW9uKGEpe3JldHVybiBhPT09NDd9LApkczpmdW5jdGlvbihhKXt2YXIgdD1hLmxlbmd0aAppZih0
-PT09MClyZXR1cm4hMQppZihDLnhCLm0oYSx0LTEpIT09NDcpcmV0dXJuITAKcmV0dXJuIEMueEIuVGMo
-YSwiOi8vIikmJnRoaXMuWXIoYSk9PT10fSwKU3A6ZnVuY3Rpb24oYSxiKXt2YXIgdCxzLHIscSxwPWEu
-bGVuZ3RoCmlmKHA9PT0wKXJldHVybiAwCmlmKEMueEIuVyhhLDApPT09NDcpcmV0dXJuIDEKZm9yKHQ9
-MDt0PHA7Kyt0KXtzPUMueEIuVyhhLHQpCmlmKHM9PT00NylyZXR1cm4gMAppZihzPT09NTgpe2lmKHQ9
-PT0wKXJldHVybiAwCnI9Qy54Qi5YVShhLCIvIixDLnhCLlFpKGEsIi8vIix0KzEpP3QrMzp0KQppZihy
-PD0wKXJldHVybiBwCmlmKCFifHxwPHIrMylyZXR1cm4gcgppZighQy54Qi5uKGEsImZpbGU6Ly8iKSly
-ZXR1cm4gcgppZighQi5ZdShhLHIrMSkpcmV0dXJuIHIKcT1yKzMKcmV0dXJuIHA9PT1xP3E6cis0fX1y
-ZXR1cm4gMH0sCllyOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLlNwKGEsITEpfSwKaEs6ZnVuY3Rpb24o
-YSl7cmV0dXJuIGEubGVuZ3RoIT09MCYmQy54Qi5XKGEsMCk9PT00N30sCmdvYzpmdW5jdGlvbigpe3Jl
-dHVybiJ1cmwifSwKZ21JOmZ1bmN0aW9uKCl7cmV0dXJuIi8ifX0KTC5JVi5wcm90b3R5cGU9ewpVZDpm
-dW5jdGlvbihhKXtyZXR1cm4gQy54Qi50ZyhhLCIvIil9LApyNDpmdW5jdGlvbihhKXtyZXR1cm4gYT09
-PTQ3fHxhPT09OTJ9LApkczpmdW5jdGlvbihhKXt2YXIgdD1hLmxlbmd0aAppZih0PT09MClyZXR1cm4h
-MQp0PUMueEIubShhLHQtMSkKcmV0dXJuISh0PT09NDd8fHQ9PT05Mil9LApTcDpmdW5jdGlvbihhLGIp
-e3ZhciB0LHMscj1hLmxlbmd0aAppZihyPT09MClyZXR1cm4gMAp0PUMueEIuVyhhLDApCmlmKHQ9PT00
-NylyZXR1cm4gMQppZih0PT09OTIpe2lmKHI8Mnx8Qy54Qi5XKGEsMSkhPT05MilyZXR1cm4gMQpzPUMu
-eEIuWFUoYSwiXFwiLDIpCmlmKHM+MCl7cz1DLnhCLlhVKGEsIlxcIixzKzEpCmlmKHM+MClyZXR1cm4g
-c31yZXR1cm4gcn1pZihyPDMpcmV0dXJuIDAKaWYoIUIuT1ModCkpcmV0dXJuIDAKaWYoQy54Qi5XKGEs
-MSkhPT01OClyZXR1cm4gMApyPUMueEIuVyhhLDIpCmlmKCEocj09PTQ3fHxyPT09OTIpKXJldHVybiAw
-CnJldHVybiAzfSwKWXI6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuU3AoYSwhMSl9LApoSzpmdW5jdGlv
-bihhKXtyZXR1cm4gdGhpcy5ZcihhKT09PTF9LApPdDpmdW5jdGlvbihhLGIpe3ZhciB0CmlmKGE9PT1i
-KXJldHVybiEwCmlmKGE9PT00NylyZXR1cm4gYj09PTkyCmlmKGE9PT05MilyZXR1cm4gYj09PTQ3Cmlm
-KChhXmIpIT09MzIpcmV0dXJuITEKdD1hfDMyCnJldHVybiB0Pj05NyYmdDw9MTIyfSwKTmM6ZnVuY3Rp
-b24oYSxiKXt2YXIgdCxzLHIKaWYoYT09YilyZXR1cm4hMAp0PWEubGVuZ3RoCmlmKHQhPT1iLmxlbmd0
-aClyZXR1cm4hMQpmb3Iocz1KLnJZKGIpLHI9MDtyPHQ7KytyKWlmKCF0aGlzLk90KEMueEIuVyhhLHIp
-LHMuVyhiLHIpKSlyZXR1cm4hMQpyZXR1cm4hMH0sCmdvYzpmdW5jdGlvbigpe3JldHVybiJ3aW5kb3dz
-In0sCmdtSTpmdW5jdGlvbigpe3JldHVybiJcXCJ9fTsoZnVuY3Rpb24gYWxpYXNlcygpe3ZhciB0PUou
-dkIucHJvdG90eXBlCnQuVT10LncKdC5Taj10LmU3CnQ9Si5NRi5wcm90b3R5cGUKdC50PXQudwp0PVAu
-Y1gucHJvdG90eXBlCnQuR0c9dC5ldgp0PVAuTWgucHJvdG90eXBlCnQueGI9dC53CnQ9Vy5jdi5wcm90
-b3R5cGUKdC5EVz10LnI2CnQ9Vy5tNi5wcm90b3R5cGUKdC5qRj10LkViCnQ9UC5FNC5wcm90b3R5cGUK
-dC5Vcj10LnEKdC5lND10Lll9KSgpOyhmdW5jdGlvbiBpbnN0YWxsVGVhck9mZnMoKXt2YXIgdD1odW5r
-SGVscGVycy5fc3RhdGljXzEscz1odW5rSGVscGVycy5fc3RhdGljXzAscj1odW5rSGVscGVycy5pbnN0
-YWxsSW5zdGFuY2VUZWFyT2ZmLHE9aHVua0hlbHBlcnMuaW5zdGFsbFN0YXRpY1RlYXJPZmYscD1odW5r
-SGVscGVycy5faW5zdGFuY2VfMXUKdChQLCJFWCIsIlpWIiw5KQp0KFAsInl0Iiwib0EiLDkpCnQoUCwi
-cVciLCJCeiIsOSkKcyhQLCJWOSIsImVOIiwxKQpyKFAuUGYucHJvdG90eXBlLCJnWUoiLDAsMSxudWxs
-LFsiJDIiLCIkMSJdLFsidzAiLCJwbSJdLDM0LDApCnQoUCwiUEgiLCJNdCIsNikKcShXLCJwUyIsNCxu
-dWxsLFsiJDQiXSxbInlXIl0sMTAsMCkKcShXLCJWNCIsNCxudWxsLFsiJDQiXSxbIlFXIl0sMTAsMCkK
-cChQLkFzLnByb3RvdHlwZSwiZ3VNIiwiVCIsNikKdChQLCJpRyIsIndZIiw1MikKdChQLCJ3MCIsIkw3
-IiwzNSkKdChMLCJpUyIsImk2IiwxNyl9KSgpOyhmdW5jdGlvbiBpbmhlcml0YW5jZSgpe3ZhciB0PWh1
-bmtIZWxwZXJzLm1peGluLHM9aHVua0hlbHBlcnMuaW5oZXJpdCxyPWh1bmtIZWxwZXJzLmluaGVyaXRN
-YW55CnMoUC5NaCxudWxsKQpyKFAuTWgsW0guRkssSi52QixKLm0xLFAuWFMsUC5uWSxQLmNYLEguYTcs
-UC5BbixILlNVLEguUmUsSC53dixQLlBuLEguV1UsSC5MSSxILnYsSC5mOSxILmJxLEguWE8sUC5ZayxI
-LmRiLEguTjYsSC5WUixILkVLLEguUGIsSC50USxILlNkLEguSmMsSC5HLFAuVzMsUC5paCxQLkZ5LFAu
-R1YsUC5iOCxQLlBmLFAuRmUsUC52cyxQLk9NLFAucWgsUC5NTyxQLmtULFAueEksUC5DdyxQLm0wLFAu
-WHYsUC5ibixQLmxtLFAubEQsUC5LUCxQLk1hLFAuV1ksUC5VayxQLlJ3LFAuYnosUC5hMixQLmlQLFAu
-bGYsUC5rNSxQLktZLFAuQ0QsUC5hRSxQLkVILFAuek0sUC5aMCxQLk4zLFAuYzgsUC5PZCxQLmliLFAu
-R3osUC5aZCxQLnFVLFAuUm4sUC5HRCxQLkRuLFAuUEUsUC5VZixXLmlkLFcuRmssVy5KUSxXLkdtLFcu
-dkQsVy5tNixXLk93LFcuVzksVy5kVyxXLkZiLFcua0YsVy5tayxXLktvLFAuaUosUC5FNCxQLm42LFUu
-ZDIsVS5TZSxVLk1sLFUueUQsVS53YixCLmo4LEIucXAsVC5tUSxMLlhBLEwuWlosTC5POSxNLmxJLE8u
-ekwsWC5XRCxYLmR2XSkKcihKLnZCLFtKLnlFLEoud2UsSi5NRixKLmpkLEoucUksSi5EcixILkVULFcu
-RDAsVy5BeixXLkxlLFcuTmgsVy5hZSxXLklCLFcubjcsVy5lYSxXLmJyLFcuU2csVy51OCxXLks3LFcu
-WFcsUC5oRl0pCnIoSi5NRixbSi5pQyxKLmtkLEouYzVdKQpzKEouUG8sSi5qZCkKcihKLnFJLFtKLnVy
-LEouVkFdKQpyKFAuWFMsW0gubmQsSC5XMCxILmF6LEgudlYsSC5FcSxQLkM2LEgudTksUC5uLFAudSxQ
-Lm1wLFAudWIsUC5kcyxQLmxqLFAuVVYsUC5jXSkKcyhQLkxVLFAublkpCnIoUC5MVSxbSC53MixXLnd6
-LFcuZTddKQpzKEgucWosSC53MikKcihQLmNYLFtILmJRLEguaTEsSC5VNSxILlhSLFAubVcsSC51bl0p
-CnIoSC5iUSxbSC5hTCxILmk1LFAueHVdKQpyKEguYUwsW0gubkgsSC5sSixQLmk4XSkKcyhILnh5LEgu
-aTEpCnIoUC5BbixbSC5NSCxILlNPXSkKcyhQLlJVLFAuUG4pCnMoUC5HaixQLlJVKQpzKEguUEQsUC5H
-aikKcyhILkxQLEguV1UpCnIoSC52LFtILkNqLEguQW0sSC5sYyxILmRDLEgud04sSC5WWCxQLnRoLFAu
-aGEsUC5WcyxQLkZ0LFAueUgsUC5XTSxQLlNYLFAuR3MsUC5kYSxQLm9RLFAucFYsUC5VNyxQLnZyLFAu
-cnQsUC5LRixQLlpMLFAuUlQsUC5qWixQLnJxLFAuUlcsUC5CNSxQLnVPLFAucEssUC5oaixQLlZwLFAu
-T1IsUC5yYSxQLnlRLFAucGcsUC5XRixQLm4xLFAuY1MsUC5WQyxQLkpULFAuUlosUC5NRSxQLnk1LFAu
-cTMsUC55SSxQLmM2LFAucWQsVy5DdixXLmJVLFcuaEgsVy5LUyxXLkEzLFcudk4sVy5VdixXLkVnLFcu
-RW8sVy5XayxXLklBLFcuZm0sUC5qZyxQLlRhLFAuR0UsUC5ONyxQLnVRLFAuUEMsUC5tdCxQLk56LFAu
-UVMsUC5ucCxMLmUsTC5WVyxMLm9aLEwuanIsTC5xbCxMLkhpLEwuQlQsTC5QWSxMLkwsTC5XeCxMLkFP
-LEwuZE4sTC5IbyxMLnh6LEwuSUMsTC5MMSxMLm5ULEwuTlksTC5lWCxMLkRULEwuZUgsTC55dSxMLnpE
-LEwuVFcsTC54cixMLkVFLEwuUUwsTC5WUyxMLlRELE0uTWksTS5xNyxNLk5vLFgucVJdKQpyKEgubGMs
-W0guengsSC5yVF0pCnMoSC5rWSxQLkM2KQpzKFAuaWwsUC5ZaykKcihQLmlsLFtILk41LFAudXcsVy5j
-ZixXLlN5XSkKcihQLm1XLFtILktXLFAucTRdKQpzKEguYjAsSC5FVCkKcihILmIwLFtILlJHLEguV0Jd
-KQpzKEguVlAsSC5SRykKcyhILkRnLEguVlApCnMoSC5aRyxILldCKQpzKEguUGcsSC5aRykKcihILlBn
-LFtILnhqLEguZEUsSC5aQSxILmRULEguUHEsSC5lRSxILlY2XSkKcyhILmlNLEgudTkpCnMoUC5aZixQ
-LlBmKQpzKFAuSmksUC5tMCkKcyhQLmI2LFAuWHYpCnMoUC5WaixQLldZKQpyKFAuVWssW1AuQ1YsUC5a
-aSxQLmJ5XSkKcyhQLndJLFAua1QpCnIoUC53SSxbUC5VOCxQLk14LFAuRTMsUC5HWV0pCnMoUC51NSxQ
-LlppKQpyKFAubGYsW1AuQ1AsUC5JZl0pCnIoUC51LFtQLmJKLFAuZVldKQpzKFAucWUsUC5EbikKcihX
-LkQwLFtXLnVILFcud2EsVy5LNSxXLkNtXSkKcihXLnVILFtXLmN2LFcubngsVy5RRixXLkNRXSkKcihX
-LmN2LFtXLnFFLFAuZDVdKQpyKFcucUUsW1cuR2gsVy5mWSxXLm5CLFcuUVAsVy5oNCxXLlNOLFcubHAs
-Vy5UYixXLkl2LFcuV1AsVy55WV0pCnMoVy5vSixXLkxlKQpzKFcuVDUsVy5BeikKcyhXLlZiLFcuUUYp
-CnMoVy5mSixXLndhKQpyKFcuZWEsW1cudzYsVy5ld10pCnMoVy5PSyxXLnc2KQpzKFcuckIsVy5LNykK
-cyhXLkJILFcuckIpCnMoVy53NCxXLklCKQpzKFcub2EsVy5YVykKcyhXLnJoLFcub2EpCnMoVy5pNyxX
-LmNmKQpzKFAuQXMsUC5WaikKcihQLkFzLFtXLkk0LFAuS2VdKQpzKFcuUk8sUC5xaCkKcyhXLmV1LFcu
-Uk8pCnMoVy54QyxQLk1PKQpzKFcuY3QsVy5tNikKcyhQLkJmLFAuaUopCnIoUC5FNCxbUC5yNyxQLmNv
-XSkKcyhQLlR6LFAuY28pCnMoUC5iQixQLmQ1KQpzKEIuZnYsTy56TCkKcihCLmZ2LFtFLk9GLEYucnUs
-TC5JVl0pCnQoSC53MixILlJlKQp0KEguUkcsUC5sRCkKdChILlZQLEguU1UpCnQoSC5XQixQLmxEKQp0
-KEguWkcsSC5TVSkKdChQLm5ZLFAubEQpCnQoUC5XWSxQLk1hKQp0KFAuUlUsUC5LUCkKdChXLkxlLFcu
-aWQpCnQoVy5LNyxQLmxEKQp0KFcuckIsVy5HbSkKdChXLlhXLFAubEQpCnQoVy5vYSxXLkdtKQp0KFAu
-Y28sUC5sRCl9KSgpCnZhciB2PXt0eXBlVW5pdmVyc2U6e2VDOm5ldyBNYXAoKSx0Ujp7fSxlVDp7fSx0
-UFY6e30sc0VBOltdfSxtYW5nbGVkR2xvYmFsTmFtZXM6e0lmOiJpbnQiLENQOiJkb3VibGUiLGxmOiJu
-dW0iLHFVOiJTdHJpbmciLGEyOiJib29sIixjODoiTnVsbCIsek06Ikxpc3QifSxtYW5nbGVkTmFtZXM6
-e30sZ2V0VHlwZUZyb21OYW1lOmdldEdsb2JhbEZyb21OYW1lLG1ldGFkYXRhOltdLHR5cGVzOlsiYzgo
-KSIsIn4oKSIsImM4KEAsQCkiLCJjOChPSyopIiwiYzgoY3YqKSIsIkAoQCkiLCJxVShxVSkiLCJjOChx
-VSxxVSkiLCJjOChmSiopIiwifih+KCkpIiwiYTIoY3YscVUscVUsSlEpIiwiYzgoQCkiLCJjOChxVSxA
-KSIsImEyKGtGKSIsImEyKHFVKSIsIn4oeHU8cVU+KSIsImM4KGVhKikiLCJ+KE9LKikiLCJhMioocVUq
-KSIsIlowPHFVLHFVPihaMDxxVSxxVT4scVUpIiwiSWYoSWYsSWYpIiwiQChALHFVKSIsIn4ocVUscVU/
-KSIsIm42KElmKSIsIm42KEAsQCkiLCJhMih1SCkiLCJjOChALEd6KSIsImM4KGV3KSIsIkAoZWEpIiwi
-fihAKSIsImM4KH4oKSkiLCJ+KHVILHVIPykiLCJjOChJZixAKSIsImEyKHh1PHFVPikiLCJ+KE1oW0d6
-P10pIiwiTWg/KEApIiwiVHo8QD4oQCkiLCJFNChAKSIsImM4KE1oLEd6KSIsInZzPEA+KEApIiwiYzgo
-WjA8cVUqLE1oKj4qKSIsImI4PGM4PiooT0sqKSIsInFVKihPSyopIiwiYzgoTWg/LE1oPykiLCJjOChl
-dyopIiwiQCgpIiwiYzgoR0QsQCkiLCJAKHFVKSIsInFVKihxVSopIiwicVUqKElmKikiLCJ+KHFVLElm
-KSIsIn4ocVVbQF0pIiwiTWg/KE1oPykiLCJyNyhAKSJdLGludGVyY2VwdG9yc0J5VGFnOm51bGwsbGVh
-ZlRhZ3M6bnVsbCxhcnJheVJ0aTp0eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZ0eXBlb2YgU3ltYm9s
-KCk9PSJzeW1ib2wiP1N5bWJvbCgiJHRpIik6IiR0aSJ9CkgueGIodi50eXBlVW5pdmVyc2UsSlNPTi5w
-YXJzZSgneyJjNSI6Ik1GIiwiaUMiOiJNRiIsImtkIjoiTUYiLCJyeCI6ImVhIiwiZTUiOiJlYSIsIlkw
-IjoiZDUiLCJ0cCI6ImQ1IiwiRzgiOiJldyIsIk1yIjoicUUiLCJlTCI6InFFIiwiSTAiOiJ1SCIsImhz
-IjoidUgiLCJYZyI6IlFGIiwieWMiOiJPSyIsInk0IjoidzYiLCJhUCI6IkNtIiwieGMiOiJueCIsImtK
-IjoibngiLCJ6VSI6IkRnIiwiZGYiOiJFVCIsInlFIjp7ImEyIjpbXX0sIndlIjp7ImM4IjpbXX0sIk1G
-Ijp7InZtIjpbXSwiRUgiOltdfSwiamQiOnsiek0iOlsiMSJdLCJiUSI6WyIxIl0sImNYIjpbIjEiXX0s
-IlBvIjp7ImpkIjpbIjEiXSwiek0iOlsiMSJdLCJiUSI6WyIxIl0sImNYIjpbIjEiXX0sIm0xIjp7IkFu
-IjpbIjEiXX0sInFJIjp7IkNQIjpbXSwibGYiOltdfSwidXIiOnsiSWYiOltdLCJDUCI6W10sImxmIjpb
-XX0sIlZBIjp7IkNQIjpbXSwibGYiOltdfSwiRHIiOnsicVUiOltdLCJ2WCI6W119LCJuZCI6eyJYUyI6
-W119LCJxaiI6eyJSZSI6WyJJZiJdLCJsRCI6WyJJZiJdLCJ6TSI6WyJJZiJdLCJiUSI6WyJJZiJdLCJj
-WCI6WyJJZiJdLCJsRC5FIjoiSWYiLCJSZS5FIjoiSWYifSwiYlEiOnsiY1giOlsiMSJdfSwiYUwiOnsi
-YlEiOlsiMSJdLCJjWCI6WyIxIl19LCJuSCI6eyJhTCI6WyIxIl0sImJRIjpbIjEiXSwiY1giOlsiMSJd
-LCJhTC5FIjoiMSIsImNYLkUiOiIxIn0sImE3Ijp7IkFuIjpbIjEiXX0sImkxIjp7ImNYIjpbIjIiXSwi
-Y1guRSI6IjIifSwieHkiOnsiaTEiOlsiMSIsIjIiXSwiYlEiOlsiMiJdLCJjWCI6WyIyIl0sImNYLkUi
-OiIyIn0sIk1IIjp7IkFuIjpbIjIiXX0sImxKIjp7ImFMIjpbIjIiXSwiYlEiOlsiMiJdLCJjWCI6WyIy
-Il0sImFMLkUiOiIyIiwiY1guRSI6IjIifSwiVTUiOnsiY1giOlsiMSJdLCJjWC5FIjoiMSJ9LCJTTyI6
-eyJBbiI6WyIxIl19LCJ3MiI6eyJSZSI6WyIxIl0sImxEIjpbIjEiXSwiek0iOlsiMSJdLCJiUSI6WyIx
-Il0sImNYIjpbIjEiXX0sInd2Ijp7IkdEIjpbXX0sIlBEIjp7IkdqIjpbIjEiLCIyIl0sIlJVIjpbIjEi
-LCIyIl0sIlBuIjpbIjEiLCIyIl0sIktQIjpbIjEiLCIyIl0sIlowIjpbIjEiLCIyIl19LCJXVSI6eyJa
-MCI6WyIxIiwiMiJdfSwiTFAiOnsiV1UiOlsiMSIsIjIiXSwiWjAiOlsiMSIsIjIiXX0sIlhSIjp7ImNY
-IjpbIjEiXSwiY1guRSI6IjEifSwiTEkiOnsidlEiOltdfSwiVzAiOnsiWFMiOltdfSwiYXoiOnsiWFMi
-OltdfSwidlYiOnsiWFMiOltdfSwiWE8iOnsiR3oiOltdfSwidiI6eyJFSCI6W119LCJsYyI6eyJFSCI6
-W119LCJ6eCI6eyJFSCI6W119LCJyVCI6eyJFSCI6W119LCJFcSI6eyJYUyI6W119LCJrWSI6eyJYUyI6
-W119LCJONSI6eyJGbyI6WyIxIiwiMiJdLCJZayI6WyIxIiwiMiJdLCJaMCI6WyIxIiwiMiJdLCJZay5L
-IjoiMSIsIllrLlYiOiIyIn0sImk1Ijp7ImJRIjpbIjEiXSwiY1giOlsiMSJdLCJjWC5FIjoiMSJ9LCJO
-NiI6eyJBbiI6WyIxIl19LCJWUiI6eyJ3TCI6W10sInZYIjpbXX0sIkVLIjp7ImliIjpbXSwiT2QiOltd
-fSwiS1ciOnsiY1giOlsiaWIiXSwiY1guRSI6ImliIn0sIlBiIjp7IkFuIjpbImliIl19LCJ0USI6eyJP
-ZCI6W119LCJ1biI6eyJjWCI6WyJPZCJdLCJjWC5FIjoiT2QifSwiU2QiOnsiQW4iOlsiT2QiXX0sIkVU
-Ijp7IkFTIjpbXX0sImIwIjp7IlhqIjpbIjEiXSwiRVQiOltdLCJBUyI6W119LCJEZyI6eyJsRCI6WyJD
-UCJdLCJYaiI6WyJDUCJdLCJ6TSI6WyJDUCJdLCJFVCI6W10sImJRIjpbIkNQIl0sIlNVIjpbIkNQIl0s
-IkFTIjpbXSwiY1giOlsiQ1AiXSwibEQuRSI6IkNQIn0sIlBnIjp7ImxEIjpbIklmIl0sInpNIjpbIklm
-Il0sIlhqIjpbIklmIl0sIkVUIjpbXSwiYlEiOlsiSWYiXSwiU1UiOlsiSWYiXSwiQVMiOltdLCJjWCI6
-WyJJZiJdfSwieGoiOnsibEQiOlsiSWYiXSwiek0iOlsiSWYiXSwiWGoiOlsiSWYiXSwiRVQiOltdLCJi
-USI6WyJJZiJdLCJTVSI6WyJJZiJdLCJBUyI6W10sImNYIjpbIklmIl0sImxELkUiOiJJZiJ9LCJkRSI6
-eyJsRCI6WyJJZiJdLCJ6TSI6WyJJZiJdLCJYaiI6WyJJZiJdLCJFVCI6W10sImJRIjpbIklmIl0sIlNV
-IjpbIklmIl0sIkFTIjpbXSwiY1giOlsiSWYiXSwibEQuRSI6IklmIn0sIlpBIjp7ImxEIjpbIklmIl0s
-InpNIjpbIklmIl0sIlhqIjpbIklmIl0sIkVUIjpbXSwiYlEiOlsiSWYiXSwiU1UiOlsiSWYiXSwiQVMi
-OltdLCJjWCI6WyJJZiJdLCJsRC5FIjoiSWYifSwiZFQiOnsibEQiOlsiSWYiXSwiek0iOlsiSWYiXSwi
-WGoiOlsiSWYiXSwiRVQiOltdLCJiUSI6WyJJZiJdLCJTVSI6WyJJZiJdLCJBUyI6W10sImNYIjpbIklm
-Il0sImxELkUiOiJJZiJ9LCJQcSI6eyJsRCI6WyJJZiJdLCJ6TSI6WyJJZiJdLCJYaiI6WyJJZiJdLCJF
-VCI6W10sImJRIjpbIklmIl0sIlNVIjpbIklmIl0sIkFTIjpbXSwiY1giOlsiSWYiXSwibEQuRSI6Iklm
-In0sImVFIjp7ImxEIjpbIklmIl0sInpNIjpbIklmIl0sIlhqIjpbIklmIl0sIkVUIjpbXSwiYlEiOlsi
-SWYiXSwiU1UiOlsiSWYiXSwiQVMiOltdLCJjWCI6WyJJZiJdLCJsRC5FIjoiSWYifSwiVjYiOnsibjYi
-OltdLCJsRCI6WyJJZiJdLCJ6TSI6WyJJZiJdLCJYaiI6WyJJZiJdLCJFVCI6W10sImJRIjpbIklmIl0s
-IlNVIjpbIklmIl0sIkFTIjpbXSwiY1giOlsiSWYiXSwibEQuRSI6IklmIn0sInU5Ijp7IlhTIjpbXX0s
-ImlNIjp7IlhTIjpbXX0sIkdWIjp7IkFuIjpbIjEiXX0sInE0Ijp7ImNYIjpbIjEiXSwiY1guRSI6IjEi
-fSwiWmYiOnsiUGYiOlsiMSJdfSwidnMiOnsiYjgiOlsiMSJdfSwiQ3ciOnsiWFMiOltdfSwibTAiOnsi
-SkIiOltdfSwiSmkiOnsibTAiOltdLCJKQiI6W119LCJiNiI6eyJYdiI6WyIxIl0sInh1IjpbIjEiXSwi
-YlEiOlsiMSJdLCJjWCI6WyIxIl19LCJsbSI6eyJBbiI6WyIxIl19LCJtVyI6eyJjWCI6WyIxIl19LCJM
-VSI6eyJsRCI6WyIxIl0sInpNIjpbIjEiXSwiYlEiOlsiMSJdLCJjWCI6WyIxIl19LCJpbCI6eyJZayI6
-WyIxIiwiMiJdLCJaMCI6WyIxIiwiMiJdfSwiWWsiOnsiWjAiOlsiMSIsIjIiXX0sIlBuIjp7IlowIjpb
-IjEiLCIyIl19LCJHaiI6eyJSVSI6WyIxIiwiMiJdLCJQbiI6WyIxIiwiMiJdLCJLUCI6WyIxIiwiMiJd
-LCJaMCI6WyIxIiwiMiJdfSwiVmoiOnsiTWEiOlsiMSJdLCJ4dSI6WyIxIl0sImJRIjpbIjEiXSwiY1gi
-OlsiMSJdfSwiWHYiOnsieHUiOlsiMSJdLCJiUSI6WyIxIl0sImNYIjpbIjEiXX0sInV3Ijp7IllrIjpb
-InFVIiwiQCJdLCJaMCI6WyJxVSIsIkAiXSwiWWsuSyI6InFVIiwiWWsuViI6IkAifSwiaTgiOnsiYUwi
-OlsicVUiXSwiYlEiOlsicVUiXSwiY1giOlsicVUiXSwiYUwuRSI6InFVIiwiY1guRSI6InFVIn0sIkNW
-Ijp7IlVrIjpbInpNPElmPiIsInFVIl0sIlVrLlMiOiJ6TTxJZj4ifSwiVTgiOnsid0kiOlsiek08SWY+
-IiwicVUiXX0sIlppIjp7IlVrIjpbInFVIiwiek08SWY+Il19LCJieSI6eyJVayI6WyJNaD8iLCJxVSJd
-LCJVay5TIjoiTWg/In0sIk14Ijp7IndJIjpbInFVIiwiTWg/Il19LCJ1NSI6eyJVayI6WyJxVSIsInpN
-PElmPiJdLCJVay5TIjoicVUifSwiRTMiOnsid0kiOlsicVUiLCJ6TTxJZj4iXX0sIkdZIjp7IndJIjpb
-InpNPElmPiIsInFVIl19LCJDUCI6eyJsZiI6W119LCJDNiI6eyJYUyI6W119LCJuIjp7IlhTIjpbXX0s
-InUiOnsiWFMiOltdfSwiYkoiOnsiWFMiOltdfSwiZVkiOnsiWFMiOltdfSwibXAiOnsiWFMiOltdfSwi
-dWIiOnsiWFMiOltdfSwiZHMiOnsiWFMiOltdfSwibGoiOnsiWFMiOltdfSwiVVYiOnsiWFMiOltdfSwi
-azUiOnsiWFMiOltdfSwiS1kiOnsiWFMiOltdfSwiYyI6eyJYUyI6W119LCJJZiI6eyJsZiI6W119LCJ6
-TSI6eyJiUSI6WyIxIl0sImNYIjpbIjEiXX0sImliIjp7Ik9kIjpbXX0sInh1Ijp7ImJRIjpbIjEiXSwi
-Y1giOlsiMSJdfSwiWmQiOnsiR3oiOltdfSwicVUiOnsidlgiOltdfSwiUm4iOnsiQkwiOltdfSwiRG4i
-OnsiaUQiOltdfSwiVWYiOnsiaUQiOltdfSwicWUiOnsiaUQiOltdfSwicUUiOnsiY3YiOltdLCJ1SCI6
-W10sIkQwIjpbXX0sIkdoIjp7ImN2IjpbXSwidUgiOltdLCJEMCI6W119LCJmWSI6eyJjdiI6W10sInVI
-IjpbXSwiRDAiOltdfSwibkIiOnsiY3YiOltdLCJ1SCI6W10sIkQwIjpbXX0sIlFQIjp7ImN2IjpbXSwi
-dUgiOltdLCJEMCI6W119LCJueCI6eyJ1SCI6W10sIkQwIjpbXX0sIlFGIjp7InVIIjpbXSwiRDAiOltd
-fSwiSUIiOnsidG4iOlsibGYiXX0sInd6Ijp7ImxEIjpbIjEiXSwiek0iOlsiMSJdLCJiUSI6WyIxIl0s
-ImNYIjpbIjEiXSwibEQuRSI6IjEifSwiY3YiOnsidUgiOltdLCJEMCI6W119LCJUNSI6eyJBeiI6W119
-LCJoNCI6eyJjdiI6W10sInVIIjpbXSwiRDAiOltdfSwiVmIiOnsidUgiOltdLCJEMCI6W119LCJmSiI6
-eyJEMCI6W119LCJ3YSI6eyJEMCI6W119LCJPSyI6eyJlYSI6W119LCJlNyI6eyJsRCI6WyJ1SCJdLCJ6
-TSI6WyJ1SCJdLCJiUSI6WyJ1SCJdLCJjWCI6WyJ1SCJdLCJsRC5FIjoidUgifSwidUgiOnsiRDAiOltd
-fSwiQkgiOnsiR20iOlsidUgiXSwibEQiOlsidUgiXSwiek0iOlsidUgiXSwiWGoiOlsidUgiXSwiYlEi
-OlsidUgiXSwiY1giOlsidUgiXSwiR20uRSI6InVIIiwibEQuRSI6InVIIn0sIlNOIjp7ImN2IjpbXSwi
-dUgiOltdLCJEMCI6W119LCJldyI6eyJlYSI6W119LCJscCI6eyJjdiI6W10sInVIIjpbXSwiRDAiOltd
-fSwiVGIiOnsiY3YiOltdLCJ1SCI6W10sIkQwIjpbXX0sIkl2Ijp7ImN2IjpbXSwidUgiOltdLCJEMCI6
-W119LCJXUCI6eyJjdiI6W10sInVIIjpbXSwiRDAiOltdfSwieVkiOnsiY3YiOltdLCJ1SCI6W10sIkQw
-IjpbXX0sInc2Ijp7ImVhIjpbXX0sIks1Ijp7InY2IjpbXSwiRDAiOltdfSwiQ20iOnsiRDAiOltdfSwi
-Q1EiOnsidUgiOltdLCJEMCI6W119LCJ3NCI6eyJ0biI6WyJsZiJdfSwicmgiOnsiR20iOlsidUgiXSwi
-bEQiOlsidUgiXSwiek0iOlsidUgiXSwiWGoiOlsidUgiXSwiYlEiOlsidUgiXSwiY1giOlsidUgiXSwi
-R20uRSI6InVIIiwibEQuRSI6InVIIn0sImNmIjp7IllrIjpbInFVIiwicVUiXSwiWjAiOlsicVUiLCJx
-VSJdfSwiaTciOnsiWWsiOlsicVUiLCJxVSJdLCJaMCI6WyJxVSIsInFVIl0sIllrLksiOiJxVSIsIllr
-LlYiOiJxVSJ9LCJTeSI6eyJZayI6WyJxVSIsInFVIl0sIlowIjpbInFVIiwicVUiXSwiWWsuSyI6InFV
-IiwiWWsuViI6InFVIn0sIkk0Ijp7Ik1hIjpbInFVIl0sInh1IjpbInFVIl0sImJRIjpbInFVIl0sImNY
-IjpbInFVIl19LCJSTyI6eyJxaCI6WyIxIl19LCJldSI6eyJSTyI6WyIxIl0sInFoIjpbIjEiXX0sInhD
-Ijp7Ik1PIjpbIjEiXX0sIkpRIjp7ImtGIjpbXX0sInZEIjp7ImtGIjpbXX0sIm02Ijp7ImtGIjpbXX0s
-ImN0Ijp7ImtGIjpbXX0sIk93Ijp7ImtGIjpbXX0sIlc5Ijp7IkFuIjpbIjEiXX0sImRXIjp7InY2Ijpb
-XSwiRDAiOltdfSwibWsiOnsieTAiOltdfSwiS28iOnsib24iOltdfSwiQXMiOnsiTWEiOlsicVUiXSwi
-eHUiOlsicVUiXSwiYlEiOlsicVUiXSwiY1giOlsicVUiXX0sInI3Ijp7IkU0IjpbXX0sIlR6Ijp7ImxE
-IjpbIjEiXSwiek0iOlsiMSJdLCJiUSI6WyIxIl0sIkU0IjpbXSwiY1giOlsiMSJdLCJsRC5FIjoiMSJ9
-LCJiQiI6eyJkNSI6W10sImN2IjpbXSwidUgiOltdLCJEMCI6W119LCJLZSI6eyJNYSI6WyJxVSJdLCJ4
-dSI6WyJxVSJdLCJiUSI6WyJxVSJdLCJjWCI6WyJxVSJdfSwiZDUiOnsiY3YiOltdLCJ1SCI6W10sIkQw
-IjpbXX0sIm42Ijp7InpNIjpbIklmIl0sImJRIjpbIklmIl0sIkFTIjpbXSwiY1giOlsiSWYiXX0sIlhB
-Ijp7ImtGIjpbXX0sIk9GIjp7ImZ2IjpbXX0sInJ1Ijp7ImZ2IjpbXX0sIklWIjp7ImZ2IjpbXX19Jykp
-CkguRkYodi50eXBlVW5pdmVyc2UsSlNPTi5wYXJzZSgneyJiUSI6MSwidzIiOjEsImIwIjoxLCJrVCI6
-MiwibVciOjEsIkxVIjoxLCJpbCI6MiwiVmoiOjEsIm5ZIjoxLCJXWSI6MSwiY28iOjF9JykpCnZhciB1
-PShmdW5jdGlvbiBydGlpKCl7dmFyIHQ9SC5OMApyZXR1cm57bjp0KCJDdyIpLGNSOnQoIm5CIiksdzp0
-KCJBeiIpLGs6dCgiUVAiKSxnRjp0KCJQRDxHRCxAPiIpLGd3OnQoImJRPEA+IiksaDp0KCJjdiIpLFc6
-dCgiWFMiKSxCOnQoImVhIiksYVM6dCgiRDAiKSxjODp0KCJUNSIpLFk6dCgiRUgiKSxkOnQoImI4PEA+
-IiksSTp0KCJTZyIpLG86dCgidlEiKSxlaDp0KCJjWDx1SD4iKSxROnQoImNYPHFVPiIpLG06dCgiY1g8
-QD4iKSxwOnQoImpkPGtGPiIpLHM6dCgiamQ8cVU+IiksYjp0KCJqZDxAPiIpLHQ6dCgiamQ8SWY+Iiks
-ZDc6dCgiamQ8U2UqPiIpLGg0OnQoImpkPGo4Kj4iKSxjUTp0KCJqZDxaWio+IiksaTp0KCJqZDxxVSo+
-IiksYUE6dCgiamQ8eUQqPiIpLGFKOnQoImpkPHdiKj4iKSxWOnQoImpkPElmKj4iKSxlSDp0KCJ2bSIp
-LHI6dCgiYzUiKSxhVTp0KCJYajxAPiIpLGFtOnQoIlR6PEA+IiksZW86dCgiTjU8R0QsQD4iKSxkejp0
-KCJoRiIpLGo6dCgiek08QD4iKSxMOnQoInpNPElmPiIpLGY6dCgiWjA8cVUscVU+Iiksdjp0KCJaMDxA
-LEA+IiksZG86dCgibEo8cVUsQD4iKSxmajp0KCJsSjxxVSoscVU+IiksZEU6dCgiRVQiKSxibTp0KCJW
-NiIpLEE6dCgidUgiKSxlOnQoImtGIiksUDp0KCJjOCIpLEs6dCgiTWgiKSxnWjp0KCJldyIpLHE6dCgi
-dG48bGY+IiksZnY6dCgid0wiKSxldzp0KCJiQiIpLEM6dCgieHU8cVU+IiksbDp0KCJHeiIpLE46dCgi
-cVUiKSxkMDp0KCJxVShxVSopIiksZzc6dCgiZDUiKSxmbzp0KCJHRCIpLGFXOnQoInlZIikseDp0KCJB
-UyIpLGdjOnQoIm42IiksYWs6dCgia2QiKSxkdzp0KCJHajxxVSxxVT4iKSxkRDp0KCJpRCIpLGZpOnQo
-IlU1PHFVKj4iKSxnNDp0KCJLNSIpLGNpOnQoInY2IiksZzI6dCgiQ20iKSxiajp0KCJaZjxmSj4iKSxi
-Qzp0KCJaZjxmSio+IiksaDk6dCgiQ1EiKSxhYzp0KCJlNyIpLEc6dCgiZXU8T0sqPiIpLFI6dCgid3o8
-Y3YqPiIpLGFvOnQoInZzPGZKPiIpLGM6dCgidnM8QD4iKSxmSjp0KCJ2czxJZj4iKSxnVjp0KCJ2czxm
-Sio+IiksY3I6dCgiSlEiKSxKOnQoImJuIikseTp0KCJhMiIpLGFsOnQoImEyKE1oKSIpLGdmOnQoImEy
-KHFVKikiKSxnUjp0KCJDUCIpLHo6dCgiQCIpLGZPOnQoIkAoKSIpLGJJOnQoIkAoTWgpIiksYWc6dCgi
-QChNaCxHeikiKSxiVTp0KCJAKHh1PHFVPikiKSxkTzp0KCJAKHFVKSIpLGI4OnQoIkAoQCxAKSIpLFM6
-dCgiSWYiKSxkZDp0KCJHaCoiKSxnOnQoImN2KiIpLGFMOnQoImVhKiIpLEQ6dCgiZkoqIiksVDp0KCJj
-WDxAPioiKSxlUzp0KCJjWDxxVSo+KiIpLGRIOnQoIkU0KiIpLGRfOnQoInpNPGo4Kj4qIiksZUc6dCgi
-ek08cVUqPioiKSxiWjp0KCJ1OCoiKSxibzp0KCJaMDxxVSosQD4qIiksYTp0KCJaMDxxVSosTWgqPioi
-KSxPOnQoIk9LKiIpLGF3OnQoIjAmKiIpLF86dCgiTWgqIiksRTp0KCJldyoiKSxYOnQoInFVKiIpLGNo
-OnQoIkQwPyIpLGJHOnQoImI4PGM4Pj8iKSxVOnQoImNYPHFVPj8iKSxiazp0KCJ6TTxxVT4/IiksYk06
-dCgiek08QD4/IiksZWc6dCgiek08SWY+PyIpLGNaOnQoIlowPHFVLHFVPj8iKSxjOTp0KCJaMDxxVSxA
-Pj8iKSxjSzp0KCJNaD8iKSxGOnQoIkZlPEAsQD4/IiksYjc6dCgiYTIoTWgpPyIpLGJ3OnQoIkAoZWEp
-PyIpLGZWOnQoIk1oPyhNaD8sTWg/KT8iKSxaOnQoIn4oKT8iKSx1OnQoIn4oZXcqKT8iKSxkaTp0KCJs
-ZiIpLEg6dCgifiIpLE06dCgifigpIiksZUE6dCgifihxVSxxVSkiKSxjQTp0KCJ+KHFVLEApIil9fSko
-KTsoZnVuY3Rpb24gY29uc3RhbnRzKCl7dmFyIHQ9aHVua0hlbHBlcnMubWFrZUNvbnN0TGlzdApDLlJZ
-PVcuUVAucHJvdG90eXBlCkMubUg9Vy5hZS5wcm90b3R5cGUKQy5CWj1XLlZiLnByb3RvdHlwZQpDLkR0
-PVcuZkoucHJvdG90eXBlCkMuT2s9Si52Qi5wcm90b3R5cGUKQy5ObT1KLmpkLnByb3RvdHlwZQpDLmpu
-PUoudXIucHJvdG90eXBlCkMuQ0Q9Si5xSS5wcm90b3R5cGUKQy54Qj1KLkRyLnByb3RvdHlwZQpDLkRH
-PUouYzUucHJvdG90eXBlCkMuRXg9Vy51OC5wcm90b3R5cGUKQy5MdD1XLlNOLnByb3RvdHlwZQpDLlpR
-PUouaUMucHJvdG90eXBlCkMuSWU9Vy5UYi5wcm90b3R5cGUKQy52Qj1KLmtkLnByb3RvdHlwZQpDLm9s
-PVcuSzUucHJvdG90eXBlCkMueTg9bmV3IFAuVTgoKQpDLmg5PW5ldyBQLkNWKCkKQy5PND1mdW5jdGlv
-biBnZXRUYWdGYWxsYmFjayhvKSB7CiAgdmFyIHMgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNh
-bGwobyk7CiAgcmV0dXJuIHMuc3Vic3RyaW5nKDgsIHMubGVuZ3RoIC0gMSk7Cn0KQy5ZcT1mdW5jdGlv
-bigpIHsKICB2YXIgdG9TdHJpbmdGdW5jdGlvbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7CiAg
-ZnVuY3Rpb24gZ2V0VGFnKG8pIHsKICAgIHZhciBzID0gdG9TdHJpbmdGdW5jdGlvbi5jYWxsKG8pOwog
-ICAgcmV0dXJuIHMuc3Vic3RyaW5nKDgsIHMubGVuZ3RoIC0gMSk7CiAgfQogIGZ1bmN0aW9uIGdldFVu
-a25vd25UYWcob2JqZWN0LCB0YWcpIHsKICAgIGlmICgvXkhUTUxbQS1aXS4qRWxlbWVudCQvLnRlc3Qo
-dGFnKSkgewogICAgICB2YXIgbmFtZSA9IHRvU3RyaW5nRnVuY3Rpb24uY2FsbChvYmplY3QpOwogICAg
-ICBpZiAobmFtZSA9PSAiW29iamVjdCBPYmplY3RdIikgcmV0dXJuIG51bGw7CiAgICAgIHJldHVybiAi
-SFRNTEVsZW1lbnQiOwogICAgfQogIH0KICBmdW5jdGlvbiBnZXRVbmtub3duVGFnR2VuZXJpY0Jyb3dz
-ZXIob2JqZWN0LCB0YWcpIHsKICAgIGlmIChzZWxmLkhUTUxFbGVtZW50ICYmIG9iamVjdCBpbnN0YW5j
-ZW9mIEhUTUxFbGVtZW50KSByZXR1cm4gIkhUTUxFbGVtZW50IjsKICAgIHJldHVybiBnZXRVbmtub3du
-VGFnKG9iamVjdCwgdGFnKTsKICB9CiAgZnVuY3Rpb24gcHJvdG90eXBlRm9yVGFnKHRhZykgewogICAg
-aWYgKHR5cGVvZiB3aW5kb3cgPT0gInVuZGVmaW5lZCIpIHJldHVybiBudWxsOwogICAgaWYgKHR5cGVv
-ZiB3aW5kb3dbdGFnXSA9PSAidW5kZWZpbmVkIikgcmV0dXJuIG51bGw7CiAgICB2YXIgY29uc3RydWN0
-b3IgPSB3aW5kb3dbdGFnXTsKICAgIGlmICh0eXBlb2YgY29uc3RydWN0b3IgIT0gImZ1bmN0aW9uIikg
-cmV0dXJuIG51bGw7CiAgICByZXR1cm4gY29uc3RydWN0b3IucHJvdG90eXBlOwogIH0KICBmdW5jdGlv
-biBkaXNjcmltaW5hdG9yKHRhZykgeyByZXR1cm4gbnVsbDsgfQogIHZhciBpc0Jyb3dzZXIgPSB0eXBl
-b2YgbmF2aWdhdG9yID09ICJvYmplY3QiOwogIHJldHVybiB7CiAgICBnZXRUYWc6IGdldFRhZywKICAg
-IGdldFVua25vd25UYWc6IGlzQnJvd3NlciA/IGdldFVua25vd25UYWdHZW5lcmljQnJvd3NlciA6IGdl
-dFVua25vd25UYWcsCiAgICBwcm90b3R5cGVGb3JUYWc6IHByb3RvdHlwZUZvclRhZywKICAgIGRpc2Ny
-aW1pbmF0b3I6IGRpc2NyaW1pbmF0b3IgfTsKfQpDLndiPWZ1bmN0aW9uKGdldFRhZ0ZhbGxiYWNrKSB7
-CiAgcmV0dXJuIGZ1bmN0aW9uKGhvb2tzKSB7CiAgICBpZiAodHlwZW9mIG5hdmlnYXRvciAhPSAib2Jq
-ZWN0IikgcmV0dXJuIGhvb2tzOwogICAgdmFyIHVhID0gbmF2aWdhdG9yLnVzZXJBZ2VudDsKICAgIGlm
-ICh1YS5pbmRleE9mKCJEdW1wUmVuZGVyVHJlZSIpID49IDApIHJldHVybiBob29rczsKICAgIGlmICh1
-YS5pbmRleE9mKCJDaHJvbWUiKSA+PSAwKSB7CiAgICAgIGZ1bmN0aW9uIGNvbmZpcm0ocCkgewogICAg
-ICAgIHJldHVybiB0eXBlb2Ygd2luZG93ID09ICJvYmplY3QiICYmIHdpbmRvd1twXSAmJiB3aW5kb3db
-cF0ubmFtZSA9PSBwOwogICAgICB9CiAgICAgIGlmIChjb25maXJtKCJXaW5kb3ciKSAmJiBjb25maXJt
-KCJIVE1MRWxlbWVudCIpKSByZXR1cm4gaG9va3M7CiAgICB9CiAgICBob29rcy5nZXRUYWcgPSBnZXRU
-YWdGYWxsYmFjazsKICB9Owp9CkMuS1U9ZnVuY3Rpb24oaG9va3MpIHsKICBpZiAodHlwZW9mIGRhcnRF
-eHBlcmltZW50YWxGaXh1cEdldFRhZyAhPSAiZnVuY3Rpb24iKSByZXR1cm4gaG9va3M7CiAgaG9va3Mu
-Z2V0VGFnID0gZGFydEV4cGVyaW1lbnRhbEZpeHVwR2V0VGFnKGhvb2tzLmdldFRhZyk7Cn0KQy5mUT1m
-dW5jdGlvbihob29rcykgewogIHZhciBnZXRUYWcgPSBob29rcy5nZXRUYWc7CiAgdmFyIHByb3RvdHlw
-ZUZvclRhZyA9IGhvb2tzLnByb3RvdHlwZUZvclRhZzsKICBmdW5jdGlvbiBnZXRUYWdGaXhlZChvKSB7
-CiAgICB2YXIgdGFnID0gZ2V0VGFnKG8pOwogICAgaWYgKHRhZyA9PSAiRG9jdW1lbnQiKSB7CiAgICAg
-IGlmICghIW8ueG1sVmVyc2lvbikgcmV0dXJuICIhRG9jdW1lbnQiOwogICAgICByZXR1cm4gIiFIVE1M
-RG9jdW1lbnQiOwogICAgfQogICAgcmV0dXJuIHRhZzsKICB9CiAgZnVuY3Rpb24gcHJvdG90eXBlRm9y
-VGFnRml4ZWQodGFnKSB7CiAgICBpZiAodGFnID09ICJEb2N1bWVudCIpIHJldHVybiBudWxsOwogICAg
-cmV0dXJuIHByb3RvdHlwZUZvclRhZyh0YWcpOwogIH0KICBob29rcy5nZXRUYWcgPSBnZXRUYWdGaXhl
-ZDsKICBob29rcy5wcm90b3R5cGVGb3JUYWcgPSBwcm90b3R5cGVGb3JUYWdGaXhlZDsKfQpDLmRrPWZ1
-bmN0aW9uKGhvb2tzKSB7CiAgdmFyIHVzZXJBZ2VudCA9IHR5cGVvZiBuYXZpZ2F0b3IgPT0gIm9iamVj
-dCIgPyBuYXZpZ2F0b3IudXNlckFnZW50IDogIiI7CiAgaWYgKHVzZXJBZ2VudC5pbmRleE9mKCJGaXJl
-Zm94IikgPT0gLTEpIHJldHVybiBob29rczsKICB2YXIgZ2V0VGFnID0gaG9va3MuZ2V0VGFnOwogIHZh
-ciBxdWlja01hcCA9IHsKICAgICJCZWZvcmVVbmxvYWRFdmVudCI6ICJFdmVudCIsCiAgICAiRGF0YVRy
-YW5zZmVyIjogIkNsaXBib2FyZCIsCiAgICAiR2VvR2VvbG9jYXRpb24iOiAiR2VvbG9jYXRpb24iLAog
-ICAgIkxvY2F0aW9uIjogIiFMb2NhdGlvbiIsCiAgICAiV29ya2VyTWVzc2FnZUV2ZW50IjogIk1lc3Nh
-Z2VFdmVudCIsCiAgICAiWE1MRG9jdW1lbnQiOiAiIURvY3VtZW50In07CiAgZnVuY3Rpb24gZ2V0VGFn
-RmlyZWZveChvKSB7CiAgICB2YXIgdGFnID0gZ2V0VGFnKG8pOwogICAgcmV0dXJuIHF1aWNrTWFwW3Rh
-Z10gfHwgdGFnOwogIH0KICBob29rcy5nZXRUYWcgPSBnZXRUYWdGaXJlZm94Owp9CkMueGk9ZnVuY3Rp
-b24oaG9va3MpIHsKICB2YXIgdXNlckFnZW50ID0gdHlwZW9mIG5hdmlnYXRvciA9PSAib2JqZWN0IiA/
-IG5hdmlnYXRvci51c2VyQWdlbnQgOiAiIjsKICBpZiAodXNlckFnZW50LmluZGV4T2YoIlRyaWRlbnQv
-IikgPT0gLTEpIHJldHVybiBob29rczsKICB2YXIgZ2V0VGFnID0gaG9va3MuZ2V0VGFnOwogIHZhciBx
-dWlja01hcCA9IHsKICAgICJCZWZvcmVVbmxvYWRFdmVudCI6ICJFdmVudCIsCiAgICAiRGF0YVRyYW5z
-ZmVyIjogIkNsaXBib2FyZCIsCiAgICAiSFRNTERERWxlbWVudCI6ICJIVE1MRWxlbWVudCIsCiAgICAi
-SFRNTERURWxlbWVudCI6ICJIVE1MRWxlbWVudCIsCiAgICAiSFRNTFBocmFzZUVsZW1lbnQiOiAiSFRN
-TEVsZW1lbnQiLAogICAgIlBvc2l0aW9uIjogIkdlb3Bvc2l0aW9uIgogIH07CiAgZnVuY3Rpb24gZ2V0
-VGFnSUUobykgewogICAgdmFyIHRhZyA9IGdldFRhZyhvKTsKICAgIHZhciBuZXdUYWcgPSBxdWlja01h
-cFt0YWddOwogICAgaWYgKG5ld1RhZykgcmV0dXJuIG5ld1RhZzsKICAgIGlmICh0YWcgPT0gIk9iamVj
-dCIpIHsKICAgICAgaWYgKHdpbmRvdy5EYXRhVmlldyAmJiAobyBpbnN0YW5jZW9mIHdpbmRvdy5EYXRh
-VmlldykpIHJldHVybiAiRGF0YVZpZXciOwogICAgfQogICAgcmV0dXJuIHRhZzsKICB9CiAgZnVuY3Rp
-b24gcHJvdG90eXBlRm9yVGFnSUUodGFnKSB7CiAgICB2YXIgY29uc3RydWN0b3IgPSB3aW5kb3dbdGFn
-XTsKICAgIGlmIChjb25zdHJ1Y3RvciA9PSBudWxsKSByZXR1cm4gbnVsbDsKICAgIHJldHVybiBjb25z
-dHJ1Y3Rvci5wcm90b3R5cGU7CiAgfQogIGhvb2tzLmdldFRhZyA9IGdldFRhZ0lFOwogIGhvb2tzLnBy
-b3RvdHlwZUZvclRhZyA9IHByb3RvdHlwZUZvclRhZ0lFOwp9CkMuaTc9ZnVuY3Rpb24oaG9va3MpIHsg
-cmV0dXJuIGhvb2tzOyB9CgpDLkN0PW5ldyBQLmJ5KCkKQy5FcT1uZXcgUC5rNSgpCkMueE09bmV3IFAu
-dTUoKQpDLlFrPW5ldyBQLkUzKCkKQy5OVT1uZXcgUC5KaSgpCkMucGQ9bmV3IFAuWmQoKQpDLkEzPW5l
-dyBQLk14KG51bGwpCkMuR2I9SC5WTSh0KFsxMjcsMjA0Nyw2NTUzNSwxMTE0MTExXSksdS5WKQpDLmFr
-PUguVk0odChbMCwwLDMyNzc2LDMzNzkyLDEsMTAyNDAsMCwwXSksdS5WKQpDLmNtPUguVk0odChbIio6
-OmNsYXNzIiwiKjo6ZGlyIiwiKjo6ZHJhZ2dhYmxlIiwiKjo6aGlkZGVuIiwiKjo6aWQiLCIqOjppbmVy
-dCIsIio6Oml0ZW1wcm9wIiwiKjo6aXRlbXJlZiIsIio6Oml0ZW1zY29wZSIsIio6OmxhbmciLCIqOjpz
-cGVsbGNoZWNrIiwiKjo6dGl0bGUiLCIqOjp0cmFuc2xhdGUiLCJBOjphY2Nlc3NrZXkiLCJBOjpjb29y
-ZHMiLCJBOjpocmVmbGFuZyIsIkE6Om5hbWUiLCJBOjpzaGFwZSIsIkE6OnRhYmluZGV4IiwiQTo6dGFy
-Z2V0IiwiQTo6dHlwZSIsIkFSRUE6OmFjY2Vzc2tleSIsIkFSRUE6OmFsdCIsIkFSRUE6OmNvb3JkcyIs
-IkFSRUE6Om5vaHJlZiIsIkFSRUE6OnNoYXBlIiwiQVJFQTo6dGFiaW5kZXgiLCJBUkVBOjp0YXJnZXQi
-LCJBVURJTzo6Y29udHJvbHMiLCJBVURJTzo6bG9vcCIsIkFVRElPOjptZWRpYWdyb3VwIiwiQVVESU86
-Om11dGVkIiwiQVVESU86OnByZWxvYWQiLCJCRE86OmRpciIsIkJPRFk6OmFsaW5rIiwiQk9EWTo6Ymdj
-b2xvciIsIkJPRFk6OmxpbmsiLCJCT0RZOjp0ZXh0IiwiQk9EWTo6dmxpbmsiLCJCUjo6Y2xlYXIiLCJC
-VVRUT046OmFjY2Vzc2tleSIsIkJVVFRPTjo6ZGlzYWJsZWQiLCJCVVRUT046Om5hbWUiLCJCVVRUT046
-OnRhYmluZGV4IiwiQlVUVE9OOjp0eXBlIiwiQlVUVE9OOjp2YWx1ZSIsIkNBTlZBUzo6aGVpZ2h0Iiwi
-Q0FOVkFTOjp3aWR0aCIsIkNBUFRJT046OmFsaWduIiwiQ09MOjphbGlnbiIsIkNPTDo6Y2hhciIsIkNP
-TDo6Y2hhcm9mZiIsIkNPTDo6c3BhbiIsIkNPTDo6dmFsaWduIiwiQ09MOjp3aWR0aCIsIkNPTEdST1VQ
-OjphbGlnbiIsIkNPTEdST1VQOjpjaGFyIiwiQ09MR1JPVVA6OmNoYXJvZmYiLCJDT0xHUk9VUDo6c3Bh
-biIsIkNPTEdST1VQOjp2YWxpZ24iLCJDT0xHUk9VUDo6d2lkdGgiLCJDT01NQU5EOjpjaGVja2VkIiwi
-Q09NTUFORDo6Y29tbWFuZCIsIkNPTU1BTkQ6OmRpc2FibGVkIiwiQ09NTUFORDo6bGFiZWwiLCJDT01N
-QU5EOjpyYWRpb2dyb3VwIiwiQ09NTUFORDo6dHlwZSIsIkRBVEE6OnZhbHVlIiwiREVMOjpkYXRldGlt
-ZSIsIkRFVEFJTFM6Om9wZW4iLCJESVI6OmNvbXBhY3QiLCJESVY6OmFsaWduIiwiREw6OmNvbXBhY3Qi
-LCJGSUVMRFNFVDo6ZGlzYWJsZWQiLCJGT05UOjpjb2xvciIsIkZPTlQ6OmZhY2UiLCJGT05UOjpzaXpl
-IiwiRk9STTo6YWNjZXB0IiwiRk9STTo6YXV0b2NvbXBsZXRlIiwiRk9STTo6ZW5jdHlwZSIsIkZPUk06
-Om1ldGhvZCIsIkZPUk06Om5hbWUiLCJGT1JNOjpub3ZhbGlkYXRlIiwiRk9STTo6dGFyZ2V0IiwiRlJB
-TUU6Om5hbWUiLCJIMTo6YWxpZ24iLCJIMjo6YWxpZ24iLCJIMzo6YWxpZ24iLCJINDo6YWxpZ24iLCJI
-NTo6YWxpZ24iLCJINjo6YWxpZ24iLCJIUjo6YWxpZ24iLCJIUjo6bm9zaGFkZSIsIkhSOjpzaXplIiwi
-SFI6OndpZHRoIiwiSFRNTDo6dmVyc2lvbiIsIklGUkFNRTo6YWxpZ24iLCJJRlJBTUU6OmZyYW1lYm9y
-ZGVyIiwiSUZSQU1FOjpoZWlnaHQiLCJJRlJBTUU6Om1hcmdpbmhlaWdodCIsIklGUkFNRTo6bWFyZ2lu
-d2lkdGgiLCJJRlJBTUU6OndpZHRoIiwiSU1HOjphbGlnbiIsIklNRzo6YWx0IiwiSU1HOjpib3JkZXIi
-LCJJTUc6OmhlaWdodCIsIklNRzo6aHNwYWNlIiwiSU1HOjppc21hcCIsIklNRzo6bmFtZSIsIklNRzo6
-dXNlbWFwIiwiSU1HOjp2c3BhY2UiLCJJTUc6OndpZHRoIiwiSU5QVVQ6OmFjY2VwdCIsIklOUFVUOjph
-Y2Nlc3NrZXkiLCJJTlBVVDo6YWxpZ24iLCJJTlBVVDo6YWx0IiwiSU5QVVQ6OmF1dG9jb21wbGV0ZSIs
-IklOUFVUOjphdXRvZm9jdXMiLCJJTlBVVDo6Y2hlY2tlZCIsIklOUFVUOjpkaXNhYmxlZCIsIklOUFVU
-OjppbnB1dG1vZGUiLCJJTlBVVDo6aXNtYXAiLCJJTlBVVDo6bGlzdCIsIklOUFVUOjptYXgiLCJJTlBV
-VDo6bWF4bGVuZ3RoIiwiSU5QVVQ6Om1pbiIsIklOUFVUOjptdWx0aXBsZSIsIklOUFVUOjpuYW1lIiwi
-SU5QVVQ6OnBsYWNlaG9sZGVyIiwiSU5QVVQ6OnJlYWRvbmx5IiwiSU5QVVQ6OnJlcXVpcmVkIiwiSU5Q
-VVQ6OnNpemUiLCJJTlBVVDo6c3RlcCIsIklOUFVUOjp0YWJpbmRleCIsIklOUFVUOjp0eXBlIiwiSU5Q
-VVQ6OnVzZW1hcCIsIklOUFVUOjp2YWx1ZSIsIklOUzo6ZGF0ZXRpbWUiLCJLRVlHRU46OmRpc2FibGVk
-IiwiS0VZR0VOOjprZXl0eXBlIiwiS0VZR0VOOjpuYW1lIiwiTEFCRUw6OmFjY2Vzc2tleSIsIkxBQkVM
-Ojpmb3IiLCJMRUdFTkQ6OmFjY2Vzc2tleSIsIkxFR0VORDo6YWxpZ24iLCJMSTo6dHlwZSIsIkxJOjp2
-YWx1ZSIsIkxJTks6OnNpemVzIiwiTUFQOjpuYW1lIiwiTUVOVTo6Y29tcGFjdCIsIk1FTlU6OmxhYmVs
-IiwiTUVOVTo6dHlwZSIsIk1FVEVSOjpoaWdoIiwiTUVURVI6OmxvdyIsIk1FVEVSOjptYXgiLCJNRVRF
-Ujo6bWluIiwiTUVURVI6OnZhbHVlIiwiT0JKRUNUOjp0eXBlbXVzdG1hdGNoIiwiT0w6OmNvbXBhY3Qi
-LCJPTDo6cmV2ZXJzZWQiLCJPTDo6c3RhcnQiLCJPTDo6dHlwZSIsIk9QVEdST1VQOjpkaXNhYmxlZCIs
-Ik9QVEdST1VQOjpsYWJlbCIsIk9QVElPTjo6ZGlzYWJsZWQiLCJPUFRJT046OmxhYmVsIiwiT1BUSU9O
-OjpzZWxlY3RlZCIsIk9QVElPTjo6dmFsdWUiLCJPVVRQVVQ6OmZvciIsIk9VVFBVVDo6bmFtZSIsIlA6
-OmFsaWduIiwiUFJFOjp3aWR0aCIsIlBST0dSRVNTOjptYXgiLCJQUk9HUkVTUzo6bWluIiwiUFJPR1JF
-U1M6OnZhbHVlIiwiU0VMRUNUOjphdXRvY29tcGxldGUiLCJTRUxFQ1Q6OmRpc2FibGVkIiwiU0VMRUNU
-OjptdWx0aXBsZSIsIlNFTEVDVDo6bmFtZSIsIlNFTEVDVDo6cmVxdWlyZWQiLCJTRUxFQ1Q6OnNpemUi
-LCJTRUxFQ1Q6OnRhYmluZGV4IiwiU09VUkNFOjp0eXBlIiwiVEFCTEU6OmFsaWduIiwiVEFCTEU6OmJn
-Y29sb3IiLCJUQUJMRTo6Ym9yZGVyIiwiVEFCTEU6OmNlbGxwYWRkaW5nIiwiVEFCTEU6OmNlbGxzcGFj
-aW5nIiwiVEFCTEU6OmZyYW1lIiwiVEFCTEU6OnJ1bGVzIiwiVEFCTEU6OnN1bW1hcnkiLCJUQUJMRTo6
-d2lkdGgiLCJUQk9EWTo6YWxpZ24iLCJUQk9EWTo6Y2hhciIsIlRCT0RZOjpjaGFyb2ZmIiwiVEJPRFk6
-OnZhbGlnbiIsIlREOjphYmJyIiwiVEQ6OmFsaWduIiwiVEQ6OmF4aXMiLCJURDo6Ymdjb2xvciIsIlRE
-OjpjaGFyIiwiVEQ6OmNoYXJvZmYiLCJURDo6Y29sc3BhbiIsIlREOjpoZWFkZXJzIiwiVEQ6OmhlaWdo
-dCIsIlREOjpub3dyYXAiLCJURDo6cm93c3BhbiIsIlREOjpzY29wZSIsIlREOjp2YWxpZ24iLCJURDo6
-d2lkdGgiLCJURVhUQVJFQTo6YWNjZXNza2V5IiwiVEVYVEFSRUE6OmF1dG9jb21wbGV0ZSIsIlRFWFRB
-UkVBOjpjb2xzIiwiVEVYVEFSRUE6OmRpc2FibGVkIiwiVEVYVEFSRUE6OmlucHV0bW9kZSIsIlRFWFRB
-UkVBOjpuYW1lIiwiVEVYVEFSRUE6OnBsYWNlaG9sZGVyIiwiVEVYVEFSRUE6OnJlYWRvbmx5IiwiVEVY
-VEFSRUE6OnJlcXVpcmVkIiwiVEVYVEFSRUE6OnJvd3MiLCJURVhUQVJFQTo6dGFiaW5kZXgiLCJURVhU
-QVJFQTo6d3JhcCIsIlRGT09UOjphbGlnbiIsIlRGT09UOjpjaGFyIiwiVEZPT1Q6OmNoYXJvZmYiLCJU
-Rk9PVDo6dmFsaWduIiwiVEg6OmFiYnIiLCJUSDo6YWxpZ24iLCJUSDo6YXhpcyIsIlRIOjpiZ2NvbG9y
-IiwiVEg6OmNoYXIiLCJUSDo6Y2hhcm9mZiIsIlRIOjpjb2xzcGFuIiwiVEg6OmhlYWRlcnMiLCJUSDo6
-aGVpZ2h0IiwiVEg6Om5vd3JhcCIsIlRIOjpyb3dzcGFuIiwiVEg6OnNjb3BlIiwiVEg6OnZhbGlnbiIs
-IlRIOjp3aWR0aCIsIlRIRUFEOjphbGlnbiIsIlRIRUFEOjpjaGFyIiwiVEhFQUQ6OmNoYXJvZmYiLCJU
-SEVBRDo6dmFsaWduIiwiVFI6OmFsaWduIiwiVFI6OmJnY29sb3IiLCJUUjo6Y2hhciIsIlRSOjpjaGFy
-b2ZmIiwiVFI6OnZhbGlnbiIsIlRSQUNLOjpkZWZhdWx0IiwiVFJBQ0s6OmtpbmQiLCJUUkFDSzo6bGFi
-ZWwiLCJUUkFDSzo6c3JjbGFuZyIsIlVMOjpjb21wYWN0IiwiVUw6OnR5cGUiLCJWSURFTzo6Y29udHJv
-bHMiLCJWSURFTzo6aGVpZ2h0IiwiVklERU86Omxvb3AiLCJWSURFTzo6bWVkaWFncm91cCIsIlZJREVP
-OjptdXRlZCIsIlZJREVPOjpwcmVsb2FkIiwiVklERU86OndpZHRoIl0pLHUuaSkKQy5WQz1ILlZNKHQo
-WzAsMCw2NTQ5MCw0NTA1NSw2NTUzNSwzNDgxNSw2NTUzNCwxODQzMV0pLHUuVikKQy5tSz1ILlZNKHQo
-WzAsMCwyNjYyNCwxMDIzLDY1NTM0LDIwNDcsNjU1MzQsMjA0N10pLHUuVikKQy5TcT1ILlZNKHQoWyJI
-RUFEIiwiQVJFQSIsIkJBU0UiLCJCQVNFRk9OVCIsIkJSIiwiQ09MIiwiQ09MR1JPVVAiLCJFTUJFRCIs
-IkZSQU1FIiwiRlJBTUVTRVQiLCJIUiIsIklNQUdFIiwiSU1HIiwiSU5QVVQiLCJJU0lOREVYIiwiTElO
-SyIsIk1FVEEiLCJQQVJBTSIsIlNPVVJDRSIsIlNUWUxFIiwiVElUTEUiLCJXQlIiXSksdS5pKQpDLmRu
-PUguVk0odChbXSksdS5iKQpDLnhEPUguVk0odChbXSksdS5pKQpDLnRvPUguVk0odChbMCwwLDMyNzIy
-LDEyMjg3LDY1NTM0LDM0ODE1LDY1NTM0LDE4NDMxXSksdS5WKQpDLkYzPUguVk0odChbMCwwLDI0NTc2
-LDEwMjMsNjU1MzQsMzQ4MTUsNjU1MzQsMTg0MzFdKSx1LlYpCkMuZWE9SC5WTSh0KFswLDAsMzI3NTQs
-MTEyNjMsNjU1MzQsMzQ4MTUsNjU1MzQsMTg0MzFdKSx1LlYpCkMuWko9SC5WTSh0KFswLDAsMzI3MjIs
-MTIyODcsNjU1MzUsMzQ4MTUsNjU1MzQsMTg0MzFdKSx1LlYpCkMuV2Q9SC5WTSh0KFswLDAsNjU0OTAs
-MTIyODcsNjU1MzUsMzQ4MTUsNjU1MzQsMTg0MzFdKSx1LlYpCkMuUXg9SC5WTSh0KFsiYmluZCIsImlm
-IiwicmVmIiwicmVwZWF0Iiwic3ludGF4Il0pLHUuaSkKQy5CST1ILlZNKHQoWyJBOjpocmVmIiwiQVJF
-QTo6aHJlZiIsIkJMT0NLUVVPVEU6OmNpdGUiLCJCT0RZOjpiYWNrZ3JvdW5kIiwiQ09NTUFORDo6aWNv
-biIsIkRFTDo6Y2l0ZSIsIkZPUk06OmFjdGlvbiIsIklNRzo6c3JjIiwiSU5QVVQ6OnNyYyIsIklOUzo6
-Y2l0ZSIsIlE6OmNpdGUiLCJWSURFTzo6cG9zdGVyIl0pLHUuaSkKQy5DTT1uZXcgSC5MUCgwLHt9LEMu
-eEQsSC5OMCgiTFA8cVUqLHpNPGo4Kj4qPiIpKQpDLldPPW5ldyBILkxQKDAse30sQy54RCxILk4wKCJM
-UDxxVSoscVUqPiIpKQpDLmhVPUguVk0odChbXSksSC5OMCgiamQ8R0QqPiIpKQpDLkR4PW5ldyBILkxQ
-KDAse30sQy5oVSxILk4wKCJMUDxHRCosQD4iKSkKQy5ZMj1uZXcgTC5POSgiTmF2aWdhdGlvblRyZWVO
-b2RlVHlwZS5kaXJlY3RvcnkiKQpDLnJmPW5ldyBMLk85KCJOYXZpZ2F0aW9uVHJlZU5vZGVUeXBlLmZp
-bGUiKQpDLlRlPW5ldyBILnd2KCJjYWxsIikKQy53UT1uZXcgUC5GeShudWxsLDIpfSkoKTsoZnVuY3Rp
-b24gc3RhdGljRmllbGRzKCl7JC56bT1udWxsCiQueWo9MAokLm1KPW51bGwKJC5QND1udWxsCiQuTkY9
-bnVsbAokLlRYPW51bGwKJC54Nz1udWxsCiQubnc9bnVsbAokLnZ2PW51bGwKJC5Cdj1udWxsCiQuUzY9
-bnVsbAokLms4PW51bGwKJC5tZz1udWxsCiQuVUQ9ITEKJC5YMz1DLk5VCiQueGc9SC5WTShbXSxILk4w
-KCJqZDxNaD4iKSkKJC54bz1udWxsCiQuQk89bnVsbAokLmx0PW51bGwKJC5FVT1udWxsCiQub3I9UC5G
-bCh1Lk4sdS5ZKQokLkk2PW51bGwKJC5GZj1udWxsfSkoKTsoZnVuY3Rpb24gbGF6eUluaXRpYWxpemVy
-cygpe3ZhciB0PWh1bmtIZWxwZXJzLmxhenkKdCgkLCJmYSIsInciLGZ1bmN0aW9uKCl7cmV0dXJuIEgu
-WWcoIl8kZGFydF9kYXJ0Q2xvc3VyZSIpfSkKdCgkLCJVMiIsIlNuIixmdW5jdGlvbigpe3JldHVybiBI
-LmNNKEguUzcoewp0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiIkcmVjZWl2ZXIkIn19KSl9KQp0KCQs
-InhxIiwibHEiLGZ1bmN0aW9uKCl7cmV0dXJuIEguY00oSC5TNyh7JG1ldGhvZCQ6bnVsbCwKdG9TdHJp
-bmc6ZnVuY3Rpb24oKXtyZXR1cm4iJHJlY2VpdmVyJCJ9fSkpfSkKdCgkLCJSMSIsIk45IixmdW5jdGlv
-bigpe3JldHVybiBILmNNKEguUzcobnVsbCkpfSkKdCgkLCJmTiIsImlJIixmdW5jdGlvbigpe3JldHVy
-biBILmNNKGZ1bmN0aW9uKCl7dmFyICRhcmd1bWVudHNFeHByJD0nJGFyZ3VtZW50cyQnCnRyeXtudWxs
-LiRtZXRob2QkKCRhcmd1bWVudHNFeHByJCl9Y2F0Y2gocyl7cmV0dXJuIHMubWVzc2FnZX19KCkpfSkK
-dCgkLCJxaSIsIlVOIixmdW5jdGlvbigpe3JldHVybiBILmNNKEguUzcodm9pZCAwKSl9KQp0KCQsInJa
-IiwiWmgiLGZ1bmN0aW9uKCl7cmV0dXJuIEguY00oZnVuY3Rpb24oKXt2YXIgJGFyZ3VtZW50c0V4cHIk
-PSckYXJndW1lbnRzJCcKdHJ5eyh2b2lkIDApLiRtZXRob2QkKCRhcmd1bWVudHNFeHByJCl9Y2F0Y2go
-cyl7cmV0dXJuIHMubWVzc2FnZX19KCkpfSkKdCgkLCJrcSIsInJOIixmdW5jdGlvbigpe3JldHVybiBI
-LmNNKEguTWoobnVsbCkpfSkKdCgkLCJ0dCIsImMzIixmdW5jdGlvbigpe3JldHVybiBILmNNKGZ1bmN0
-aW9uKCl7dHJ5e251bGwuJG1ldGhvZCR9Y2F0Y2gocyl7cmV0dXJuIHMubWVzc2FnZX19KCkpfSkKdCgk
-LCJkdCIsIkhLIixmdW5jdGlvbigpe3JldHVybiBILmNNKEguTWoodm9pZCAwKSl9KQp0KCQsIkE3Iiwi
-cjEiLGZ1bmN0aW9uKCl7cmV0dXJuIEguY00oZnVuY3Rpb24oKXt0cnl7KHZvaWQgMCkuJG1ldGhvZCR9
-Y2F0Y2gocyl7cmV0dXJuIHMubWVzc2FnZX19KCkpfSkKdCgkLCJXYyIsInV0IixmdW5jdGlvbigpe3Jl
-dHVybiBQLk9qKCl9KQp0KCQsImtoIiwicmYiLGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBQLnBnKCkuJDAo
-KX0pCnQoJCwiYnQiLCJWNyIsZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEludDhBcnJheShILlhGKEguVk0o
-Wy0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0y
-LC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0xLC0yLC0y
-LC0yLC0yLC0yLDYyLC0yLDYyLC0yLDYzLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDU5LDYwLDYxLC0yLC0y
-LC0yLC0xLC0yLC0yLC0yLDAsMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTIsMTMsMTQsMTUsMTYsMTcs
-MTgsMTksMjAsMjEsMjIsMjMsMjQsMjUsLTIsLTIsLTIsLTIsNjMsLTIsMjYsMjcsMjgsMjksMzAsMzEs
-MzIsMzMsMzQsMzUsMzYsMzcsMzgsMzksNDAsNDEsNDIsNDMsNDQsNDUsNDYsNDcsNDgsNDksNTAsNTEs
-LTIsLTIsLTIsLTIsLTJdLHUudCkpKX0pCnQoJCwiTTUiLCJ3USIsZnVuY3Rpb24oKXtyZXR1cm4gdHlw
-ZW9mIHByb2Nlc3MhPSJ1bmRlZmluZWQiJiZPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwocHJv
-Y2Vzcyk9PSJbb2JqZWN0IHByb2Nlc3NdIiYmcHJvY2Vzcy5wbGF0Zm9ybT09IndpbjMyIn0pCnQoJCwi
-bWYiLCJ6NCIsZnVuY3Rpb24oKXtyZXR1cm4gUC5udSgiXltcXC1cXC4wLTlBLVpfYS16fl0qJCIpfSkK
-dCgkLCJKRyIsInZaIixmdW5jdGlvbigpe3JldHVybiBQLktOKCl9KQp0KCQsIlNDIiwiQU4iLGZ1bmN0
-aW9uKCl7cmV0dXJuIFAudE0oWyJBIiwiQUJCUiIsIkFDUk9OWU0iLCJBRERSRVNTIiwiQVJFQSIsIkFS
-VElDTEUiLCJBU0lERSIsIkFVRElPIiwiQiIsIkJESSIsIkJETyIsIkJJRyIsIkJMT0NLUVVPVEUiLCJC
-UiIsIkJVVFRPTiIsIkNBTlZBUyIsIkNBUFRJT04iLCJDRU5URVIiLCJDSVRFIiwiQ09ERSIsIkNPTCIs
-IkNPTEdST1VQIiwiQ09NTUFORCIsIkRBVEEiLCJEQVRBTElTVCIsIkREIiwiREVMIiwiREVUQUlMUyIs
-IkRGTiIsIkRJUiIsIkRJViIsIkRMIiwiRFQiLCJFTSIsIkZJRUxEU0VUIiwiRklHQ0FQVElPTiIsIkZJ
-R1VSRSIsIkZPTlQiLCJGT09URVIiLCJGT1JNIiwiSDEiLCJIMiIsIkgzIiwiSDQiLCJINSIsIkg2Iiwi
-SEVBREVSIiwiSEdST1VQIiwiSFIiLCJJIiwiSUZSQU1FIiwiSU1HIiwiSU5QVVQiLCJJTlMiLCJLQkQi
-LCJMQUJFTCIsIkxFR0VORCIsIkxJIiwiTUFQIiwiTUFSSyIsIk1FTlUiLCJNRVRFUiIsIk5BViIsIk5P
-QlIiLCJPTCIsIk9QVEdST1VQIiwiT1BUSU9OIiwiT1VUUFVUIiwiUCIsIlBSRSIsIlBST0dSRVNTIiwi
-USIsIlMiLCJTQU1QIiwiU0VDVElPTiIsIlNFTEVDVCIsIlNNQUxMIiwiU09VUkNFIiwiU1BBTiIsIlNU
-UklLRSIsIlNUUk9ORyIsIlNVQiIsIlNVTU1BUlkiLCJTVVAiLCJUQUJMRSIsIlRCT0RZIiwiVEQiLCJU
-RVhUQVJFQSIsIlRGT09UIiwiVEgiLCJUSEVBRCIsIlRJTUUiLCJUUiIsIlRSQUNLIiwiVFQiLCJVIiwi
-VUwiLCJWQVIiLCJWSURFTyIsIldCUiJdLHUuTil9KQp0KCQsIlg0IiwiaEciLGZ1bmN0aW9uKCl7cmV0
-dXJuIFAubnUoIl5cXFMrJCIpfSkKdCgkLCJ3TyIsIm93IixmdW5jdGlvbigpe3JldHVybiBQLk5EKHNl
-bGYpfSkKdCgkLCJrdCIsIlI4IixmdW5jdGlvbigpe3JldHVybiBILllnKCJfJGRhcnRfZGFydE9iamVj
-dCIpfSkKdCgkLCJmSyIsImtJIixmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiBEYXJ0T2JqZWN0KGEp
-e3RoaXMubz1hfX0pCnQoJCwicXQiLCJ6QiIsZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFQubVEoKX0pCnQo
-JCwiT2wiLCJVRSIsZnVuY3Rpb24oKXtyZXR1cm4gUC5oSyhDLm9sLmdtVyhXLngzKCkpLmhyZWYpLmdo
-WSgpLnEoMCwiYXV0aFRva2VuIil9KQp0KCQsImhUIiwieVAiLGZ1bmN0aW9uKCl7cmV0dXJuIFcuWnIo
-KS5xdWVyeVNlbGVjdG9yKCIuZWRpdC1saXN0IC5wYW5lbC1jb250ZW50Iil9KQp0KCQsIlc2IiwiaEwi
-LGZ1bmN0aW9uKCl7cmV0dXJuIFcuWnIoKS5xdWVyeVNlbGVjdG9yKCIuZWRpdC1wYW5lbCAucGFuZWwt
-Y29udGVudCIpfSkKdCgkLCJUUiIsIkRXIixmdW5jdGlvbigpe3JldHVybiBXLlpyKCkucXVlcnlTZWxl
-Y3RvcigiZm9vdGVyIil9KQp0KCQsIkVZIiwiZmkiLGZ1bmN0aW9uKCl7cmV0dXJuIFcuWnIoKS5xdWVy
-eVNlbGVjdG9yKCJoZWFkZXIiKX0pCnQoJCwiYXYiLCJEOSIsZnVuY3Rpb24oKXtyZXR1cm4gVy5acigp
-LnF1ZXJ5U2VsZWN0b3IoIiN1bml0LW5hbWUiKX0pCnQoJCwiZmUiLCJLRyIsZnVuY3Rpb24oKXtyZXR1
-cm4gbmV3IEwuWEEoKX0pCnQoJCwiZW8iLCJuVSIsZnVuY3Rpb24oKXtyZXR1cm4gbmV3IE0ubEkoJC5I
-aygpKX0pCnQoJCwieXIiLCJiRCIsZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEUuT0YoUC5udSgiLyIpLFAu
-bnUoIlteL10kIiksUC5udSgiXi8iKSl9KQp0KCQsIk1rIiwiS2siLGZ1bmN0aW9uKCl7cmV0dXJuIG5l
-dyBMLklWKFAubnUoIlsvXFxcXF0iKSxQLm51KCJbXi9cXFxcXSQiKSxQLm51KCJeKFxcXFxcXFxcW15c
-XFxcXStcXFxcW15cXFxcL10rfFthLXpBLVpdOlsvXFxcXF0pIiksUC5udSgiXlsvXFxcXF0oPyFbL1xc
-XFxdKSIpKX0pCnQoJCwiYWsiLCJFYiIsZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEYucnUoUC5udSgiLyIp
-LFAubnUoIiheW2EtekEtWl1bLSsuYS16QS1aXFxkXSo6Ly98W14vXSkkIiksUC5udSgiW2EtekEtWl1b
-LSsuYS16QS1aXFxkXSo6Ly9bXi9dKiIpLFAubnUoIl4vIikpfSkKdCgkLCJscyIsIkhrIixmdW5jdGlv
-bigpe3JldHVybiBPLlJoKCl9KX0pKCk7KGZ1bmN0aW9uIG5hdGl2ZVN1cHBvcnQoKXshZnVuY3Rpb24o
-KXt2YXIgdD1mdW5jdGlvbihhKXt2YXIgbj17fQpuW2FdPTEKcmV0dXJuIE9iamVjdC5rZXlzKGh1bmtI
-ZWxwZXJzLmNvbnZlcnRUb0Zhc3RPYmplY3QobikpWzBdfQp2LmdldElzb2xhdGVUYWc9ZnVuY3Rpb24o
-YSl7cmV0dXJuIHQoIl9fX2RhcnRfIithK3YuaXNvbGF0ZVRhZyl9CnZhciBzPSJfX19kYXJ0X2lzb2xh
-dGVfdGFnc18iCnZhciByPU9iamVjdFtzXXx8KE9iamVjdFtzXT1PYmplY3QuY3JlYXRlKG51bGwpKQp2
-YXIgcT0iX1p4WXhYIgpmb3IodmFyIHA9MDs7cCsrKXt2YXIgbz10KHErIl8iK3ArIl8iKQppZighKG8g
-aW4gcikpe3Jbb109MQp2Lmlzb2xhdGVUYWc9bwpicmVha319di5kaXNwYXRjaFByb3BlcnR5TmFtZT12
-LmdldElzb2xhdGVUYWcoImRpc3BhdGNoX3JlY29yZCIpfSgpCmh1bmtIZWxwZXJzLnNldE9yVXBkYXRl
-SW50ZXJjZXB0b3JzQnlUYWcoe0RPTUVycm9yOkoudkIsTWVkaWFFcnJvcjpKLnZCLE5hdmlnYXRvcjpK
-LnZCLE5hdmlnYXRvckNvbmN1cnJlbnRIYXJkd2FyZTpKLnZCLE5hdmlnYXRvclVzZXJNZWRpYUVycm9y
-OkoudkIsT3ZlcmNvbnN0cmFpbmVkRXJyb3I6Si52QixQb3NpdGlvbkVycm9yOkoudkIsUmFuZ2U6Si52
-QixTUUxFcnJvcjpKLnZCLERhdGFWaWV3OkguRVQsQXJyYXlCdWZmZXJWaWV3OkguRVQsRmxvYXQzMkFy
-cmF5OkguRGcsRmxvYXQ2NEFycmF5OkguRGcsSW50MTZBcnJheTpILnhqLEludDMyQXJyYXk6SC5kRSxJ
-bnQ4QXJyYXk6SC5aQSxVaW50MTZBcnJheTpILmRULFVpbnQzMkFycmF5OkguUHEsVWludDhDbGFtcGVk
-QXJyYXk6SC5lRSxDYW52YXNQaXhlbEFycmF5OkguZUUsVWludDhBcnJheTpILlY2LEhUTUxBdWRpb0Vs
-ZW1lbnQ6Vy5xRSxIVE1MQlJFbGVtZW50OlcucUUsSFRNTEJ1dHRvbkVsZW1lbnQ6Vy5xRSxIVE1MQ2Fu
-dmFzRWxlbWVudDpXLnFFLEhUTUxDb250ZW50RWxlbWVudDpXLnFFLEhUTUxETGlzdEVsZW1lbnQ6Vy5x
-RSxIVE1MRGF0YUVsZW1lbnQ6Vy5xRSxIVE1MRGF0YUxpc3RFbGVtZW50OlcucUUsSFRNTERldGFpbHNF
-bGVtZW50OlcucUUsSFRNTERpYWxvZ0VsZW1lbnQ6Vy5xRSxIVE1MRGl2RWxlbWVudDpXLnFFLEhUTUxF
-bWJlZEVsZW1lbnQ6Vy5xRSxIVE1MRmllbGRTZXRFbGVtZW50OlcucUUsSFRNTEhSRWxlbWVudDpXLnFF
-LEhUTUxIZWFkRWxlbWVudDpXLnFFLEhUTUxIZWFkaW5nRWxlbWVudDpXLnFFLEhUTUxIdG1sRWxlbWVu
-dDpXLnFFLEhUTUxJRnJhbWVFbGVtZW50OlcucUUsSFRNTEltYWdlRWxlbWVudDpXLnFFLEhUTUxJbnB1
-dEVsZW1lbnQ6Vy5xRSxIVE1MTElFbGVtZW50OlcucUUsSFRNTExhYmVsRWxlbWVudDpXLnFFLEhUTUxM
-ZWdlbmRFbGVtZW50OlcucUUsSFRNTExpbmtFbGVtZW50OlcucUUsSFRNTE1hcEVsZW1lbnQ6Vy5xRSxI
-VE1MTWVkaWFFbGVtZW50OlcucUUsSFRNTE1lbnVFbGVtZW50OlcucUUsSFRNTE1ldGFFbGVtZW50Olcu
-cUUsSFRNTE1ldGVyRWxlbWVudDpXLnFFLEhUTUxNb2RFbGVtZW50OlcucUUsSFRNTE9MaXN0RWxlbWVu
-dDpXLnFFLEhUTUxPYmplY3RFbGVtZW50OlcucUUsSFRNTE9wdEdyb3VwRWxlbWVudDpXLnFFLEhUTUxP
-cHRpb25FbGVtZW50OlcucUUsSFRNTE91dHB1dEVsZW1lbnQ6Vy5xRSxIVE1MUGFyYW1FbGVtZW50Olcu
-cUUsSFRNTFBpY3R1cmVFbGVtZW50OlcucUUsSFRNTFByZUVsZW1lbnQ6Vy5xRSxIVE1MUHJvZ3Jlc3NF
-bGVtZW50OlcucUUsSFRNTFF1b3RlRWxlbWVudDpXLnFFLEhUTUxTY3JpcHRFbGVtZW50OlcucUUsSFRN
-TFNoYWRvd0VsZW1lbnQ6Vy5xRSxIVE1MU2xvdEVsZW1lbnQ6Vy5xRSxIVE1MU291cmNlRWxlbWVudDpX
-LnFFLEhUTUxTcGFuRWxlbWVudDpXLnFFLEhUTUxTdHlsZUVsZW1lbnQ6Vy5xRSxIVE1MVGFibGVDYXB0
-aW9uRWxlbWVudDpXLnFFLEhUTUxUYWJsZUNlbGxFbGVtZW50OlcucUUsSFRNTFRhYmxlRGF0YUNlbGxF
-bGVtZW50OlcucUUsSFRNTFRhYmxlSGVhZGVyQ2VsbEVsZW1lbnQ6Vy5xRSxIVE1MVGFibGVDb2xFbGVt
-ZW50OlcucUUsSFRNTFRleHRBcmVhRWxlbWVudDpXLnFFLEhUTUxUaW1lRWxlbWVudDpXLnFFLEhUTUxU
-aXRsZUVsZW1lbnQ6Vy5xRSxIVE1MVHJhY2tFbGVtZW50OlcucUUsSFRNTFVMaXN0RWxlbWVudDpXLnFF
-LEhUTUxVbmtub3duRWxlbWVudDpXLnFFLEhUTUxWaWRlb0VsZW1lbnQ6Vy5xRSxIVE1MRGlyZWN0b3J5
-RWxlbWVudDpXLnFFLEhUTUxGb250RWxlbWVudDpXLnFFLEhUTUxGcmFtZUVsZW1lbnQ6Vy5xRSxIVE1M
-RnJhbWVTZXRFbGVtZW50OlcucUUsSFRNTE1hcnF1ZWVFbGVtZW50OlcucUUsSFRNTEVsZW1lbnQ6Vy5x
-RSxIVE1MQW5jaG9yRWxlbWVudDpXLkdoLEhUTUxBcmVhRWxlbWVudDpXLmZZLEhUTUxCYXNlRWxlbWVu
-dDpXLm5CLEJsb2I6Vy5BeixIVE1MQm9keUVsZW1lbnQ6Vy5RUCxDREFUQVNlY3Rpb246Vy5ueCxDaGFy
-YWN0ZXJEYXRhOlcubngsQ29tbWVudDpXLm54LFByb2Nlc3NpbmdJbnN0cnVjdGlvbjpXLm54LFRleHQ6
-Vy5ueCxDU1NTdHlsZURlY2xhcmF0aW9uOlcub0osTVNTdHlsZUNTU1Byb3BlcnRpZXM6Vy5vSixDU1My
-UHJvcGVydGllczpXLm9KLFhNTERvY3VtZW50OlcuUUYsRG9jdW1lbnQ6Vy5RRixET01FeGNlcHRpb246
-Vy5OaCxET01JbXBsZW1lbnRhdGlvbjpXLmFlLERPTVJlY3RSZWFkT25seTpXLklCLERPTVRva2VuTGlz
-dDpXLm43LEVsZW1lbnQ6Vy5jdixBYm9ydFBheW1lbnRFdmVudDpXLmVhLEFuaW1hdGlvbkV2ZW50Olcu
-ZWEsQW5pbWF0aW9uUGxheWJhY2tFdmVudDpXLmVhLEFwcGxpY2F0aW9uQ2FjaGVFcnJvckV2ZW50Olcu
-ZWEsQmFja2dyb3VuZEZldGNoQ2xpY2tFdmVudDpXLmVhLEJhY2tncm91bmRGZXRjaEV2ZW50OlcuZWEs
-QmFja2dyb3VuZEZldGNoRmFpbEV2ZW50OlcuZWEsQmFja2dyb3VuZEZldGNoZWRFdmVudDpXLmVhLEJl
-Zm9yZUluc3RhbGxQcm9tcHRFdmVudDpXLmVhLEJlZm9yZVVubG9hZEV2ZW50OlcuZWEsQmxvYkV2ZW50
-OlcuZWEsQ2FuTWFrZVBheW1lbnRFdmVudDpXLmVhLENsaXBib2FyZEV2ZW50OlcuZWEsQ2xvc2VFdmVu
-dDpXLmVhLEN1c3RvbUV2ZW50OlcuZWEsRGV2aWNlTW90aW9uRXZlbnQ6Vy5lYSxEZXZpY2VPcmllbnRh
-dGlvbkV2ZW50OlcuZWEsRXJyb3JFdmVudDpXLmVhLEV4dGVuZGFibGVFdmVudDpXLmVhLEV4dGVuZGFi
-bGVNZXNzYWdlRXZlbnQ6Vy5lYSxGZXRjaEV2ZW50OlcuZWEsRm9udEZhY2VTZXRMb2FkRXZlbnQ6Vy5l
-YSxGb3JlaWduRmV0Y2hFdmVudDpXLmVhLEdhbWVwYWRFdmVudDpXLmVhLEhhc2hDaGFuZ2VFdmVudDpX
-LmVhLEluc3RhbGxFdmVudDpXLmVhLE1lZGlhRW5jcnlwdGVkRXZlbnQ6Vy5lYSxNZWRpYUtleU1lc3Nh
-Z2VFdmVudDpXLmVhLE1lZGlhUXVlcnlMaXN0RXZlbnQ6Vy5lYSxNZWRpYVN0cmVhbUV2ZW50OlcuZWEs
-TWVkaWFTdHJlYW1UcmFja0V2ZW50OlcuZWEsTWVzc2FnZUV2ZW50OlcuZWEsTUlESUNvbm5lY3Rpb25F
-dmVudDpXLmVhLE1JRElNZXNzYWdlRXZlbnQ6Vy5lYSxNdXRhdGlvbkV2ZW50OlcuZWEsTm90aWZpY2F0
-aW9uRXZlbnQ6Vy5lYSxQYWdlVHJhbnNpdGlvbkV2ZW50OlcuZWEsUGF5bWVudFJlcXVlc3RFdmVudDpX
-LmVhLFBheW1lbnRSZXF1ZXN0VXBkYXRlRXZlbnQ6Vy5lYSxQb3BTdGF0ZUV2ZW50OlcuZWEsUHJlc2Vu
-dGF0aW9uQ29ubmVjdGlvbkF2YWlsYWJsZUV2ZW50OlcuZWEsUHJlc2VudGF0aW9uQ29ubmVjdGlvbkNs
-b3NlRXZlbnQ6Vy5lYSxQcm9taXNlUmVqZWN0aW9uRXZlbnQ6Vy5lYSxQdXNoRXZlbnQ6Vy5lYSxSVENE
-YXRhQ2hhbm5lbEV2ZW50OlcuZWEsUlRDRFRNRlRvbmVDaGFuZ2VFdmVudDpXLmVhLFJUQ1BlZXJDb25u
-ZWN0aW9uSWNlRXZlbnQ6Vy5lYSxSVENUcmFja0V2ZW50OlcuZWEsU2VjdXJpdHlQb2xpY3lWaW9sYXRp
-b25FdmVudDpXLmVhLFNlbnNvckVycm9yRXZlbnQ6Vy5lYSxTcGVlY2hSZWNvZ25pdGlvbkVycm9yOlcu
-ZWEsU3BlZWNoUmVjb2duaXRpb25FdmVudDpXLmVhLFNwZWVjaFN5bnRoZXNpc0V2ZW50OlcuZWEsU3Rv
-cmFnZUV2ZW50OlcuZWEsU3luY0V2ZW50OlcuZWEsVHJhY2tFdmVudDpXLmVhLFRyYW5zaXRpb25FdmVu
-dDpXLmVhLFdlYktpdFRyYW5zaXRpb25FdmVudDpXLmVhLFZSRGV2aWNlRXZlbnQ6Vy5lYSxWUkRpc3Bs
-YXlFdmVudDpXLmVhLFZSU2Vzc2lvbkV2ZW50OlcuZWEsTW9qb0ludGVyZmFjZVJlcXVlc3RFdmVudDpX
-LmVhLFVTQkNvbm5lY3Rpb25FdmVudDpXLmVhLElEQlZlcnNpb25DaGFuZ2VFdmVudDpXLmVhLEF1ZGlv
-UHJvY2Vzc2luZ0V2ZW50OlcuZWEsT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50OlcuZWEsV2ViR0xD
-b250ZXh0RXZlbnQ6Vy5lYSxFdmVudDpXLmVhLElucHV0RXZlbnQ6Vy5lYSxTdWJtaXRFdmVudDpXLmVh
-LEV2ZW50VGFyZ2V0OlcuRDAsRmlsZTpXLlQ1LEhUTUxGb3JtRWxlbWVudDpXLmg0LEhpc3Rvcnk6Vy5i
-cixIVE1MRG9jdW1lbnQ6Vy5WYixYTUxIdHRwUmVxdWVzdDpXLmZKLFhNTEh0dHBSZXF1ZXN0RXZlbnRU
-YXJnZXQ6Vy53YSxJbWFnZURhdGE6Vy5TZyxMb2NhdGlvbjpXLnU4LE1vdXNlRXZlbnQ6Vy5PSyxEcmFn
-RXZlbnQ6Vy5PSyxQb2ludGVyRXZlbnQ6Vy5PSyxXaGVlbEV2ZW50OlcuT0ssRG9jdW1lbnRGcmFnbWVu
-dDpXLnVILFNoYWRvd1Jvb3Q6Vy51SCxEb2N1bWVudFR5cGU6Vy51SCxOb2RlOlcudUgsTm9kZUxpc3Q6
-Vy5CSCxSYWRpb05vZGVMaXN0OlcuQkgsSFRNTFBhcmFncmFwaEVsZW1lbnQ6Vy5TTixQcm9ncmVzc0V2
-ZW50OlcuZXcsUmVzb3VyY2VQcm9ncmVzc0V2ZW50OlcuZXcsSFRNTFNlbGVjdEVsZW1lbnQ6Vy5scCxI
-VE1MVGFibGVFbGVtZW50OlcuVGIsSFRNTFRhYmxlUm93RWxlbWVudDpXLkl2LEhUTUxUYWJsZVNlY3Rp
-b25FbGVtZW50OlcuV1AsSFRNTFRlbXBsYXRlRWxlbWVudDpXLnlZLENvbXBvc2l0aW9uRXZlbnQ6Vy53
-NixGb2N1c0V2ZW50OlcudzYsS2V5Ym9hcmRFdmVudDpXLnc2LFRleHRFdmVudDpXLnc2LFRvdWNoRXZl
-bnQ6Vy53NixVSUV2ZW50OlcudzYsV2luZG93OlcuSzUsRE9NV2luZG93OlcuSzUsRGVkaWNhdGVkV29y
-a2VyR2xvYmFsU2NvcGU6Vy5DbSxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6Vy5DbSxTaGFyZWRXb3Jr
-ZXJHbG9iYWxTY29wZTpXLkNtLFdvcmtlckdsb2JhbFNjb3BlOlcuQ20sQXR0cjpXLkNRLENsaWVudFJl
-Y3Q6Vy53NCxET01SZWN0OlcudzQsTmFtZWROb2RlTWFwOlcucmgsTW96TmFtZWRBdHRyTWFwOlcucmgs
-SURCS2V5UmFuZ2U6UC5oRixTVkdTY3JpcHRFbGVtZW50OlAuYkIsU1ZHQUVsZW1lbnQ6UC5kNSxTVkdB
-bmltYXRlRWxlbWVudDpQLmQ1LFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OlAuZDUsU1ZHQW5pbWF0ZVRy
-YW5zZm9ybUVsZW1lbnQ6UC5kNSxTVkdBbmltYXRpb25FbGVtZW50OlAuZDUsU1ZHQ2lyY2xlRWxlbWVu
-dDpQLmQ1LFNWR0NsaXBQYXRoRWxlbWVudDpQLmQ1LFNWR0RlZnNFbGVtZW50OlAuZDUsU1ZHRGVzY0Vs
-ZW1lbnQ6UC5kNSxTVkdEaXNjYXJkRWxlbWVudDpQLmQ1LFNWR0VsbGlwc2VFbGVtZW50OlAuZDUsU1ZH
-RkVCbGVuZEVsZW1lbnQ6UC5kNSxTVkdGRUNvbG9yTWF0cml4RWxlbWVudDpQLmQ1LFNWR0ZFQ29tcG9u
-ZW50VHJhbnNmZXJFbGVtZW50OlAuZDUsU1ZHRkVDb21wb3NpdGVFbGVtZW50OlAuZDUsU1ZHRkVDb252
-b2x2ZU1hdHJpeEVsZW1lbnQ6UC5kNSxTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6UC5kNSxTVkdG
-RURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6UC5kNSxTVkdGRURpc3RhbnRMaWdodEVsZW1lbnQ6UC5kNSxT
-VkdGRUZsb29kRWxlbWVudDpQLmQ1LFNWR0ZFRnVuY0FFbGVtZW50OlAuZDUsU1ZHRkVGdW5jQkVsZW1l
-bnQ6UC5kNSxTVkdGRUZ1bmNHRWxlbWVudDpQLmQ1LFNWR0ZFRnVuY1JFbGVtZW50OlAuZDUsU1ZHRkVH
-YXVzc2lhbkJsdXJFbGVtZW50OlAuZDUsU1ZHRkVJbWFnZUVsZW1lbnQ6UC5kNSxTVkdGRU1lcmdlRWxl
-bWVudDpQLmQ1LFNWR0ZFTWVyZ2VOb2RlRWxlbWVudDpQLmQ1LFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6
-UC5kNSxTVkdGRU9mZnNldEVsZW1lbnQ6UC5kNSxTVkdGRVBvaW50TGlnaHRFbGVtZW50OlAuZDUsU1ZH
-RkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDpQLmQ1LFNWR0ZFU3BvdExpZ2h0RWxlbWVudDpQLmQ1LFNW
-R0ZFVGlsZUVsZW1lbnQ6UC5kNSxTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OlAuZDUsU1ZHRmlsdGVyRWxl
-bWVudDpQLmQ1LFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OlAuZDUsU1ZHR0VsZW1lbnQ6UC5kNSxTVkdH
-ZW9tZXRyeUVsZW1lbnQ6UC5kNSxTVkdHcmFwaGljc0VsZW1lbnQ6UC5kNSxTVkdJbWFnZUVsZW1lbnQ6
-UC5kNSxTVkdMaW5lRWxlbWVudDpQLmQ1LFNWR0xpbmVhckdyYWRpZW50RWxlbWVudDpQLmQ1LFNWR01h
-cmtlckVsZW1lbnQ6UC5kNSxTVkdNYXNrRWxlbWVudDpQLmQ1LFNWR01ldGFkYXRhRWxlbWVudDpQLmQ1
-LFNWR1BhdGhFbGVtZW50OlAuZDUsU1ZHUGF0dGVybkVsZW1lbnQ6UC5kNSxTVkdQb2x5Z29uRWxlbWVu
-dDpQLmQ1LFNWR1BvbHlsaW5lRWxlbWVudDpQLmQ1LFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDpQLmQ1
-LFNWR1JlY3RFbGVtZW50OlAuZDUsU1ZHU2V0RWxlbWVudDpQLmQ1LFNWR1N0b3BFbGVtZW50OlAuZDUs
-U1ZHU3R5bGVFbGVtZW50OlAuZDUsU1ZHU1ZHRWxlbWVudDpQLmQ1LFNWR1N3aXRjaEVsZW1lbnQ6UC5k
-NSxTVkdTeW1ib2xFbGVtZW50OlAuZDUsU1ZHVFNwYW5FbGVtZW50OlAuZDUsU1ZHVGV4dENvbnRlbnRF
-bGVtZW50OlAuZDUsU1ZHVGV4dEVsZW1lbnQ6UC5kNSxTVkdUZXh0UGF0aEVsZW1lbnQ6UC5kNSxTVkdU
-ZXh0UG9zaXRpb25pbmdFbGVtZW50OlAuZDUsU1ZHVGl0bGVFbGVtZW50OlAuZDUsU1ZHVXNlRWxlbWVu
-dDpQLmQ1LFNWR1ZpZXdFbGVtZW50OlAuZDUsU1ZHR3JhZGllbnRFbGVtZW50OlAuZDUsU1ZHQ29tcG9u
-ZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6UC5kNSxTVkdGRURyb3BTaGFkb3dFbGVtZW50OlAuZDUs
-U1ZHTVBhdGhFbGVtZW50OlAuZDUsU1ZHRWxlbWVudDpQLmQ1fSkKaHVua0hlbHBlcnMuc2V0T3JVcGRh
-dGVMZWFmVGFncyh7RE9NRXJyb3I6dHJ1ZSxNZWRpYUVycm9yOnRydWUsTmF2aWdhdG9yOnRydWUsTmF2
-aWdhdG9yQ29uY3VycmVudEhhcmR3YXJlOnRydWUsTmF2aWdhdG9yVXNlck1lZGlhRXJyb3I6dHJ1ZSxP
-dmVyY29uc3RyYWluZWRFcnJvcjp0cnVlLFBvc2l0aW9uRXJyb3I6dHJ1ZSxSYW5nZTp0cnVlLFNRTEVy
-cm9yOnRydWUsRGF0YVZpZXc6dHJ1ZSxBcnJheUJ1ZmZlclZpZXc6ZmFsc2UsRmxvYXQzMkFycmF5OnRy
-dWUsRmxvYXQ2NEFycmF5OnRydWUsSW50MTZBcnJheTp0cnVlLEludDMyQXJyYXk6dHJ1ZSxJbnQ4QXJy
-YXk6dHJ1ZSxVaW50MTZBcnJheTp0cnVlLFVpbnQzMkFycmF5OnRydWUsVWludDhDbGFtcGVkQXJyYXk6
-dHJ1ZSxDYW52YXNQaXhlbEFycmF5OnRydWUsVWludDhBcnJheTpmYWxzZSxIVE1MQXVkaW9FbGVtZW50
-OnRydWUsSFRNTEJSRWxlbWVudDp0cnVlLEhUTUxCdXR0b25FbGVtZW50OnRydWUsSFRNTENhbnZhc0Vs
-ZW1lbnQ6dHJ1ZSxIVE1MQ29udGVudEVsZW1lbnQ6dHJ1ZSxIVE1MRExpc3RFbGVtZW50OnRydWUsSFRN
-TERhdGFFbGVtZW50OnRydWUsSFRNTERhdGFMaXN0RWxlbWVudDp0cnVlLEhUTUxEZXRhaWxzRWxlbWVu
-dDp0cnVlLEhUTUxEaWFsb2dFbGVtZW50OnRydWUsSFRNTERpdkVsZW1lbnQ6dHJ1ZSxIVE1MRW1iZWRF
-bGVtZW50OnRydWUsSFRNTEZpZWxkU2V0RWxlbWVudDp0cnVlLEhUTUxIUkVsZW1lbnQ6dHJ1ZSxIVE1M
-SGVhZEVsZW1lbnQ6dHJ1ZSxIVE1MSGVhZGluZ0VsZW1lbnQ6dHJ1ZSxIVE1MSHRtbEVsZW1lbnQ6dHJ1
-ZSxIVE1MSUZyYW1lRWxlbWVudDp0cnVlLEhUTUxJbWFnZUVsZW1lbnQ6dHJ1ZSxIVE1MSW5wdXRFbGVt
-ZW50OnRydWUsSFRNTExJRWxlbWVudDp0cnVlLEhUTUxMYWJlbEVsZW1lbnQ6dHJ1ZSxIVE1MTGVnZW5k
-RWxlbWVudDp0cnVlLEhUTUxMaW5rRWxlbWVudDp0cnVlLEhUTUxNYXBFbGVtZW50OnRydWUsSFRNTE1l
-ZGlhRWxlbWVudDp0cnVlLEhUTUxNZW51RWxlbWVudDp0cnVlLEhUTUxNZXRhRWxlbWVudDp0cnVlLEhU
-TUxNZXRlckVsZW1lbnQ6dHJ1ZSxIVE1MTW9kRWxlbWVudDp0cnVlLEhUTUxPTGlzdEVsZW1lbnQ6dHJ1
-ZSxIVE1MT2JqZWN0RWxlbWVudDp0cnVlLEhUTUxPcHRHcm91cEVsZW1lbnQ6dHJ1ZSxIVE1MT3B0aW9u
-RWxlbWVudDp0cnVlLEhUTUxPdXRwdXRFbGVtZW50OnRydWUsSFRNTFBhcmFtRWxlbWVudDp0cnVlLEhU
-TUxQaWN0dXJlRWxlbWVudDp0cnVlLEhUTUxQcmVFbGVtZW50OnRydWUsSFRNTFByb2dyZXNzRWxlbWVu
-dDp0cnVlLEhUTUxRdW90ZUVsZW1lbnQ6dHJ1ZSxIVE1MU2NyaXB0RWxlbWVudDp0cnVlLEhUTUxTaGFk
-b3dFbGVtZW50OnRydWUsSFRNTFNsb3RFbGVtZW50OnRydWUsSFRNTFNvdXJjZUVsZW1lbnQ6dHJ1ZSxI
-VE1MU3BhbkVsZW1lbnQ6dHJ1ZSxIVE1MU3R5bGVFbGVtZW50OnRydWUsSFRNTFRhYmxlQ2FwdGlvbkVs
-ZW1lbnQ6dHJ1ZSxIVE1MVGFibGVDZWxsRWxlbWVudDp0cnVlLEhUTUxUYWJsZURhdGFDZWxsRWxlbWVu
-dDp0cnVlLEhUTUxUYWJsZUhlYWRlckNlbGxFbGVtZW50OnRydWUsSFRNTFRhYmxlQ29sRWxlbWVudDp0
-cnVlLEhUTUxUZXh0QXJlYUVsZW1lbnQ6dHJ1ZSxIVE1MVGltZUVsZW1lbnQ6dHJ1ZSxIVE1MVGl0bGVF
-bGVtZW50OnRydWUsSFRNTFRyYWNrRWxlbWVudDp0cnVlLEhUTUxVTGlzdEVsZW1lbnQ6dHJ1ZSxIVE1M
-VW5rbm93bkVsZW1lbnQ6dHJ1ZSxIVE1MVmlkZW9FbGVtZW50OnRydWUsSFRNTERpcmVjdG9yeUVsZW1l
-bnQ6dHJ1ZSxIVE1MRm9udEVsZW1lbnQ6dHJ1ZSxIVE1MRnJhbWVFbGVtZW50OnRydWUsSFRNTEZyYW1l
-U2V0RWxlbWVudDp0cnVlLEhUTUxNYXJxdWVlRWxlbWVudDp0cnVlLEhUTUxFbGVtZW50OmZhbHNlLEhU
-TUxBbmNob3JFbGVtZW50OnRydWUsSFRNTEFyZWFFbGVtZW50OnRydWUsSFRNTEJhc2VFbGVtZW50OnRy
-dWUsQmxvYjpmYWxzZSxIVE1MQm9keUVsZW1lbnQ6dHJ1ZSxDREFUQVNlY3Rpb246dHJ1ZSxDaGFyYWN0
-ZXJEYXRhOnRydWUsQ29tbWVudDp0cnVlLFByb2Nlc3NpbmdJbnN0cnVjdGlvbjp0cnVlLFRleHQ6dHJ1
-ZSxDU1NTdHlsZURlY2xhcmF0aW9uOnRydWUsTVNTdHlsZUNTU1Byb3BlcnRpZXM6dHJ1ZSxDU1MyUHJv
-cGVydGllczp0cnVlLFhNTERvY3VtZW50OnRydWUsRG9jdW1lbnQ6ZmFsc2UsRE9NRXhjZXB0aW9uOnRy
-dWUsRE9NSW1wbGVtZW50YXRpb246dHJ1ZSxET01SZWN0UmVhZE9ubHk6ZmFsc2UsRE9NVG9rZW5MaXN0
-OnRydWUsRWxlbWVudDpmYWxzZSxBYm9ydFBheW1lbnRFdmVudDp0cnVlLEFuaW1hdGlvbkV2ZW50OnRy
-dWUsQW5pbWF0aW9uUGxheWJhY2tFdmVudDp0cnVlLEFwcGxpY2F0aW9uQ2FjaGVFcnJvckV2ZW50OnRy
-dWUsQmFja2dyb3VuZEZldGNoQ2xpY2tFdmVudDp0cnVlLEJhY2tncm91bmRGZXRjaEV2ZW50OnRydWUs
-QmFja2dyb3VuZEZldGNoRmFpbEV2ZW50OnRydWUsQmFja2dyb3VuZEZldGNoZWRFdmVudDp0cnVlLEJl
-Zm9yZUluc3RhbGxQcm9tcHRFdmVudDp0cnVlLEJlZm9yZVVubG9hZEV2ZW50OnRydWUsQmxvYkV2ZW50
-OnRydWUsQ2FuTWFrZVBheW1lbnRFdmVudDp0cnVlLENsaXBib2FyZEV2ZW50OnRydWUsQ2xvc2VFdmVu
-dDp0cnVlLEN1c3RvbUV2ZW50OnRydWUsRGV2aWNlTW90aW9uRXZlbnQ6dHJ1ZSxEZXZpY2VPcmllbnRh
-dGlvbkV2ZW50OnRydWUsRXJyb3JFdmVudDp0cnVlLEV4dGVuZGFibGVFdmVudDp0cnVlLEV4dGVuZGFi
-bGVNZXNzYWdlRXZlbnQ6dHJ1ZSxGZXRjaEV2ZW50OnRydWUsRm9udEZhY2VTZXRMb2FkRXZlbnQ6dHJ1
-ZSxGb3JlaWduRmV0Y2hFdmVudDp0cnVlLEdhbWVwYWRFdmVudDp0cnVlLEhhc2hDaGFuZ2VFdmVudDp0
-cnVlLEluc3RhbGxFdmVudDp0cnVlLE1lZGlhRW5jcnlwdGVkRXZlbnQ6dHJ1ZSxNZWRpYUtleU1lc3Nh
-Z2VFdmVudDp0cnVlLE1lZGlhUXVlcnlMaXN0RXZlbnQ6dHJ1ZSxNZWRpYVN0cmVhbUV2ZW50OnRydWUs
-TWVkaWFTdHJlYW1UcmFja0V2ZW50OnRydWUsTWVzc2FnZUV2ZW50OnRydWUsTUlESUNvbm5lY3Rpb25F
-dmVudDp0cnVlLE1JRElNZXNzYWdlRXZlbnQ6dHJ1ZSxNdXRhdGlvbkV2ZW50OnRydWUsTm90aWZpY2F0
-aW9uRXZlbnQ6dHJ1ZSxQYWdlVHJhbnNpdGlvbkV2ZW50OnRydWUsUGF5bWVudFJlcXVlc3RFdmVudDp0
-cnVlLFBheW1lbnRSZXF1ZXN0VXBkYXRlRXZlbnQ6dHJ1ZSxQb3BTdGF0ZUV2ZW50OnRydWUsUHJlc2Vu
-dGF0aW9uQ29ubmVjdGlvbkF2YWlsYWJsZUV2ZW50OnRydWUsUHJlc2VudGF0aW9uQ29ubmVjdGlvbkNs
-b3NlRXZlbnQ6dHJ1ZSxQcm9taXNlUmVqZWN0aW9uRXZlbnQ6dHJ1ZSxQdXNoRXZlbnQ6dHJ1ZSxSVENE
-YXRhQ2hhbm5lbEV2ZW50OnRydWUsUlRDRFRNRlRvbmVDaGFuZ2VFdmVudDp0cnVlLFJUQ1BlZXJDb25u
-ZWN0aW9uSWNlRXZlbnQ6dHJ1ZSxSVENUcmFja0V2ZW50OnRydWUsU2VjdXJpdHlQb2xpY3lWaW9sYXRp
-b25FdmVudDp0cnVlLFNlbnNvckVycm9yRXZlbnQ6dHJ1ZSxTcGVlY2hSZWNvZ25pdGlvbkVycm9yOnRy
-dWUsU3BlZWNoUmVjb2duaXRpb25FdmVudDp0cnVlLFNwZWVjaFN5bnRoZXNpc0V2ZW50OnRydWUsU3Rv
-cmFnZUV2ZW50OnRydWUsU3luY0V2ZW50OnRydWUsVHJhY2tFdmVudDp0cnVlLFRyYW5zaXRpb25FdmVu
-dDp0cnVlLFdlYktpdFRyYW5zaXRpb25FdmVudDp0cnVlLFZSRGV2aWNlRXZlbnQ6dHJ1ZSxWUkRpc3Bs
-YXlFdmVudDp0cnVlLFZSU2Vzc2lvbkV2ZW50OnRydWUsTW9qb0ludGVyZmFjZVJlcXVlc3RFdmVudDp0
-cnVlLFVTQkNvbm5lY3Rpb25FdmVudDp0cnVlLElEQlZlcnNpb25DaGFuZ2VFdmVudDp0cnVlLEF1ZGlv
-UHJvY2Vzc2luZ0V2ZW50OnRydWUsT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50OnRydWUsV2ViR0xD
-b250ZXh0RXZlbnQ6dHJ1ZSxFdmVudDpmYWxzZSxJbnB1dEV2ZW50OmZhbHNlLFN1Ym1pdEV2ZW50OmZh
-bHNlLEV2ZW50VGFyZ2V0OmZhbHNlLEZpbGU6dHJ1ZSxIVE1MRm9ybUVsZW1lbnQ6dHJ1ZSxIaXN0b3J5
-OnRydWUsSFRNTERvY3VtZW50OnRydWUsWE1MSHR0cFJlcXVlc3Q6dHJ1ZSxYTUxIdHRwUmVxdWVzdEV2
-ZW50VGFyZ2V0OmZhbHNlLEltYWdlRGF0YTp0cnVlLExvY2F0aW9uOnRydWUsTW91c2VFdmVudDp0cnVl
-LERyYWdFdmVudDp0cnVlLFBvaW50ZXJFdmVudDp0cnVlLFdoZWVsRXZlbnQ6dHJ1ZSxEb2N1bWVudEZy
-YWdtZW50OnRydWUsU2hhZG93Um9vdDp0cnVlLERvY3VtZW50VHlwZTp0cnVlLE5vZGU6ZmFsc2UsTm9k
-ZUxpc3Q6dHJ1ZSxSYWRpb05vZGVMaXN0OnRydWUsSFRNTFBhcmFncmFwaEVsZW1lbnQ6dHJ1ZSxQcm9n
-cmVzc0V2ZW50OnRydWUsUmVzb3VyY2VQcm9ncmVzc0V2ZW50OnRydWUsSFRNTFNlbGVjdEVsZW1lbnQ6
-dHJ1ZSxIVE1MVGFibGVFbGVtZW50OnRydWUsSFRNTFRhYmxlUm93RWxlbWVudDp0cnVlLEhUTUxUYWJs
-ZVNlY3Rpb25FbGVtZW50OnRydWUsSFRNTFRlbXBsYXRlRWxlbWVudDp0cnVlLENvbXBvc2l0aW9uRXZl
-bnQ6dHJ1ZSxGb2N1c0V2ZW50OnRydWUsS2V5Ym9hcmRFdmVudDp0cnVlLFRleHRFdmVudDp0cnVlLFRv
-dWNoRXZlbnQ6dHJ1ZSxVSUV2ZW50OmZhbHNlLFdpbmRvdzp0cnVlLERPTVdpbmRvdzp0cnVlLERlZGlj
-YXRlZFdvcmtlckdsb2JhbFNjb3BlOnRydWUsU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOnRydWUsU2hh
-cmVkV29ya2VyR2xvYmFsU2NvcGU6dHJ1ZSxXb3JrZXJHbG9iYWxTY29wZTp0cnVlLEF0dHI6dHJ1ZSxD
-bGllbnRSZWN0OnRydWUsRE9NUmVjdDp0cnVlLE5hbWVkTm9kZU1hcDp0cnVlLE1vek5hbWVkQXR0ck1h
-cDp0cnVlLElEQktleVJhbmdlOnRydWUsU1ZHU2NyaXB0RWxlbWVudDp0cnVlLFNWR0FFbGVtZW50OnRy
-dWUsU1ZHQW5pbWF0ZUVsZW1lbnQ6dHJ1ZSxTVkdBbmltYXRlTW90aW9uRWxlbWVudDp0cnVlLFNWR0Fu
-aW1hdGVUcmFuc2Zvcm1FbGVtZW50OnRydWUsU1ZHQW5pbWF0aW9uRWxlbWVudDp0cnVlLFNWR0NpcmNs
-ZUVsZW1lbnQ6dHJ1ZSxTVkdDbGlwUGF0aEVsZW1lbnQ6dHJ1ZSxTVkdEZWZzRWxlbWVudDp0cnVlLFNW
-R0Rlc2NFbGVtZW50OnRydWUsU1ZHRGlzY2FyZEVsZW1lbnQ6dHJ1ZSxTVkdFbGxpcHNlRWxlbWVudDp0
-cnVlLFNWR0ZFQmxlbmRFbGVtZW50OnRydWUsU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6dHJ1ZSxTVkdG
-RUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDp0cnVlLFNWR0ZFQ29tcG9zaXRlRWxlbWVudDp0cnVlLFNW
-R0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OnRydWUsU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OnRy
-dWUsU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OnRydWUsU1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50
-OnRydWUsU1ZHRkVGbG9vZEVsZW1lbnQ6dHJ1ZSxTVkdGRUZ1bmNBRWxlbWVudDp0cnVlLFNWR0ZFRnVu
-Y0JFbGVtZW50OnRydWUsU1ZHRkVGdW5jR0VsZW1lbnQ6dHJ1ZSxTVkdGRUZ1bmNSRWxlbWVudDp0cnVl
-LFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDp0cnVlLFNWR0ZFSW1hZ2VFbGVtZW50OnRydWUsU1ZHRkVN
-ZXJnZUVsZW1lbnQ6dHJ1ZSxTVkdGRU1lcmdlTm9kZUVsZW1lbnQ6dHJ1ZSxTVkdGRU1vcnBob2xvZ3lF
-bGVtZW50OnRydWUsU1ZHRkVPZmZzZXRFbGVtZW50OnRydWUsU1ZHRkVQb2ludExpZ2h0RWxlbWVudDp0
-cnVlLFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6dHJ1ZSxTVkdGRVNwb3RMaWdodEVsZW1lbnQ6
-dHJ1ZSxTVkdGRVRpbGVFbGVtZW50OnRydWUsU1ZHRkVUdXJidWxlbmNlRWxlbWVudDp0cnVlLFNWR0Zp
-bHRlckVsZW1lbnQ6dHJ1ZSxTVkdGb3JlaWduT2JqZWN0RWxlbWVudDp0cnVlLFNWR0dFbGVtZW50OnRy
-dWUsU1ZHR2VvbWV0cnlFbGVtZW50OnRydWUsU1ZHR3JhcGhpY3NFbGVtZW50OnRydWUsU1ZHSW1hZ2VF
-bGVtZW50OnRydWUsU1ZHTGluZUVsZW1lbnQ6dHJ1ZSxTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6dHJ1
-ZSxTVkdNYXJrZXJFbGVtZW50OnRydWUsU1ZHTWFza0VsZW1lbnQ6dHJ1ZSxTVkdNZXRhZGF0YUVsZW1l
-bnQ6dHJ1ZSxTVkdQYXRoRWxlbWVudDp0cnVlLFNWR1BhdHRlcm5FbGVtZW50OnRydWUsU1ZHUG9seWdv
-bkVsZW1lbnQ6dHJ1ZSxTVkdQb2x5bGluZUVsZW1lbnQ6dHJ1ZSxTVkdSYWRpYWxHcmFkaWVudEVsZW1l
-bnQ6dHJ1ZSxTVkdSZWN0RWxlbWVudDp0cnVlLFNWR1NldEVsZW1lbnQ6dHJ1ZSxTVkdTdG9wRWxlbWVu
-dDp0cnVlLFNWR1N0eWxlRWxlbWVudDp0cnVlLFNWR1NWR0VsZW1lbnQ6dHJ1ZSxTVkdTd2l0Y2hFbGVt
-ZW50OnRydWUsU1ZHU3ltYm9sRWxlbWVudDp0cnVlLFNWR1RTcGFuRWxlbWVudDp0cnVlLFNWR1RleHRD
-b250ZW50RWxlbWVudDp0cnVlLFNWR1RleHRFbGVtZW50OnRydWUsU1ZHVGV4dFBhdGhFbGVtZW50OnRy
-dWUsU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDp0cnVlLFNWR1RpdGxlRWxlbWVudDp0cnVlLFNWR1Vz
-ZUVsZW1lbnQ6dHJ1ZSxTVkdWaWV3RWxlbWVudDp0cnVlLFNWR0dyYWRpZW50RWxlbWVudDp0cnVlLFNW
-R0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50OnRydWUsU1ZHRkVEcm9wU2hhZG93RWxlbWVu
-dDp0cnVlLFNWR01QYXRoRWxlbWVudDp0cnVlLFNWR0VsZW1lbnQ6ZmFsc2V9KQpILmIwLiRuYXRpdmVT
-dXBlcmNsYXNzVGFnPSJBcnJheUJ1ZmZlclZpZXciCkguUkcuJG5hdGl2ZVN1cGVyY2xhc3NUYWc9IkFy
-cmF5QnVmZmVyVmlldyIKSC5WUC4kbmF0aXZlU3VwZXJjbGFzc1RhZz0iQXJyYXlCdWZmZXJWaWV3IgpI
-LkRnLiRuYXRpdmVTdXBlcmNsYXNzVGFnPSJBcnJheUJ1ZmZlclZpZXciCkguV0IuJG5hdGl2ZVN1cGVy
-Y2xhc3NUYWc9IkFycmF5QnVmZmVyVmlldyIKSC5aRy4kbmF0aXZlU3VwZXJjbGFzc1RhZz0iQXJyYXlC
-dWZmZXJWaWV3IgpILlBnLiRuYXRpdmVTdXBlcmNsYXNzVGFnPSJBcnJheUJ1ZmZlclZpZXcifSkoKQpj
-b252ZXJ0QWxsVG9GYXN0T2JqZWN0KHcpCmNvbnZlcnRUb0Zhc3RPYmplY3QoJCk7KGZ1bmN0aW9uKGEp
-e2lmKHR5cGVvZiBkb2N1bWVudD09PSJ1bmRlZmluZWQiKXthKG51bGwpCnJldHVybn1pZih0eXBlb2Yg
-ZG9jdW1lbnQuY3VycmVudFNjcmlwdCE9J3VuZGVmaW5lZCcpe2EoZG9jdW1lbnQuY3VycmVudFNjcmlw
-dCkKcmV0dXJufXZhciB0PWRvY3VtZW50LnNjcmlwdHMKZnVuY3Rpb24gb25Mb2FkKGIpe2Zvcih2YXIg
-cj0wO3I8dC5sZW5ndGg7KytyKXRbcl0ucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIsb25Mb2FkLGZh
-bHNlKQphKGIudGFyZ2V0KX1mb3IodmFyIHM9MDtzPHQubGVuZ3RoOysrcyl0W3NdLmFkZEV2ZW50TGlz
-dGVuZXIoImxvYWQiLG9uTG9hZCxmYWxzZSl9KShmdW5jdGlvbihhKXt2LmN1cnJlbnRTY3JpcHQ9YQpp
-Zih0eXBlb2YgZGFydE1haW5SdW5uZXI9PT0iZnVuY3Rpb24iKWRhcnRNYWluUnVubmVyKEwuSXEsW10p
-CmVsc2UgTC5JcShbXSl9KX0pKCkKLy8jIHNvdXJjZU1hcHBpbmdVUkw9bWlncmF0aW9uLmpzLm1hcAo=
+ZXMgeW91IG1hZGUgYmVmb3JlIGRvaW5nIHRoaXMuIikpKUwudHkoIi9hcHBseS1taWdyYXRpb24iLG51
+bGwpLlc3KG5ldyBMLmpyKCksdS5QKS5PQShuZXcgTC5xbCgpKX0sCiRTOjR9CkwuanIucHJvdG90eXBl
+PXsKJDE6ZnVuY3Rpb24oYSl7dmFyIHQKdS5TLmEoYSkKdD1kb2N1bWVudC5ib2R5CnQuY2xhc3NMaXN0
+LnJlbW92ZSgicHJvcG9zZWQiKQp0LmNsYXNzTGlzdC5hZGQoImFwcGxpZWQiKX0sCiRTOjQyfQpMLnFs
+LnByb3RvdHlwZT17CiQyOmZ1bmN0aW9uKGEsYil7TC5DMigiQ291bGQgbm90IGFwcGx5IG1pZ3JhdGlv
+biIsYSxiKX0sCiRDOiIkMiIsCiRSOjIsCiRTOjF9CkwueTgucHJvdG90eXBlPXsKJDE6ZnVuY3Rpb24o
+YSl7cmV0dXJuIHRoaXMueG4odS5WLmEoYSkpfSwKeG46ZnVuY3Rpb24oYSl7dmFyIHQ9MCxzPVAuRlgo
+dS5QKSxyPTEscSxwPVtdLG8sbixtLGwKdmFyICRhc3luYyQkMT1QLmx6KGZ1bmN0aW9uKGIsYyl7aWYo
+Yj09PTEpe3E9Ywp0PXJ9d2hpbGUodHJ1ZSlzd2l0Y2godCl7Y2FzZSAwOnI9Mwpkb2N1bWVudC5ib2R5
+LmNsYXNzTGlzdC5hZGQoInJlcnVubmluZyIpCnQ9NgpyZXR1cm4gUC5qUShMLnR5KCIvcmVydW4tbWln
+cmF0aW9uIixudWxsKSwkYXN5bmMkJDEpCmNhc2UgNjp3aW5kb3cubG9jYXRpb24ucmVsb2FkKCkKcC5w
+dXNoKDUpCnQ9NApicmVhawpjYXNlIDM6cj0yCmw9cQpvPUguUnUobCkKbj1ILnRzKGwpCkwuQzIoIkZh
+aWxlZCB0byByZXJ1biBtaWdyYXRpb24iLG8sbikKcC5wdXNoKDUpCnQ9NApicmVhawpjYXNlIDI6cD1b
+MV0KY2FzZSA0OnI9MQpkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoInJlcnVubmluZyIpCnQ9
+cC5wb3AoKQpicmVhawpjYXNlIDU6cmV0dXJuIFAueUMobnVsbCxzKQpjYXNlIDE6cmV0dXJuIFAuZjMo
+cSxzKX19KQpyZXR1cm4gUC5ESSgkYXN5bmMkJDEscyl9LAokUzoxMX0KTC5IaS5wcm90b3R5cGU9ewok
+MTpmdW5jdGlvbihhKXt2YXIgdAp1LlYuYShhKQp0PXUuTgpDLm9sLlBvKHdpbmRvdyxQLlhkKCJodHRw
+cyIsImdpdGh1Yi5jb20iLCJkYXJ0LWxhbmcvc2RrL2lzc3Vlcy9uZXciLFAuRUYoWyJ0aXRsZSIsIkN1
+c3RvbWVyLXJlcG9ydGVkIGlzc3VlIHdpdGggTk5CRCBtaWdyYXRpb24gdG9vbCIsImxhYmVscyIsImFy
+ZWEtYW5hbHl6ZXIsYW5hbHl6ZXItbm5iZC1taWdyYXRpb24sdHlwZS1idWciLCJib2R5IiwiIyMjIyBT
+dGVwcyB0byByZXByb2R1Y2VcblxuIyMjIyBXaGF0IGRpZCB5b3UgZXhwZWN0IHRvIGhhcHBlbj9cblxu
+IyMjIyBXaGF0IGFjdHVhbGx5IGhhcHBlbmVkP1xuXG5fU2NyZWVuc2hvdHMgYXJlIGFwcHJlY2lhdGVk
+X1xuXG4qKkRhcnQgU0RLIHZlcnNpb24qKjogIitILmQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNk
+ay12ZXJzaW9uIikudGV4dENvbnRlbnQpKyJcblxuVGhhbmtzIGZvciBmaWxpbmchXG4iXSx0LHQpKS5a
+KDApLCJyZXBvcnQtcHJvYmxlbSIpfSwKJFM6NH0KTC5CVC5wcm90b3R5cGU9ewokMTpmdW5jdGlvbihh
+KXt2YXIgdAp1LlYuYShhKQp0PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5wb3B1cC1wYW5lIikuc3R5
+bGUKdC5kaXNwbGF5PSJub25lIgpyZXR1cm4ibm9uZSJ9LAokUzo0NH0KTC5MLnByb3RvdHlwZT17CiQx
+OmZ1bmN0aW9uKGEpe3ZhciB0LHMscgp1LkIuYShhKQp0PXdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZQpz
+PUwuRzYod2luZG93LmxvY2F0aW9uLmhyZWYpCnI9TC5hSyh3aW5kb3cubG9jYXRpb24uaHJlZikKaWYo
+dC5sZW5ndGg+MSlMLkc3KHQscyxyLCExLG51bGwpCmVsc2V7TC5CRSh0LG5ldyBCLnFwKCIiLCIiLCIi
+LEMuQ00pLCEwKQpMLkJYKCImbmJzcDsiLG51bGwpfX0sCiRTOjE5fQpMLld4LnByb3RvdHlwZT17CiQx
+OmZ1bmN0aW9uKGEpe3ZhciB0LHMscixxPSJjb2xsYXBzZWQiCnUuVi5hKGEpCnQ9dGhpcy5hCnM9Si5S
+RSh0KQpyPXRoaXMuYgppZighcy5nUCh0KS50ZygwLHEpKXtzLmdQKHQpLmkoMCxxKQpKLmRSKHIpLmko
+MCxxKX1lbHNle3MuZ1AodCkuUigwLHEpCkouZFIocikuUigwLHEpfX0sCiRTOjR9CkwuQU8ucHJvdG90
+eXBlPXsKJDE6ZnVuY3Rpb24oYSl7dmFyIHQ9Si5xRih1LmguYShhKSkscz10LiR0aSxyPXMuQygifigx
+KSIpLmEobmV3IEwuZE4odGhpcy5hKSkKdS5NLmEobnVsbCkKVy5KRSh0LmEsdC5iLHIsITEscy5jKX0s
+CiRTOjZ9CkwuZE4ucHJvdG90eXBlPXsKJDE6ZnVuY3Rpb24oYSl7dmFyIHQKdS5WLmEoYSkKdD1kb2N1
+bWVudC5xdWVyeVNlbGVjdG9yKCJ0YWJsZVtkYXRhLXBhdGhdIikKdC50b1N0cmluZwpMLnQyKGEsdGhp
+cy5hLHQuZ2V0QXR0cmlidXRlKCJkYXRhLSIrbmV3IFcuU3kobmV3IFcuaTcodCkpLk8oInBhdGgiKSkp
+fSwKJFM6NH0KTC5Iby5wcm90b3R5cGU9ewokMTpmdW5jdGlvbihhKXt2YXIgdCxzLHIKdS5oLmEoYSkK
+dD1KLnFGKGEpCnM9dC4kdGkKcj1zLkMoIn4oMSkiKS5hKG5ldyBMLnh6KGEsdGhpcy5hKSkKdS5NLmEo
+bnVsbCkKVy5KRSh0LmEsdC5iLHIsITEscy5jKX0sCiRTOjZ9CkwueHoucHJvdG90eXBlPXsKJDE6ZnVu
+Y3Rpb24oYSl7dmFyIHQscz1udWxsCnUuVi5hKGEpCnQ9dGhpcy5hCkwuaFgodGhpcy5iLFAuUUEodC5n
+ZXRBdHRyaWJ1dGUoImRhdGEtIituZXcgVy5TeShuZXcgVy5pNyh0KSkuTygib2Zmc2V0IikpLHMscyks
+UC5RQSh0LmdldEF0dHJpYnV0ZSgiZGF0YS0iK25ldyBXLlN5KG5ldyBXLmk3KHQpKS5PKCJsaW5lIikp
+LHMscykpfSwKJFM6NH0KTC5JQy5wcm90b3R5cGU9ewokMTpmdW5jdGlvbihhKXt2YXIgdD1KLnFGKHUu
+aC5hKGEpKSxzPXQuJHRpCnMuQygifigxKSIpLmEoTC5pUygpKQp1Lk0uYShudWxsKQpXLkpFKHQuYSx0
+LmIsTC5pUygpLCExLHMuYyl9LAokUzo2fQpMLkwxLnByb3RvdHlwZT17CiQxOmZ1bmN0aW9uKGEpe3Uu
+cC5hKGEpCnRoaXMuYS5hTSgwLHRoaXMuYil9LAokUzoxNn0KTC5uVC5wcm90b3R5cGU9ewokMDpmdW5j
+dGlvbigpe0wuRnIodGhpcy5hLmEsdGhpcy5iLHRoaXMuYyl9LAokUzowfQpMLkJaLnByb3RvdHlwZT17
+CiQwOmZ1bmN0aW9uKCl7TC5Gcih0aGlzLmEuYSxudWxsLG51bGwpfSwKJFM6MH0KTC5HSC5wcm90b3R5
+cGU9ewokMTpmdW5jdGlvbihhKXt1LmguYShhKQokLnpCKCkudG9TdHJpbmcKdS52LmEoJC5vdygpLnEo
+MCwiaGxqcyIpKS5WNygiaGlnaGxpZ2h0QmxvY2siLFthXSl9LAokUzo2fQpMLkRULnByb3RvdHlwZT17
+CiQxOmZ1bmN0aW9uKGEpe3ZhciB0LHMKdS5yLmEoYSkKdD1hLnN0YXR1cwppZih0PT09MjAwKXt0PUMu
+Q3QucFcoMCxhLnJlc3BvbnNlVGV4dCxudWxsKQpzPUouVTYodCkKTC5UMShuZXcgVS5kMihVLmpmKHMu
+cSh0LCJlZGl0cyIpKSxILmMocy5xKHQsImV4cGxhbmF0aW9uIikpLEguV1kocy5xKHQsImxpbmUiKSks
+SC5jKHMucSh0LCJwYXRoIikpLFUuTmQocy5xKHQsInRyYWNlcyIpKSkpCkwuRnIodGhpcy5hLHRoaXMu
+Yix0aGlzLmMpCkwueVgoIi5lZGl0LXBhbmVsIC5wYW5lbC1jb250ZW50IiwhMSl9ZWxzZSB3aW5kb3cu
+YWxlcnQoIlJlcXVlc3QgZmFpbGVkOyBzdGF0dXMgb2YgIitILmQodCkpfSwKJFM6MTB9CkwuZUgucHJv
+dG90eXBlPXsKJDI6ZnVuY3Rpb24oYSxiKXtMLnFKKCJsb2FkUmVnaW9uRXhwbGFuYXRpb246ICIrSC5k
+KGEpLGIpCndpbmRvdy5hbGVydCgiQ291bGQgbm90IGxvYWQgIitILmQodGhpcy5hKSsiICgiK0guZChh
+KSsiKS4iKX0sCiRDOiIkMiIsCiRSOjIsCiRTOjF9CkwueXUucHJvdG90eXBlPXsKJDE6ZnVuY3Rpb24o
+YSl7dmFyIHQscyxyPXRoaXMKdS5yLmEoYSkKdD1hLnN0YXR1cwppZih0PT09MjAwKXtzPXIuYQpMLkJF
+KHMsQi5ZZih1LmIuYShDLkN0LnBXKDAsYS5yZXNwb25zZVRleHQsbnVsbCkpKSxyLmIpCnQ9ci5jCkwu
+ZkcodCxyLmQpCkwuQlgoQy54Qi50ZyhzLCI/Iik/Qy54Qi5OaihzLDAsQy54Qi5PWShzLCI/IikpOnMs
+dCkKdD1yLmUKaWYodCE9bnVsbCl0LiQwKCl9ZWxzZSB3aW5kb3cuYWxlcnQoIlJlcXVlc3QgZmFpbGVk
+OyBzdGF0dXMgb2YgIitILmQodCkpfSwKJFM6MTB9CkwuekQucHJvdG90eXBlPXsKJDI6ZnVuY3Rpb24o
+YSxiKXtMLnFKKCJsb2FkRmlsZTogIitILmQoYSksYikKd2luZG93LmFsZXJ0KCJDb3VsZCBub3QgbG9h
+ZCAiK3RoaXMuYSsiICgiK0guZChhKSsiKS4iKX0sCiRDOiIkMiIsCiRSOjIsCiRTOjF9CkwuVFcucHJv
+dG90eXBlPXsKJDE6ZnVuY3Rpb24oYSl7dmFyIHQscyxyCnUuci5hKGEpCnQ9YS5zdGF0dXMKaWYodD09
+PTIwMCl7cz1DLkN0LnBXKDAsYS5yZXNwb25zZVRleHQsbnVsbCkKcj1kb2N1bWVudC5xdWVyeVNlbGVj
+dG9yKCIubmF2LXRyZWUiKQpKLmw1KHIsIiIpCkwudFgocixMLm1LKHMpKX1lbHNlIHdpbmRvdy5hbGVy
+dCgiUmVxdWVzdCBmYWlsZWQ7IHN0YXR1cyBvZiAiK0guZCh0KSl9LAokUzoxMH0KTC54ci5wcm90b3R5
+cGU9ewokMjpmdW5jdGlvbihhLGIpe0wucUooImxvYWROYXZpZ2F0aW9uVHJlZTogIitILmQoYSksYikK
+d2luZG93LmFsZXJ0KCJDb3VsZCBub3QgbG9hZCAiK3RoaXMuYSsiICgiK0guZChhKSsiKS4iKX0sCiRD
+OiIkMiIsCiRSOjIsCiRTOjF9CkwuRUUucHJvdG90eXBlPXsKJDE6ZnVuY3Rpb24oYSl7dmFyIHQscwp1
+LlYuYShhKQp0PXRoaXMuYQpzPXRoaXMuYgpMLmFmKHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSx0LHMs
+ITAsbmV3IEwuUUwodCxzKSkKTC5oWCh0aGlzLmMsdCxzKX0sCiRTOjR9CkwuUUwucHJvdG90eXBlPXsK
+JDA6ZnVuY3Rpb24oKXtMLkZyKHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSx0aGlzLmEsdGhpcy5iKX0s
+CiRTOjB9CkwuVlMucHJvdG90eXBlPXsKJDE6ZnVuY3Rpb24oYSl7dmFyIHQscz0ic2VsZWN0ZWQtZmls
+ZSIKdS5oLmEoYSkKYS50b1N0cmluZwp0PUouUkUoYSkKaWYoYS5nZXRBdHRyaWJ1dGUoImRhdGEtIitu
+ZXcgVy5TeShuZXcgVy5pNyhhKSkuTygibmFtZSIpKT09PXRoaXMuYS5hKXQuZ1AoYSkuaSgwLHMpCmVs
+c2UgdC5nUChhKS5SKDAscyl9LAokUzo2fQpMLlRELnByb3RvdHlwZT17CiQxOmZ1bmN0aW9uKGEpe3Jl
+dHVybiBMLnQyKHUuVi5hKGEpLCEwLG51bGwpfSwKJFM6MTJ9CkwuQVMucHJvdG90eXBlPXsKJDE6ZnVu
+Y3Rpb24oYSl7cmV0dXJuIHRoaXMuUEwodS5WLmEoYSkpfSwKUEw6ZnVuY3Rpb24oYSl7dmFyIHQ9MCxz
+PVAuRlgodS5QKSxyPTEscSxwPVtdLG89dGhpcyxuLG0sbCxrLGoKdmFyICRhc3luYyQkMT1QLmx6KGZ1
+bmN0aW9uKGIsYyl7aWYoYj09PTEpe3E9Ywp0PXJ9d2hpbGUodHJ1ZSlzd2l0Y2godCl7Y2FzZSAwOnI9
+MwpsPXUuTgp0PTYKcmV0dXJuIFAualEoTC50eShMLlE0KCIvYXBwbHktaGludCIsUC5GbChsLGwpKSxv
+LmEuTHQoKSksJGFzeW5jJCQxKQpjYXNlIDY6bD1vLmIKTC5HNyhsLmMsbnVsbCxsLmIsITEsbnVsbCkK
+ZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCJuZWVkcy1yZXJ1biIpCnI9MQp0PTUKYnJlYWsKY2Fz
+ZSAzOnI9MgpqPXEKbj1ILlJ1KGopCm09SC50cyhqKQpMLkMyKCJDb3VsZCBub3QgYXBwbHkgaGludCIs
+bixtKQp0PTUKYnJlYWsKY2FzZSAyOnQ9MQpicmVhawpjYXNlIDU6cmV0dXJuIFAueUMobnVsbCxzKQpj
+YXNlIDE6cmV0dXJuIFAuZjMocSxzKX19KQpyZXR1cm4gUC5ESSgkYXN5bmMkJDEscyl9LAokUzoxMX0K
+TC5YQS5wcm90b3R5cGU9ewpFYjpmdW5jdGlvbihhLGIsYyl7cmV0dXJuITB9LAppMDpmdW5jdGlvbihh
+KXtyZXR1cm4hMH0sCiRpa0Y6MX0KTC5aWi5wcm90b3R5cGU9ewpMdDpmdW5jdGlvbigpe3ZhciB0LHM9
+dGhpcyxyPVAuRmwodS5OLHUuSykKci5ZKDAsInR5cGUiLEwudnkocy5hKSkKci5ZKDAsIm5hbWUiLHMu
+YikKdD1zLmMKaWYodCE9bnVsbClyLlkoMCwic3VidHJlZSIsTC5WRCh0KSkKdD1zLmQKaWYodCE9bnVs
+bClyLlkoMCwicGF0aCIsdCkKdD1zLmUKaWYodCE9bnVsbClyLlkoMCwiaHJlZiIsdCkKdD1zLmYKaWYo
+dCE9bnVsbClyLlkoMCwiZWRpdENvdW50Iix0KQpyZXR1cm4gcn19CkwuTzkucHJvdG90eXBlPXsKWjpm
+dW5jdGlvbihhKXtyZXR1cm4gdGhpcy5ifX0KTS5sSS5wcm90b3R5cGU9ewpXTzpmdW5jdGlvbihhLGIp
+e3ZhciB0LHM9bnVsbApNLllGKCJhYnNvbHV0ZSIsSC5WTShbYixudWxsLG51bGwsbnVsbCxudWxsLG51
+bGwsbnVsbF0sdS5zKSkKdD10aGlzLmEKdD10LllyKGIpPjAmJiF0LmhLKGIpCmlmKHQpcmV0dXJuIGIK
+dD1ELlJYKCkKcmV0dXJuIHRoaXMucTcoMCx0LGIscyxzLHMscyxzLHMpfSwKemY6ZnVuY3Rpb24oYSl7
+dmFyIHQscyxyPVguQ0woYSx0aGlzLmEpCnIuSVYoKQp0PXIuZApzPXQubGVuZ3RoCmlmKHM9PT0wKXt0
+PXIuYgpyZXR1cm4gdD09bnVsbD8iLiI6dH1pZihzPT09MSl7dD1yLmIKcmV0dXJuIHQ9PW51bGw/Ii4i
+OnR9aWYoMD49cylyZXR1cm4gSC5rKHQsLTEpCnQucG9wKCkKQy5ObS5tdihyLmUpCnIuSVYoKQpyZXR1
+cm4gci5aKDApfSwKcTc6ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxoLGkpe3ZhciB0PUguVk0oW2IsYyxk
+LGUsZixnLGgsaV0sdS5zKQpNLllGKCJqb2luIix0KQpyZXR1cm4gdGhpcy5JUChuZXcgSC5VNSh0LHUu
+YkIuYShuZXcgTS5NaSgpKSx1LmNjKSl9LApJUDpmdW5jdGlvbihhKXt2YXIgdCxzLHIscSxwLG8sbixt
+LGwsawp1LlguYShhKQpmb3IodD1hLiR0aSxzPXQuQygiYTIoY1guRSkiKS5hKG5ldyBNLnE3KCkpLHI9
+YS5na3ooYSksdD1uZXcgSC52RyhyLHMsdC5DKCJ2RzxjWC5FPiIpKSxzPXRoaXMuYSxxPSExLHA9ITEs
+bz0iIjt0LkYoKTspe249ci5nbCgpCmlmKHMuaEsobikmJnApe209WC5DTChuLHMpCmw9by5jaGFyQ29k
+ZUF0KDApPT0wP286bwpvPUMueEIuTmoobCwwLHMuU3AobCwhMCkpCm0uYj1vCmlmKHMuZHMobykpQy5O
+bS5ZKG0uZSwwLHMuZ21JKCkpCm89bS5aKDApfWVsc2UgaWYocy5ZcihuKT4wKXtwPSFzLmhLKG4pCm89
+SC5kKG4pfWVsc2V7az1uLmxlbmd0aAppZihrIT09MCl7aWYoMD49aylyZXR1cm4gSC5rKG4sMCkKaz1z
+LlVkKG5bMF0pfWVsc2Ugaz0hMQppZighaylpZihxKW8rPXMuZ21JKCkKbys9bn1xPXMuZHMobil9cmV0
+dXJuIG8uY2hhckNvZGVBdCgwKT09MD9vOm99LApvNTpmdW5jdGlvbihhKXt2YXIgdAppZighdGhpcy55
+MyhhKSlyZXR1cm4gYQp0PVguQ0woYSx0aGlzLmEpCnQuclIoKQpyZXR1cm4gdC5aKDApfSwKeTM6ZnVu
+Y3Rpb24oYSl7dmFyIHQscyxyLHEscCxvLG4sbSxsLGsKYS50b1N0cmluZwp0PXRoaXMuYQpzPXQuWXIo
+YSkKaWYocyE9PTApe2lmKHQ9PT0kLktrKCkpZm9yKHI9MDtyPHM7KytyKWlmKEMueEIuVyhhLHIpPT09
+NDcpcmV0dXJuITAKcT1zCnA9NDd9ZWxzZXtxPTAKcD1udWxsfWZvcihvPW5ldyBILnFqKGEpLmEsbj1v
+Lmxlbmd0aCxyPXEsbT1udWxsO3I8bjsrK3IsbT1wLHA9bCl7bD1DLnhCLm0obyxyKQppZih0LnI0KGwp
+KXtpZih0PT09JC5LaygpJiZsPT09NDcpcmV0dXJuITAKaWYocCE9bnVsbCYmdC5yNChwKSlyZXR1cm4h
+MAppZihwPT09NDYpaz1tPT1udWxsfHxtPT09NDZ8fHQucjQobSkKZWxzZSBrPSExCmlmKGspcmV0dXJu
+ITB9fWlmKHA9PW51bGwpcmV0dXJuITAKaWYodC5yNChwKSlyZXR1cm4hMAppZihwPT09NDYpdD1tPT1u
+dWxsfHx0LnI0KG0pfHxtPT09NDYKZWxzZSB0PSExCmlmKHQpcmV0dXJuITAKcmV0dXJuITF9LApIUDpm
+dW5jdGlvbihhLGIpe3ZhciB0LHMscixxLHAsbyxuLG09dGhpcyxsPSdVbmFibGUgdG8gZmluZCBhIHBh
+dGggdG8gIicKYj1tLldPKDAsYikKdD1tLmEKaWYodC5ZcihiKTw9MCYmdC5ZcihhKT4wKXJldHVybiBt
+Lm81KGEpCmlmKHQuWXIoYSk8PTB8fHQuaEsoYSkpYT1tLldPKDAsYSkKaWYodC5ZcihhKTw9MCYmdC5Z
+cihiKT4wKXRocm93IEguYihYLkk3KGwrSC5kKGEpKyciIGZyb20gIicrSC5kKGIpKyciLicpKQpzPVgu
+Q0woYix0KQpzLnJSKCkKcj1YLkNMKGEsdCkKci5yUigpCnE9cy5kCnA9cS5sZW5ndGgKaWYocCE9PTAp
+e2lmKDA+PXApcmV0dXJuIEguayhxLDApCnE9Si5STShxWzBdLCIuIil9ZWxzZSBxPSExCmlmKHEpcmV0
+dXJuIHIuWigwKQpxPXMuYgpwPXIuYgppZihxIT1wKXE9cT09bnVsbHx8cD09bnVsbHx8IXQuTmMocSxw
+KQplbHNlIHE9ITEKaWYocSlyZXR1cm4gci5aKDApCndoaWxlKCEwKXtxPXMuZApwPXEubGVuZ3RoCmlm
+KHAhPT0wKXtvPXIuZApuPW8ubGVuZ3RoCmlmKG4hPT0wKXtpZigwPj1wKXJldHVybiBILmsocSwwKQpx
+PXFbMF0KaWYoMD49bilyZXR1cm4gSC5rKG8sMCkKbz10Lk5jKHEsb1swXSkKcT1vfWVsc2UgcT0hMX1l
+bHNlIHE9ITEKaWYoIXEpYnJlYWsKQy5ObS5XNChzLmQsMCkKQy5ObS5XNChzLmUsMSkKQy5ObS5XNChy
+LmQsMCkKQy5ObS5XNChyLmUsMSl9cT1zLmQKcD1xLmxlbmd0aAppZihwIT09MCl7aWYoMD49cClyZXR1
+cm4gSC5rKHEsMCkKcT1KLlJNKHFbMF0sIi4uIil9ZWxzZSBxPSExCmlmKHEpdGhyb3cgSC5iKFguSTco
+bCtILmQoYSkrJyIgZnJvbSAiJytILmQoYikrJyIuJykpCnE9dS5OCkMuTm0uVUcoci5kLDAsUC5POChz
+LmQubGVuZ3RoLCIuLiIscSkpCkMuTm0uWShyLmUsMCwiIikKQy5ObS5VRyhyLmUsMSxQLk84KHMuZC5s
+ZW5ndGgsdC5nbUkoKSxxKSkKdD1yLmQKcT10Lmxlbmd0aAppZihxPT09MClyZXR1cm4iLiIKaWYocT4x
+JiZKLlJNKEMuTm0uZ3JaKHQpLCIuIikpe3Q9ci5kCmlmKDA+PXQubGVuZ3RoKXJldHVybiBILmsodCwt
+MSkKdC5wb3AoKQp0PXIuZQpDLk5tLm12KHQpCkMuTm0ubXYodCkKQy5ObS5pKHQsIiIpfXIuYj0iIgpy
+LklWKCkKcmV0dXJuIHIuWigwKX19Ck0uTWkucHJvdG90eXBlPXsKJDE6ZnVuY3Rpb24oYSl7cmV0dXJu
+IEguYyhhKSE9bnVsbH0sCiRTOjd9Ck0ucTcucHJvdG90eXBlPXsKJDE6ZnVuY3Rpb24oYSl7cmV0dXJu
+IEguYyhhKSE9PSIifSwKJFM6N30KTS5Oby5wcm90b3R5cGU9ewokMTpmdW5jdGlvbihhKXtILmMoYSkK
+cmV0dXJuIGE9PW51bGw/Im51bGwiOiciJythKyciJ30sCiRTOjV9CkIuZnYucHJvdG90eXBlPXsKeFo6
+ZnVuY3Rpb24oYSl7dmFyIHQscz10aGlzLllyKGEpCmlmKHM+MClyZXR1cm4gSi5sZChhLDAscykKaWYo
+dGhpcy5oSyhhKSl7aWYoMD49YS5sZW5ndGgpcmV0dXJuIEguayhhLDApCnQ9YVswXX1lbHNlIHQ9bnVs
+bApyZXR1cm4gdH0sCk5jOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9PWJ9fQpYLldELnByb3RvdHlwZT17
+CklWOmZ1bmN0aW9uKCl7dmFyIHQscyxyPXRoaXMKd2hpbGUoITApe3Q9ci5kCmlmKCEodC5sZW5ndGgh
+PT0wJiZKLlJNKEMuTm0uZ3JaKHQpLCIiKSkpYnJlYWsKdD1yLmQKaWYoMD49dC5sZW5ndGgpcmV0dXJu
+IEguayh0LC0xKQp0LnBvcCgpCkMuTm0ubXYoci5lKX10PXIuZQpzPXQubGVuZ3RoCmlmKHMhPT0wKUMu
+Tm0uWSh0LHMtMSwiIil9LApyUjpmdW5jdGlvbigpe3ZhciB0LHMscixxLHAsbyxuLG09dGhpcyxsPUgu
+Vk0oW10sdS5zKQpmb3IodD1tLmQscz10Lmxlbmd0aCxyPTAscT0wO3E8dC5sZW5ndGg7dC5sZW5ndGg9
+PT1zfHwoMCxILmxrKSh0KSwrK3Epe3A9dFtxXQpvPUouaWEocCkKaWYoIShvLkROKHAsIi4iKXx8by5E
+TihwLCIiKSkpaWYoby5ETihwLCIuLiIpKXtvPWwubGVuZ3RoCmlmKG8hPT0wKXtpZigwPj1vKXJldHVy
+biBILmsobCwtMSkKbC5wb3AoKX1lbHNlICsrcn1lbHNlIEMuTm0uaShsLHApfWlmKG0uYj09bnVsbClD
+Lk5tLlVHKGwsMCxQLk84KHIsIi4uIix1Lk4pKQppZihsLmxlbmd0aD09PTAmJm0uYj09bnVsbClDLk5t
+LmkobCwiLiIpCm49UC5kSChsLmxlbmd0aCxuZXcgWC5xUihtKSwhMCx1Lk4pCnQ9bS5iCnQ9dCE9bnVs
+bCYmbC5sZW5ndGghPT0wJiZtLmEuZHModCk/bS5hLmdtSSgpOiIiCkgudDYobikuYy5hKHQpCmlmKCEh
+bi5maXhlZCRsZW5ndGgpSC52aChQLkw0KCJpbnNlcnQiKSkKbi5zcGxpY2UoMCwwLHQpCm0uc25KKGwp
+Cm0uc1BoKG4pCnQ9bS5iCmlmKHQhPW51bGwmJm0uYT09PSQuS2soKSl7dC50b1N0cmluZwptLmI9SC55
+cyh0LCIvIiwiXFwiKX1tLklWKCl9LApaOmZ1bmN0aW9uKGEpe3ZhciB0LHMscj10aGlzLHE9ci5iCnE9
+cSE9bnVsbD9xOiIiCmZvcih0PTA7dDxyLmQubGVuZ3RoOysrdCl7cz1yLmUKaWYodD49cy5sZW5ndGgp
+cmV0dXJuIEguayhzLHQpCnM9cStILmQoc1t0XSkKcT1yLmQKaWYodD49cS5sZW5ndGgpcmV0dXJuIEgu
+ayhxLHQpCnE9cytILmQocVt0XSl9cSs9SC5kKEMuTm0uZ3JaKHIuZSkpCnJldHVybiBxLmNoYXJDb2Rl
+QXQoMCk9PTA/cTpxfSwKc25KOmZ1bmN0aW9uKGEpe3RoaXMuZD11LmEuYShhKX0sCnNQaDpmdW5jdGlv
+bihhKXt0aGlzLmU9dS5hLmEoYSl9fQpYLnFSLnByb3RvdHlwZT17CiQxOmZ1bmN0aW9uKGEpe3JldHVy
+biB0aGlzLmEuYS5nbUkoKX0sCiRTOjQ4fQpYLmR2LnByb3RvdHlwZT17Clo6ZnVuY3Rpb24oYSl7cmV0
+dXJuIlBhdGhFeGNlcHRpb246ICIrdGhpcy5hfSwKJGlSejoxfQpPLnpMLnByb3RvdHlwZT17Clo6ZnVu
+Y3Rpb24oYSl7cmV0dXJuIHRoaXMuZ29jKHRoaXMpfX0KRS5PRi5wcm90b3R5cGU9ewpVZDpmdW5jdGlv
+bihhKXtyZXR1cm4gQy54Qi50ZyhhLCIvIil9LApyNDpmdW5jdGlvbihhKXtyZXR1cm4gYT09PTQ3fSwK
+ZHM6ZnVuY3Rpb24oYSl7dmFyIHQ9YS5sZW5ndGgKcmV0dXJuIHQhPT0wJiZDLnhCLm0oYSx0LTEpIT09
+NDd9LApTcDpmdW5jdGlvbihhLGIpe2lmKGEubGVuZ3RoIT09MCYmQy54Qi5XKGEsMCk9PT00NylyZXR1
+cm4gMQpyZXR1cm4gMH0sCllyOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLlNwKGEsITEpfSwKaEs6ZnVu
+Y3Rpb24oYSl7cmV0dXJuITF9LApnb2M6ZnVuY3Rpb24oKXtyZXR1cm4icG9zaXgifSwKZ21JOmZ1bmN0
+aW9uKCl7cmV0dXJuIi8ifX0KRi5ydS5wcm90b3R5cGU9ewpVZDpmdW5jdGlvbihhKXtyZXR1cm4gQy54
+Qi50ZyhhLCIvIil9LApyNDpmdW5jdGlvbihhKXtyZXR1cm4gYT09PTQ3fSwKZHM6ZnVuY3Rpb24oYSl7
+dmFyIHQ9YS5sZW5ndGgKaWYodD09PTApcmV0dXJuITEKaWYoQy54Qi5tKGEsdC0xKSE9PTQ3KXJldHVy
+biEwCnJldHVybiBDLnhCLlRjKGEsIjovLyIpJiZ0aGlzLllyKGEpPT09dH0sClNwOmZ1bmN0aW9uKGEs
+Yil7dmFyIHQscyxyLHEscD1hLmxlbmd0aAppZihwPT09MClyZXR1cm4gMAppZihDLnhCLlcoYSwwKT09
+PTQ3KXJldHVybiAxCmZvcih0PTA7dDxwOysrdCl7cz1DLnhCLlcoYSx0KQppZihzPT09NDcpcmV0dXJu
+IDAKaWYocz09PTU4KXtpZih0PT09MClyZXR1cm4gMApyPUMueEIuWFUoYSwiLyIsQy54Qi5RaShhLCIv
+LyIsdCsxKT90KzM6dCkKaWYocjw9MClyZXR1cm4gcAppZighYnx8cDxyKzMpcmV0dXJuIHIKaWYoIUMu
+eEIubihhLCJmaWxlOi8vIikpcmV0dXJuIHIKaWYoIUIuWXUoYSxyKzEpKXJldHVybiByCnE9ciszCnJl
+dHVybiBwPT09cT9xOnIrNH19cmV0dXJuIDB9LApZcjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5TcChh
+LCExKX0sCmhLOmZ1bmN0aW9uKGEpe3JldHVybiBhLmxlbmd0aCE9PTAmJkMueEIuVyhhLDApPT09NDd9
+LApnb2M6ZnVuY3Rpb24oKXtyZXR1cm4idXJsIn0sCmdtSTpmdW5jdGlvbigpe3JldHVybiIvIn19Ckwu
+SVYucHJvdG90eXBlPXsKVWQ6ZnVuY3Rpb24oYSl7cmV0dXJuIEMueEIudGcoYSwiLyIpfSwKcjQ6ZnVu
+Y3Rpb24oYSl7cmV0dXJuIGE9PT00N3x8YT09PTkyfSwKZHM6ZnVuY3Rpb24oYSl7dmFyIHQ9YS5sZW5n
+dGgKaWYodD09PTApcmV0dXJuITEKdD1DLnhCLm0oYSx0LTEpCnJldHVybiEodD09PTQ3fHx0PT09OTIp
+fSwKU3A6ZnVuY3Rpb24oYSxiKXt2YXIgdCxzLHI9YS5sZW5ndGgKaWYocj09PTApcmV0dXJuIDAKdD1D
+LnhCLlcoYSwwKQppZih0PT09NDcpcmV0dXJuIDEKaWYodD09PTkyKXtpZihyPDJ8fEMueEIuVyhhLDEp
+IT09OTIpcmV0dXJuIDEKcz1DLnhCLlhVKGEsIlxcIiwyKQppZihzPjApe3M9Qy54Qi5YVShhLCJcXCIs
+cysxKQppZihzPjApcmV0dXJuIHN9cmV0dXJuIHJ9aWYocjwzKXJldHVybiAwCmlmKCFCLk9TKHQpKXJl
+dHVybiAwCmlmKEMueEIuVyhhLDEpIT09NTgpcmV0dXJuIDAKcj1DLnhCLlcoYSwyKQppZighKHI9PT00
+N3x8cj09PTkyKSlyZXR1cm4gMApyZXR1cm4gM30sCllyOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLlNw
+KGEsITEpfSwKaEs6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuWXIoYSk9PT0xfSwKT3Q6ZnVuY3Rpb24o
+YSxiKXt2YXIgdAppZihhPT09YilyZXR1cm4hMAppZihhPT09NDcpcmV0dXJuIGI9PT05MgppZihhPT09
+OTIpcmV0dXJuIGI9PT00NwppZigoYV5iKSE9PTMyKXJldHVybiExCnQ9YXwzMgpyZXR1cm4gdD49OTcm
+JnQ8PTEyMn0sCk5jOmZ1bmN0aW9uKGEsYil7dmFyIHQscyxyCmlmKGE9PWIpcmV0dXJuITAKdD1hLmxl
+bmd0aAppZih0IT09Yi5sZW5ndGgpcmV0dXJuITEKZm9yKHM9Si5yWShiKSxyPTA7cjx0OysrcilpZigh
+dGhpcy5PdChDLnhCLlcoYSxyKSxzLlcoYixyKSkpcmV0dXJuITEKcmV0dXJuITB9LApnb2M6ZnVuY3Rp
+b24oKXtyZXR1cm4id2luZG93cyJ9LApnbUk6ZnVuY3Rpb24oKXtyZXR1cm4iXFwifX07KGZ1bmN0aW9u
+IGFsaWFzZXMoKXt2YXIgdD1KLnZCLnByb3RvdHlwZQp0LlU9dC5aCnQuU2o9dC5lNwp0PUouTUYucHJv
+dG90eXBlCnQudD10LloKdD1QLmNYLnByb3RvdHlwZQp0LkdHPXQuZXYKdD1QLk1oLnByb3RvdHlwZQp0
+LnhiPXQuWgp0PVcuY3YucHJvdG90eXBlCnQuRFc9dC5yNgp0PVcubTYucHJvdG90eXBlCnQuakY9dC5F
+Ygp0PVAuRTQucHJvdG90eXBlCnQuVXI9dC5xCnQuZTQ9dC5ZfSkoKTsoZnVuY3Rpb24gaW5zdGFsbFRl
+YXJPZmZzKCl7dmFyIHQ9aHVua0hlbHBlcnMuX3N0YXRpY18xLHM9aHVua0hlbHBlcnMuX3N0YXRpY18w
+LHI9aHVua0hlbHBlcnMuaW5zdGFsbEluc3RhbmNlVGVhck9mZixxPWh1bmtIZWxwZXJzLmluc3RhbGxT
+dGF0aWNUZWFyT2ZmLHA9aHVua0hlbHBlcnMuX2luc3RhbmNlXzF1CnQoUCwiRVgiLCJaViIsOCkKdChQ
+LCJ5dCIsIm9BIiw4KQp0KFAsInFXIiwiQnoiLDgpCnMoUCwiVjkiLCJlTiIsMykKcihQLlBmLnByb3Rv
+dHlwZSwiZ1lKIiwwLDEsbnVsbCxbIiQyIiwiJDEiXSxbIncwIiwicG0iXSw0OSwwKQp0KFAsIkN5Iiwi
+TkMiLDIpCnQoUCwiUEgiLCJNdCIsNSkKcShXLCJwUyIsNCxudWxsLFsiJDQiXSxbInlXIl0sMTgsMCkK
+cShXLCJWNCIsNCxudWxsLFsiJDQiXSxbIlFXIl0sMTgsMCkKcChQLkFzLnByb3RvdHlwZSwiZ3VNIiwi
+VCIsNSkKdChQLCJpRyIsIndZIiwyKQp0KFAsIncwIiwiTDciLDMzKQp0KEwsImlTIiwiaTYiLDEyKX0p
+KCk7KGZ1bmN0aW9uIGluaGVyaXRhbmNlKCl7dmFyIHQ9aHVua0hlbHBlcnMubWl4aW4scz1odW5rSGVs
+cGVycy5pbmhlcml0LHI9aHVua0hlbHBlcnMuaW5oZXJpdE1hbnkKcyhQLk1oLG51bGwpCnIoUC5NaCxb
+SC5GSyxKLnZCLEoubTEsUC5uWSxQLmNYLEguYTcsUC5BbixILlNVLEguUmUsSC53dixQLlBuLEguV1Us
+SC5MSSxILlRwLEguZjksUC5YUyxILmJxLEguWE8sUC5ZayxILmRiLEguTjYsSC5WUixILkVLLEguUGIs
+SC50USxILlNkLEguSmMsSC5FVCxQLlczLFAuaWgsUC5GeSxQLkdWLFAuYjgsUC5QZixQLkZlLFAudnMs
+UC5PTSxQLnFoLFAuTU8sUC5rVCxQLnhJLFAuT0gsUC5tMCxQLlh2LFAuYm4sUC5sbSxQLmxELFAuS1As
+UC5NYSxQLlRDLFAuVWssUC5TaCxQLlJ3LFAuYnosUC5hMixQLmlQLFAubGYsUC5rNSxQLktZLFAuQ0Qs
+UC5hRSxQLkVILFAuek0sUC5aMCxQLk4zLFAuYzgsUC5PZCxQLmliLFAuR3osUC5aZCxQLnFVLFAuUm4s
+UC5HRCxQLkRuLFAuUEUsUC5VZixXLmlkLFcuRmssVy5KUSxXLkdtLFcudkQsVy5tNixXLk93LFcuVzks
+Vy5kVyxXLkZiLFcua0YsVy5tayxXLktvLFAuaUosUC5FNCxQLm42LE0uSDcsVS5MTCxVLmQyLFUuU2Us
+VS5NbCxVLnlELFUud2IsQi5qOCxCLnFwLFQubVEsTC5YQSxMLlpaLEwuTzksTS5sSSxPLnpMLFguV0Qs
+WC5kdl0pCnIoSi52QixbSi55RSxKLllFLEouTUYsSi5qZCxKLnFJLEouRHIsSC5wRixXLkQwLFcuQXos
+Vy5MZSxXLk5oLFcuSUIsVy5uNyxXLmVhLFcuYnIsVy5TZyxXLnU4LFcuSzcsVy5YVyxQLmhGXSkKcihK
+Lk1GLFtKLmlDLEoua2QsSi5jNV0pCnMoSi5QbyxKLmpkKQpyKEoucUksW0oudXIsSi5WQV0pCnMoUC5M
+VSxQLm5ZKQpyKFAuTFUsW0gudzIsVy53eixXLmU3XSkKcyhILnFqLEgudzIpCnIoUC5jWCxbSC5iUSxI
+LmkxLEguVTUsSC5YUixQLm1XLEguTkZdKQpyKEguYlEsW0guYUwsSC5pNSxQLnh1XSkKcihILmFMLFtI
+Lm5ILEgubEosUC5pOF0pCnMoSC54eSxILmkxKQpyKFAuQW4sW0guTUgsSC52R10pCnMoUC5SVSxQLlBu
+KQpzKFAuR2osUC5SVSkKcyhILlBELFAuR2opCnMoSC5MUCxILldVKQpyKEguVHAsW0guQ2osSC5BbSxI
+LmxjLEgucixILmRDLEgud04sUC50aCxQLmhhLFAuVnMsUC5GdCxQLnlILFAuV00sUC5TWCxQLkdzLFAu
+ZGEsUC5vUSxQLnBWLFAuVTcsUC52cixQLnJILFAuS0YsUC5aTCxQLlJULFAualosUC5ycSxQLlJXLFAu
+QjUsUC51TyxQLnBLLFAuaGosUC5WcCxQLk9SLFAucmEsUC55USxQLnRpLFAuV0YsUC5uMSxQLmNTLFAu
+VkMsUC5KVCxQLmUxLFAuTlksUC5SWixQLk1FLFAueTUsUC5xMyxQLnlJLFAuYzYsUC5xZCxXLkN2LFcu
+YlUsVy5oSCxXLktTLFcuQTMsVy52TixXLlV2LFcuRWcsVy5FbyxXLldrLFcuSUEsVy5mbSxQLmpnLFAu
+VGEsUC5HRSxQLk43LFAudVEsUC5QQyxQLm10LFAuTnosUC5RUyxQLm5wLFUuTUQsVS5hTixVLmIwLEwu
+ZSxMLlZXLEwub1osTC5qcixMLnFsLEwueTgsTC5IaSxMLkJULEwuTCxMLld4LEwuQU8sTC5kTixMLkhv
+LEwueHosTC5JQyxMLkwxLEwublQsTC5CWixMLkdILEwuRFQsTC5lSCxMLnl1LEwuekQsTC5UVyxMLnhy
+LEwuRUUsTC5RTCxMLlZTLEwuVEQsTC5BUyxNLk1pLE0ucTcsTS5ObyxYLnFSXSkKcihQLlhTLFtILlcw
+LEguYXosSC52VixILkVxLFAuQzYsSC51OSxQLlVkLFAuTEssUC5BVCxQLm1wLFAudWIsUC5kcyxQLmxq
+LFAuVVYsUC50N10pCnIoSC5sYyxbSC56eCxILmp5XSkKcyhILmtZLFAuQzYpCnMoUC5pbCxQLllrKQpy
+KFAuaWwsW0guTjUsUC51dyxXLmNmLFcuU3ldKQpyKFAubVcsW0guS1csUC5xNF0pCnMoSC5MWixILnBG
+KQpyKEguTFosW0guUkcsSC5XQl0pCnMoSC5WUCxILlJHKQpzKEguRGcsSC5WUCkKcyhILlpHLEguV0Ip
+CnMoSC5QZyxILlpHKQpyKEguUGcsW0gueGosSC5kRSxILlpBLEgud2YsSC5QcSxILmVFLEguVjZdKQpz
+KEgueCxILnU5KQpzKFAuWmYsUC5QZikKcyhQLkppLFAubTApCnMoUC5iNixQLlh2KQpzKFAuVmosUC5U
+QykKcihQLlVrLFtQLkNWLFAuWmksUC5ieV0pCnMoUC53SSxQLmtUKQpyKFAud0ksW1AuVTgsUC5vaixQ
+Lk14LFAuRTMsUC5HWV0pCnMoUC5LOCxQLlVkKQpzKFAudHUsUC5TaCkKcyhQLnU1LFAuWmkpCnIoUC5s
+ZixbUC5DUCxQLklmXSkKcihQLkFULFtQLmJKLFAuZVldKQpzKFAucWUsUC5EbikKcihXLkQwLFtXLnVI
+LFcud2EsVy5LNSxXLkNtXSkKcihXLnVILFtXLmN2LFcubngsVy5RRixXLkNRXSkKcihXLmN2LFtXLnFF
+LFAuZDVdKQpyKFcucUUsW1cuR2gsVy5mWSxXLm5CLFcuUVAsVy5oNCxXLlNOLFcubHAsVy5UYixXLkl2
+LFcuV1AsVy55WV0pCnMoVy5vSixXLkxlKQpzKFcuVDUsVy5BeikKcyhXLlZiLFcuUUYpCnMoVy5mSixX
+LndhKQpyKFcuZWEsW1cudzYsVy5ld10pCnMoVy5PSyxXLnc2KQpzKFcuckIsVy5LNykKcyhXLkJILFcu
+ckIpCnMoVy53NCxXLklCKQpzKFcub2EsVy5YVykKcyhXLnJoLFcub2EpCnMoVy5pNyxXLmNmKQpzKFAu
+QXMsUC5WaikKcihQLkFzLFtXLkk0LFAuS2VdKQpzKFcuUk8sUC5xaCkKcyhXLmV1LFcuUk8pCnMoVy54
+QyxQLk1PKQpzKFcuY3QsVy5tNikKcyhQLkJmLFAuaUopCnIoUC5FNCxbUC5yNyxQLmNvXSkKcyhQLlR6
+LFAuY28pCnMoUC5uZCxQLmQ1KQpzKEIuZnYsTy56TCkKcihCLmZ2LFtFLk9GLEYucnUsTC5JVl0pCnQo
+SC53MixILlJlKQp0KEguUkcsUC5sRCkKdChILlZQLEguU1UpCnQoSC5XQixQLmxEKQp0KEguWkcsSC5T
+VSkKdChQLm5ZLFAubEQpCnQoUC5UQyxQLk1hKQp0KFAuUlUsUC5LUCkKdChXLkxlLFcuaWQpCnQoVy5L
+NyxQLmxEKQp0KFcuckIsVy5HbSkKdChXLlhXLFAubEQpCnQoVy5vYSxXLkdtKQp0KFAuY28sUC5sRCl9
+KSgpCnZhciB2PXt0eXBlVW5pdmVyc2U6e2VDOm5ldyBNYXAoKSx0Ujp7fSxlVDp7fSx0UFY6e30sc0VB
+OltdfSxtYW5nbGVkR2xvYmFsTmFtZXM6e0lmOiJpbnQiLENQOiJkb3VibGUiLGxmOiJudW0iLHFVOiJT
+dHJpbmciLGEyOiJib29sIixjODoiTnVsbCIsek06Ikxpc3QifSxtYW5nbGVkTmFtZXM6e30sZ2V0VHlw
+ZUZyb21OYW1lOmdldEdsb2JhbEZyb21OYW1lLG1ldGFkYXRhOltdLHR5cGVzOlsiYzgoKSIsImM4KEAs
+QCkiLCJAKEApIiwifigpIiwiYzgoT0spIiwicVUocVUpIiwiYzgoY3YpIiwiYTIocVUpIiwifih+KCkp
+IiwiYzgocVUscVUpIiwiYzgoZkopIiwiYjg8Yzg+KE9LKSIsIn4oT0spIiwiYzgoQCkiLCJjOChxVSxA
+KSIsImM4KHFVKSIsImM4KGV3KSIsImEyKGtGKSIsImEyKGN2LHFVLHFVLEpRKSIsImM4KGVhKSIsIn4o
+eHU8cVU+KSIsImEyKHVIKSIsIn4ocVUscVUpIiwibjYoSWYpIiwibjYoQCxAKSIsImM4KEBbR3pdKSIs
+IkAoQCxxVSkiLCJaMDxxVSxxVT4oWjA8cVUscVU+LHFVKSIsIkAoZWEpIiwidnM8QD4oQCkiLCJAKHFV
+KSIsIn4odUgsdUgpIiwiYTIoeHU8cVU+KSIsIk1oKEApIiwicjcoQCkiLCJUejxAPihAKSIsIkU0KEAp
+IiwifihxVVtAXSkiLCJMTChAKSIsIlowPHFVLE1oPihMTCkiLCJJZihJZixJZikiLCJjOChHRCxAKSIs
+ImM4KFowPHFVLE1oPikiLCJ+KHFVLElmKSIsInFVKE9LKSIsImM4KEAsR3opIiwiYzgoSWYsQCkiLCJj
+OCh+KCkpIiwicVUoSWYpIiwifihNaFtHel0pIiwiYTIoSDcpIiwifihAKSJdLGludGVyY2VwdG9yc0J5
+VGFnOm51bGwsbGVhZlRhZ3M6bnVsbCxhcnJheVJ0aTp0eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZ0
+eXBlb2YgU3ltYm9sKCk9PSJzeW1ib2wiP1N5bWJvbCgiJHRpIik6IiR0aSJ9CkgueGIodi50eXBlVW5p
+dmVyc2UsSlNPTi5wYXJzZSgneyJjNSI6Ik1GIiwiaUMiOiJNRiIsImtkIjoiTUYiLCJyeCI6ImVhIiwi
+ZTUiOiJlYSIsIlkwIjoiZDUiLCJ0cCI6ImQ1IiwiRzgiOiJldyIsIk1yIjoicUUiLCJlTCI6InFFIiwi
+STAiOiJ1SCIsImhzIjoidUgiLCJYZyI6IlFGIiwieWMiOiJPSyIsInk0IjoidzYiLCJhUCI6IkNtIiwi
+eGMiOiJueCIsImtKIjoibngiLCJ6VSI6IkRnIiwiZGYiOiJwRiIsInlFIjp7ImEyIjpbXX0sIllFIjp7
+ImM4IjpbXX0sIk1GIjp7InZtIjpbXSwiRUgiOltdfSwiamQiOnsiek0iOlsiMSJdLCJiUSI6WyIxIl0s
+ImNYIjpbIjEiXX0sIlBvIjp7ImpkIjpbIjEiXSwiek0iOlsiMSJdLCJiUSI6WyIxIl0sImNYIjpbIjEi
+XX0sIm0xIjp7IkFuIjpbIjEiXX0sInFJIjp7IkNQIjpbXSwibGYiOltdfSwidXIiOnsiSWYiOltdLCJD
+UCI6W10sImxmIjpbXX0sIlZBIjp7IkNQIjpbXSwibGYiOltdfSwiRHIiOnsicVUiOltdLCJ2WCI6W119
+LCJxaiI6eyJSZSI6WyJJZiJdLCJsRCI6WyJJZiJdLCJ6TSI6WyJJZiJdLCJiUSI6WyJJZiJdLCJjWCI6
+WyJJZiJdLCJsRC5FIjoiSWYiLCJSZS5FIjoiSWYifSwiYlEiOnsiY1giOlsiMSJdfSwiYUwiOnsiYlEi
+OlsiMSJdLCJjWCI6WyIxIl19LCJuSCI6eyJhTCI6WyIxIl0sImJRIjpbIjEiXSwiY1giOlsiMSJdLCJh
+TC5FIjoiMSIsImNYLkUiOiIxIn0sImE3Ijp7IkFuIjpbIjEiXX0sImkxIjp7ImNYIjpbIjIiXSwiY1gu
+RSI6IjIifSwieHkiOnsiaTEiOlsiMSIsIjIiXSwiYlEiOlsiMiJdLCJjWCI6WyIyIl0sImNYLkUiOiIy
+In0sIk1IIjp7IkFuIjpbIjIiXX0sImxKIjp7ImFMIjpbIjIiXSwiYlEiOlsiMiJdLCJjWCI6WyIyIl0s
+ImFMLkUiOiIyIiwiY1guRSI6IjIifSwiVTUiOnsiY1giOlsiMSJdLCJjWC5FIjoiMSJ9LCJ2RyI6eyJB
+biI6WyIxIl19LCJ3MiI6eyJSZSI6WyIxIl0sImxEIjpbIjEiXSwiek0iOlsiMSJdLCJiUSI6WyIxIl0s
+ImNYIjpbIjEiXX0sInd2Ijp7IkdEIjpbXX0sIlBEIjp7IkdqIjpbIjEiLCIyIl0sIlJVIjpbIjEiLCIy
+Il0sIlBuIjpbIjEiLCIyIl0sIktQIjpbIjEiLCIyIl0sIlowIjpbIjEiLCIyIl19LCJXVSI6eyJaMCI6
+WyIxIiwiMiJdfSwiTFAiOnsiV1UiOlsiMSIsIjIiXSwiWjAiOlsiMSIsIjIiXX0sIlhSIjp7ImNYIjpb
+IjEiXSwiY1guRSI6IjEifSwiTEkiOnsidlEiOltdfSwiVzAiOnsiWFMiOltdfSwiYXoiOnsiWFMiOltd
+fSwidlYiOnsiWFMiOltdfSwiWE8iOnsiR3oiOltdfSwiVHAiOnsiRUgiOltdfSwibGMiOnsiRUgiOltd
+fSwiengiOnsiRUgiOltdfSwiankiOnsiRUgiOltdfSwiRXEiOnsiWFMiOltdfSwia1kiOnsiWFMiOltd
+fSwiTjUiOnsiRm8iOlsiMSIsIjIiXSwiWWsiOlsiMSIsIjIiXSwiWjAiOlsiMSIsIjIiXSwiWWsuSyI6
+IjEiLCJZay5WIjoiMiJ9LCJpNSI6eyJiUSI6WyIxIl0sImNYIjpbIjEiXSwiY1guRSI6IjEifSwiTjYi
+OnsiQW4iOlsiMSJdfSwiVlIiOnsid0wiOltdLCJ2WCI6W119LCJFSyI6eyJpYiI6W10sIk9kIjpbXX0s
+IktXIjp7ImNYIjpbImliIl0sImNYLkUiOiJpYiJ9LCJQYiI6eyJBbiI6WyJpYiJdfSwidFEiOnsiT2Qi
+OltdfSwiTkYiOnsiY1giOlsiT2QiXSwiY1guRSI6Ik9kIn0sIlNkIjp7IkFuIjpbIk9kIl19LCJwRiI6
+eyJlcSI6W119LCJMWiI6eyJYaiI6WyJAIl0sInBGIjpbXSwiZXEiOltdfSwiRGciOnsibEQiOlsiQ1Ai
+XSwiWGoiOlsiQCJdLCJ6TSI6WyJDUCJdLCJwRiI6W10sImJRIjpbIkNQIl0sIlNVIjpbIkNQIl0sImVx
+IjpbXSwiY1giOlsiQ1AiXSwibEQuRSI6IkNQIn0sIlBnIjp7ImxEIjpbIklmIl0sInpNIjpbIklmIl0s
+IlhqIjpbIkAiXSwicEYiOltdLCJiUSI6WyJJZiJdLCJTVSI6WyJJZiJdLCJlcSI6W10sImNYIjpbIklm
+Il19LCJ4aiI6eyJsRCI6WyJJZiJdLCJ6TSI6WyJJZiJdLCJYaiI6WyJAIl0sInBGIjpbXSwiYlEiOlsi
+SWYiXSwiU1UiOlsiSWYiXSwiZXEiOltdLCJjWCI6WyJJZiJdLCJsRC5FIjoiSWYifSwiZEUiOnsibEQi
+OlsiSWYiXSwiek0iOlsiSWYiXSwiWGoiOlsiQCJdLCJwRiI6W10sImJRIjpbIklmIl0sIlNVIjpbIklm
+Il0sImVxIjpbXSwiY1giOlsiSWYiXSwibEQuRSI6IklmIn0sIlpBIjp7ImxEIjpbIklmIl0sInpNIjpb
+IklmIl0sIlhqIjpbIkAiXSwicEYiOltdLCJiUSI6WyJJZiJdLCJTVSI6WyJJZiJdLCJlcSI6W10sImNY
+IjpbIklmIl0sImxELkUiOiJJZiJ9LCJ3ZiI6eyJsRCI6WyJJZiJdLCJ6TSI6WyJJZiJdLCJYaiI6WyJA
+Il0sInBGIjpbXSwiYlEiOlsiSWYiXSwiU1UiOlsiSWYiXSwiZXEiOltdLCJjWCI6WyJJZiJdLCJsRC5F
+IjoiSWYifSwiUHEiOnsibEQiOlsiSWYiXSwiek0iOlsiSWYiXSwiWGoiOlsiQCJdLCJwRiI6W10sImJR
+IjpbIklmIl0sIlNVIjpbIklmIl0sImVxIjpbXSwiY1giOlsiSWYiXSwibEQuRSI6IklmIn0sImVFIjp7
+ImxEIjpbIklmIl0sInpNIjpbIklmIl0sIlhqIjpbIkAiXSwicEYiOltdLCJiUSI6WyJJZiJdLCJTVSI6
+WyJJZiJdLCJlcSI6W10sImNYIjpbIklmIl0sImxELkUiOiJJZiJ9LCJWNiI6eyJuNiI6W10sImxEIjpb
+IklmIl0sInpNIjpbIklmIl0sIlhqIjpbIkAiXSwicEYiOltdLCJiUSI6WyJJZiJdLCJTVSI6WyJJZiJd
+LCJlcSI6W10sImNYIjpbIklmIl0sImxELkUiOiJJZiJ9LCJ1OSI6eyJYUyI6W119LCJ4Ijp7IlhTIjpb
+XX0sIkdWIjp7IkFuIjpbIjEiXX0sInE0Ijp7ImNYIjpbIjEiXSwiY1guRSI6IjEifSwiWmYiOnsiUGYi
+OlsiMSJdfSwidnMiOnsiYjgiOlsiMSJdfSwiT0giOnsiWFMiOltdfSwibTAiOnsiSkIiOltdfSwiSmki
+OnsiSkIiOltdfSwiYjYiOnsiWHYiOlsiMSJdLCJ4dSI6WyIxIl0sImJRIjpbIjEiXSwiY1giOlsiMSJd
+fSwibG0iOnsiQW4iOlsiMSJdfSwibVciOnsiY1giOlsiMSJdfSwiTFUiOnsibEQiOlsiMSJdLCJ6TSI6
+WyIxIl0sImJRIjpbIjEiXSwiY1giOlsiMSJdfSwiaWwiOnsiWWsiOlsiMSIsIjIiXSwiWjAiOlsiMSIs
+IjIiXX0sIllrIjp7IlowIjpbIjEiLCIyIl19LCJQbiI6eyJaMCI6WyIxIiwiMiJdfSwiR2oiOnsiUlUi
+OlsiMSIsIjIiXSwiUG4iOlsiMSIsIjIiXSwiS1AiOlsiMSIsIjIiXSwiWjAiOlsiMSIsIjIiXX0sIlZq
+Ijp7Ik1hIjpbIjEiXSwieHUiOlsiMSJdLCJiUSI6WyIxIl0sImNYIjpbIjEiXX0sIlh2Ijp7Inh1Ijpb
+IjEiXSwiYlEiOlsiMSJdLCJjWCI6WyIxIl19LCJ1dyI6eyJZayI6WyJxVSIsIkAiXSwiWjAiOlsicVUi
+LCJAIl0sIllrLksiOiJxVSIsIllrLlYiOiJAIn0sImk4Ijp7ImFMIjpbInFVIl0sImJRIjpbInFVIl0s
+ImNYIjpbInFVIl0sImFMLkUiOiJxVSIsImNYLkUiOiJxVSJ9LCJDViI6eyJVayI6WyJ6TTxJZj4iLCJx
+VSJdLCJVay5TIjoiek08SWY+In0sIlU4Ijp7IndJIjpbInpNPElmPiIsInFVIl19LCJaaSI6eyJVayI6
+WyJxVSIsInpNPElmPiJdfSwiVWQiOnsiWFMiOltdfSwiSzgiOnsiWFMiOltdfSwiYnkiOnsiVWsiOlsi
+TWgiLCJxVSJdLCJVay5TIjoiTWgifSwib2oiOnsid0kiOlsiTWgiLCJxVSJdfSwiTXgiOnsid0kiOlsi
+cVUiLCJNaCJdfSwidTUiOnsiVWsiOlsicVUiLCJ6TTxJZj4iXSwiVWsuUyI6InFVIn0sIkUzIjp7IndJ
+IjpbInFVIiwiek08SWY+Il19LCJHWSI6eyJ3SSI6WyJ6TTxJZj4iLCJxVSJdfSwiQ1AiOnsibGYiOltd
+fSwiQzYiOnsiWFMiOltdfSwiTEsiOnsiWFMiOltdfSwiQVQiOnsiWFMiOltdfSwiYkoiOnsiWFMiOltd
+fSwiZVkiOnsiWFMiOltdfSwibXAiOnsiWFMiOltdfSwidWIiOnsiWFMiOltdfSwiZHMiOnsiWFMiOltd
+fSwibGoiOnsiWFMiOltdfSwiVVYiOnsiWFMiOltdfSwiazUiOnsiWFMiOltdfSwiS1kiOnsiWFMiOltd
+fSwidDciOnsiWFMiOltdfSwiQ0QiOnsiUnoiOltdfSwiYUUiOnsiUnoiOltdfSwiSWYiOnsibGYiOltd
+fSwiek0iOnsiYlEiOlsiMSJdLCJjWCI6WyIxIl19LCJpYiI6eyJPZCI6W119LCJ4dSI6eyJiUSI6WyIx
+Il0sImNYIjpbIjEiXX0sIlpkIjp7Ikd6IjpbXX0sInFVIjp7InZYIjpbXX0sIlJuIjp7IkJMIjpbXX0s
+IkRuIjp7ImlEIjpbXX0sIlVmIjp7ImlEIjpbXX0sInFlIjp7ImlEIjpbXX0sInFFIjp7ImN2IjpbXSwi
+dUgiOltdLCJEMCI6W119LCJHaCI6eyJjdiI6W10sInVIIjpbXSwiRDAiOltdfSwiZlkiOnsiY3YiOltd
+LCJ1SCI6W10sIkQwIjpbXX0sIm5CIjp7ImN2IjpbXSwidUgiOltdLCJEMCI6W119LCJRUCI6eyJjdiI6
+W10sInVIIjpbXSwiRDAiOltdfSwibngiOnsidUgiOltdLCJEMCI6W119LCJRRiI6eyJ1SCI6W10sIkQw
+IjpbXX0sIklCIjp7InRuIjpbImxmIl19LCJ3eiI6eyJsRCI6WyIxIl0sInpNIjpbIjEiXSwiYlEiOlsi
+MSJdLCJjWCI6WyIxIl0sImxELkUiOiIxIn0sImN2Ijp7InVIIjpbXSwiRDAiOltdfSwiVDUiOnsiQXoi
+OltdfSwiaDQiOnsiY3YiOltdLCJ1SCI6W10sIkQwIjpbXX0sIlZiIjp7InVIIjpbXSwiRDAiOltdfSwi
+ZkoiOnsiRDAiOltdfSwid2EiOnsiRDAiOltdfSwiT0siOnsiZWEiOltdfSwiZTciOnsibEQiOlsidUgi
+XSwiek0iOlsidUgiXSwiYlEiOlsidUgiXSwiY1giOlsidUgiXSwibEQuRSI6InVIIn0sInVIIjp7IkQw
+IjpbXX0sIkJIIjp7IkdtIjpbInVIIl0sImxEIjpbInVIIl0sInpNIjpbInVIIl0sIlhqIjpbInVIIl0s
+ImJRIjpbInVIIl0sImNYIjpbInVIIl0sIkdtLkUiOiJ1SCIsImxELkUiOiJ1SCJ9LCJTTiI6eyJjdiI6
+W10sInVIIjpbXSwiRDAiOltdfSwiZXciOnsiZWEiOltdfSwibHAiOnsiY3YiOltdLCJ1SCI6W10sIkQw
+IjpbXX0sIlRiIjp7ImN2IjpbXSwidUgiOltdLCJEMCI6W119LCJJdiI6eyJjdiI6W10sInVIIjpbXSwi
+RDAiOltdfSwiV1AiOnsiY3YiOltdLCJ1SCI6W10sIkQwIjpbXX0sInlZIjp7ImN2IjpbXSwidUgiOltd
+LCJEMCI6W119LCJ3NiI6eyJlYSI6W119LCJLNSI6eyJ2NiI6W10sIkQwIjpbXX0sIkNtIjp7IkQwIjpb
+XX0sIkNRIjp7InVIIjpbXSwiRDAiOltdfSwidzQiOnsidG4iOlsibGYiXX0sInJoIjp7IkdtIjpbInVI
+Il0sImxEIjpbInVIIl0sInpNIjpbInVIIl0sIlhqIjpbInVIIl0sImJRIjpbInVIIl0sImNYIjpbInVI
+Il0sIkdtLkUiOiJ1SCIsImxELkUiOiJ1SCJ9LCJjZiI6eyJZayI6WyJxVSIsInFVIl0sIlowIjpbInFV
+IiwicVUiXX0sImk3Ijp7IllrIjpbInFVIiwicVUiXSwiWjAiOlsicVUiLCJxVSJdLCJZay5LIjoicVUi
+LCJZay5WIjoicVUifSwiU3kiOnsiWWsiOlsicVUiLCJxVSJdLCJaMCI6WyJxVSIsInFVIl0sIllrLksi
+OiJxVSIsIllrLlYiOiJxVSJ9LCJJNCI6eyJNYSI6WyJxVSJdLCJ4dSI6WyJxVSJdLCJiUSI6WyJxVSJd
+LCJjWCI6WyJxVSJdfSwiUk8iOnsicWgiOlsiMSJdfSwiZXUiOnsiUk8iOlsiMSJdLCJxaCI6WyIxIl19
+LCJ4QyI6eyJNTyI6WyIxIl19LCJKUSI6eyJrRiI6W119LCJ2RCI6eyJrRiI6W119LCJtNiI6eyJrRiI6
+W119LCJjdCI6eyJrRiI6W119LCJPdyI6eyJrRiI6W119LCJXOSI6eyJBbiI6WyIxIl19LCJkVyI6eyJ2
+NiI6W10sIkQwIjpbXX0sIm1rIjp7InkwIjpbXX0sIktvIjp7Im9uIjpbXX0sIkFzIjp7Ik1hIjpbInFV
+Il0sInh1IjpbInFVIl0sImJRIjpbInFVIl0sImNYIjpbInFVIl19LCJyNyI6eyJFNCI6W119LCJUeiI6
+eyJsRCI6WyIxIl0sInpNIjpbIjEiXSwiYlEiOlsiMSJdLCJFNCI6W10sImNYIjpbIjEiXSwibEQuRSI6
+IjEifSwibmQiOnsiZDUiOltdLCJjdiI6W10sInVIIjpbXSwiRDAiOltdfSwiS2UiOnsiTWEiOlsicVUi
+XSwieHUiOlsicVUiXSwiYlEiOlsicVUiXSwiY1giOlsicVUiXX0sImQ1Ijp7ImN2IjpbXSwidUgiOltd
+LCJEMCI6W119LCJuNiI6eyJ6TSI6WyJJZiJdLCJiUSI6WyJJZiJdLCJlcSI6W10sImNYIjpbIklmIl19
+LCJYQSI6eyJrRiI6W119LCJkdiI6eyJSeiI6W119LCJPRiI6eyJmdiI6W119LCJydSI6eyJmdiI6W119
+LCJJViI6eyJmdiI6W119fScpKQpILkZGKHYudHlwZVVuaXZlcnNlLEpTT04ucGFyc2UoJ3siYlEiOjEs
+IncyIjoxLCJNTyI6MSwia1QiOjIsIm1XIjoxLCJMVSI6MSwiaWwiOjIsIlZqIjoxLCJuWSI6MSwiVEMi
+OjEsImNvIjoxfScpKQp2YXIgdT0oZnVuY3Rpb24gcnRpaSgpe3ZhciB0PUguTjAKcmV0dXJue2JxOnQo
+IkdoIiksbjp0KCJPSCIpLGNSOnQoIm5CIiksZDp0KCJBeiIpLGk6dCgiUVAiKSxnRjp0KCJQRDxHRCxA
+PiIpLGd3OnQoImJRPEA+IiksaDp0KCJjdiIpLFc6dCgiWFMiKSxCOnQoImVhIiksdTp0KCJEMCIpLGc4
+OnQoIlJ6IiksYzg6dCgiVDUiKSxaOnQoIkVIIiksYVE6dCgiYjg8Yzg+IiksYzp0KCJiODxAPiIpLEY6
+dCgiTEwiKSxncDp0KCJINyIpLHI6dCgiZkoiKSxJOnQoIlNnIiksbzp0KCJ2USIpLGVoOnQoImNYPHVI
+PiIpLFg6dCgiY1g8cVU+IiksUjp0KCJjWDxAPiIpLGZBOnQoImpkPFNlPiIpLGdpOnQoImpkPGo4PiIp
+LEo6dCgiamQ8WjA8cVUsTWg+PiIpLGZoOnQoImpkPFpaPiIpLGs6dCgiamQ8a0Y+Iiksczp0KCJqZDxx
+VT4iKSxoaDp0KCJqZDx5RD4iKSxhSjp0KCJqZDx3Yj4iKSxtOnQoImpkPEA+IiksdDp0KCJqZDxJZj4i
+KSxlSDp0KCJ2bSIpLGc6dCgiYzUiKSxhVTp0KCJYajxAPiIpLGFtOnQoIlR6PEA+IiksZW86dCgiTjU8
+R0QsQD4iKSx2OnQoIkU0IiksZHo6dCgiaEYiKSxmNDp0KCJ6TTxqOD4iKSxkMzp0KCJ6TTxaMDxxVSxN
+aD4+IiksYTp0KCJ6TTxxVT4iKSxqOnQoInpNPEA+IiksTDp0KCJ6TTxJZj4iKSxhXzp0KCJ1OCIpLFM6
+dCgiWjA8cVUsTWg+IiksZjp0KCJaMDxxVSxxVT4iKSxiOnQoIlowPHFVLEA+IiksRzp0KCJaMDxALEA+
+IiksZHY6dCgibEo8cVUscVU+IiksZG86dCgibEo8cVUsQD4iKSxWOnQoIk9LIiksZEU6dCgicEYiKSxi
+bTp0KCJWNiIpLEE6dCgidUgiKSxlOnQoImtGIiksUDp0KCJjOCIpLEs6dCgiTWgiKSxwOnQoImV3Iiks
+Tzp0KCJ0bjxsZj4iKSxmdjp0KCJ3TCIpLGF2OnQoIkpjIiksZXc6dCgibmQiKSxDOnQoInh1PHFVPiIp
+LGw6dCgiR3oiKSxOOnQoInFVIiksZEc6dCgicVUocVUpIiksZzc6dCgiZDUiKSxmbzp0KCJHRCIpLGFX
+OnQoInlZIiksdzp0KCJlcSIpLGdjOnQoIm42IiksYWs6dCgia2QiKSxkdzp0KCJHajxxVSxxVT4iKSxk
+RDp0KCJpRCIpLGNjOnQoIlU1PHFVPiIpLGc0OnQoIks1IiksY2k6dCgidjYiKSxnMjp0KCJDbSIpLEU6
+dCgiWmY8Zko+IiksaDk6dCgiQ1EiKSxhYzp0KCJlNyIpLFE6dCgiZXU8T0s+IiksVDp0KCJ3ejxjdj4i
+KSx4OnQoIkZlPEAsQD4iKSxZOnQoInZzPGZKPiIpLF86dCgidnM8QD4iKSxmSjp0KCJ2czxJZj4iKSxj
+cjp0KCJKUSIpLEQ6dCgiYm4iKSx5OnQoImEyIiksYWw6dCgiYTIoTWgpIiksYkI6dCgiYTIocVUpIiks
+YmY6dCgiYTIoQCkiKSxnUjp0KCJDUCIpLHo6dCgiQCIpLGZPOnQoIkAoKSIpLFU6dCgiQChlYSkiKSxi
+STp0KCJAKE1oKSIpLGVwOnQoIkAoTWgsTWgpIiksYWc6dCgiQChNaCxHeikiKSxiVTp0KCJAKHh1PHFV
+PikiKSxkTzp0KCJAKHFVKSIpLGJjOnQoIkAoQCkiKSxiODp0KCJAKEAsQCkiKSxxOnQoIklmIiksZGk6
+dCgibGYiKSxIOnQoIn4iKSxNOnQoIn4oKSIpLGFuOnQoIn4oZXcpIiksZUE6dCgifihxVSxxVSkiKSxj
+QTp0KCJ+KHFVLEApIil9fSkoKTsoZnVuY3Rpb24gY29uc3RhbnRzKCl7dmFyIHQ9aHVua0hlbHBlcnMu
+bWFrZUNvbnN0TGlzdApDLlJZPVcuUVAucHJvdG90eXBlCkMuQlo9Vy5WYi5wcm90b3R5cGUKQy5EdD1X
+LmZKLnByb3RvdHlwZQpDLk9rPUoudkIucHJvdG90eXBlCkMuTm09Si5qZC5wcm90b3R5cGUKQy5qbj1K
+LnVyLnByb3RvdHlwZQpDLkNEPUoucUkucHJvdG90eXBlCkMueEI9Si5Eci5wcm90b3R5cGUKQy5ERz1K
+LmM1LnByb3RvdHlwZQpDLkV4PVcudTgucHJvdG90eXBlCkMuTHQ9Vy5TTi5wcm90b3R5cGUKQy5aUT1K
+LmlDLnByb3RvdHlwZQpDLkllPVcuVGIucHJvdG90eXBlCkMudkI9Si5rZC5wcm90b3R5cGUKQy5vbD1X
+Lks1LnByb3RvdHlwZQpDLnk4PW5ldyBQLlU4KCkKQy5oOT1uZXcgUC5DVigpCkMud2I9ZnVuY3Rpb24g
+Z2V0VGFnRmFsbGJhY2sobykgewogIHZhciBzID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxs
+KG8pOwogIHJldHVybiBzLnN1YnN0cmluZyg4LCBzLmxlbmd0aCAtIDEpOwp9CkMuTzQ9ZnVuY3Rpb24o
+KSB7CiAgdmFyIHRvU3RyaW5nRnVuY3Rpb24gPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nOwogIGZ1
+bmN0aW9uIGdldFRhZyhvKSB7CiAgICB2YXIgcyA9IHRvU3RyaW5nRnVuY3Rpb24uY2FsbChvKTsKICAg
+IHJldHVybiBzLnN1YnN0cmluZyg4LCBzLmxlbmd0aCAtIDEpOwogIH0KICBmdW5jdGlvbiBnZXRVbmtu
+b3duVGFnKG9iamVjdCwgdGFnKSB7CiAgICBpZiAoL15IVE1MW0EtWl0uKkVsZW1lbnQkLy50ZXN0KHRh
+ZykpIHsKICAgICAgdmFyIG5hbWUgPSB0b1N0cmluZ0Z1bmN0aW9uLmNhbGwob2JqZWN0KTsKICAgICAg
+aWYgKG5hbWUgPT0gIltvYmplY3QgT2JqZWN0XSIpIHJldHVybiBudWxsOwogICAgICByZXR1cm4gIkhU
+TUxFbGVtZW50IjsKICAgIH0KICB9CiAgZnVuY3Rpb24gZ2V0VW5rbm93blRhZ0dlbmVyaWNCcm93c2Vy
+KG9iamVjdCwgdGFnKSB7CiAgICBpZiAoc2VsZi5IVE1MRWxlbWVudCAmJiBvYmplY3QgaW5zdGFuY2Vv
+ZiBIVE1MRWxlbWVudCkgcmV0dXJuICJIVE1MRWxlbWVudCI7CiAgICByZXR1cm4gZ2V0VW5rbm93blRh
+ZyhvYmplY3QsIHRhZyk7CiAgfQogIGZ1bmN0aW9uIHByb3RvdHlwZUZvclRhZyh0YWcpIHsKICAgIGlm
+ICh0eXBlb2Ygd2luZG93ID09ICJ1bmRlZmluZWQiKSByZXR1cm4gbnVsbDsKICAgIGlmICh0eXBlb2Yg
+d2luZG93W3RhZ10gPT0gInVuZGVmaW5lZCIpIHJldHVybiBudWxsOwogICAgdmFyIGNvbnN0cnVjdG9y
+ID0gd2luZG93W3RhZ107CiAgICBpZiAodHlwZW9mIGNvbnN0cnVjdG9yICE9ICJmdW5jdGlvbiIpIHJl
+dHVybiBudWxsOwogICAgcmV0dXJuIGNvbnN0cnVjdG9yLnByb3RvdHlwZTsKICB9CiAgZnVuY3Rpb24g
+ZGlzY3JpbWluYXRvcih0YWcpIHsgcmV0dXJuIG51bGw7IH0KICB2YXIgaXNCcm93c2VyID0gdHlwZW9m
+IG5hdmlnYXRvciA9PSAib2JqZWN0IjsKICByZXR1cm4gewogICAgZ2V0VGFnOiBnZXRUYWcsCiAgICBn
+ZXRVbmtub3duVGFnOiBpc0Jyb3dzZXIgPyBnZXRVbmtub3duVGFnR2VuZXJpY0Jyb3dzZXIgOiBnZXRV
+bmtub3duVGFnLAogICAgcHJvdG90eXBlRm9yVGFnOiBwcm90b3R5cGVGb3JUYWcsCiAgICBkaXNjcmlt
+aW5hdG9yOiBkaXNjcmltaW5hdG9yIH07Cn0KQy5kaz1mdW5jdGlvbihnZXRUYWdGYWxsYmFjaykgewog
+IHJldHVybiBmdW5jdGlvbihob29rcykgewogICAgaWYgKHR5cGVvZiBuYXZpZ2F0b3IgIT0gIm9iamVj
+dCIpIHJldHVybiBob29rczsKICAgIHZhciB1YSA9IG5hdmlnYXRvci51c2VyQWdlbnQ7CiAgICBpZiAo
+dWEuaW5kZXhPZigiRHVtcFJlbmRlclRyZWUiKSA+PSAwKSByZXR1cm4gaG9va3M7CiAgICBpZiAodWEu
+aW5kZXhPZigiQ2hyb21lIikgPj0gMCkgewogICAgICBmdW5jdGlvbiBjb25maXJtKHApIHsKICAgICAg
+ICByZXR1cm4gdHlwZW9mIHdpbmRvdyA9PSAib2JqZWN0IiAmJiB3aW5kb3dbcF0gJiYgd2luZG93W3Bd
+Lm5hbWUgPT0gcDsKICAgICAgfQogICAgICBpZiAoY29uZmlybSgiV2luZG93IikgJiYgY29uZmlybSgi
+SFRNTEVsZW1lbnQiKSkgcmV0dXJuIGhvb2tzOwogICAgfQogICAgaG9va3MuZ2V0VGFnID0gZ2V0VGFn
+RmFsbGJhY2s7CiAgfTsKfQpDLllxPWZ1bmN0aW9uKGhvb2tzKSB7CiAgaWYgKHR5cGVvZiBkYXJ0RXhw
+ZXJpbWVudGFsRml4dXBHZXRUYWcgIT0gImZ1bmN0aW9uIikgcmV0dXJuIGhvb2tzOwogIGhvb2tzLmdl
+dFRhZyA9IGRhcnRFeHBlcmltZW50YWxGaXh1cEdldFRhZyhob29rcy5nZXRUYWcpOwp9CkMuS1U9ZnVu
+Y3Rpb24oaG9va3MpIHsKICB2YXIgZ2V0VGFnID0gaG9va3MuZ2V0VGFnOwogIHZhciBwcm90b3R5cGVG
+b3JUYWcgPSBob29rcy5wcm90b3R5cGVGb3JUYWc7CiAgZnVuY3Rpb24gZ2V0VGFnRml4ZWQobykgewog
+ICAgdmFyIHRhZyA9IGdldFRhZyhvKTsKICAgIGlmICh0YWcgPT0gIkRvY3VtZW50IikgewogICAgICBp
+ZiAoISFvLnhtbFZlcnNpb24pIHJldHVybiAiIURvY3VtZW50IjsKICAgICAgcmV0dXJuICIhSFRNTERv
+Y3VtZW50IjsKICAgIH0KICAgIHJldHVybiB0YWc7CiAgfQogIGZ1bmN0aW9uIHByb3RvdHlwZUZvclRh
+Z0ZpeGVkKHRhZykgewogICAgaWYgKHRhZyA9PSAiRG9jdW1lbnQiKSByZXR1cm4gbnVsbDsKICAgIHJl
+dHVybiBwcm90b3R5cGVGb3JUYWcodGFnKTsKICB9CiAgaG9va3MuZ2V0VGFnID0gZ2V0VGFnRml4ZWQ7
+CiAgaG9va3MucHJvdG90eXBlRm9yVGFnID0gcHJvdG90eXBlRm9yVGFnRml4ZWQ7Cn0KQy54aT1mdW5j
+dGlvbihob29rcykgewogIHZhciB1c2VyQWdlbnQgPSB0eXBlb2YgbmF2aWdhdG9yID09ICJvYmplY3Qi
+ID8gbmF2aWdhdG9yLnVzZXJBZ2VudCA6ICIiOwogIGlmICh1c2VyQWdlbnQuaW5kZXhPZigiRmlyZWZv
+eCIpID09IC0xKSByZXR1cm4gaG9va3M7CiAgdmFyIGdldFRhZyA9IGhvb2tzLmdldFRhZzsKICB2YXIg
+cXVpY2tNYXAgPSB7CiAgICAiQmVmb3JlVW5sb2FkRXZlbnQiOiAiRXZlbnQiLAogICAgIkRhdGFUcmFu
+c2ZlciI6ICJDbGlwYm9hcmQiLAogICAgIkdlb0dlb2xvY2F0aW9uIjogIkdlb2xvY2F0aW9uIiwKICAg
+ICJMb2NhdGlvbiI6ICIhTG9jYXRpb24iLAogICAgIldvcmtlck1lc3NhZ2VFdmVudCI6ICJNZXNzYWdl
+RXZlbnQiLAogICAgIlhNTERvY3VtZW50IjogIiFEb2N1bWVudCJ9OwogIGZ1bmN0aW9uIGdldFRhZ0Zp
+cmVmb3gobykgewogICAgdmFyIHRhZyA9IGdldFRhZyhvKTsKICAgIHJldHVybiBxdWlja01hcFt0YWdd
+IHx8IHRhZzsKICB9CiAgaG9va3MuZ2V0VGFnID0gZ2V0VGFnRmlyZWZveDsKfQpDLmk3PWZ1bmN0aW9u
+KGhvb2tzKSB7CiAgdmFyIHVzZXJBZ2VudCA9IHR5cGVvZiBuYXZpZ2F0b3IgPT0gIm9iamVjdCIgPyBu
+YXZpZ2F0b3IudXNlckFnZW50IDogIiI7CiAgaWYgKHVzZXJBZ2VudC5pbmRleE9mKCJUcmlkZW50LyIp
+ID09IC0xKSByZXR1cm4gaG9va3M7CiAgdmFyIGdldFRhZyA9IGhvb2tzLmdldFRhZzsKICB2YXIgcXVp
+Y2tNYXAgPSB7CiAgICAiQmVmb3JlVW5sb2FkRXZlbnQiOiAiRXZlbnQiLAogICAgIkRhdGFUcmFuc2Zl
+ciI6ICJDbGlwYm9hcmQiLAogICAgIkhUTUxEREVsZW1lbnQiOiAiSFRNTEVsZW1lbnQiLAogICAgIkhU
+TUxEVEVsZW1lbnQiOiAiSFRNTEVsZW1lbnQiLAogICAgIkhUTUxQaHJhc2VFbGVtZW50IjogIkhUTUxF
+bGVtZW50IiwKICAgICJQb3NpdGlvbiI6ICJHZW9wb3NpdGlvbiIKICB9OwogIGZ1bmN0aW9uIGdldFRh
+Z0lFKG8pIHsKICAgIHZhciB0YWcgPSBnZXRUYWcobyk7CiAgICB2YXIgbmV3VGFnID0gcXVpY2tNYXBb
+dGFnXTsKICAgIGlmIChuZXdUYWcpIHJldHVybiBuZXdUYWc7CiAgICBpZiAodGFnID09ICJPYmplY3Qi
+KSB7CiAgICAgIGlmICh3aW5kb3cuRGF0YVZpZXcgJiYgKG8gaW5zdGFuY2VvZiB3aW5kb3cuRGF0YVZp
+ZXcpKSByZXR1cm4gIkRhdGFWaWV3IjsKICAgIH0KICAgIHJldHVybiB0YWc7CiAgfQogIGZ1bmN0aW9u
+IHByb3RvdHlwZUZvclRhZ0lFKHRhZykgewogICAgdmFyIGNvbnN0cnVjdG9yID0gd2luZG93W3RhZ107
+CiAgICBpZiAoY29uc3RydWN0b3IgPT0gbnVsbCkgcmV0dXJuIG51bGw7CiAgICByZXR1cm4gY29uc3Ry
+dWN0b3IucHJvdG90eXBlOwogIH0KICBob29rcy5nZXRUYWcgPSBnZXRUYWdJRTsKICBob29rcy5wcm90
+b3R5cGVGb3JUYWcgPSBwcm90b3R5cGVGb3JUYWdJRTsKfQpDLmZRPWZ1bmN0aW9uKGhvb2tzKSB7IHJl
+dHVybiBob29rczsgfQoKQy5DdD1uZXcgUC5ieSgpCkMuRXE9bmV3IFAuazUoKQpDLnhNPW5ldyBQLnU1
+KCkKQy5Raz1uZXcgUC5FMygpCkMuTlU9bmV3IFAuSmkoKQpDLnBkPW5ldyBQLlpkKCkKQy5BZD1uZXcg
+TS5INygwLCJIaW50QWN0aW9uS2luZC5hZGROdWxsYWJsZUhpbnQiKQpDLm5lPW5ldyBNLkg3KDEsIkhp
+bnRBY3Rpb25LaW5kLmFkZE5vbk51bGxhYmxlSGludCIpCkMuQTM9bmV3IFAuTXgobnVsbCkKQy5uWD1u
+ZXcgUC5vaihudWxsKQpDLkdiPUguVk0odChbMTI3LDIwNDcsNjU1MzUsMTExNDExMV0pLHUudCkKQy5h
+az1ILlZNKHQoWzAsMCwzMjc3NiwzMzc5MiwxLDEwMjQwLDAsMF0pLHUudCkKQy5jbT1ILlZNKHQoWyIq
+OjpjbGFzcyIsIio6OmRpciIsIio6OmRyYWdnYWJsZSIsIio6OmhpZGRlbiIsIio6OmlkIiwiKjo6aW5l
+cnQiLCIqOjppdGVtcHJvcCIsIio6Oml0ZW1yZWYiLCIqOjppdGVtc2NvcGUiLCIqOjpsYW5nIiwiKjo6
+c3BlbGxjaGVjayIsIio6OnRpdGxlIiwiKjo6dHJhbnNsYXRlIiwiQTo6YWNjZXNza2V5IiwiQTo6Y29v
+cmRzIiwiQTo6aHJlZmxhbmciLCJBOjpuYW1lIiwiQTo6c2hhcGUiLCJBOjp0YWJpbmRleCIsIkE6OnRh
+cmdldCIsIkE6OnR5cGUiLCJBUkVBOjphY2Nlc3NrZXkiLCJBUkVBOjphbHQiLCJBUkVBOjpjb29yZHMi
+LCJBUkVBOjpub2hyZWYiLCJBUkVBOjpzaGFwZSIsIkFSRUE6OnRhYmluZGV4IiwiQVJFQTo6dGFyZ2V0
+IiwiQVVESU86OmNvbnRyb2xzIiwiQVVESU86Omxvb3AiLCJBVURJTzo6bWVkaWFncm91cCIsIkFVRElP
+OjptdXRlZCIsIkFVRElPOjpwcmVsb2FkIiwiQkRPOjpkaXIiLCJCT0RZOjphbGluayIsIkJPRFk6OmJn
+Y29sb3IiLCJCT0RZOjpsaW5rIiwiQk9EWTo6dGV4dCIsIkJPRFk6OnZsaW5rIiwiQlI6OmNsZWFyIiwi
+QlVUVE9OOjphY2Nlc3NrZXkiLCJCVVRUT046OmRpc2FibGVkIiwiQlVUVE9OOjpuYW1lIiwiQlVUVE9O
+Ojp0YWJpbmRleCIsIkJVVFRPTjo6dHlwZSIsIkJVVFRPTjo6dmFsdWUiLCJDQU5WQVM6OmhlaWdodCIs
+IkNBTlZBUzo6d2lkdGgiLCJDQVBUSU9OOjphbGlnbiIsIkNPTDo6YWxpZ24iLCJDT0w6OmNoYXIiLCJD
+T0w6OmNoYXJvZmYiLCJDT0w6OnNwYW4iLCJDT0w6OnZhbGlnbiIsIkNPTDo6d2lkdGgiLCJDT0xHUk9V
+UDo6YWxpZ24iLCJDT0xHUk9VUDo6Y2hhciIsIkNPTEdST1VQOjpjaGFyb2ZmIiwiQ09MR1JPVVA6OnNw
+YW4iLCJDT0xHUk9VUDo6dmFsaWduIiwiQ09MR1JPVVA6OndpZHRoIiwiQ09NTUFORDo6Y2hlY2tlZCIs
+IkNPTU1BTkQ6OmNvbW1hbmQiLCJDT01NQU5EOjpkaXNhYmxlZCIsIkNPTU1BTkQ6OmxhYmVsIiwiQ09N
+TUFORDo6cmFkaW9ncm91cCIsIkNPTU1BTkQ6OnR5cGUiLCJEQVRBOjp2YWx1ZSIsIkRFTDo6ZGF0ZXRp
+bWUiLCJERVRBSUxTOjpvcGVuIiwiRElSOjpjb21wYWN0IiwiRElWOjphbGlnbiIsIkRMOjpjb21wYWN0
+IiwiRklFTERTRVQ6OmRpc2FibGVkIiwiRk9OVDo6Y29sb3IiLCJGT05UOjpmYWNlIiwiRk9OVDo6c2l6
+ZSIsIkZPUk06OmFjY2VwdCIsIkZPUk06OmF1dG9jb21wbGV0ZSIsIkZPUk06OmVuY3R5cGUiLCJGT1JN
+OjptZXRob2QiLCJGT1JNOjpuYW1lIiwiRk9STTo6bm92YWxpZGF0ZSIsIkZPUk06OnRhcmdldCIsIkZS
+QU1FOjpuYW1lIiwiSDE6OmFsaWduIiwiSDI6OmFsaWduIiwiSDM6OmFsaWduIiwiSDQ6OmFsaWduIiwi
+SDU6OmFsaWduIiwiSDY6OmFsaWduIiwiSFI6OmFsaWduIiwiSFI6Om5vc2hhZGUiLCJIUjo6c2l6ZSIs
+IkhSOjp3aWR0aCIsIkhUTUw6OnZlcnNpb24iLCJJRlJBTUU6OmFsaWduIiwiSUZSQU1FOjpmcmFtZWJv
+cmRlciIsIklGUkFNRTo6aGVpZ2h0IiwiSUZSQU1FOjptYXJnaW5oZWlnaHQiLCJJRlJBTUU6Om1hcmdp
+bndpZHRoIiwiSUZSQU1FOjp3aWR0aCIsIklNRzo6YWxpZ24iLCJJTUc6OmFsdCIsIklNRzo6Ym9yZGVy
+IiwiSU1HOjpoZWlnaHQiLCJJTUc6OmhzcGFjZSIsIklNRzo6aXNtYXAiLCJJTUc6Om5hbWUiLCJJTUc6
+OnVzZW1hcCIsIklNRzo6dnNwYWNlIiwiSU1HOjp3aWR0aCIsIklOUFVUOjphY2NlcHQiLCJJTlBVVDo6
+YWNjZXNza2V5IiwiSU5QVVQ6OmFsaWduIiwiSU5QVVQ6OmFsdCIsIklOUFVUOjphdXRvY29tcGxldGUi
+LCJJTlBVVDo6YXV0b2ZvY3VzIiwiSU5QVVQ6OmNoZWNrZWQiLCJJTlBVVDo6ZGlzYWJsZWQiLCJJTlBV
+VDo6aW5wdXRtb2RlIiwiSU5QVVQ6OmlzbWFwIiwiSU5QVVQ6Omxpc3QiLCJJTlBVVDo6bWF4IiwiSU5Q
+VVQ6Om1heGxlbmd0aCIsIklOUFVUOjptaW4iLCJJTlBVVDo6bXVsdGlwbGUiLCJJTlBVVDo6bmFtZSIs
+IklOUFVUOjpwbGFjZWhvbGRlciIsIklOUFVUOjpyZWFkb25seSIsIklOUFVUOjpyZXF1aXJlZCIsIklO
+UFVUOjpzaXplIiwiSU5QVVQ6OnN0ZXAiLCJJTlBVVDo6dGFiaW5kZXgiLCJJTlBVVDo6dHlwZSIsIklO
+UFVUOjp1c2VtYXAiLCJJTlBVVDo6dmFsdWUiLCJJTlM6OmRhdGV0aW1lIiwiS0VZR0VOOjpkaXNhYmxl
+ZCIsIktFWUdFTjo6a2V5dHlwZSIsIktFWUdFTjo6bmFtZSIsIkxBQkVMOjphY2Nlc3NrZXkiLCJMQUJF
+TDo6Zm9yIiwiTEVHRU5EOjphY2Nlc3NrZXkiLCJMRUdFTkQ6OmFsaWduIiwiTEk6OnR5cGUiLCJMSTo6
+dmFsdWUiLCJMSU5LOjpzaXplcyIsIk1BUDo6bmFtZSIsIk1FTlU6OmNvbXBhY3QiLCJNRU5VOjpsYWJl
+bCIsIk1FTlU6OnR5cGUiLCJNRVRFUjo6aGlnaCIsIk1FVEVSOjpsb3ciLCJNRVRFUjo6bWF4IiwiTUVU
+RVI6Om1pbiIsIk1FVEVSOjp2YWx1ZSIsIk9CSkVDVDo6dHlwZW11c3RtYXRjaCIsIk9MOjpjb21wYWN0
+IiwiT0w6OnJldmVyc2VkIiwiT0w6OnN0YXJ0IiwiT0w6OnR5cGUiLCJPUFRHUk9VUDo6ZGlzYWJsZWQi
+LCJPUFRHUk9VUDo6bGFiZWwiLCJPUFRJT046OmRpc2FibGVkIiwiT1BUSU9OOjpsYWJlbCIsIk9QVElP
+Tjo6c2VsZWN0ZWQiLCJPUFRJT046OnZhbHVlIiwiT1VUUFVUOjpmb3IiLCJPVVRQVVQ6Om5hbWUiLCJQ
+OjphbGlnbiIsIlBSRTo6d2lkdGgiLCJQUk9HUkVTUzo6bWF4IiwiUFJPR1JFU1M6Om1pbiIsIlBST0dS
+RVNTOjp2YWx1ZSIsIlNFTEVDVDo6YXV0b2NvbXBsZXRlIiwiU0VMRUNUOjpkaXNhYmxlZCIsIlNFTEVD
+VDo6bXVsdGlwbGUiLCJTRUxFQ1Q6Om5hbWUiLCJTRUxFQ1Q6OnJlcXVpcmVkIiwiU0VMRUNUOjpzaXpl
+IiwiU0VMRUNUOjp0YWJpbmRleCIsIlNPVVJDRTo6dHlwZSIsIlRBQkxFOjphbGlnbiIsIlRBQkxFOjpi
+Z2NvbG9yIiwiVEFCTEU6OmJvcmRlciIsIlRBQkxFOjpjZWxscGFkZGluZyIsIlRBQkxFOjpjZWxsc3Bh
+Y2luZyIsIlRBQkxFOjpmcmFtZSIsIlRBQkxFOjpydWxlcyIsIlRBQkxFOjpzdW1tYXJ5IiwiVEFCTEU6
+OndpZHRoIiwiVEJPRFk6OmFsaWduIiwiVEJPRFk6OmNoYXIiLCJUQk9EWTo6Y2hhcm9mZiIsIlRCT0RZ
+Ojp2YWxpZ24iLCJURDo6YWJiciIsIlREOjphbGlnbiIsIlREOjpheGlzIiwiVEQ6OmJnY29sb3IiLCJU
+RDo6Y2hhciIsIlREOjpjaGFyb2ZmIiwiVEQ6OmNvbHNwYW4iLCJURDo6aGVhZGVycyIsIlREOjpoZWln
+aHQiLCJURDo6bm93cmFwIiwiVEQ6OnJvd3NwYW4iLCJURDo6c2NvcGUiLCJURDo6dmFsaWduIiwiVEQ6
+OndpZHRoIiwiVEVYVEFSRUE6OmFjY2Vzc2tleSIsIlRFWFRBUkVBOjphdXRvY29tcGxldGUiLCJURVhU
+QVJFQTo6Y29scyIsIlRFWFRBUkVBOjpkaXNhYmxlZCIsIlRFWFRBUkVBOjppbnB1dG1vZGUiLCJURVhU
+QVJFQTo6bmFtZSIsIlRFWFRBUkVBOjpwbGFjZWhvbGRlciIsIlRFWFRBUkVBOjpyZWFkb25seSIsIlRF
+WFRBUkVBOjpyZXF1aXJlZCIsIlRFWFRBUkVBOjpyb3dzIiwiVEVYVEFSRUE6OnRhYmluZGV4IiwiVEVY
+VEFSRUE6OndyYXAiLCJURk9PVDo6YWxpZ24iLCJURk9PVDo6Y2hhciIsIlRGT09UOjpjaGFyb2ZmIiwi
+VEZPT1Q6OnZhbGlnbiIsIlRIOjphYmJyIiwiVEg6OmFsaWduIiwiVEg6OmF4aXMiLCJUSDo6Ymdjb2xv
+ciIsIlRIOjpjaGFyIiwiVEg6OmNoYXJvZmYiLCJUSDo6Y29sc3BhbiIsIlRIOjpoZWFkZXJzIiwiVEg6
+OmhlaWdodCIsIlRIOjpub3dyYXAiLCJUSDo6cm93c3BhbiIsIlRIOjpzY29wZSIsIlRIOjp2YWxpZ24i
+LCJUSDo6d2lkdGgiLCJUSEVBRDo6YWxpZ24iLCJUSEVBRDo6Y2hhciIsIlRIRUFEOjpjaGFyb2ZmIiwi
+VEhFQUQ6OnZhbGlnbiIsIlRSOjphbGlnbiIsIlRSOjpiZ2NvbG9yIiwiVFI6OmNoYXIiLCJUUjo6Y2hh
+cm9mZiIsIlRSOjp2YWxpZ24iLCJUUkFDSzo6ZGVmYXVsdCIsIlRSQUNLOjpraW5kIiwiVFJBQ0s6Omxh
+YmVsIiwiVFJBQ0s6OnNyY2xhbmciLCJVTDo6Y29tcGFjdCIsIlVMOjp0eXBlIiwiVklERU86OmNvbnRy
+b2xzIiwiVklERU86OmhlaWdodCIsIlZJREVPOjpsb29wIiwiVklERU86Om1lZGlhZ3JvdXAiLCJWSURF
+Tzo6bXV0ZWQiLCJWSURFTzo6cHJlbG9hZCIsIlZJREVPOjp3aWR0aCJdKSx1LnMpCkMuVkM9SC5WTSh0
+KFswLDAsNjU0OTAsNDUwNTUsNjU1MzUsMzQ4MTUsNjU1MzQsMTg0MzFdKSx1LnQpCkMubHI9SC5WTSh0
+KFtDLkFkLEMubmVdKSxILk4wKCJqZDxINz4iKSkKQy5tSz1ILlZNKHQoWzAsMCwyNjYyNCwxMDIzLDY1
+NTM0LDIwNDcsNjU1MzQsMjA0N10pLHUudCkKQy5TcT1ILlZNKHQoWyJIRUFEIiwiQVJFQSIsIkJBU0Ui
+LCJCQVNFRk9OVCIsIkJSIiwiQ09MIiwiQ09MR1JPVVAiLCJFTUJFRCIsIkZSQU1FIiwiRlJBTUVTRVQi
+LCJIUiIsIklNQUdFIiwiSU1HIiwiSU5QVVQiLCJJU0lOREVYIiwiTElOSyIsIk1FVEEiLCJQQVJBTSIs
+IlNPVVJDRSIsIlNUWUxFIiwiVElUTEUiLCJXQlIiXSksdS5zKQpDLmRuPUguVk0odChbXSksSC5OMCgi
+amQ8TEw+IikpCkMueEQ9SC5WTSh0KFtdKSx1LnMpCkMuaFU9SC5WTSh0KFtdKSx1Lm0pCkMudG89SC5W
+TSh0KFswLDAsMzI3MjIsMTIyODcsNjU1MzQsMzQ4MTUsNjU1MzQsMTg0MzFdKSx1LnQpCkMuRjM9SC5W
+TSh0KFswLDAsMjQ1NzYsMTAyMyw2NTUzNCwzNDgxNSw2NTUzNCwxODQzMV0pLHUudCkKQy5lYT1ILlZN
+KHQoWzAsMCwzMjc1NCwxMTI2Myw2NTUzNCwzNDgxNSw2NTUzNCwxODQzMV0pLHUudCkKQy5aSj1ILlZN
+KHQoWzAsMCwzMjcyMiwxMjI4Nyw2NTUzNSwzNDgxNSw2NTUzNCwxODQzMV0pLHUudCkKQy5XZD1ILlZN
+KHQoWzAsMCw2NTQ5MCwxMjI4Nyw2NTUzNSwzNDgxNSw2NTUzNCwxODQzMV0pLHUudCkKQy5ReD1ILlZN
+KHQoWyJiaW5kIiwiaWYiLCJyZWYiLCJyZXBlYXQiLCJzeW50YXgiXSksdS5zKQpDLkJJPUguVk0odChb
+IkE6OmhyZWYiLCJBUkVBOjpocmVmIiwiQkxPQ0tRVU9URTo6Y2l0ZSIsIkJPRFk6OmJhY2tncm91bmQi
+LCJDT01NQU5EOjppY29uIiwiREVMOjpjaXRlIiwiRk9STTo6YWN0aW9uIiwiSU1HOjpzcmMiLCJJTlBV
+VDo6c3JjIiwiSU5TOjpjaXRlIiwiUTo6Y2l0ZSIsIlZJREVPOjpwb3N0ZXIiXSksdS5zKQpDLkNNPW5l
+dyBILkxQKDAse30sQy54RCxILk4wKCJMUDxxVSx6TTxqOD4+IikpCkMuV089bmV3IEguTFAoMCx7fSxD
+LnhELEguTjAoIkxQPHFVLHFVPiIpKQpDLmlIPUguVk0odChbXSksSC5OMCgiamQ8R0Q+IikpCkMuRHg9
+bmV3IEguTFAoMCx7fSxDLmlILEguTjAoIkxQPEdELEA+IikpCkMuWTI9bmV3IEwuTzkoIk5hdmlnYXRp
+b25UcmVlTm9kZVR5cGUuZGlyZWN0b3J5IikKQy5yZj1uZXcgTC5POSgiTmF2aWdhdGlvblRyZWVOb2Rl
+VHlwZS5maWxlIikKQy5UZT1uZXcgSC53digiY2FsbCIpCkMud1E9bmV3IFAuRnkobnVsbCwyKX0pKCk7
+KGZ1bmN0aW9uIHN0YXRpY0ZpZWxkcygpeyQueWo9MAokLm1KPW51bGwKJC5QND1udWxsCiQueT1udWxs
+CiQudT1udWxsCiQueDc9bnVsbAokLmo9bnVsbAokLnY9bnVsbAokLks9bnVsbAokLlM2PW51bGwKJC5r
+OD1udWxsCiQubWc9bnVsbAokLlVEPSExCiQuWDM9Qy5OVQokLnhnPVtdCiQueG89bnVsbAokLkJPPW51
+bGwKJC5sdD1udWxsCiQuRVU9bnVsbAokLm9yPVAuRmwodS5OLHUuWikKJC5JNj1udWxsCiQuRmY9bnVs
+bH0pKCk7KGZ1bmN0aW9uIGxhenlJbml0aWFsaXplcnMoKXt2YXIgdD1odW5rSGVscGVycy5sYXp5CnQo
+JCwiZmEiLCJ3USIsZnVuY3Rpb24oKXtyZXR1cm4gSC5ZZygiXyRkYXJ0X2RhcnRDbG9zdXJlIil9KQp0
+KCQsIlkyIiwiQSIsZnVuY3Rpb24oKXtyZXR1cm4gSC5ZZygiXyRkYXJ0X2pzIil9KQp0KCQsIlUyIiwi
+U24iLGZ1bmN0aW9uKCl7cmV0dXJuIEguY00oSC5TNyh7CnRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJu
+IiRyZWNlaXZlciQifX0pKX0pCnQoJCwieHEiLCJscSIsZnVuY3Rpb24oKXtyZXR1cm4gSC5jTShILlM3
+KHskbWV0aG9kJDpudWxsLAp0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiIkcmVjZWl2ZXIkIn19KSl9
+KQp0KCQsIlIxIiwiTjkiLGZ1bmN0aW9uKCl7cmV0dXJuIEguY00oSC5TNyhudWxsKSl9KQp0KCQsImZO
+IiwiaUkiLGZ1bmN0aW9uKCl7cmV0dXJuIEguY00oZnVuY3Rpb24oKXt2YXIgJGFyZ3VtZW50c0V4cHIk
+PSckYXJndW1lbnRzJCcKdHJ5e251bGwuJG1ldGhvZCQoJGFyZ3VtZW50c0V4cHIkKX1jYXRjaChzKXty
+ZXR1cm4gcy5tZXNzYWdlfX0oKSl9KQp0KCQsInFpIiwiVU4iLGZ1bmN0aW9uKCl7cmV0dXJuIEguY00o
+SC5TNyh2b2lkIDApKX0pCnQoJCwicloiLCJaaCIsZnVuY3Rpb24oKXtyZXR1cm4gSC5jTShmdW5jdGlv
+bigpe3ZhciAkYXJndW1lbnRzRXhwciQ9JyRhcmd1bWVudHMkJwp0cnl7KHZvaWQgMCkuJG1ldGhvZCQo
+JGFyZ3VtZW50c0V4cHIkKX1jYXRjaChzKXtyZXR1cm4gcy5tZXNzYWdlfX0oKSl9KQp0KCQsImtxIiwi
+ck4iLGZ1bmN0aW9uKCl7cmV0dXJuIEguY00oSC5NaihudWxsKSl9KQp0KCQsInR0IiwiYzMiLGZ1bmN0
+aW9uKCl7cmV0dXJuIEguY00oZnVuY3Rpb24oKXt0cnl7bnVsbC4kbWV0aG9kJH1jYXRjaChzKXtyZXR1
+cm4gcy5tZXNzYWdlfX0oKSl9KQp0KCQsImR0IiwiSEsiLGZ1bmN0aW9uKCl7cmV0dXJuIEguY00oSC5N
+aih2b2lkIDApKX0pCnQoJCwiQTciLCJyMSIsZnVuY3Rpb24oKXtyZXR1cm4gSC5jTShmdW5jdGlvbigp
+e3RyeXsodm9pZCAwKS4kbWV0aG9kJH1jYXRjaChzKXtyZXR1cm4gcy5tZXNzYWdlfX0oKSl9KQp0KCQs
+IldjIiwidXQiLGZ1bmN0aW9uKCl7cmV0dXJuIFAuT2ooKX0pCnQoJCwia2giLCJ0TCIsZnVuY3Rpb24o
+KXtyZXR1cm4gUC5XSSgpfSkKdCgkLCJidCIsIlY3IixmdW5jdGlvbigpe3JldHVybiBILkRRKEguWEYo
+SC5WTShbLTIsLTIsLTIsLTIsLTIsLTIsLTIsLTIsLTIsLTIsLTIsLTIsLTIsLTIsLTIsLTIsLTIsLTIs
+LTIsLTIsLTIsLTIsLTIsLTIsLTIsLTIsLTIsLTIsLTIsLTIsLTIsLTIsLTIsLTIsLTIsLTIsLTIsLTEs
+LTIsLTIsLTIsLTIsLTIsNjIsLTIsNjIsLTIsNjMsNTIsNTMsNTQsNTUsNTYsNTcsNTgsNTksNjAsNjEs
+LTIsLTIsLTIsLTEsLTIsLTIsLTIsMCwxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNSwx
+NiwxNywxOCwxOSwyMCwyMSwyMiwyMywyNCwyNSwtMiwtMiwtMiwtMiw2MywtMiwyNiwyNywyOCwyOSwz
+MCwzMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSw0Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1
+MCw1MSwtMiwtMiwtMiwtMiwtMl0sdS50KSkpfSkKdCgkLCJNNSIsIk94IixmdW5jdGlvbigpe3JldHVy
+biB0eXBlb2YgcHJvY2VzcyE9InVuZGVmaW5lZCImJk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2Fs
+bChwcm9jZXNzKT09IltvYmplY3QgcHJvY2Vzc10iJiZwcm9jZXNzLnBsYXRmb3JtPT0id2luMzIifSkK
+dCgkLCJtZiIsIno0IixmdW5jdGlvbigpe3JldHVybiBQLm51KCJeW1xcLVxcLjAtOUEtWl9hLXp+XSok
+Iil9KQp0KCQsIkF2IiwicDYiLGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBFcnJvcigpLnN0YWNrIT12b2lk
+IDB9KQp0KCQsIkpHIiwidloiLGZ1bmN0aW9uKCl7cmV0dXJuIFAuS04oKX0pCnQoJCwiU0MiLCJBTiIs
+ZnVuY3Rpb24oKXtyZXR1cm4gUC50TShbIkEiLCJBQkJSIiwiQUNST05ZTSIsIkFERFJFU1MiLCJBUkVB
+IiwiQVJUSUNMRSIsIkFTSURFIiwiQVVESU8iLCJCIiwiQkRJIiwiQkRPIiwiQklHIiwiQkxPQ0tRVU9U
+RSIsIkJSIiwiQlVUVE9OIiwiQ0FOVkFTIiwiQ0FQVElPTiIsIkNFTlRFUiIsIkNJVEUiLCJDT0RFIiwi
+Q09MIiwiQ09MR1JPVVAiLCJDT01NQU5EIiwiREFUQSIsIkRBVEFMSVNUIiwiREQiLCJERUwiLCJERVRB
+SUxTIiwiREZOIiwiRElSIiwiRElWIiwiREwiLCJEVCIsIkVNIiwiRklFTERTRVQiLCJGSUdDQVBUSU9O
+IiwiRklHVVJFIiwiRk9OVCIsIkZPT1RFUiIsIkZPUk0iLCJIMSIsIkgyIiwiSDMiLCJINCIsIkg1Iiwi
+SDYiLCJIRUFERVIiLCJIR1JPVVAiLCJIUiIsIkkiLCJJRlJBTUUiLCJJTUciLCJJTlBVVCIsIklOUyIs
+IktCRCIsIkxBQkVMIiwiTEVHRU5EIiwiTEkiLCJNQVAiLCJNQVJLIiwiTUVOVSIsIk1FVEVSIiwiTkFW
+IiwiTk9CUiIsIk9MIiwiT1BUR1JPVVAiLCJPUFRJT04iLCJPVVRQVVQiLCJQIiwiUFJFIiwiUFJPR1JF
+U1MiLCJRIiwiUyIsIlNBTVAiLCJTRUNUSU9OIiwiU0VMRUNUIiwiU01BTEwiLCJTT1VSQ0UiLCJTUEFO
+IiwiU1RSSUtFIiwiU1RST05HIiwiU1VCIiwiU1VNTUFSWSIsIlNVUCIsIlRBQkxFIiwiVEJPRFkiLCJU
+RCIsIlRFWFRBUkVBIiwiVEZPT1QiLCJUSCIsIlRIRUFEIiwiVElNRSIsIlRSIiwiVFJBQ0siLCJUVCIs
+IlUiLCJVTCIsIlZBUiIsIlZJREVPIiwiV0JSIl0sdS5OKX0pCnQoJCwiWDQiLCJoRyIsZnVuY3Rpb24o
+KXtyZXR1cm4gUC5udSgiXlxcUyskIil9KQp0KCQsIndPIiwib3ciLGZ1bmN0aW9uKCl7cmV0dXJuIHUu
+di5hKFAuTkQoc2VsZikpfSkKdCgkLCJrdCIsIkNyIixmdW5jdGlvbigpe3JldHVybiBILllnKCJfJGRh
+cnRfZGFydE9iamVjdCIpfSkKdCgkLCJmSyIsImtJIixmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiBE
+YXJ0T2JqZWN0KGEpe3RoaXMubz1hfX0pCnQoJCwicXQiLCJ6QiIsZnVuY3Rpb24oKXtyZXR1cm4gbmV3
+IFQubVEoKX0pCnQoJCwiT2wiLCJVRSIsZnVuY3Rpb24oKXtyZXR1cm4gUC5oSyhDLm9sLmdtVyhXLngz
+KCkpLmhyZWYpLmdoWSgpLnEoMCwiYXV0aFRva2VuIil9KQp0KCQsImhUIiwieVAiLGZ1bmN0aW9uKCl7
+cmV0dXJuIFcuWnIoKS5xdWVyeVNlbGVjdG9yKCIuZWRpdC1saXN0IC5wYW5lbC1jb250ZW50Iil9KQp0
+KCQsIlc2IiwiaEwiLGZ1bmN0aW9uKCl7cmV0dXJuIFcuWnIoKS5xdWVyeVNlbGVjdG9yKCIuZWRpdC1w
+YW5lbCAucGFuZWwtY29udGVudCIpfSkKdCgkLCJUUiIsIkRXIixmdW5jdGlvbigpe3JldHVybiBXLlpy
+KCkucXVlcnlTZWxlY3RvcigiZm9vdGVyIil9KQp0KCQsIkVZIiwiZmkiLGZ1bmN0aW9uKCl7cmV0dXJu
+IFcuWnIoKS5xdWVyeVNlbGVjdG9yKCJoZWFkZXIiKX0pCnQoJCwiYXYiLCJEOSIsZnVuY3Rpb24oKXty
+ZXR1cm4gVy5acigpLnF1ZXJ5U2VsZWN0b3IoIiN1bml0LW5hbWUiKX0pCnQoJCwiZmUiLCJLRyIsZnVu
+Y3Rpb24oKXtyZXR1cm4gbmV3IEwuWEEoKX0pCnQoJCwiZW8iLCJuVSIsZnVuY3Rpb24oKXtyZXR1cm4g
+bmV3IE0ubEkoJC5IaygpKX0pCnQoJCwieXIiLCJiRCIsZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEUuT0Yo
+UC5udSgiLyIpLFAubnUoIlteL10kIiksUC5udSgiXi8iKSl9KQp0KCQsIk1rIiwiS2siLGZ1bmN0aW9u
+KCl7cmV0dXJuIG5ldyBMLklWKFAubnUoIlsvXFxcXF0iKSxQLm51KCJbXi9cXFxcXSQiKSxQLm51KCJe
+KFxcXFxcXFxcW15cXFxcXStcXFxcW15cXFxcL10rfFthLXpBLVpdOlsvXFxcXF0pIiksUC5udSgiXlsv
+XFxcXF0oPyFbL1xcXFxdKSIpKX0pCnQoJCwiYWsiLCJFYiIsZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEYu
+cnUoUC5udSgiLyIpLFAubnUoIiheW2EtekEtWl1bLSsuYS16QS1aXFxkXSo6Ly98W14vXSkkIiksUC5u
+dSgiW2EtekEtWl1bLSsuYS16QS1aXFxkXSo6Ly9bXi9dKiIpLFAubnUoIl4vIikpfSkKdCgkLCJscyIs
+IkhrIixmdW5jdGlvbigpe3JldHVybiBPLlJoKCl9KX0pKCk7KGZ1bmN0aW9uIG5hdGl2ZVN1cHBvcnQo
+KXshZnVuY3Rpb24oKXt2YXIgdD1mdW5jdGlvbihhKXt2YXIgbj17fQpuW2FdPTEKcmV0dXJuIE9iamVj
+dC5rZXlzKGh1bmtIZWxwZXJzLmNvbnZlcnRUb0Zhc3RPYmplY3QobikpWzBdfQp2LmdldElzb2xhdGVU
+YWc9ZnVuY3Rpb24oYSl7cmV0dXJuIHQoIl9fX2RhcnRfIithK3YuaXNvbGF0ZVRhZyl9CnZhciBzPSJf
+X19kYXJ0X2lzb2xhdGVfdGFnc18iCnZhciByPU9iamVjdFtzXXx8KE9iamVjdFtzXT1PYmplY3QuY3Jl
+YXRlKG51bGwpKQp2YXIgcT0iX1p4WXhYIgpmb3IodmFyIHA9MDs7cCsrKXt2YXIgbz10KHErIl8iK3Ar
+Il8iKQppZighKG8gaW4gcikpe3Jbb109MQp2Lmlzb2xhdGVUYWc9bwpicmVha319di5kaXNwYXRjaFBy
+b3BlcnR5TmFtZT12LmdldElzb2xhdGVUYWcoImRpc3BhdGNoX3JlY29yZCIpfSgpCmh1bmtIZWxwZXJz
+LnNldE9yVXBkYXRlSW50ZXJjZXB0b3JzQnlUYWcoe0RPTUVycm9yOkoudkIsRE9NSW1wbGVtZW50YXRp
+b246Si52QixNZWRpYUVycm9yOkoudkIsTmF2aWdhdG9yOkoudkIsTmF2aWdhdG9yQ29uY3VycmVudEhh
+cmR3YXJlOkoudkIsTmF2aWdhdG9yVXNlck1lZGlhRXJyb3I6Si52QixPdmVyY29uc3RyYWluZWRFcnJv
+cjpKLnZCLFBvc2l0aW9uRXJyb3I6Si52QixSYW5nZTpKLnZCLFNRTEVycm9yOkoudkIsRGF0YVZpZXc6
+SC5wRixBcnJheUJ1ZmZlclZpZXc6SC5wRixGbG9hdDMyQXJyYXk6SC5EZyxGbG9hdDY0QXJyYXk6SC5E
+ZyxJbnQxNkFycmF5OkgueGosSW50MzJBcnJheTpILmRFLEludDhBcnJheTpILlpBLFVpbnQxNkFycmF5
+Okgud2YsVWludDMyQXJyYXk6SC5QcSxVaW50OENsYW1wZWRBcnJheTpILmVFLENhbnZhc1BpeGVsQXJy
+YXk6SC5lRSxVaW50OEFycmF5OkguVjYsSFRNTEF1ZGlvRWxlbWVudDpXLnFFLEhUTUxCUkVsZW1lbnQ6
+Vy5xRSxIVE1MQnV0dG9uRWxlbWVudDpXLnFFLEhUTUxDYW52YXNFbGVtZW50OlcucUUsSFRNTENvbnRl
+bnRFbGVtZW50OlcucUUsSFRNTERMaXN0RWxlbWVudDpXLnFFLEhUTUxEYXRhRWxlbWVudDpXLnFFLEhU
+TUxEYXRhTGlzdEVsZW1lbnQ6Vy5xRSxIVE1MRGV0YWlsc0VsZW1lbnQ6Vy5xRSxIVE1MRGlhbG9nRWxl
+bWVudDpXLnFFLEhUTUxEaXZFbGVtZW50OlcucUUsSFRNTEVtYmVkRWxlbWVudDpXLnFFLEhUTUxGaWVs
+ZFNldEVsZW1lbnQ6Vy5xRSxIVE1MSFJFbGVtZW50OlcucUUsSFRNTEhlYWRFbGVtZW50OlcucUUsSFRN
+TEhlYWRpbmdFbGVtZW50OlcucUUsSFRNTEh0bWxFbGVtZW50OlcucUUsSFRNTElGcmFtZUVsZW1lbnQ6
+Vy5xRSxIVE1MSW1hZ2VFbGVtZW50OlcucUUsSFRNTElucHV0RWxlbWVudDpXLnFFLEhUTUxMSUVsZW1l
+bnQ6Vy5xRSxIVE1MTGFiZWxFbGVtZW50OlcucUUsSFRNTExlZ2VuZEVsZW1lbnQ6Vy5xRSxIVE1MTGlu
+a0VsZW1lbnQ6Vy5xRSxIVE1MTWFwRWxlbWVudDpXLnFFLEhUTUxNZWRpYUVsZW1lbnQ6Vy5xRSxIVE1M
+TWVudUVsZW1lbnQ6Vy5xRSxIVE1MTWV0YUVsZW1lbnQ6Vy5xRSxIVE1MTWV0ZXJFbGVtZW50OlcucUUs
+SFRNTE1vZEVsZW1lbnQ6Vy5xRSxIVE1MT0xpc3RFbGVtZW50OlcucUUsSFRNTE9iamVjdEVsZW1lbnQ6
+Vy5xRSxIVE1MT3B0R3JvdXBFbGVtZW50OlcucUUsSFRNTE9wdGlvbkVsZW1lbnQ6Vy5xRSxIVE1MT3V0
+cHV0RWxlbWVudDpXLnFFLEhUTUxQYXJhbUVsZW1lbnQ6Vy5xRSxIVE1MUGljdHVyZUVsZW1lbnQ6Vy5x
+RSxIVE1MUHJlRWxlbWVudDpXLnFFLEhUTUxQcm9ncmVzc0VsZW1lbnQ6Vy5xRSxIVE1MUXVvdGVFbGVt
+ZW50OlcucUUsSFRNTFNjcmlwdEVsZW1lbnQ6Vy5xRSxIVE1MU2hhZG93RWxlbWVudDpXLnFFLEhUTUxT
+bG90RWxlbWVudDpXLnFFLEhUTUxTb3VyY2VFbGVtZW50OlcucUUsSFRNTFNwYW5FbGVtZW50OlcucUUs
+SFRNTFN0eWxlRWxlbWVudDpXLnFFLEhUTUxUYWJsZUNhcHRpb25FbGVtZW50OlcucUUsSFRNTFRhYmxl
+Q2VsbEVsZW1lbnQ6Vy5xRSxIVE1MVGFibGVEYXRhQ2VsbEVsZW1lbnQ6Vy5xRSxIVE1MVGFibGVIZWFk
+ZXJDZWxsRWxlbWVudDpXLnFFLEhUTUxUYWJsZUNvbEVsZW1lbnQ6Vy5xRSxIVE1MVGV4dEFyZWFFbGVt
+ZW50OlcucUUsSFRNTFRpbWVFbGVtZW50OlcucUUsSFRNTFRpdGxlRWxlbWVudDpXLnFFLEhUTUxUcmFj
+a0VsZW1lbnQ6Vy5xRSxIVE1MVUxpc3RFbGVtZW50OlcucUUsSFRNTFVua25vd25FbGVtZW50OlcucUUs
+SFRNTFZpZGVvRWxlbWVudDpXLnFFLEhUTUxEaXJlY3RvcnlFbGVtZW50OlcucUUsSFRNTEZvbnRFbGVt
+ZW50OlcucUUsSFRNTEZyYW1lRWxlbWVudDpXLnFFLEhUTUxGcmFtZVNldEVsZW1lbnQ6Vy5xRSxIVE1M
+TWFycXVlZUVsZW1lbnQ6Vy5xRSxIVE1MRWxlbWVudDpXLnFFLEhUTUxBbmNob3JFbGVtZW50OlcuR2gs
+SFRNTEFyZWFFbGVtZW50OlcuZlksSFRNTEJhc2VFbGVtZW50OlcubkIsQmxvYjpXLkF6LEhUTUxCb2R5
+RWxlbWVudDpXLlFQLENEQVRBU2VjdGlvbjpXLm54LENoYXJhY3RlckRhdGE6Vy5ueCxDb21tZW50Olcu
+bngsUHJvY2Vzc2luZ0luc3RydWN0aW9uOlcubngsVGV4dDpXLm54LENTU1N0eWxlRGVjbGFyYXRpb246
+Vy5vSixNU1N0eWxlQ1NTUHJvcGVydGllczpXLm9KLENTUzJQcm9wZXJ0aWVzOlcub0osWE1MRG9jdW1l
+bnQ6Vy5RRixEb2N1bWVudDpXLlFGLERPTUV4Y2VwdGlvbjpXLk5oLERPTVJlY3RSZWFkT25seTpXLklC
+LERPTVRva2VuTGlzdDpXLm43LEVsZW1lbnQ6Vy5jdixBYm9ydFBheW1lbnRFdmVudDpXLmVhLEFuaW1h
+dGlvbkV2ZW50OlcuZWEsQW5pbWF0aW9uUGxheWJhY2tFdmVudDpXLmVhLEFwcGxpY2F0aW9uQ2FjaGVF
+cnJvckV2ZW50OlcuZWEsQmFja2dyb3VuZEZldGNoQ2xpY2tFdmVudDpXLmVhLEJhY2tncm91bmRGZXRj
+aEV2ZW50OlcuZWEsQmFja2dyb3VuZEZldGNoRmFpbEV2ZW50OlcuZWEsQmFja2dyb3VuZEZldGNoZWRF
+dmVudDpXLmVhLEJlZm9yZUluc3RhbGxQcm9tcHRFdmVudDpXLmVhLEJlZm9yZVVubG9hZEV2ZW50Olcu
+ZWEsQmxvYkV2ZW50OlcuZWEsQ2FuTWFrZVBheW1lbnRFdmVudDpXLmVhLENsaXBib2FyZEV2ZW50Olcu
+ZWEsQ2xvc2VFdmVudDpXLmVhLEN1c3RvbUV2ZW50OlcuZWEsRGV2aWNlTW90aW9uRXZlbnQ6Vy5lYSxE
+ZXZpY2VPcmllbnRhdGlvbkV2ZW50OlcuZWEsRXJyb3JFdmVudDpXLmVhLEV4dGVuZGFibGVFdmVudDpX
+LmVhLEV4dGVuZGFibGVNZXNzYWdlRXZlbnQ6Vy5lYSxGZXRjaEV2ZW50OlcuZWEsRm9udEZhY2VTZXRM
+b2FkRXZlbnQ6Vy5lYSxGb3JlaWduRmV0Y2hFdmVudDpXLmVhLEdhbWVwYWRFdmVudDpXLmVhLEhhc2hD
+aGFuZ2VFdmVudDpXLmVhLEluc3RhbGxFdmVudDpXLmVhLE1lZGlhRW5jcnlwdGVkRXZlbnQ6Vy5lYSxN
+ZWRpYUtleU1lc3NhZ2VFdmVudDpXLmVhLE1lZGlhUXVlcnlMaXN0RXZlbnQ6Vy5lYSxNZWRpYVN0cmVh
+bUV2ZW50OlcuZWEsTWVkaWFTdHJlYW1UcmFja0V2ZW50OlcuZWEsTWVzc2FnZUV2ZW50OlcuZWEsTUlE
+SUNvbm5lY3Rpb25FdmVudDpXLmVhLE1JRElNZXNzYWdlRXZlbnQ6Vy5lYSxNdXRhdGlvbkV2ZW50Olcu
+ZWEsTm90aWZpY2F0aW9uRXZlbnQ6Vy5lYSxQYWdlVHJhbnNpdGlvbkV2ZW50OlcuZWEsUGF5bWVudFJl
+cXVlc3RFdmVudDpXLmVhLFBheW1lbnRSZXF1ZXN0VXBkYXRlRXZlbnQ6Vy5lYSxQb3BTdGF0ZUV2ZW50
+OlcuZWEsUHJlc2VudGF0aW9uQ29ubmVjdGlvbkF2YWlsYWJsZUV2ZW50OlcuZWEsUHJlc2VudGF0aW9u
+Q29ubmVjdGlvbkNsb3NlRXZlbnQ6Vy5lYSxQcm9taXNlUmVqZWN0aW9uRXZlbnQ6Vy5lYSxQdXNoRXZl
+bnQ6Vy5lYSxSVENEYXRhQ2hhbm5lbEV2ZW50OlcuZWEsUlRDRFRNRlRvbmVDaGFuZ2VFdmVudDpXLmVh
+LFJUQ1BlZXJDb25uZWN0aW9uSWNlRXZlbnQ6Vy5lYSxSVENUcmFja0V2ZW50OlcuZWEsU2VjdXJpdHlQ
+b2xpY3lWaW9sYXRpb25FdmVudDpXLmVhLFNlbnNvckVycm9yRXZlbnQ6Vy5lYSxTcGVlY2hSZWNvZ25p
+dGlvbkVycm9yOlcuZWEsU3BlZWNoUmVjb2duaXRpb25FdmVudDpXLmVhLFNwZWVjaFN5bnRoZXNpc0V2
+ZW50OlcuZWEsU3RvcmFnZUV2ZW50OlcuZWEsU3luY0V2ZW50OlcuZWEsVHJhY2tFdmVudDpXLmVhLFRy
+YW5zaXRpb25FdmVudDpXLmVhLFdlYktpdFRyYW5zaXRpb25FdmVudDpXLmVhLFZSRGV2aWNlRXZlbnQ6
+Vy5lYSxWUkRpc3BsYXlFdmVudDpXLmVhLFZSU2Vzc2lvbkV2ZW50OlcuZWEsTW9qb0ludGVyZmFjZVJl
+cXVlc3RFdmVudDpXLmVhLFVTQkNvbm5lY3Rpb25FdmVudDpXLmVhLElEQlZlcnNpb25DaGFuZ2VFdmVu
+dDpXLmVhLEF1ZGlvUHJvY2Vzc2luZ0V2ZW50OlcuZWEsT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50
+OlcuZWEsV2ViR0xDb250ZXh0RXZlbnQ6Vy5lYSxFdmVudDpXLmVhLElucHV0RXZlbnQ6Vy5lYSxFdmVu
+dFRhcmdldDpXLkQwLEZpbGU6Vy5UNSxIVE1MRm9ybUVsZW1lbnQ6Vy5oNCxIaXN0b3J5OlcuYnIsSFRN
+TERvY3VtZW50OlcuVmIsWE1MSHR0cFJlcXVlc3Q6Vy5mSixYTUxIdHRwUmVxdWVzdEV2ZW50VGFyZ2V0
+Olcud2EsSW1hZ2VEYXRhOlcuU2csTG9jYXRpb246Vy51OCxNb3VzZUV2ZW50OlcuT0ssRHJhZ0V2ZW50
+OlcuT0ssUG9pbnRlckV2ZW50OlcuT0ssV2hlZWxFdmVudDpXLk9LLERvY3VtZW50RnJhZ21lbnQ6Vy51
+SCxTaGFkb3dSb290OlcudUgsRG9jdW1lbnRUeXBlOlcudUgsTm9kZTpXLnVILE5vZGVMaXN0OlcuQkgs
+UmFkaW9Ob2RlTGlzdDpXLkJILEhUTUxQYXJhZ3JhcGhFbGVtZW50OlcuU04sUHJvZ3Jlc3NFdmVudDpX
+LmV3LFJlc291cmNlUHJvZ3Jlc3NFdmVudDpXLmV3LEhUTUxTZWxlY3RFbGVtZW50OlcubHAsSFRNTFRh
+YmxlRWxlbWVudDpXLlRiLEhUTUxUYWJsZVJvd0VsZW1lbnQ6Vy5JdixIVE1MVGFibGVTZWN0aW9uRWxl
+bWVudDpXLldQLEhUTUxUZW1wbGF0ZUVsZW1lbnQ6Vy55WSxDb21wb3NpdGlvbkV2ZW50OlcudzYsRm9j
+dXNFdmVudDpXLnc2LEtleWJvYXJkRXZlbnQ6Vy53NixUZXh0RXZlbnQ6Vy53NixUb3VjaEV2ZW50Olcu
+dzYsVUlFdmVudDpXLnc2LFdpbmRvdzpXLks1LERPTVdpbmRvdzpXLks1LERlZGljYXRlZFdvcmtlckds
+b2JhbFNjb3BlOlcuQ20sU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOlcuQ20sU2hhcmVkV29ya2VyR2xv
+YmFsU2NvcGU6Vy5DbSxXb3JrZXJHbG9iYWxTY29wZTpXLkNtLEF0dHI6Vy5DUSxDbGllbnRSZWN0Olcu
+dzQsRE9NUmVjdDpXLnc0LE5hbWVkTm9kZU1hcDpXLnJoLE1vek5hbWVkQXR0ck1hcDpXLnJoLElEQktl
+eVJhbmdlOlAuaEYsU1ZHU2NyaXB0RWxlbWVudDpQLm5kLFNWR0FFbGVtZW50OlAuZDUsU1ZHQW5pbWF0
+ZUVsZW1lbnQ6UC5kNSxTVkdBbmltYXRlTW90aW9uRWxlbWVudDpQLmQ1LFNWR0FuaW1hdGVUcmFuc2Zv
+cm1FbGVtZW50OlAuZDUsU1ZHQW5pbWF0aW9uRWxlbWVudDpQLmQ1LFNWR0NpcmNsZUVsZW1lbnQ6UC5k
+NSxTVkdDbGlwUGF0aEVsZW1lbnQ6UC5kNSxTVkdEZWZzRWxlbWVudDpQLmQ1LFNWR0Rlc2NFbGVtZW50
+OlAuZDUsU1ZHRGlzY2FyZEVsZW1lbnQ6UC5kNSxTVkdFbGxpcHNlRWxlbWVudDpQLmQ1LFNWR0ZFQmxl
+bmRFbGVtZW50OlAuZDUsU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6UC5kNSxTVkdGRUNvbXBvbmVudFRy
+YW5zZmVyRWxlbWVudDpQLmQ1LFNWR0ZFQ29tcG9zaXRlRWxlbWVudDpQLmQ1LFNWR0ZFQ29udm9sdmVN
+YXRyaXhFbGVtZW50OlAuZDUsU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OlAuZDUsU1ZHRkVEaXNw
+bGFjZW1lbnRNYXBFbGVtZW50OlAuZDUsU1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50OlAuZDUsU1ZHRkVG
+bG9vZEVsZW1lbnQ6UC5kNSxTVkdGRUZ1bmNBRWxlbWVudDpQLmQ1LFNWR0ZFRnVuY0JFbGVtZW50OlAu
+ZDUsU1ZHRkVGdW5jR0VsZW1lbnQ6UC5kNSxTVkdGRUZ1bmNSRWxlbWVudDpQLmQ1LFNWR0ZFR2F1c3Np
+YW5CbHVyRWxlbWVudDpQLmQ1LFNWR0ZFSW1hZ2VFbGVtZW50OlAuZDUsU1ZHRkVNZXJnZUVsZW1lbnQ6
+UC5kNSxTVkdGRU1lcmdlTm9kZUVsZW1lbnQ6UC5kNSxTVkdGRU1vcnBob2xvZ3lFbGVtZW50OlAuZDUs
+U1ZHRkVPZmZzZXRFbGVtZW50OlAuZDUsU1ZHRkVQb2ludExpZ2h0RWxlbWVudDpQLmQ1LFNWR0ZFU3Bl
+Y3VsYXJMaWdodGluZ0VsZW1lbnQ6UC5kNSxTVkdGRVNwb3RMaWdodEVsZW1lbnQ6UC5kNSxTVkdGRVRp
+bGVFbGVtZW50OlAuZDUsU1ZHRkVUdXJidWxlbmNlRWxlbWVudDpQLmQ1LFNWR0ZpbHRlckVsZW1lbnQ6
+UC5kNSxTVkdGb3JlaWduT2JqZWN0RWxlbWVudDpQLmQ1LFNWR0dFbGVtZW50OlAuZDUsU1ZHR2VvbWV0
+cnlFbGVtZW50OlAuZDUsU1ZHR3JhcGhpY3NFbGVtZW50OlAuZDUsU1ZHSW1hZ2VFbGVtZW50OlAuZDUs
+U1ZHTGluZUVsZW1lbnQ6UC5kNSxTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6UC5kNSxTVkdNYXJrZXJF
+bGVtZW50OlAuZDUsU1ZHTWFza0VsZW1lbnQ6UC5kNSxTVkdNZXRhZGF0YUVsZW1lbnQ6UC5kNSxTVkdQ
+YXRoRWxlbWVudDpQLmQ1LFNWR1BhdHRlcm5FbGVtZW50OlAuZDUsU1ZHUG9seWdvbkVsZW1lbnQ6UC5k
+NSxTVkdQb2x5bGluZUVsZW1lbnQ6UC5kNSxTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6UC5kNSxTVkdS
+ZWN0RWxlbWVudDpQLmQ1LFNWR1NldEVsZW1lbnQ6UC5kNSxTVkdTdG9wRWxlbWVudDpQLmQ1LFNWR1N0
+eWxlRWxlbWVudDpQLmQ1LFNWR1NWR0VsZW1lbnQ6UC5kNSxTVkdTd2l0Y2hFbGVtZW50OlAuZDUsU1ZH
+U3ltYm9sRWxlbWVudDpQLmQ1LFNWR1RTcGFuRWxlbWVudDpQLmQ1LFNWR1RleHRDb250ZW50RWxlbWVu
+dDpQLmQ1LFNWR1RleHRFbGVtZW50OlAuZDUsU1ZHVGV4dFBhdGhFbGVtZW50OlAuZDUsU1ZHVGV4dFBv
+c2l0aW9uaW5nRWxlbWVudDpQLmQ1LFNWR1RpdGxlRWxlbWVudDpQLmQ1LFNWR1VzZUVsZW1lbnQ6UC5k
+NSxTVkdWaWV3RWxlbWVudDpQLmQ1LFNWR0dyYWRpZW50RWxlbWVudDpQLmQ1LFNWR0NvbXBvbmVudFRy
+YW5zZmVyRnVuY3Rpb25FbGVtZW50OlAuZDUsU1ZHRkVEcm9wU2hhZG93RWxlbWVudDpQLmQ1LFNWR01Q
+YXRoRWxlbWVudDpQLmQ1LFNWR0VsZW1lbnQ6UC5kNX0pCmh1bmtIZWxwZXJzLnNldE9yVXBkYXRlTGVh
+ZlRhZ3Moe0RPTUVycm9yOnRydWUsRE9NSW1wbGVtZW50YXRpb246dHJ1ZSxNZWRpYUVycm9yOnRydWUs
+TmF2aWdhdG9yOnRydWUsTmF2aWdhdG9yQ29uY3VycmVudEhhcmR3YXJlOnRydWUsTmF2aWdhdG9yVXNl
+ck1lZGlhRXJyb3I6dHJ1ZSxPdmVyY29uc3RyYWluZWRFcnJvcjp0cnVlLFBvc2l0aW9uRXJyb3I6dHJ1
+ZSxSYW5nZTp0cnVlLFNRTEVycm9yOnRydWUsRGF0YVZpZXc6dHJ1ZSxBcnJheUJ1ZmZlclZpZXc6ZmFs
+c2UsRmxvYXQzMkFycmF5OnRydWUsRmxvYXQ2NEFycmF5OnRydWUsSW50MTZBcnJheTp0cnVlLEludDMy
+QXJyYXk6dHJ1ZSxJbnQ4QXJyYXk6dHJ1ZSxVaW50MTZBcnJheTp0cnVlLFVpbnQzMkFycmF5OnRydWUs
+VWludDhDbGFtcGVkQXJyYXk6dHJ1ZSxDYW52YXNQaXhlbEFycmF5OnRydWUsVWludDhBcnJheTpmYWxz
+ZSxIVE1MQXVkaW9FbGVtZW50OnRydWUsSFRNTEJSRWxlbWVudDp0cnVlLEhUTUxCdXR0b25FbGVtZW50
+OnRydWUsSFRNTENhbnZhc0VsZW1lbnQ6dHJ1ZSxIVE1MQ29udGVudEVsZW1lbnQ6dHJ1ZSxIVE1MRExp
+c3RFbGVtZW50OnRydWUsSFRNTERhdGFFbGVtZW50OnRydWUsSFRNTERhdGFMaXN0RWxlbWVudDp0cnVl
+LEhUTUxEZXRhaWxzRWxlbWVudDp0cnVlLEhUTUxEaWFsb2dFbGVtZW50OnRydWUsSFRNTERpdkVsZW1l
+bnQ6dHJ1ZSxIVE1MRW1iZWRFbGVtZW50OnRydWUsSFRNTEZpZWxkU2V0RWxlbWVudDp0cnVlLEhUTUxI
+UkVsZW1lbnQ6dHJ1ZSxIVE1MSGVhZEVsZW1lbnQ6dHJ1ZSxIVE1MSGVhZGluZ0VsZW1lbnQ6dHJ1ZSxI
+VE1MSHRtbEVsZW1lbnQ6dHJ1ZSxIVE1MSUZyYW1lRWxlbWVudDp0cnVlLEhUTUxJbWFnZUVsZW1lbnQ6
+dHJ1ZSxIVE1MSW5wdXRFbGVtZW50OnRydWUsSFRNTExJRWxlbWVudDp0cnVlLEhUTUxMYWJlbEVsZW1l
+bnQ6dHJ1ZSxIVE1MTGVnZW5kRWxlbWVudDp0cnVlLEhUTUxMaW5rRWxlbWVudDp0cnVlLEhUTUxNYXBF
+bGVtZW50OnRydWUsSFRNTE1lZGlhRWxlbWVudDp0cnVlLEhUTUxNZW51RWxlbWVudDp0cnVlLEhUTUxN
+ZXRhRWxlbWVudDp0cnVlLEhUTUxNZXRlckVsZW1lbnQ6dHJ1ZSxIVE1MTW9kRWxlbWVudDp0cnVlLEhU
+TUxPTGlzdEVsZW1lbnQ6dHJ1ZSxIVE1MT2JqZWN0RWxlbWVudDp0cnVlLEhUTUxPcHRHcm91cEVsZW1l
+bnQ6dHJ1ZSxIVE1MT3B0aW9uRWxlbWVudDp0cnVlLEhUTUxPdXRwdXRFbGVtZW50OnRydWUsSFRNTFBh
+cmFtRWxlbWVudDp0cnVlLEhUTUxQaWN0dXJlRWxlbWVudDp0cnVlLEhUTUxQcmVFbGVtZW50OnRydWUs
+SFRNTFByb2dyZXNzRWxlbWVudDp0cnVlLEhUTUxRdW90ZUVsZW1lbnQ6dHJ1ZSxIVE1MU2NyaXB0RWxl
+bWVudDp0cnVlLEhUTUxTaGFkb3dFbGVtZW50OnRydWUsSFRNTFNsb3RFbGVtZW50OnRydWUsSFRNTFNv
+dXJjZUVsZW1lbnQ6dHJ1ZSxIVE1MU3BhbkVsZW1lbnQ6dHJ1ZSxIVE1MU3R5bGVFbGVtZW50OnRydWUs
+SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQ6dHJ1ZSxIVE1MVGFibGVDZWxsRWxlbWVudDp0cnVlLEhUTUxU
+YWJsZURhdGFDZWxsRWxlbWVudDp0cnVlLEhUTUxUYWJsZUhlYWRlckNlbGxFbGVtZW50OnRydWUsSFRN
+TFRhYmxlQ29sRWxlbWVudDp0cnVlLEhUTUxUZXh0QXJlYUVsZW1lbnQ6dHJ1ZSxIVE1MVGltZUVsZW1l
+bnQ6dHJ1ZSxIVE1MVGl0bGVFbGVtZW50OnRydWUsSFRNTFRyYWNrRWxlbWVudDp0cnVlLEhUTUxVTGlz
+dEVsZW1lbnQ6dHJ1ZSxIVE1MVW5rbm93bkVsZW1lbnQ6dHJ1ZSxIVE1MVmlkZW9FbGVtZW50OnRydWUs
+SFRNTERpcmVjdG9yeUVsZW1lbnQ6dHJ1ZSxIVE1MRm9udEVsZW1lbnQ6dHJ1ZSxIVE1MRnJhbWVFbGVt
+ZW50OnRydWUsSFRNTEZyYW1lU2V0RWxlbWVudDp0cnVlLEhUTUxNYXJxdWVlRWxlbWVudDp0cnVlLEhU
+TUxFbGVtZW50OmZhbHNlLEhUTUxBbmNob3JFbGVtZW50OnRydWUsSFRNTEFyZWFFbGVtZW50OnRydWUs
+SFRNTEJhc2VFbGVtZW50OnRydWUsQmxvYjpmYWxzZSxIVE1MQm9keUVsZW1lbnQ6dHJ1ZSxDREFUQVNl
+Y3Rpb246dHJ1ZSxDaGFyYWN0ZXJEYXRhOnRydWUsQ29tbWVudDp0cnVlLFByb2Nlc3NpbmdJbnN0cnVj
+dGlvbjp0cnVlLFRleHQ6dHJ1ZSxDU1NTdHlsZURlY2xhcmF0aW9uOnRydWUsTVNTdHlsZUNTU1Byb3Bl
+cnRpZXM6dHJ1ZSxDU1MyUHJvcGVydGllczp0cnVlLFhNTERvY3VtZW50OnRydWUsRG9jdW1lbnQ6ZmFs
+c2UsRE9NRXhjZXB0aW9uOnRydWUsRE9NUmVjdFJlYWRPbmx5OmZhbHNlLERPTVRva2VuTGlzdDp0cnVl
+LEVsZW1lbnQ6ZmFsc2UsQWJvcnRQYXltZW50RXZlbnQ6dHJ1ZSxBbmltYXRpb25FdmVudDp0cnVlLEFu
+aW1hdGlvblBsYXliYWNrRXZlbnQ6dHJ1ZSxBcHBsaWNhdGlvbkNhY2hlRXJyb3JFdmVudDp0cnVlLEJh
+Y2tncm91bmRGZXRjaENsaWNrRXZlbnQ6dHJ1ZSxCYWNrZ3JvdW5kRmV0Y2hFdmVudDp0cnVlLEJhY2tn
+cm91bmRGZXRjaEZhaWxFdmVudDp0cnVlLEJhY2tncm91bmRGZXRjaGVkRXZlbnQ6dHJ1ZSxCZWZvcmVJ
+bnN0YWxsUHJvbXB0RXZlbnQ6dHJ1ZSxCZWZvcmVVbmxvYWRFdmVudDp0cnVlLEJsb2JFdmVudDp0cnVl
+LENhbk1ha2VQYXltZW50RXZlbnQ6dHJ1ZSxDbGlwYm9hcmRFdmVudDp0cnVlLENsb3NlRXZlbnQ6dHJ1
+ZSxDdXN0b21FdmVudDp0cnVlLERldmljZU1vdGlvbkV2ZW50OnRydWUsRGV2aWNlT3JpZW50YXRpb25F
+dmVudDp0cnVlLEVycm9yRXZlbnQ6dHJ1ZSxFeHRlbmRhYmxlRXZlbnQ6dHJ1ZSxFeHRlbmRhYmxlTWVz
+c2FnZUV2ZW50OnRydWUsRmV0Y2hFdmVudDp0cnVlLEZvbnRGYWNlU2V0TG9hZEV2ZW50OnRydWUsRm9y
+ZWlnbkZldGNoRXZlbnQ6dHJ1ZSxHYW1lcGFkRXZlbnQ6dHJ1ZSxIYXNoQ2hhbmdlRXZlbnQ6dHJ1ZSxJ
+bnN0YWxsRXZlbnQ6dHJ1ZSxNZWRpYUVuY3J5cHRlZEV2ZW50OnRydWUsTWVkaWFLZXlNZXNzYWdlRXZl
+bnQ6dHJ1ZSxNZWRpYVF1ZXJ5TGlzdEV2ZW50OnRydWUsTWVkaWFTdHJlYW1FdmVudDp0cnVlLE1lZGlh
+U3RyZWFtVHJhY2tFdmVudDp0cnVlLE1lc3NhZ2VFdmVudDp0cnVlLE1JRElDb25uZWN0aW9uRXZlbnQ6
+dHJ1ZSxNSURJTWVzc2FnZUV2ZW50OnRydWUsTXV0YXRpb25FdmVudDp0cnVlLE5vdGlmaWNhdGlvbkV2
+ZW50OnRydWUsUGFnZVRyYW5zaXRpb25FdmVudDp0cnVlLFBheW1lbnRSZXF1ZXN0RXZlbnQ6dHJ1ZSxQ
+YXltZW50UmVxdWVzdFVwZGF0ZUV2ZW50OnRydWUsUG9wU3RhdGVFdmVudDp0cnVlLFByZXNlbnRhdGlv
+bkNvbm5lY3Rpb25BdmFpbGFibGVFdmVudDp0cnVlLFByZXNlbnRhdGlvbkNvbm5lY3Rpb25DbG9zZUV2
+ZW50OnRydWUsUHJvbWlzZVJlamVjdGlvbkV2ZW50OnRydWUsUHVzaEV2ZW50OnRydWUsUlRDRGF0YUNo
+YW5uZWxFdmVudDp0cnVlLFJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQ6dHJ1ZSxSVENQZWVyQ29ubmVjdGlv
+bkljZUV2ZW50OnRydWUsUlRDVHJhY2tFdmVudDp0cnVlLFNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZl
+bnQ6dHJ1ZSxTZW5zb3JFcnJvckV2ZW50OnRydWUsU3BlZWNoUmVjb2duaXRpb25FcnJvcjp0cnVlLFNw
+ZWVjaFJlY29nbml0aW9uRXZlbnQ6dHJ1ZSxTcGVlY2hTeW50aGVzaXNFdmVudDp0cnVlLFN0b3JhZ2VF
+dmVudDp0cnVlLFN5bmNFdmVudDp0cnVlLFRyYWNrRXZlbnQ6dHJ1ZSxUcmFuc2l0aW9uRXZlbnQ6dHJ1
+ZSxXZWJLaXRUcmFuc2l0aW9uRXZlbnQ6dHJ1ZSxWUkRldmljZUV2ZW50OnRydWUsVlJEaXNwbGF5RXZl
+bnQ6dHJ1ZSxWUlNlc3Npb25FdmVudDp0cnVlLE1vam9JbnRlcmZhY2VSZXF1ZXN0RXZlbnQ6dHJ1ZSxV
+U0JDb25uZWN0aW9uRXZlbnQ6dHJ1ZSxJREJWZXJzaW9uQ2hhbmdlRXZlbnQ6dHJ1ZSxBdWRpb1Byb2Nl
+c3NpbmdFdmVudDp0cnVlLE9mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudDp0cnVlLFdlYkdMQ29udGV4
+dEV2ZW50OnRydWUsRXZlbnQ6ZmFsc2UsSW5wdXRFdmVudDpmYWxzZSxFdmVudFRhcmdldDpmYWxzZSxG
+aWxlOnRydWUsSFRNTEZvcm1FbGVtZW50OnRydWUsSGlzdG9yeTp0cnVlLEhUTUxEb2N1bWVudDp0cnVl
+LFhNTEh0dHBSZXF1ZXN0OnRydWUsWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldDpmYWxzZSxJbWFnZURh
+dGE6dHJ1ZSxMb2NhdGlvbjp0cnVlLE1vdXNlRXZlbnQ6dHJ1ZSxEcmFnRXZlbnQ6dHJ1ZSxQb2ludGVy
+RXZlbnQ6dHJ1ZSxXaGVlbEV2ZW50OnRydWUsRG9jdW1lbnRGcmFnbWVudDp0cnVlLFNoYWRvd1Jvb3Q6
+dHJ1ZSxEb2N1bWVudFR5cGU6dHJ1ZSxOb2RlOmZhbHNlLE5vZGVMaXN0OnRydWUsUmFkaW9Ob2RlTGlz
+dDp0cnVlLEhUTUxQYXJhZ3JhcGhFbGVtZW50OnRydWUsUHJvZ3Jlc3NFdmVudDp0cnVlLFJlc291cmNl
+UHJvZ3Jlc3NFdmVudDp0cnVlLEhUTUxTZWxlY3RFbGVtZW50OnRydWUsSFRNTFRhYmxlRWxlbWVudDp0
+cnVlLEhUTUxUYWJsZVJvd0VsZW1lbnQ6dHJ1ZSxIVE1MVGFibGVTZWN0aW9uRWxlbWVudDp0cnVlLEhU
+TUxUZW1wbGF0ZUVsZW1lbnQ6dHJ1ZSxDb21wb3NpdGlvbkV2ZW50OnRydWUsRm9jdXNFdmVudDp0cnVl
+LEtleWJvYXJkRXZlbnQ6dHJ1ZSxUZXh0RXZlbnQ6dHJ1ZSxUb3VjaEV2ZW50OnRydWUsVUlFdmVudDpm
+YWxzZSxXaW5kb3c6dHJ1ZSxET01XaW5kb3c6dHJ1ZSxEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTp0
+cnVlLFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTp0cnVlLFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlOnRy
+dWUsV29ya2VyR2xvYmFsU2NvcGU6dHJ1ZSxBdHRyOnRydWUsQ2xpZW50UmVjdDp0cnVlLERPTVJlY3Q6
+dHJ1ZSxOYW1lZE5vZGVNYXA6dHJ1ZSxNb3pOYW1lZEF0dHJNYXA6dHJ1ZSxJREJLZXlSYW5nZTp0cnVl
+LFNWR1NjcmlwdEVsZW1lbnQ6dHJ1ZSxTVkdBRWxlbWVudDp0cnVlLFNWR0FuaW1hdGVFbGVtZW50OnRy
+dWUsU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6dHJ1ZSxTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDp0
+cnVlLFNWR0FuaW1hdGlvbkVsZW1lbnQ6dHJ1ZSxTVkdDaXJjbGVFbGVtZW50OnRydWUsU1ZHQ2xpcFBh
+dGhFbGVtZW50OnRydWUsU1ZHRGVmc0VsZW1lbnQ6dHJ1ZSxTVkdEZXNjRWxlbWVudDp0cnVlLFNWR0Rp
+c2NhcmRFbGVtZW50OnRydWUsU1ZHRWxsaXBzZUVsZW1lbnQ6dHJ1ZSxTVkdGRUJsZW5kRWxlbWVudDp0
+cnVlLFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OnRydWUsU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1l
+bnQ6dHJ1ZSxTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6dHJ1ZSxTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVu
+dDp0cnVlLFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDp0cnVlLFNWR0ZFRGlzcGxhY2VtZW50TWFw
+RWxlbWVudDp0cnVlLFNWR0ZFRGlzdGFudExpZ2h0RWxlbWVudDp0cnVlLFNWR0ZFRmxvb2RFbGVtZW50
+OnRydWUsU1ZHRkVGdW5jQUVsZW1lbnQ6dHJ1ZSxTVkdGRUZ1bmNCRWxlbWVudDp0cnVlLFNWR0ZFRnVu
+Y0dFbGVtZW50OnRydWUsU1ZHRkVGdW5jUkVsZW1lbnQ6dHJ1ZSxTVkdGRUdhdXNzaWFuQmx1ckVsZW1l
+bnQ6dHJ1ZSxTVkdGRUltYWdlRWxlbWVudDp0cnVlLFNWR0ZFTWVyZ2VFbGVtZW50OnRydWUsU1ZHRkVN
+ZXJnZU5vZGVFbGVtZW50OnRydWUsU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDp0cnVlLFNWR0ZFT2Zmc2V0
+RWxlbWVudDp0cnVlLFNWR0ZFUG9pbnRMaWdodEVsZW1lbnQ6dHJ1ZSxTVkdGRVNwZWN1bGFyTGlnaHRp
+bmdFbGVtZW50OnRydWUsU1ZHRkVTcG90TGlnaHRFbGVtZW50OnRydWUsU1ZHRkVUaWxlRWxlbWVudDp0
+cnVlLFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6dHJ1ZSxTVkdGaWx0ZXJFbGVtZW50OnRydWUsU1ZHRm9y
+ZWlnbk9iamVjdEVsZW1lbnQ6dHJ1ZSxTVkdHRWxlbWVudDp0cnVlLFNWR0dlb21ldHJ5RWxlbWVudDp0
+cnVlLFNWR0dyYXBoaWNzRWxlbWVudDp0cnVlLFNWR0ltYWdlRWxlbWVudDp0cnVlLFNWR0xpbmVFbGVt
+ZW50OnRydWUsU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50OnRydWUsU1ZHTWFya2VyRWxlbWVudDp0cnVl
+LFNWR01hc2tFbGVtZW50OnRydWUsU1ZHTWV0YWRhdGFFbGVtZW50OnRydWUsU1ZHUGF0aEVsZW1lbnQ6
+dHJ1ZSxTVkdQYXR0ZXJuRWxlbWVudDp0cnVlLFNWR1BvbHlnb25FbGVtZW50OnRydWUsU1ZHUG9seWxp
+bmVFbGVtZW50OnRydWUsU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50OnRydWUsU1ZHUmVjdEVsZW1lbnQ6
+dHJ1ZSxTVkdTZXRFbGVtZW50OnRydWUsU1ZHU3RvcEVsZW1lbnQ6dHJ1ZSxTVkdTdHlsZUVsZW1lbnQ6
+dHJ1ZSxTVkdTVkdFbGVtZW50OnRydWUsU1ZHU3dpdGNoRWxlbWVudDp0cnVlLFNWR1N5bWJvbEVsZW1l
+bnQ6dHJ1ZSxTVkdUU3BhbkVsZW1lbnQ6dHJ1ZSxTVkdUZXh0Q29udGVudEVsZW1lbnQ6dHJ1ZSxTVkdU
+ZXh0RWxlbWVudDp0cnVlLFNWR1RleHRQYXRoRWxlbWVudDp0cnVlLFNWR1RleHRQb3NpdGlvbmluZ0Vs
+ZW1lbnQ6dHJ1ZSxTVkdUaXRsZUVsZW1lbnQ6dHJ1ZSxTVkdVc2VFbGVtZW50OnRydWUsU1ZHVmlld0Vs
+ZW1lbnQ6dHJ1ZSxTVkdHcmFkaWVudEVsZW1lbnQ6dHJ1ZSxTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0
+aW9uRWxlbWVudDp0cnVlLFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6dHJ1ZSxTVkdNUGF0aEVsZW1lbnQ6
+dHJ1ZSxTVkdFbGVtZW50OmZhbHNlfSkKSC5MWi4kbmF0aXZlU3VwZXJjbGFzc1RhZz0iQXJyYXlCdWZm
+ZXJWaWV3IgpILlJHLiRuYXRpdmVTdXBlcmNsYXNzVGFnPSJBcnJheUJ1ZmZlclZpZXciCkguVlAuJG5h
+dGl2ZVN1cGVyY2xhc3NUYWc9IkFycmF5QnVmZmVyVmlldyIKSC5EZy4kbmF0aXZlU3VwZXJjbGFzc1Rh
+Zz0iQXJyYXlCdWZmZXJWaWV3IgpILldCLiRuYXRpdmVTdXBlcmNsYXNzVGFnPSJBcnJheUJ1ZmZlclZp
+ZXciCkguWkcuJG5hdGl2ZVN1cGVyY2xhc3NUYWc9IkFycmF5QnVmZmVyVmlldyIKSC5QZy4kbmF0aXZl
+U3VwZXJjbGFzc1RhZz0iQXJyYXlCdWZmZXJWaWV3In0pKCkKY29udmVydEFsbFRvRmFzdE9iamVjdCh3
+KQpjb252ZXJ0VG9GYXN0T2JqZWN0KCQpOyhmdW5jdGlvbihhKXtpZih0eXBlb2YgZG9jdW1lbnQ9PT0i
+dW5kZWZpbmVkIil7YShudWxsKQpyZXR1cm59aWYodHlwZW9mIGRvY3VtZW50LmN1cnJlbnRTY3JpcHQh
+PSd1bmRlZmluZWQnKXthKGRvY3VtZW50LmN1cnJlbnRTY3JpcHQpCnJldHVybn12YXIgdD1kb2N1bWVu
+dC5zY3JpcHRzCmZ1bmN0aW9uIG9uTG9hZChiKXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoOysrcil0W3Jd
+LnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWQiLG9uTG9hZCxmYWxzZSkKYShiLnRhcmdldCl9Zm9yKHZh
+ciBzPTA7czx0Lmxlbmd0aDsrK3MpdFtzXS5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixvbkxvYWQsZmFs
+c2UpfSkoZnVuY3Rpb24oYSl7di5jdXJyZW50U2NyaXB0PWEKaWYodHlwZW9mIGRhcnRNYWluUnVubmVy
+PT09ImZ1bmN0aW9uIilkYXJ0TWFpblJ1bm5lcihMLklxLFtdKQplbHNlIEwuSXEoW10pfSl9KSgpCi8v
+IyBzb3VyY2VNYXBwaW5nVVJMPW1pZ3JhdGlvbi5qcy5tYXAK
''';
diff --git a/pkg/nnbd_migration/lib/src/front_end/web/edit_details.dart b/pkg/nnbd_migration/lib/src/front_end/web/edit_details.dart
index 1bbfecf..7ae0ca8 100644
--- a/pkg/nnbd_migration/lib/src/front_end/web/edit_details.dart
+++ b/pkg/nnbd_migration/lib/src/front_end/web/edit_details.dart
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:meta/meta.dart';
+import 'package:nnbd_migration/src/front_end/migration_info.dart';
/// Information about what should be populated into the "Edit Details" view of
/// the migration preview tool.
@@ -143,17 +144,32 @@
/// code location is known.
final TargetLink link;
- TraceEntry({@required this.description, this.function, this.link});
+ /// The hint actions available to affect this entry of the trace, or `[]` if
+ /// none.
+ final List<HintAction> hintActions;
+
+ TraceEntry(
+ {@required this.description,
+ this.function,
+ this.link,
+ this.hintActions = const []});
TraceEntry.fromJson(dynamic json)
: description = json['description'] as String,
function = json['function'] as String,
- link = _decodeLink(json['link']);
+ link = _decodeLink(json['link']),
+ hintActions = (json['hintActions'] as List)
+ ?.map((value) =>
+ HintAction.fromJson(value as Map<String, Object>))
+ ?.toList() ??
+ const [];
Map<String, Object> toJson() => {
'description': description,
if (function != null) 'function': function,
- if (link != null) 'link': link.toJson()
+ if (link != null) 'link': link.toJson(),
+ if (!hintActions.isEmpty)
+ 'hintActions': hintActions.map((action) => action.toJson()).toList()
};
static TargetLink _decodeLink(dynamic json) =>
diff --git a/pkg/nnbd_migration/lib/src/front_end/web/migration.dart b/pkg/nnbd_migration/lib/src/front_end/web/migration.dart
index 4d26e69..9468ead 100644
--- a/pkg/nnbd_migration/lib/src/front_end/web/migration.dart
+++ b/pkg/nnbd_migration/lib/src/front_end/web/migration.dart
@@ -6,6 +6,7 @@
import 'dart:convert';
import 'dart:html';
+import 'package:nnbd_migration/instrumentation.dart';
import 'package:nnbd_migration/src/front_end/web/edit_details.dart';
import 'package:nnbd_migration/src/front_end/web/file_details.dart';
import 'package:nnbd_migration/src/front_end/web/navigation_tree.dart';
@@ -162,7 +163,7 @@
HttpRequest.request(pathWithQueryParameters(path, queryParameters),
requestHeaders: {'Content-Type': 'application/json; charset=UTF-8'});
-Future<Map<String, Object>> doPost(String path) async {
+Future<Map<String, Object>> doPost(String path, [Object body]) async {
var completer = new Completer<HttpRequest>();
var xhr = HttpRequest()
@@ -175,7 +176,7 @@
xhr.onError.listen(completer.completeError);
- xhr.send();
+ xhr.send(body == null ? null : jsonEncode(body));
await completer.future;
@@ -716,16 +717,24 @@
}
void _populateEditLinks(EditDetails response, Element editPanel) {
- if (response.edits != null) {
- Element editParagraph = document.createElement('p');
- editPanel.append(editParagraph);
- for (var edit in response.edits) {
- Element a = document.createElement('a');
- editParagraph.append(a);
- a.append(Text(edit.description));
- a.setAttribute('href', edit.href);
- a.classes = ['add-hint-link', 'before-apply', 'button'];
- }
+ if (response.edits == null) {
+ return;
+ }
+
+ var subheading = editPanel.append(document.createElement('p'));
+ subheading.append(document.createElement('span')
+ ..classes = ['type-description']
+ ..append(Text('Actions')));
+ subheading.append(Text(':'));
+
+ Element editParagraph = document.createElement('p');
+ editPanel.append(editParagraph);
+ for (var edit in response.edits) {
+ Element a = document.createElement('a');
+ editParagraph.append(a);
+ a.append(Text(edit.description));
+ a.setAttribute('href', edit.href);
+ a.classes = ['add-hint-link', 'before-apply', 'button'];
}
}
@@ -741,7 +750,7 @@
var ul = traceParagraph
.append(document.createElement('ul')..classes = ['trace']);
for (var entry in trace.entries) {
- Element li = document.createElement('li')..innerHtml = '❏ ';
+ Element li = document.createElement('li');
ul.append(li);
li.append(document.createElement('span')
..classes = ['function']
@@ -754,6 +763,25 @@
}
li.append(Text(': '));
li.appendTextWithBreaks(entry.description ?? 'unknown');
+
+ if (entry.hintActions.isNotEmpty) {
+ var drawer = li.append(
+ document.createElement('p')..classes = ['drawer', 'before-apply']);
+ for (final hintAction in entry.hintActions) {
+ drawer.append(ButtonElement()
+ ..onClick.listen((event) async {
+ try {
+ await doPost(pathWithQueryParameters('/apply-hint', {}),
+ hintAction.toJson());
+ loadFile(link.path, null, link.line, false);
+ document.body.classes.add('needs-rerun');
+ } catch (e, st) {
+ handleError("Could not apply hint", e, st);
+ }
+ })
+ ..appendText(hintAction.kind.description));
+ }
+ }
}
}
}
diff --git a/pkg/nnbd_migration/lib/src/node_builder.dart b/pkg/nnbd_migration/lib/src/node_builder.dart
index c0fb6da..a153713 100644
--- a/pkg/nnbd_migration/lib/src/node_builder.dart
+++ b/pkg/nnbd_migration/lib/src/node_builder.dart
@@ -14,6 +14,7 @@
import 'package:nnbd_migration/instrumentation.dart';
import 'package:nnbd_migration/nnbd_migration.dart';
import 'package:nnbd_migration/src/decorated_type.dart';
+import 'package:nnbd_migration/src/edit_plan.dart';
import 'package:nnbd_migration/src/nullability_node.dart';
import 'package:nnbd_migration/src/nullability_node_target.dart';
import 'package:nnbd_migration/src/utilities/completeness_tracker.dart';
@@ -557,6 +558,13 @@
nullabilityNode = _graph.never;
} else {
nullabilityNode = NullabilityNode.forTypeAnnotation(target);
+ nullabilityNode.hintActions
+ ..[HintActionKind.addNullableHint] = {
+ node.end: [AtomicEdit.insert('/*?*/')]
+ }
+ ..[HintActionKind.addNonNullableHint] = {
+ node.end: [AtomicEdit.insert('/*!*/')]
+ };
}
DecoratedType decoratedType;
if (type is FunctionType && node is! GenericFunctionType) {
@@ -743,8 +751,8 @@
_positionalParameters = previousPositionalParameters;
_namedParameters = previousNamedParameters;
}
- decoratedType = DecoratedType(
- declaredElement.type, NullabilityNode.forTypeAnnotation(target),
+ final nullabilityNode = NullabilityNode.forTypeAnnotation(target);
+ decoratedType = DecoratedType(declaredElement.type, nullabilityNode,
returnType: decoratedReturnType,
positionalParameters: positionalParameters,
namedParameters: namedParameters);
@@ -782,6 +790,10 @@
default:
break;
}
+
+ decoratedType.node.hintActions
+ ..remove(HintActionKind.addNonNullableHint)
+ ..remove(HintActionKind.addNullableHint);
}
}
diff --git a/pkg/nnbd_migration/lib/src/nullability_node.dart b/pkg/nnbd_migration/lib/src/nullability_node.dart
index 8d803b5..114b78f 100644
--- a/pkg/nnbd_migration/lib/src/nullability_node.dart
+++ b/pkg/nnbd_migration/lib/src/nullability_node.dart
@@ -9,6 +9,7 @@
import 'package:meta/meta.dart';
import 'package:nnbd_migration/instrumentation.dart';
import 'package:nnbd_migration/nullability_state.dart';
+import 'package:nnbd_migration/src/edit_plan.dart';
import 'package:nnbd_migration/src/expression_checks.dart';
import 'package:nnbd_migration/src/nullability_node_target.dart';
import 'package:nnbd_migration/src/postmortem_file.dart';
@@ -80,13 +81,6 @@
possiblyLateDueToTestSetup,
}
-/// Abstract interface for assigning ids numbers to nodes. This allows us to
-/// annotate nodes with their ids when analyzing postmortem output.
-abstract class NodeToIdMapper {
- /// Gets the id corresponding to the given [node].
- int idForNode(NullabilityNode node);
-}
-
/// Data structure to keep track of the relationship from one [NullabilityNode]
/// object to another [NullabilityNode] that is "downstream" from it (meaning
/// that if the former node is nullable, then the latter node will either have
@@ -549,7 +543,7 @@
}
@override
- int idForNode(NullabilityNode node) => _nodeToIdMap[node];
+ int idForNode(NullabilityNodeInfo node) => _nodeToIdMap[node];
/// Gets the node having the given [id], deserializing it if it hasn't been
/// deserialized already.
@@ -705,6 +699,9 @@
abstract class NullabilityNode implements NullabilityNodeInfo {
LateCondition _lateCondition = LateCondition.notLate;
+ @override
+ final hintActions = <HintActionKind, Map<int, List<AtomicEdit>>>{};
+
bool _isPossiblyOptional = false;
/// List of [NullabilityEdge] objects describing this node's relationship to
@@ -1245,8 +1242,12 @@
/// any.
final NullabilityEdge edge;
+ @override
+ final bool isStartingPoint;
+
UpstreamPropagationStep(
- this.principalCause, this.node, this.newNonNullIntent, this.edge);
+ this.principalCause, this.node, this.newNonNullIntent, this.edge,
+ {this.isStartingPoint = false});
UpstreamPropagationStep.fromJson(
dynamic json, NullabilityGraphDeserializer deserializer)
@@ -1254,7 +1255,8 @@
as UpstreamPropagationStep,
node = deserializer.nodeForId(json['node'] as int),
newNonNullIntent = NonNullIntent.fromJson(json['newState']),
- edge = deserializer.edgeForId(json['edge'] as int);
+ edge = deserializer.edgeForId(json['edge'] as int),
+ isStartingPoint = json['isStartingPoint'] as bool ?? false;
@override
CodeReference get codeReference => edge?.codeReference;
@@ -1266,7 +1268,8 @@
'cause': serializer.idForStep(principalCause),
'node': serializer.idForNode(node),
'newState': newNonNullIntent.toJson(),
- 'edge': serializer.idForEdge(edge)
+ 'edge': serializer.idForEdge(edge),
+ if (isStartingPoint) 'isStartingPoint': true
};
}
@@ -1317,6 +1320,9 @@
String get debugSuffix => isNullable ? '?' : '';
@override
+ Map<HintActionKind, Map<int, List<AtomicEdit>>> get hintActions => const {};
+
+ @override
// Note: the node "always" is not exact nullable, because exact nullability is
// a concept for contravariant generics which propagates upstream instead of
// downstream. "always" is not a contravariant generic, and does not have any
@@ -1488,8 +1494,9 @@
/// lines.
void _propagateUpstream() {
Queue<UpstreamPropagationStep> pendingSteps = Queue();
- pendingSteps
- .add(UpstreamPropagationStep(null, _never, NonNullIntent.direct, null));
+ pendingSteps.add(UpstreamPropagationStep(
+ null, _never, NonNullIntent.direct, null,
+ isStartingPoint: true));
while (pendingSteps.isNotEmpty) {
var cause = pendingSteps.removeFirst();
var pendingNode = cause.node;
diff --git a/pkg/nnbd_migration/lib/src/postmortem_file.dart b/pkg/nnbd_migration/lib/src/postmortem_file.dart
index d5cc6df..ae696fe 100644
--- a/pkg/nnbd_migration/lib/src/postmortem_file.dart
+++ b/pkg/nnbd_migration/lib/src/postmortem_file.dart
@@ -5,6 +5,7 @@
import 'dart:convert' as convert;
import 'package:analyzer/file_system/file_system.dart';
+import 'package:nnbd_migration/instrumentation.dart';
import 'package:nnbd_migration/src/decorated_type.dart';
import 'package:nnbd_migration/src/nullability_node.dart';
import 'package:nnbd_migration/src/variables.dart';
diff --git a/pkg/nnbd_migration/lib/src/preview/http_preview_server.dart b/pkg/nnbd_migration/lib/src/preview/http_preview_server.dart
index 5c95f02..2f90a02 100644
--- a/pkg/nnbd_migration/lib/src/preview/http_preview_server.dart
+++ b/pkg/nnbd_migration/lib/src/preview/http_preview_server.dart
@@ -33,7 +33,7 @@
Future<HttpServer> _serverFuture;
// A function which allows the migration to be rerun, taking changed paths.
- final Future<MigrationState> Function([List<String>]) rerunFunction;
+ final Future<MigrationState> Function() rerunFunction;
/// Integer for a port to run the preview server on. If null or zero, allow
/// [HttpServer.bind] to pick one.
diff --git a/pkg/nnbd_migration/lib/src/preview/preview_site.dart b/pkg/nnbd_migration/lib/src/preview/preview_site.dart
index 42f8e79..639fa63 100644
--- a/pkg/nnbd_migration/lib/src/preview/preview_site.dart
+++ b/pkg/nnbd_migration/lib/src/preview/preview_site.dart
@@ -10,6 +10,7 @@
import 'package:analysis_server/src/status/pages.dart';
import 'package:analyzer_plugin/protocol/protocol_common.dart';
+import 'package:nnbd_migration/src/edit_plan.dart';
import 'package:nnbd_migration/src/front_end/migration_info.dart';
import 'package:nnbd_migration/src/front_end/migration_state.dart';
import 'package:nnbd_migration/src/front_end/path_mapper.dart';
@@ -48,6 +49,8 @@
static const navigationTreePath = '/_preview/navigationTree.json';
+ static const applyHintPath = '/apply-hint';
+
static const applyMigrationPath = '/apply-migration';
static const rerunMigrationPath = '/rerun-migration';
@@ -60,7 +63,7 @@
final Map<String, UnitInfo> unitInfoMap = {};
// A function provided by DartFix to rerun the migration.
- final Future<MigrationState> Function([List<String>]) rerunFunction;
+ final Future<MigrationState> Function() rerunFunction;
final String serviceAuthToken = _makeAuthToken();
@@ -142,16 +145,10 @@
var unitInfo = unitInfoMap[decodedPath];
if (unitInfo != null) {
if (uri.queryParameters.containsKey('inline')) {
- // TODO(devoncarew): Ensure that we don't serve content outside of our
- // project.
-
// Note: `return await` needed due to
// https://github.com/dart-lang/sdk/issues/39204
return await respond(request, DartFilePage(this, unitInfo));
} else if (uri.queryParameters.containsKey('region')) {
- // TODO(devoncarew): Ensure that we don't serve content outside of our
- // project.
-
// Note: `return await` needed due to
// https://github.com/dart-lang/sdk/issues/39204
return await respond(request, RegionPage(this, unitInfo));
@@ -189,6 +186,11 @@
respondOk(request);
return;
+ } else if (path == applyHintPath) {
+ final hintAction = HintAction.fromJson(await requestBodyJson(request));
+ await performHintAction(hintAction);
+ respondOk(request);
+ return;
} else if (uri.queryParameters.containsKey('replacement')) {
await performEdit(uri);
@@ -263,12 +265,53 @@
file.writeAsStringSync(newContent);
unitInfo.diskContent = newContent;
if (!insertionOnly) {
- await rerunMigration([path]);
+ await rerunMigration();
}
}
- Future<void> rerunMigration([List<String> changedPaths]) async {
- migrationState = await rerunFunction(changedPaths);
+ /// Perform the edit indicated by the [uri].
+ Future<void> performHintAction(HintAction hintAction) async {
+ final node = migrationState.nodeMapper.nodeForId(hintAction.nodeId);
+ final edits = node.hintActions[hintAction.kind];
+ if (edits == null) {
+ throw StateError('This edit was not available to perform.');
+ }
+ //
+ // Update the code on disk.
+ //
+ var path = node.codeReference.path;
+ var file = pathMapper.provider.getFile(path);
+ var diskContent = file.readAsStringSync();
+ if (!unitInfoMap[path].hadDiskContent(diskContent)) {
+ throw StateError('Cannot perform edit. This file has been changed since'
+ ' last migration run. Press the "rerun from sources" button and then'
+ ' try again. (Changed file path is ${file.path})');
+ }
+ final unitInfo = unitInfoMap[path];
+ final diskMapper = unitInfo.diskChangesOffsetMapper;
+ var newContent = diskContent;
+ migrationState.needsRerun = true;
+ for (final entry in edits.entries) {
+ final offset = entry.key;
+ final edits = entry.value;
+ final sourceEdit = edits.toSourceEdit(diskMapper.map(offset));
+ // TODO(mfairhurst): handle deletions
+ unitInfo.handleInsertion(sourceEdit.offset, sourceEdit.replacement);
+ newContent = sourceEdit.apply(newContent);
+ }
+ file.writeAsStringSync(newContent);
+ unitInfo.diskContent = newContent;
+ }
+
+ Future<Map<String, Object>> requestBodyJson(HttpRequest request) async =>
+ (await request
+ .map((entry) => entry.map((i) => i.toInt()).toList())
+ .transform<String>(Utf8Decoder())
+ .transform(JsonDecoder())
+ .single) as Map<String, Object>;
+
+ Future<void> rerunMigration() async {
+ migrationState = await rerunFunction();
reset();
}
diff --git a/pkg/nnbd_migration/test/fix_aggregator_test.dart b/pkg/nnbd_migration/test/fix_aggregator_test.dart
index ae81449..b5927a7 100644
--- a/pkg/nnbd_migration/test/fix_aggregator_test.dart
+++ b/pkg/nnbd_migration/test/fix_aggregator_test.dart
@@ -866,6 +866,96 @@
expect(previewInfo.applyTo(code), 'f(a) => a..b!.c;');
}
+ Future<void> test_parameter_addExplicitType_annotated() async {
+ await analyze('f({@deprecated x = 0}) {}');
+ var previewInfo = run({
+ findNode.simpleParameter('x'): NodeChangeForSimpleFormalParameter()
+ ..addExplicitType = nnbdTypeProvider.intType
+ });
+ expect(previewInfo.applyTo(code), 'f({@deprecated int x = 0}) {}');
+ }
+
+ Future<void> test_parameter_addExplicitType_declared_with_covariant() async {
+ await analyze('''
+class C {
+ m({num x}) {}
+}
+class D extends C {
+ m({covariant x = 3}) {}
+}
+''');
+ var previewInfo = run({
+ findNode.simpleParameter('x = 3'): NodeChangeForSimpleFormalParameter()
+ ..addExplicitType = nnbdTypeProvider.intType
+ });
+ expect(previewInfo.applyTo(code), '''
+class C {
+ m({num x}) {}
+}
+class D extends C {
+ m({covariant int x = 3}) {}
+}
+''');
+ }
+
+ Future<void> test_parameter_addExplicitType_declared_with_final() async {
+ await analyze('f({final x = 0}) {}');
+ var previewInfo = run({
+ findNode.simpleParameter('x'): NodeChangeForSimpleFormalParameter()
+ ..addExplicitType = nnbdTypeProvider.intType
+ });
+ expect(previewInfo.applyTo(code), 'f({final int x = 0}) {}');
+ }
+
+ Future<void> test_parameter_addExplicitType_declared_with_var() async {
+ await analyze('f({var x = 0}) {}');
+ var previewInfo = run({
+ findNode.simpleParameter('x'): NodeChangeForSimpleFormalParameter()
+ ..addExplicitType = nnbdTypeProvider.intType
+ });
+ expect(previewInfo.applyTo(code), 'f({int x = 0}) {}');
+ }
+
+ Future<void> test_parameter_addExplicitType_named() async {
+ await analyze('f({x = 0}) {}');
+ var previewInfo = run({
+ findNode.simpleParameter('x'): NodeChangeForSimpleFormalParameter()
+ ..addExplicitType = nnbdTypeProvider.intType
+ });
+ expect(previewInfo.applyTo(code), 'f({int x = 0}) {}');
+ }
+
+ Future<void> test_parameter_addExplicitType_no() async {
+ await analyze('f([x = 0]) {}');
+ var previewInfo = run(
+ {findNode.simpleParameter('x'): NodeChangeForSimpleFormalParameter()});
+ expect(previewInfo, isNull);
+ }
+
+ Future<void> test_parameter_addExplicitType_optional_insert() async {
+ await analyze('f([x = 0]) {}');
+ var previewInfo = run({
+ findNode.simpleParameter('x'): NodeChangeForSimpleFormalParameter()
+ ..addExplicitType = nnbdTypeProvider.intType
+ });
+ expect(previewInfo.applyTo(code), 'f([int x = 0]) {}');
+ }
+
+ Future<void> test_parameter_addExplicitType_prefixed_type() async {
+ await analyze('''
+import 'dart:core' as core;
+f({x = 0}) {}
+''');
+ var previewInfo = run({
+ findNode.simpleParameter('x'): NodeChangeForSimpleFormalParameter()
+ ..addExplicitType = nnbdTypeProvider.intType
+ });
+ expect(previewInfo.applyTo(code), '''
+import 'dart:core' as core;
+f({core.int x = 0}) {}
+''');
+ }
+
Future<void> test_post_increment_add_null_check() async {
var content = 'f(int x) => x++;';
await analyze(content);
@@ -1319,12 +1409,21 @@
var previewInfo = run({
findNode.variableDeclarationList('final'):
NodeChangeForVariableDeclarationList()
- ..addExplicitType =
- MockDartType(toStringValueWithNullability: 'int')
+ ..addExplicitType = nnbdTypeProvider.intType
});
expect(previewInfo.applyTo(code), 'final int x = 0;');
}
+ Future<void> test_variableDeclarationList_addExplicitType_metadata() async {
+ await analyze('@deprecated var x = 0;');
+ var previewInfo = run({
+ findNode.variableDeclarationList('var'):
+ NodeChangeForVariableDeclarationList()
+ ..addExplicitType = nnbdTypeProvider.intType
+ });
+ expect(previewInfo.applyTo(code), '@deprecated int x = 0;');
+ }
+
Future<void> test_variableDeclarationList_addExplicitType_no() async {
await analyze('var x = 0;');
var previewInfo = run({
@@ -1339,21 +1438,35 @@
var previewInfo = run({
findNode.variableDeclarationList('var'):
NodeChangeForVariableDeclarationList()
- ..addExplicitType =
- MockDartType(toStringValueWithNullability: 'int'),
+ ..addExplicitType = nnbdTypeProvider.intType,
findNode.integerLiteral('0'): NodeChangeForExpression()
..addNullCheck(_MockInfo())
});
expect(previewInfo.applyTo(code), 'int x = 0!;');
}
+ Future<void> test_variableDeclarationList_addExplicitType_prefixed() async {
+ await analyze('''
+import 'dart:core' as core;
+final x = 0;
+''');
+ var previewInfo = run({
+ findNode.variableDeclarationList('final'):
+ NodeChangeForVariableDeclarationList()
+ ..addExplicitType = nnbdTypeProvider.intType
+ });
+ expect(previewInfo.applyTo(code), '''
+import 'dart:core' as core;
+final core.int x = 0;
+''');
+ }
+
Future<void> test_variableDeclarationList_addExplicitType_replaceVar() async {
await analyze('var x = 0;');
var previewInfo = run({
findNode.variableDeclarationList('var'):
NodeChangeForVariableDeclarationList()
- ..addExplicitType =
- MockDartType(toStringValueWithNullability: 'int')
+ ..addExplicitType = nnbdTypeProvider.intType
});
expect(previewInfo.applyTo(code), 'int x = 0;');
}
diff --git a/pkg/nnbd_migration/test/front_end/info_builder_test.dart b/pkg/nnbd_migration/test/front_end/info_builder_test.dart
index 07259a4..1e1e15a 100644
--- a/pkg/nnbd_migration/test/front_end/info_builder_test.dart
+++ b/pkg/nnbd_migration/test/front_end/info_builder_test.dart
@@ -5,6 +5,7 @@
import 'package:analyzer/dart/analysis/results.dart';
import 'package:analyzer/dart/ast/ast.dart';
import 'package:meta/meta.dart';
+import 'package:nnbd_migration/instrumentation.dart';
import 'package:nnbd_migration/nnbd_migration.dart';
import 'package:nnbd_migration/src/front_end/info_builder.dart';
import 'package:nnbd_migration/src/front_end/migration_info.dart';
@@ -1016,9 +1017,7 @@
expect(trace.description, 'Nullability reason');
var entries = trace.entries;
expect(entries, hasLength(2));
- // Entry 0 is the nullability of the type of A.m.
- // TODO(srawlins): "A" is probably incorrect here. Should be "A.m".
- assertTraceEntry(unit, entries[0], 'A', unit.content.indexOf('int?'),
+ assertTraceEntry(unit, entries[0], 'A.m', unit.content.indexOf('int?'),
contains('A.m (test.dart:2:3)'));
}
@@ -1104,6 +1103,64 @@
edits: isEmpty);
}
+ Future<void> test_trace_constructor_named() async {
+ var unit = await buildInfoForSingleTestFile('''
+class C {
+ C.named(int i) {}
+}
+void f() {
+ C.named(null);
+}
+''', migratedContent: '''
+class C {
+ C.named(int? i) {}
+}
+void f() {
+ C.named(null);
+}
+''');
+ var region = unit.regions
+ .where((info) => info.offset == unit.content.indexOf('? i) {}'))
+ .single;
+ expect(region.traces, hasLength(1));
+ var trace = region.traces.single;
+ expect(trace.description, 'Nullability reason');
+ var entries = trace.entries;
+ assertTraceEntry(unit, entries[0], 'C.named',
+ unit.content.indexOf('int? i) {}'), contains('parameter 0 of C.named'));
+ }
+
+ Future<void> test_trace_constructor_unnamed() async {
+ var unit = await buildInfoForSingleTestFile('''
+class C {
+ C(int i) {}
+}
+void f() {
+ C(null);
+}
+''', migratedContent: '''
+class C {
+ C(int? i) {}
+}
+void f() {
+ C(null);
+}
+''');
+ var region = unit.regions
+ .where((info) => info.offset == unit.content.indexOf('? i) {}'))
+ .single;
+ expect(region.traces, hasLength(1));
+ var trace = region.traces.single;
+ expect(trace.description, 'Nullability reason');
+ var entries = trace.entries;
+ assertTraceEntry(
+ unit,
+ entries[0],
+ 'C.<unnamed>',
+ unit.content.indexOf('int? i) {}'),
+ contains('parameter 0 of C.<unnamed>'));
+ }
+
Future<void> test_trace_deadCode() async {
var unit = await buildInfoForSingleTestFile('''
void f(int/*!*/ i) {
@@ -1122,19 +1179,44 @@
var trace = region.traces.single;
expect(trace.description, 'Non-nullability reason');
var entries = trace.entries;
- expect(entries, hasLength(3));
+ expect(entries, hasLength(2));
// Entry 0 is the nullability of f's argument
assertTraceEntry(unit, entries[0], 'f', unit.content.indexOf('int'),
contains('parameter 0 of f'));
// Entry 1 is the edge from f's argument to never, due to the `/*!*/` hint.
assertTraceEntry(unit, entries[1], 'f', unit.content.indexOf('int'),
'explicitly hinted to be non-nullable');
- // Entry 2 is the "never" node.
- // TODO(paulberry): this node provides no additional useful information and
- // shouldn't be included in the trace.
- expect(entries[2].description, 'never');
- expect(entries[2].function, null);
- expect(entries[2].target, null);
+ }
+
+ Future<void> test_trace_extension_unnamed() async {
+ var unit = await buildInfoForSingleTestFile('''
+extension on String {
+ m(int i) {}
+}
+void f() {
+ "".m(null);
+}
+''', migratedContent: '''
+extension on String {
+ m(int? i) {}
+}
+void f() {
+ "".m(null);
+}
+''');
+ var region = unit.regions
+ .where((info) => info.offset == unit.content.indexOf('? i) {}'))
+ .single;
+ expect(region.traces, hasLength(1));
+ var trace = region.traces.single;
+ expect(trace.description, 'Nullability reason');
+ var entries = trace.entries;
+ assertTraceEntry(
+ unit,
+ entries[0],
+ '<unnamed extension>.m',
+ unit.content.indexOf('int? i) {}'),
+ contains('parameter 0 of <unnamed>.m'));
}
Future<void> test_trace_nullableType() async {
@@ -1166,14 +1248,23 @@
expect(entries, hasLength(6));
// Entry 0 is the nullability of f's argument
assertTraceEntry(unit, entries[0], 'f',
- unit.content.indexOf('int? i) {} // f'), contains('parameter 0 of f'));
+ unit.content.indexOf('int? i) {} // f'), contains('parameter 0 of f'),
+ hintActions: {
+ HintActionKind.addNullableHint,
+ HintActionKind.addNonNullableHint
+ });
+
// Entry 1 is the edge from g's argument to f's argument, due to g's call to
// f.
assertTraceEntry(
unit, entries[1], 'g', unit.content.indexOf('i);'), 'data flow');
// Entry 2 is the nullability of g's argument
assertTraceEntry(unit, entries[2], 'g',
- unit.content.indexOf('int? i) { // g'), contains('parameter 0 of g'));
+ unit.content.indexOf('int? i) { // g'), contains('parameter 0 of g'),
+ hintActions: {
+ HintActionKind.addNullableHint,
+ HintActionKind.addNonNullableHint
+ });
// Entry 3 is the edge from null to g's argument, due to h's call to g.
assertTraceEntry(
unit, entries[3], 'h', unit.content.indexOf('null'), 'data flow');
@@ -1239,7 +1330,7 @@
var trace = region.traces[1];
expect(trace.description, 'Non-nullability reason');
var entries = trace.entries;
- expect(entries, hasLength(5));
+ expect(entries, hasLength(4));
// Entry 0 is the nullability of g's argument
assertTraceEntry(unit, entries[0], 'g',
unit.content.indexOf('int i) { // g'), contains('parameter 0 of g'));
@@ -1253,12 +1344,6 @@
// Entry 3 is the edge f's argument to never, due to the assert.
assertTraceEntry(unit, entries[3], 'f', unit.content.indexOf('assert'),
'value asserted to be non-null');
- // Entry 4 is the "never" node.
- // TODO(paulberry): this node provides no additional useful information and
- // shouldn't be included in the trace.
- expect(entries[4].description, 'never');
- expect(entries[4].function, null);
- expect(entries[4].target, null);
}
Future<void> test_trace_nullCheckHint() async {
diff --git a/pkg/nnbd_migration/test/front_end/migration_info_test.dart b/pkg/nnbd_migration/test/front_end/migration_info_test.dart
index dcc1abb..850ba40 100644
--- a/pkg/nnbd_migration/test/front_end/migration_info_test.dart
+++ b/pkg/nnbd_migration/test/front_end/migration_info_test.dart
@@ -2,7 +2,9 @@
// 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 'package:analyzer_plugin/protocol/protocol_common.dart';
import 'package:nnbd_migration/src/front_end/migration_info.dart';
+import 'package:nnbd_migration/src/front_end/offset_mapper.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -62,4 +64,81 @@
final unitInfo = UnitInfo('/foo.dart');
expect(() => unitInfo.hadDiskContent(''), throwsA(isA<AssertionError>()));
}
+
+ void test_handleInsertion() {
+ final unitInfo = UnitInfo('/foo.dart');
+ unitInfo.content = 'int x;';
+ unitInfo.migrationOffsetMapper =
+ OffsetMapper.forEdits([SourceEdit('int'.length, 0, ' ')]);
+ unitInfo.handleInsertion('int'.length, '/*?*/');
+ expect(unitInfo.content, 'int/*?*/ x;');
+ expect(unitInfo.offsetMapper.map('in'.length), 'in'.length);
+ expect(unitInfo.offsetMapper.map('int'.length), 'int/*?*/'.length);
+ expect(unitInfo.offsetMapper.map('int x'.length), 'int/*?*/ x'.length);
+ expect(unitInfo.diskChangesOffsetMapper.map('in'.length), 'in'.length);
+ expect(
+ unitInfo.diskChangesOffsetMapper.map('int'.length), 'int/*?*/'.length);
+ expect(unitInfo.diskChangesOffsetMapper.map('int x'.length),
+ 'int/*?*/ x'.length);
+ }
+
+ void test_handleInsertion_regression_41894() {
+ final unitInfo = UnitInfo('/foo.dart');
+ unitInfo.content = 'C<C<C<T > > > x;';
+ unitInfo.migrationOffsetMapper = OffsetMapper.forEdits([
+ SourceEdit('C<C<C<T'.length, 0, ' '),
+ SourceEdit('C<C<C<T>'.length, 0, ' '),
+ SourceEdit('C<C<C<T>>'.length, 0, ' '),
+ SourceEdit('C<C<C<T>>>'.length, 0, ' ')
+ ]);
+ unitInfo.handleInsertion('C<C<C<T'.length, '/*?*/');
+ unitInfo.handleInsertion('C<C<C<T>'.length, '/*?*/');
+ unitInfo.handleInsertion('C<C<C<T>>'.length, '/*?*/');
+ unitInfo.handleInsertion('C<C<C<T>>>'.length, '/*?*/');
+
+ // Before 41894 was fixed, this would produce:
+ //
+ // `C<C<C<T/*?*/ >/*?*/ >/*/*?*/?*/ > x;`
+ //
+ // because the diskChangesOffsetMapper contained an insertion that was
+ // mapped on the post-migrated content mapper instead of the disk changes
+ // content mapper.
+ //
+ // This essentially meant that migrationInfo thought that the second to last
+ // /*?*/ hint was added 3 characters too late in the file, (that's the
+ // *migrated* offset of the third insertion), and so making an edit within
+ // those three characters was mapped five characters too early. In this
+ // example the fourth edit was presumed, from the offset mapper logic, to
+ // be an insertion before the second-to-last insertion when it is in fact
+ // insert after it.
+ expect(unitInfo.content, 'C<C<C<T/*?*/ >/*?*/ >/*?*/ >/*?*/ x;');
+
+ // Rigorous offset mapper testing.
+ expect(unitInfo.offsetMapper.map('C<C<C<'.length), 'C<C<C<'.length);
+ expect(unitInfo.offsetMapper.map('C<C<C<T'.length), 'C<C<C<T/*?*/'.length);
+ expect(unitInfo.offsetMapper.map('C<C<C<T>'.length),
+ 'C<C<C<T/*?*/ >/*?*/'.length);
+ expect(unitInfo.offsetMapper.map('C<C<C<T>>'.length),
+ 'C<C<C<T/*?*/ >/*?*/ >/*?*/'.length);
+ expect(unitInfo.offsetMapper.map('C<C<C<T>>>'.length),
+ 'C<C<C<T/*?*/ >/*?*/ >/*?*/ /*?*/>'.length);
+ expect(unitInfo.offsetMapper.map('C<C<C<T>>> '.length),
+ 'C<C<C<T/*?*/ >/*?*/ >/*?*/ /*?*/> '.length);
+ expect(unitInfo.offsetMapper.map('C<C<C<T>>> x'.length),
+ 'C<C<C<T/*?*/ >/*?*/ >/*?*/ /*?*/> x'.length);
+ expect(
+ unitInfo.diskChangesOffsetMapper.map('C<C<C<'.length), 'C<C<C<'.length);
+ expect(unitInfo.diskChangesOffsetMapper.map('C<C<C<T'.length),
+ 'C<C<C<T/*?*/'.length);
+ expect(unitInfo.diskChangesOffsetMapper.map('C<C<C<T>'.length),
+ 'C<C<C<T/*?*/>/*?*/'.length);
+ expect(unitInfo.diskChangesOffsetMapper.map('C<C<C<T>>'.length),
+ 'C<C<C<T/*?*/>/*?*/>/*?*/'.length);
+ expect(unitInfo.diskChangesOffsetMapper.map('C<C<C<T>>>'.length),
+ 'C<C<C<T/*?*/>/*?*/>/*?*//*?*/>'.length);
+ expect(unitInfo.diskChangesOffsetMapper.map('C<C<C<T>>> '.length),
+ 'C<C<C<T/*?*/>/*?*/>/*?*//*?*/> '.length);
+ expect(unitInfo.diskChangesOffsetMapper.map('C<C<C<T>>> x'.length),
+ 'C<C<C<T/*?*/>/*?*/>/*?*//*?*/> x'.length);
+ }
}
diff --git a/pkg/nnbd_migration/test/front_end/navigation_tree_renderer_test.dart b/pkg/nnbd_migration/test/front_end/navigation_tree_renderer_test.dart
index b8b6231..264f3f9 100644
--- a/pkg/nnbd_migration/test/front_end/navigation_tree_renderer_test.dart
+++ b/pkg/nnbd_migration/test/front_end/navigation_tree_renderer_test.dart
@@ -199,14 +199,3 @@
TypeMatcher<NavigationTreeNode> havingPath(dynamic matcher) =>
having((node) => node.path, 'path', matcher);
}
-
-extension _E<T, U> on TypeMatcher<Map<T, U>> {
- TypeMatcher<Map<T, U>> containing(Map<T, dynamic> matchers) {
- var result = this;
- for (var entry in matchers.entries) {
- result = result.having(
- (map) => map[entry.key], entry.key.toString(), entry.value);
- }
- return result;
- }
-}
diff --git a/pkg/nnbd_migration/test/front_end/nnbd_migration_test_base.dart b/pkg/nnbd_migration/test/front_end/nnbd_migration_test_base.dart
index 559cf15..0fae1f0 100644
--- a/pkg/nnbd_migration/test/front_end/nnbd_migration_test_base.dart
+++ b/pkg/nnbd_migration/test/front_end/nnbd_migration_test_base.dart
@@ -3,14 +3,15 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analysis_server/src/edit/fix/dartfix_listener.dart';
-import 'package:analysis_server/src/edit/fix/non_nullable_fix.dart';
import 'package:analyzer/dart/analysis/results.dart';
import 'package:analyzer/source/line_info.dart';
import 'package:meta/meta.dart';
import 'package:nnbd_migration/nnbd_migration.dart';
+import 'package:nnbd_migration/instrumentation.dart';
import 'package:nnbd_migration/src/front_end/info_builder.dart';
import 'package:nnbd_migration/src/front_end/instrumentation_listener.dart';
import 'package:nnbd_migration/src/front_end/migration_info.dart';
+import 'package:nnbd_migration/src/front_end/non_nullable_fix.dart';
import 'package:nnbd_migration/src/front_end/offset_mapper.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -22,6 +23,12 @@
/// The information produced by the InfoBuilder, or `null` if [buildInfo] has
/// not yet completed.
Set<UnitInfo> infos;
+ NodeMapper nodeMapper;
+
+ void setUp() {
+ super.setUp();
+ nodeMapper = SimpleNodeMapper();
+ }
/// Assert that some target in [targets] has various properties.
void assertInTargets(
@@ -95,7 +102,8 @@
}
void assertTraceEntry(UnitInfo unit, TraceEntryInfo entryInfo,
- String function, int offset, Object descriptionMatcher) {
+ String function, int offset, Object descriptionMatcher,
+ {Set<HintActionKind> hintActions}) {
assert(offset >= 0);
var lineInfo = LineInfo.fromContent(unit.content);
var expectedLocation = lineInfo.getLocation(offset);
@@ -104,6 +112,24 @@
expect(unit.offsetMapper.map(entryInfo.target.offset), offset);
expect(entryInfo.function, function);
expect(entryInfo.description, descriptionMatcher);
+ if (hintActions != null) {
+ assertTraceHintActions(unit, entryInfo, hintActions, offset);
+ }
+ }
+
+ void assertTraceHintActions(UnitInfo unit, TraceEntryInfo traceEntry,
+ Set<HintActionKind> expectedHints, int nodeOffset) {
+ final actionsByKind = Map<HintActionKind, HintAction>.fromIterables(
+ traceEntry.hintActions.map((action) => action.kind),
+ traceEntry.hintActions);
+ expect(actionsByKind, hasLength(expectedHints.length));
+ for (final expectedHint in expectedHints) {
+ final action = actionsByKind[expectedHint];
+ expect(action, isNotNull);
+ final node = nodeMapper.nodeForId(action.nodeId);
+ expect(node, isNotNull);
+ expect(unit.offsetMapper.map(node.codeReference.offset), nodeOffset);
+ }
}
/// Uses the InfoBuilder to build information for [testFile].
@@ -131,7 +157,8 @@
removeViaComments: removeViaComments, warnOnWeakCode: warnOnWeakCode);
// Ignore info for dart:core.
var filteredInfos = [
- for (var info in infos) if (!info.path.contains('core.dart')) info
+ for (var info in infos)
+ if (!info.path.contains('core.dart')) info
];
expect(filteredInfos, hasLength(1));
var unit = filteredInfos[0];
@@ -154,7 +181,8 @@
await _buildMigrationInfo(testPaths, includedRoot: includedRoot);
// Ignore info for dart:core.
var filteredInfos = [
- for (var info in infos) if (!info.path.contains('core.dart')) info
+ for (var info in infos)
+ if (!info.path.contains('core.dart')) info
];
return filteredInfos;
}
@@ -193,8 +221,8 @@
migration.finish();
// Build the migration info.
var info = instrumentationListener.data;
- var builder =
- InfoBuilder(resourceProvider, includedRoot, info, listener, migration);
+ var builder = InfoBuilder(
+ resourceProvider, includedRoot, info, listener, migration, nodeMapper);
infos = await builder.explainMigration();
}
}
diff --git a/pkg/nnbd_migration/test/migration_cli_test.dart b/pkg/nnbd_migration/test/migration_cli_test.dart
index 2df7447..1fad3f8 100644
--- a/pkg/nnbd_migration/test/migration_cli_test.dart
+++ b/pkg/nnbd_migration/test/migration_cli_test.dart
@@ -6,14 +6,15 @@
import 'dart:convert';
import 'dart:io';
-import 'package:analysis_server/src/edit/fix/non_nullable_fix.dart';
import 'package:analyzer/file_system/memory_file_system.dart';
import 'package:analyzer/file_system/physical_file_system.dart';
import 'package:analyzer/src/test_utilities/mock_sdk.dart' as mock_sdk;
+import 'package:args/args.dart';
import 'package:cli_util/cli_logging.dart';
import 'package:http/http.dart' as http;
import 'package:meta/meta.dart';
import 'package:nnbd_migration/migration_cli.dart';
+import 'package:nnbd_migration/src/front_end/non_nullable_fix.dart';
import 'package:path/path.dart' as path;
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -46,9 +47,9 @@
}
Future<void> runWithPreviewServer(
- List<String> args, Future<void> callback()) async {
+ ArgResults argResults, Future<void> callback()) async {
_runWhilePreviewServerActive = callback;
- await run(args);
+ await run(argResults);
if (_runWhilePreviewServerActive != null) {
fail('Preview server never started');
}
@@ -69,6 +70,14 @@
final hasUsageText = contains('Usage: nnbd_migration');
+ Future<String> assertDecodeArgsFailure(List<String> args) async {
+ var cli = _createCli();
+ await cli.run(MigrationCli.createParser().parse(args));
+ var stderrText = assertErrorExit(cli);
+ expect(stderrText, isNot(contains('Exception')));
+ return stderrText;
+ }
+
String assertErrorExit(MigrationCli cli, {bool withUsage = true}) {
expect(cli.exitCode, isNotNull);
expect(cli.exitCode, isNot(0));
@@ -95,16 +104,18 @@
}
Future<String> assertParseArgsFailure(List<String> args) async {
- var cli = _createCli();
- await cli.run(args);
- var stderrText = assertErrorExit(cli);
- expect(stderrText, isNot(contains('Exception')));
- return stderrText;
+ try {
+ MigrationCli.createParser().parse(args);
+ } on FormatException catch (e) {
+ // Parsing failed, which was expected.
+ return e.message;
+ }
+ fail('Parsing was expected to fail, but did not');
}
CommandLineOptions assertParseArgsSuccess(List<String> args) {
var cli = _createCli();
- cli.parseCommandLineArgs(args);
+ cli.decodeCommandLineArgs(MigrationCli.createParser().parse(args));
expect(cli.exitCode, isNull);
var options = cli.options;
return options;
@@ -126,22 +137,28 @@
}
}
- String createProjectDir(Map<String, String> contents) {
- var projectPathPosix = '/test_project';
+ String createProjectDir(Map<String, String> contents,
+ {String posixPath = '/test_project'}) {
for (var entry in contents.entries) {
var relativePathPosix = entry.key;
assert(!path.posix.isAbsolute(relativePathPosix));
- var filePathPosix = path.posix.join(projectPathPosix, relativePathPosix);
+ var filePathPosix = path.posix.join(posixPath, relativePathPosix);
resourceProvider.newFile(
resourceProvider.convertPath(filePathPosix), entry.value);
}
- return resourceProvider.convertPath(projectPathPosix);
+ return resourceProvider.convertPath(posixPath);
+ }
+
+ Future<String> getSourceFromServer(Uri uri, String path) async {
+ http.Response response = await tryGetSourceFromServer(uri, path);
+ assertHttpSuccess(response);
+ return jsonDecode(response.body)['sourceCode'] as String;
}
Future<void> runWithPreviewServer(_MigrationCli cli, List<String> args,
Future<void> Function(String) callback) async {
String url;
- await cli.runWithPreviewServer(args, () async {
+ await cli.runWithPreviewServer(_parseArgs(args), () async {
// Server should be running now
url = RegExp('http://.*', multiLine: true)
.stringMatch(logger.stdoutBuffer.toString());
@@ -193,7 +210,7 @@
expect(newCoreLibText, isNot(oldCoreLibText));
coreLib.writeAsStringSync(newCoreLibText);
var projectDir = await createProjectDir(simpleProject());
- await cli.run([projectDir]);
+ await cli.run(MigrationCli.createParser().parse([projectDir]));
assertErrorExit(cli, withUsage: false);
var output = logger.stdoutBuffer.toString();
expect(
@@ -219,7 +236,7 @@
}
test_flag_apply_changes_incompatible_with_web_preview() async {
- expect(await assertParseArgsFailure(['--web-preview', '--apply-changes']),
+ expect(await assertDecodeArgsFailure(['--web-preview', '--apply-changes']),
contains('--apply-changes requires --no-web-preview'));
}
@@ -263,7 +280,8 @@
var projectContents = simpleProject();
var projectDir = await createProjectDir(projectContents);
var cli = _createCli();
- await cli.run(['--no-web-preview', '--apply-changes', projectDir]);
+ await cli
+ .run(_parseArgs(['--no-web-preview', '--apply-changes', projectDir]));
// Check that a summary was printed
expect(logger.stdoutBuffer.toString(), contains('Applying changes'));
// And that it refers to test.dart and pubspec.yaml
@@ -281,7 +299,7 @@
''');
var projectDir = await createProjectDir(projectContents);
var cli = _createCli();
- await cli.run([projectDir]);
+ await cli.run(_parseArgs([projectDir]));
assertErrorExit(cli, withUsage: false);
var output = logger.stdoutBuffer.toString();
expect(output, contains('1 analysis issue found'));
@@ -319,7 +337,7 @@
var projectContents = simpleProject();
var projectDir = await createProjectDir(projectContents);
var cli = _createCli();
- await cli.run(['--no-web-preview', projectDir]);
+ await cli.run(_parseArgs(['--no-web-preview', projectDir]));
// Check that a summary was printed
var output = logger.stdoutBuffer.toString();
expect(output, contains('Summary'));
@@ -386,12 +404,163 @@
});
}
+ test_lifecycle_preview_rerun() async {
+ var origSourceText = 'void f() {}';
+ var projectContents = simpleProject(sourceText: origSourceText);
+ var projectDir = await createProjectDir(projectContents);
+ var cli = _createCli();
+ await runWithPreviewServer(cli, [projectDir], (url) async {
+ await assertPreviewServerResponsive(url);
+ var uri = Uri.parse(url);
+ var testPath =
+ resourceProvider.pathContext.join(projectDir, 'lib', 'test.dart');
+ var newSourceText = 'void g() {}';
+ resourceProvider.getFile(testPath).writeAsStringSync(newSourceText);
+ // We haven't rerun, so getting the file details from the server should
+ // still yield the original source text
+ expect(await getSourceFromServer(uri, testPath), origSourceText);
+ var response = await http.post(uri.replace(path: 'rerun-migration'),
+ headers: {'Content-Type': 'application/json; charset=UTF-8'});
+ assertHttpSuccess(response);
+ // Now that we've rerun, the server should yield the new source text
+ expect(await getSourceFromServer(uri, testPath), newSourceText);
+ });
+ }
+
+ test_lifecycle_preview_rerun_added_file() async {
+ var projectContents = simpleProject();
+ var projectDir = await createProjectDir(projectContents);
+ var cli = _createCli();
+ await runWithPreviewServer(cli, [projectDir], (url) async {
+ await assertPreviewServerResponsive(url);
+ var uri = Uri.parse(url);
+ var test2Path =
+ resourceProvider.pathContext.join(projectDir, 'lib', 'test2.dart');
+ var newSourceText = 'void g() {}';
+ resourceProvider.getFile(test2Path).writeAsStringSync(newSourceText);
+ // We haven't rerun, so getting the file details from the server should
+ // fail
+ var response = await tryGetSourceFromServer(uri, test2Path);
+ expect(response.statusCode, 404);
+ response = await http.post(uri.replace(path: 'rerun-migration'),
+ headers: {'Content-Type': 'application/json; charset=UTF-8'});
+ assertHttpSuccess(response);
+ // Now that we've rerun, the server should yield the new source text
+ expect(await getSourceFromServer(uri, test2Path), newSourceText);
+ });
+ }
+
+ test_lifecycle_preview_rerun_deleted_file() async {
+ var projectContents = simpleProject();
+ var projectDir = await createProjectDir(projectContents);
+ var cli = _createCli();
+ // Note: we use the summary to verify that the deletion was noticed
+ var summaryPath = resourceProvider.convertPath('/summary.json');
+ await runWithPreviewServer(cli, ['--summary', summaryPath, projectDir],
+ (url) async {
+ await assertPreviewServerResponsive(url);
+ // lib/test.dart should be readable from the server and appear in the
+ // summary
+ var uri = Uri.parse(url);
+ var testPath =
+ resourceProvider.pathContext.join(projectDir, 'lib', 'test.dart');
+ await getSourceFromServer(uri, testPath);
+ var summaryData =
+ jsonDecode(resourceProvider.getFile(summaryPath).readAsStringSync());
+ var separator = resourceProvider.pathContext.separator;
+ expect(summaryData['changes']['byPath'],
+ contains('lib${separator}test.dart'));
+ // Now delete the lib file and rerun
+ resourceProvider.deleteFile(testPath);
+ var response = await http.post(uri.replace(path: 'rerun-migration'),
+ headers: {'Content-Type': 'application/json; charset=UTF-8'});
+ assertHttpSuccess(response);
+ // lib/test.dart should no longer be readable from the server and
+ // should no longer appear in the summary
+ response = await tryGetSourceFromServer(uri, testPath);
+ expect(response.statusCode, 404);
+ summaryData =
+ jsonDecode(resourceProvider.getFile(summaryPath).readAsStringSync());
+ expect(summaryData['changes']['byPath'],
+ isNot(contains('lib${separator}test.dart')));
+ });
+ }
+
+ test_lifecycle_preview_serves_only_from_project_dir() async {
+ var crazyFunctionName = 'crazyFunctionNameThatHasNeverBeenSeenBefore';
+ var projectContents =
+ simpleProject(sourceText: 'void $crazyFunctionName() {}');
+ var mainProjectDir = await createProjectDir(projectContents);
+ var otherProjectDir = await createProjectDir(projectContents,
+ posixPath: '/other_project_dir');
+ var cli = _createCli();
+ await runWithPreviewServer(cli, [mainProjectDir], (url) async {
+ await assertPreviewServerResponsive(url);
+ var uri = Uri.parse(url);
+
+ Future<http.Response> tryGetSourceFromProject(String projectDir) =>
+ tryGetSourceFromServer(
+ uri,
+ resourceProvider.pathContext
+ .join(projectDir, 'lib', 'test.dart'));
+
+ // To verify that we're forming the request correctly, make sure that we
+ // can read a file from mainProjectDir.
+ var response = await tryGetSourceFromProject(mainProjectDir);
+ assertHttpSuccess(response);
+ // And that crazyFunctionName appears in the response
+ expect(response.body, contains(crazyFunctionName));
+ // Now verify that making the exact same request from otherProjectDir
+ // fails.
+ response = await tryGetSourceFromProject(otherProjectDir);
+ expect(response.statusCode, 404);
+ // And check that we didn't leak any info through the 404 response.
+ expect(response.body, isNot(contains(crazyFunctionName)));
+ });
+ }
+
+ test_lifecycle_preview_stack_hint_action() async {
+ var projectContents = simpleProject(sourceText: 'int x;');
+ var projectDir = await createProjectDir(projectContents);
+ var cli = _createCli();
+ await runWithPreviewServer(cli, [projectDir], (url) async {
+ expect(
+ logger.stdoutBuffer.toString(), contains('No analysis issues found'));
+ await assertPreviewServerResponsive(url);
+ var uri = Uri.parse(url);
+ var authToken = uri.queryParameters['authToken'];
+ var regionResponse = await http.get(
+ uri.replace(
+ path: resourceProvider.pathContext
+ .toUri(resourceProvider.pathContext
+ .join(projectDir, 'lib', 'test.dart'))
+ .path,
+ queryParameters: {
+ 'region': 'region',
+ 'offset': '3',
+ 'authToken': authToken
+ }),
+ headers: {'Content-Type': 'application/json; charset=UTF-8'});
+ var regionJson = jsonDecode(regionResponse.body);
+ var response = await http.post(
+ uri.replace(
+ path: 'apply-hint', queryParameters: {'authToken': authToken}),
+ headers: {'Content-Type': 'application/json; charset=UTF-8'},
+ body: jsonEncode(
+ regionJson['traces'][0]['entries'][0]['hintActions'][0]));
+ assertHttpSuccess(response);
+ assertProjectContents(
+ projectDir, simpleProject(sourceText: 'int/*?*/ x;'));
+ });
+ }
+
test_lifecycle_summary() async {
var projectContents = simpleProject();
var projectDir = await createProjectDir(projectContents);
var cli = _createCli();
var summaryPath = resourceProvider.convertPath('/summary.json');
- await cli.run(['--no-web-preview', '--summary', summaryPath, projectDir]);
+ await cli.run(
+ _parseArgs(['--no-web-preview', '--summary', summaryPath, projectDir]));
var summaryData =
jsonDecode(resourceProvider.getFile(summaryPath).readAsStringSync());
expect(summaryData, TypeMatcher<Map>());
@@ -403,7 +572,8 @@
var projectDir = await createProjectDir(projectContents);
var cli = _createCli();
var summaryPath = resourceProvider.convertPath('/summary.json');
- await cli.run(['--no-web-preview', '--summary', summaryPath, projectDir]);
+ await cli.run(
+ _parseArgs(['--no-web-preview', '--summary', summaryPath, projectDir]));
var summaryData =
jsonDecode(resourceProvider.getFile(summaryPath).readAsStringSync());
var separator = resourceProvider.pathContext.separator;
@@ -411,6 +581,38 @@
{'makeTypeNullableDueToHint': 1});
}
+ test_lifecycle_summary_rewritten_upon_rerun() async {
+ var projectContents = simpleProject(sourceText: 'int f(int/*?*/ i) => i;');
+ var projectDir = await createProjectDir(projectContents);
+ var cli = _createCli();
+ var summaryPath = resourceProvider.convertPath('/summary.json');
+ await runWithPreviewServer(cli, ['--summary', summaryPath, projectDir],
+ (url) async {
+ await assertPreviewServerResponsive(url);
+ var summaryData =
+ jsonDecode(resourceProvider.getFile(summaryPath).readAsStringSync());
+ var separator = resourceProvider.pathContext.separator;
+ expect(summaryData['changes']['byPath']['lib${separator}test.dart'],
+ {'makeTypeNullableDueToHint': 1, 'makeTypeNullable': 1});
+ var testPath =
+ resourceProvider.pathContext.join(projectDir, 'lib', 'test.dart');
+ var newSourceText = 'int f(int/*?*/ i) => i + 1;';
+ resourceProvider.getFile(testPath).writeAsStringSync(newSourceText);
+ // Rerunning should create a new summary
+ var uri = Uri.parse(url);
+ var response = await http.post(uri.replace(path: 'rerun-migration'),
+ headers: {'Content-Type': 'application/json; charset=UTF-8'});
+ assertHttpSuccess(response);
+ summaryData =
+ jsonDecode(resourceProvider.getFile(summaryPath).readAsStringSync());
+ expect(summaryData['changes']['byPath']['lib${separator}test.dart'], {
+ 'typeNotMadeNullable': 1,
+ 'makeTypeNullableDueToHint': 1,
+ 'checkExpression': 1
+ });
+ });
+ }
+
test_lifecycle_uri_error() async {
var projectContents = simpleProject(sourceText: '''
import 'package:does_not/exist.dart';
@@ -418,7 +620,7 @@
''');
var projectDir = await createProjectDir(projectContents);
var cli = _createCli();
- await cli.run([projectDir]);
+ await cli.run(_parseArgs([projectDir]));
assertErrorExit(cli, withUsage: false);
var output = logger.stdoutBuffer.toString();
expect(output, contains('1 analysis issue found'));
@@ -443,12 +645,12 @@
test_migrate_path_file() async {
resourceProvider.newFile(resourceProvider.pathContext.absolute('foo'), '');
- expect(await assertParseArgsFailure(['foo']), contains('foo is a file'));
+ expect(await assertDecodeArgsFailure(['foo']), contains('foo is a file'));
}
test_migrate_path_non_existent() async {
expect(
- await assertParseArgsFailure(['foo']), contains('foo does not exist'));
+ await assertDecodeArgsFailure(['foo']), contains('foo does not exist'));
}
test_migrate_path_none() {
@@ -471,7 +673,7 @@
test_migrate_path_two() async {
var cli = _createCli();
- await cli.run(['foo', 'bar']);
+ await cli.run(_parseArgs(['foo', 'bar']));
var stderrText = assertErrorExit(cli);
expect(stderrText, contains('No more than one path may be specified'));
}
@@ -486,7 +688,7 @@
}
test_option_preview_port_format_error() async {
- expect(await assertParseArgsFailure(['--preview-port', 'abc']),
+ expect(await assertDecodeArgsFailure(['--preview-port', 'abc']),
contains('Invalid value for --preview-port'));
}
@@ -497,7 +699,7 @@
test_option_sdk_default() {
var cli = MigrationCli(binaryName: 'nnbd_migration');
- cli.parseCommandLineArgs([]);
+ cli.decodeCommandLineArgs(_parseArgs([]));
expect(
File(path.join(cli.options.sdkPath, 'version')).existsSync(), isTrue);
}
@@ -526,6 +728,15 @@
expect(cli.resourceProvider, same(PhysicalResourceProvider.INSTANCE));
}
+ Future<http.Response> tryGetSourceFromServer(Uri uri, String path) async {
+ var authToken = uri.queryParameters['authToken'];
+ return await http.get(
+ uri.replace(
+ path: resourceProvider.pathContext.toUri(path).path,
+ queryParameters: {'inline': 'true', 'authToken': authToken}),
+ headers: {'Content-Type': 'application/json; charset=UTF-8'});
+ }
+
_MigrationCli _createCli() {
mock_sdk.MockSdk(resourceProvider: resourceProvider);
return _MigrationCli(this);
@@ -533,12 +744,16 @@
Future<String> _getHelpText({@required bool verbose}) async {
var cli = _createCli();
- await cli
- .run(['--${CommandLineOptions.helpFlag}', if (verbose) '--verbose']);
+ await cli.run(_parseArgs(
+ ['--${CommandLineOptions.helpFlag}', if (verbose) '--verbose']));
expect(cli.exitCode, 0);
var helpText = logger.stderrBuffer.toString();
return helpText;
}
+
+ ArgResults _parseArgs(List<String> args) {
+ return MigrationCli.createParser().parse(args);
+ }
}
@reflectiveTest
diff --git a/pkg/nnbd_migration/test/node_builder_test.dart b/pkg/nnbd_migration/test/node_builder_test.dart
index 4d07f3b..4a6b32b 100644
--- a/pkg/nnbd_migration/test/node_builder_test.dart
+++ b/pkg/nnbd_migration/test/node_builder_test.dart
@@ -3,7 +3,9 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analyzer/dart/element/type.dart';
+import 'package:nnbd_migration/instrumentation.dart';
import 'package:nnbd_migration/src/decorated_type.dart';
+import 'package:nnbd_migration/src/edit_plan.dart';
import 'package:nnbd_migration/src/nullability_node.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -667,6 +669,16 @@
assertNoEdge(always, decoratedType.node);
}
+ Future<void> test_extended_type_no_add_hint_actions() async {
+ await analyze('''
+class A extends Object {}
+''');
+ final node = decoratedTypeAnnotation('Object').node;
+ expect(
+ node.hintActions, isNot(contains(HintActionKind.addNonNullableHint)));
+ expect(node.hintActions, isNot(contains(HintActionKind.addNullableHint)));
+ }
+
Future<void> test_field_type_implicit_dynamic() async {
await analyze('''
class C {
@@ -1219,6 +1231,39 @@
'return type of F (test.dart:1:13)');
}
+ Future<void> test_implicit_type_nested_no_add_hint_actions() async {
+ await analyze('''
+var x = [1];
+''');
+ final node = variables
+ .decoratedElementType(findNode
+ .topLevelVariableDeclaration('x')
+ .variables
+ .variables[0]
+ .declaredElement)
+ .typeArguments[0]
+ .node;
+ expect(
+ node.hintActions, isNot(contains(HintActionKind.addNonNullableHint)));
+ expect(node.hintActions, isNot(contains(HintActionKind.addNullableHint)));
+ }
+
+ Future<void> test_implicit_type_no_add_hint_actions() async {
+ await analyze('''
+var x = 1;
+''');
+ final node = variables
+ .decoratedElementType(findNode
+ .topLevelVariableDeclaration('x')
+ .variables
+ .variables[0]
+ .declaredElement)
+ .node;
+ expect(
+ node.hintActions, isNot(contains(HintActionKind.addNonNullableHint)));
+ expect(node.hintActions, isNot(contains(HintActionKind.addNullableHint)));
+ }
+
Future<void> test_interfaceType_generic_instantiate_to_dynamic() async {
await analyze('''
void f(List x) {}
@@ -1741,19 +1786,86 @@
expect(decoratedType.node.isImmutable, false);
}
+ Future<void> test_type_add_non_null_hint() async {
+ await analyze('''
+void f(int i) {}
+''');
+ final node = decoratedTypeAnnotation('int').node;
+ expect(node.hintActions, contains(HintActionKind.addNonNullableHint));
+ expect(
+ node.hintActions[HintActionKind.addNonNullableHint]
+ .applyTo(super.testCode),
+ '''
+void f(int/*!*/ i) {}
+''');
+ }
+
+ Future<void> test_type_add_null_hint() async {
+ await analyze('''
+void f(int i) {}
+''');
+ final node = decoratedTypeAnnotation('int').node;
+ expect(node.hintActions, contains(HintActionKind.addNullableHint));
+ expect(
+ node.hintActions[HintActionKind.addNullableHint]
+ .applyTo(super.testCode),
+ '''
+void f(int/*?*/ i) {}
+''');
+ }
+
Future<void> test_type_comment_bang() async {
await analyze('''
void f(int/*!*/ i) {}
''');
- assertEdge(decoratedTypeAnnotation('int').node, never,
- hard: true, checkable: false);
+ final node = decoratedTypeAnnotation('int').node;
+ assertEdge(node, never, hard: true, checkable: false);
+ expect(
+ node.hintActions, isNot(contains(HintActionKind.addNonNullableHint)));
+ expect(node.hintActions, isNot(contains(HintActionKind.addNullableHint)));
+ // TODO(mfairhurst): support 'change to null hint'/'remove non-null hint'
+ // Filed as dartbug.com/41857, dartbug.com/41858
}
Future<void> test_type_comment_question() async {
await analyze('''
void f(int/*?*/ i) {}
''');
- assertUnion(always, decoratedTypeAnnotation('int').node);
+ final node = decoratedTypeAnnotation('int').node;
+ assertUnion(always, node);
+ expect(
+ node.hintActions, isNot(contains(HintActionKind.addNonNullableHint)));
+ expect(node.hintActions, isNot(contains(HintActionKind.addNullableHint)));
+ // TODO(mfairhurst): support 'change to non-null hint'/'remove null hint'
+ // Filed as dartbug.com/41857, dartbug.com/41858
+ }
+
+ Future<void> test_type_nested_add_non_null_hint() async {
+ await analyze('''
+void f(List<int> i) {}
+''');
+ final node = decoratedTypeAnnotation('int').node;
+ expect(node.hintActions, contains(HintActionKind.addNonNullableHint));
+ expect(
+ node.hintActions[HintActionKind.addNonNullableHint]
+ .applyTo(super.testCode),
+ '''
+void f(List<int/*!*/> i) {}
+''');
+ }
+
+ Future<void> test_type_nested_add_null_hint() async {
+ await analyze('''
+void f(List<int> i) {}
+''');
+ final node = decoratedTypeAnnotation('int').node;
+ expect(node.hintActions, contains(HintActionKind.addNullableHint));
+ expect(
+ node.hintActions[HintActionKind.addNullableHint]
+ .applyTo(super.testCode),
+ '''
+void f(List<int/*?*/> i) {}
+''');
}
Future<void> test_type_parameter_explicit_bound() async {
diff --git a/pkg/nnbd_migration/test/preview/preview_site_test.dart b/pkg/nnbd_migration/test/preview/preview_site_test.dart
index 82b611f..0ea2029 100644
--- a/pkg/nnbd_migration/test/preview/preview_site_test.dart
+++ b/pkg/nnbd_migration/test/preview/preview_site_test.dart
@@ -35,15 +35,13 @@
}
void setUp() {
- reranPaths = null;
dartfixListener = DartFixListener(null);
resourceProvider = MemoryResourceProvider();
final migrationInfo = MigrationInfo({}, {}, null, null);
state = MigrationState(null, null, dartfixListener, null);
state.pathMapper = PathMapper(resourceProvider);
state.migrationInfo = migrationInfo;
- site = PreviewSite(state, ([paths]) async {
- reranPaths = paths;
+ site = PreviewSite(state, () async {
return state;
});
}
@@ -160,7 +158,6 @@
expect(file.readAsStringSync(), 'int/*?*/ foo() {}');
expect(state.hasBeenApplied, false);
expect(state.needsRerun, true);
- expect(reranPaths, null);
expect(unitInfo.content, 'int/*?*/ foo() {}');
}
@@ -181,7 +178,6 @@
PreviewSite site;
DartFixListener dartfixListener;
MigrationState state;
- List<String> reranPaths;
Future<void> performEdit(String path, int offset, String replacement) {
final pathUri = Uri.file(path).path;
@@ -197,14 +193,13 @@
@override
void setUp() {
super.setUp();
- reranPaths = null;
dartfixListener = DartFixListener(null);
final migrationInfo = MigrationInfo({}, {}, null, null);
state = MigrationState(null, null, dartfixListener, null);
+ nodeMapper = state.nodeMapper;
state.pathMapper = PathMapper(resourceProvider);
state.migrationInfo = migrationInfo;
- site = PreviewSite(state, ([paths]) async {
- reranPaths = paths;
+ site = PreviewSite(state, () async {
return state;
});
}
@@ -256,6 +251,54 @@
unitInfo.content.indexOf('= x;') + '= '.length, contains('data flow'));
expect(state.hasBeenApplied, false);
expect(state.needsRerun, true);
- expect(reranPaths, null);
+ }
+
+ void test_applyHintAction() async {
+ final path = convertPath('/home/tests/bin/test.dart');
+ final file = getFile(path);
+ final content = r'''
+int x;
+int y = x;
+''';
+ file.writeAsStringSync(content);
+ final migratedContent = '''
+int? x;
+int? y = x;
+''';
+ final unitInfo = await buildInfoForSingleTestFile(content,
+ migratedContent: migratedContent);
+ site.unitInfoMap[path] = unitInfo;
+ await site.performHintAction(
+ unitInfo.regions[1].traces[0].entries[0].hintActions[0]);
+ await site.performHintAction(
+ unitInfo.regions[1].traces[0].entries[2].hintActions[0]);
+ expect(file.readAsStringSync(), '''
+int/*?*/ x;
+int/*?*/ y = x;
+''');
+ expect(unitInfo.content, '''
+int/*?*/? x;
+int/*?*/? y = x;
+''');
+ assertRegion(
+ region: unitInfo.regions[0], offset: unitInfo.content.indexOf('? x'));
+ assertRegion(
+ region: unitInfo.regions[1], offset: unitInfo.content.indexOf('? y'));
+ final targets = List<NavigationTarget>.from(unitInfo.targets);
+ assertInTargets(
+ targets: targets,
+ offset: unitInfo.content.indexOf('x'),
+ offsetMapper: unitInfo.offsetMapper);
+ assertInTargets(
+ targets: targets,
+ offset: unitInfo.content.indexOf('y'),
+ offsetMapper: unitInfo.offsetMapper);
+ var trace = unitInfo.regions[1].traces[0];
+ assertTraceEntry(unitInfo, trace.entries[0], null,
+ unitInfo.content.indexOf('int/*?*/? y'), contains('y (test.dart:2:1)'));
+ assertTraceEntry(unitInfo, trace.entries[1], 'y',
+ unitInfo.content.indexOf('= x;') + '= '.length, contains('data flow'));
+ expect(state.hasBeenApplied, false);
+ expect(state.needsRerun, true);
}
}
diff --git a/pkg/smith/lib/builder.dart b/pkg/smith/lib/builder.dart
index 673b0a9..19b7f2c 100644
--- a/pkg/smith/lib/builder.dart
+++ b/pkg/smith/lib/builder.dart
@@ -99,7 +99,7 @@
final Architecture arch;
final Sanitizer sanitizer;
final Runtime runtime;
- final List<Configuration> testedConfigurations;
+ final Set<Configuration> testedConfigurations;
Builder(this.name, this.description, this.steps, this.system, this.mode,
this.arch, this.sanitizer, this.runtime, this.testedConfigurations);
@@ -167,11 +167,11 @@
return string;
}
-List<Configuration> _getTestedConfigurations(List<Step> steps) {
+Set<Configuration> _getTestedConfigurations(List<Step> steps) {
return steps
.where((step) => step.isTestStep)
.map((step) => step.testedConfiguration)
- .toList();
+ .toSet();
}
T _findIfNotNull<T>(T Function(String) find, String name) {
diff --git a/pkg/smith/lib/test_matrix.dart b/pkg/smith/lib/test_matrix.dart
index 5c8c35d..3d10b21 100644
--- a/pkg/smith/lib/test_matrix.dart
+++ b/pkg/smith/lib/test_matrix.dart
@@ -56,6 +56,20 @@
var builders = parseBuilders(builderConfigurations, configurations);
var branches = <String>[...?json["branches"]];
+ // Check that each configuration is tested on at most one builder.
+ var testedOn = <Configuration, Builder>{};
+ for (var builder in builders) {
+ for (var configuration in builder.testedConfigurations) {
+ if (testedOn.containsKey(configuration)) {
+ var other = testedOn[configuration];
+ throw FormatException('Configuration "${configuration.name}" is '
+ 'tested on both "${builder.name}" and "${other.name}"');
+ } else {
+ testedOn[configuration] = builder;
+ }
+ }
+ }
+
return TestMatrix._(configurations, builders, branches);
}
diff --git a/pkg/smith/test/test_matrix_test.dart b/pkg/smith/test/test_matrix_test.dart
index 0884e67..9787567 100644
--- a/pkg/smith/test/test_matrix_test.dart
+++ b/pkg/smith/test/test_matrix_test.dart
@@ -120,6 +120,35 @@
]
});
});
+
+ test("a configuration is tested on more than one builder", () {
+ expectJsonError(
+ 'Configuration "fasta-linux" is tested on both '
+ '"test-fasta-2" and "test-fasta-1"',
+ {
+ "configurations": {"fasta-linux": {}},
+ "builder_configurations": [
+ {
+ "builders": ["test-fasta-1"],
+ "steps": [
+ {
+ "name": "fasta1",
+ "arguments": [r"-nfasta-linux"],
+ },
+ ],
+ },
+ {
+ "builders": ["test-fasta-2"],
+ "steps": [
+ {
+ "name": "fasta2",
+ "arguments": [r"-nfasta-linux"],
+ },
+ ],
+ },
+ ]
+ });
+ });
});
test("a list of branches is parsed", () {
diff --git a/pkg/telemetry/lib/telemetry.dart b/pkg/telemetry/lib/telemetry.dart
index 6df3990..2da8ecc 100644
--- a/pkg/telemetry/lib/telemetry.dart
+++ b/pkg/telemetry/lib/telemetry.dart
@@ -160,34 +160,63 @@
/// Detect whether we're running on a bot or in a continuous testing
/// environment.
///
-/// We should periodically keep this code up to date with
-/// https://github.com/flutter/flutter/blob/master/packages/flutter_tools/lib/src/base/utils.dart#L20.
+/// We should periodically keep this code up to date with:
+/// https://github.com/flutter/flutter/blob/master/packages/flutter_tools/lib/src/base/bot_detector.dart#L30
+/// and
+/// https://github.com/flutter/flutter/blob/master/packages/flutter_tools/lib/src/reporting/usage.dart#L200.
bool isRunningOnBot() {
final Map<String, String> env = Platform.environment;
- return env['BOT'] != 'false' &&
- (env['BOT'] == 'true'
- // https://docs.travis-ci.com/user/environment-variables/#Default-Environment-Variables
+ if (
+ // Explicitly stated to not be a bot.
+ env['BOT'] == 'false'
+ // Set by the IDEs to the IDE name, so a strong signal that this is not a bot.
||
- env['TRAVIS'] == 'true' ||
- env['CONTINUOUS_INTEGRATION'] == 'true' ||
- env.containsKey('CI') // Travis and AppVeyor
+ env.containsKey('FLUTTER_HOST')
+ // When set, GA logs to a local file (normally for tests) so we don't need to filter.
+ ||
+ env.containsKey('FLUTTER_ANALYTICS_LOG_FILE')) {
+ return false;
+ }
- // https://www.appveyor.com/docs/environment-variables/
- ||
- env.containsKey('APPVEYOR')
+ return env['BOT'] == 'true'
+ // https://docs.travis-ci.com/user/environment-variables/#Default-Environment-Variables
+ ||
+ env['TRAVIS'] == 'true' ||
+ env['CONTINUOUS_INTEGRATION'] == 'true' ||
+ env.containsKey('CI') // Travis and AppVeyor
- // https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-env-vars.html
- ||
- (env.containsKey('AWS_REGION') &&
- env.containsKey('CODEBUILD_INITIATOR'))
+ // https://www.appveyor.com/docs/environment-variables/
+ ||
+ env.containsKey('APPVEYOR')
- // https://wiki.jenkins.io/display/JENKINS/Building+a+software+project#Buildingasoftwareproject-belowJenkinsSetEnvironmentVariables
- ||
- env.containsKey('JENKINS_URL')
+ // https://cirrus-ci.org/guide/writing-tasks/#environment-variables
+ ||
+ env.containsKey('CIRRUS_CI')
- // Properties on Flutter's Chrome Infra bots.
- ||
- env['CHROME_HEADLESS'] == '1' ||
- env.containsKey('BUILDBOT_BUILDERNAME'));
+ // https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-env-vars.html
+ ||
+ (env.containsKey('AWS_REGION') && env.containsKey('CODEBUILD_INITIATOR'))
+
+ // https://wiki.jenkins.io/display/JENKINS/Building+a+software+project#Buildingasoftwareproject-belowJenkinsSetEnvironmentVariables
+ ||
+ env.containsKey('JENKINS_URL')
+
+ // https://help.github.com/en/actions/configuring-and-managing-workflows/using-environment-variables#default-environment-variables
+ ||
+ env.containsKey('GITHUB_ACTIONS')
+
+ // Properties on Flutter's Chrome Infra bots.
+ ||
+ env['CHROME_HEADLESS'] == '1' ||
+ env.containsKey('BUILDBOT_BUILDERNAME') ||
+ env.containsKey('SWARMING_TASK_ID')
+
+ // Property when running on borg.
+ ||
+ env.containsKey('BORG_ALLOC_DIR');
+
+ // TODO(jwren): Azure detection -- each call for this detection requires an
+ // http connection, the flutter cli tool captures the result on the first
+ // run, we should consider the same caching here.
}
diff --git a/pkg/test_runner/lib/src/command_output.dart b/pkg/test_runner/lib/src/command_output.dart
index 3c1eae4..6eec3f2 100644
--- a/pkg/test_runner/lib/src/command_output.dart
+++ b/pkg/test_runner/lib/src/command_output.dart
@@ -8,13 +8,16 @@
import 'dart:io' as io;
import 'package:status_file/expectation.dart';
+import 'package:test_runner/src/repository.dart';
import 'package:test_runner/src/static_error.dart';
import 'package:dart2js_tools/deobfuscate_stack_trace.dart';
import 'browser_controller.dart';
import 'command.dart';
import 'configuration.dart';
+import 'path.dart';
import 'process_queue.dart';
+import 'terminal.dart';
import 'test_case.dart';
import 'test_progress.dart';
import 'utils.dart';
@@ -448,52 +451,114 @@
}
}
+/// A parsed analyzer error diagnostic.
+class AnalyzerError implements Comparable<AnalyzerError> {
+ /// Parses all errors from analyzer [stderr] output.
+ static Iterable<AnalyzerError> parseStderr(String stderr) sync* {
+ for (var outputLine in stderr.split("\n")) {
+ var error = _tryParse(outputLine);
+ if (error != null) yield error;
+ }
+ }
+
+ static AnalyzerError _tryParse(String line) {
+ if (line.isEmpty) return null;
+
+ // Split and unescape the fields.
+ // The escaping is implemented in:
+ // pkg/analyzer_cli/lib/src/error_formatter.dart#L392
+ var fields = <String>[];
+ var field = StringBuffer();
+ var inEscape = false;
+ for (var i = 0; i < line.length; i++) {
+ var c = line[i];
+
+ if (inEscape) {
+ switch (c) {
+ case '\\':
+ field.write('\\');
+ break;
+ case '|':
+ field.write('|');
+ break;
+ case 'n':
+ field.write('\n');
+ break;
+ // TODO(rnystrom): Are there other escapes?
+ default:
+ field.write(c);
+ break;
+ }
+
+ inEscape = false;
+ } else if (c == '\\') {
+ inEscape = true;
+ } else if (c == '|') {
+ fields.add(field.toString());
+ field = StringBuffer();
+ } else {
+ field.write(c);
+ }
+ }
+
+ // Add the last field.
+ fields.add(field.toString());
+
+ // Lines without enough fields are other output we don't care about.
+ if (fields.length < 8) return null;
+
+ return AnalyzerError._(
+ severity: fields[0],
+ errorCode: "${fields[1]}.${fields[2]}",
+ file: fields[3],
+ message: fields[7],
+ line: int.parse(fields[4]),
+ column: int.parse(fields[5]),
+ length: int.parse(fields[6]));
+ }
+
+ final String severity;
+ final String errorCode;
+ final String file;
+ final String message;
+ final int line;
+ final int column;
+ final int length;
+
+ AnalyzerError._(
+ {this.severity,
+ this.errorCode,
+ this.file,
+ this.message,
+ this.line,
+ this.column,
+ this.length});
+
+ @override
+ int compareTo(AnalyzerError other) {
+ if (severity != other.severity) return severity.compareTo(other.severity);
+ if (file != other.file) return file.compareTo(other.file);
+ if (line != other.line) return line.compareTo(other.line);
+ if (column != other.column) return column.compareTo(other.column);
+ if (length != other.length) return length.compareTo(other.length);
+ if (errorCode != other.errorCode) {
+ return errorCode.compareTo(other.errorCode);
+ }
+ return message.compareTo(other.message);
+ }
+}
+
class AnalysisCommandOutput extends CommandOutput with _StaticErrorOutput {
static void parseErrors(String stderr, List<StaticError> errors,
[List<StaticError> warnings]) {
- List<String> splitMachineError(String line) {
- var field = StringBuffer();
- var result = <String>[];
- var escaped = false;
- for (var i = 0; i < line.length; i++) {
- var c = line[i];
- if (!escaped && c == '\\') {
- escaped = true;
- continue;
- }
- escaped = false;
- if (c == '|') {
- result.add(field.toString());
- field = StringBuffer();
- continue;
- }
- field.write(c);
- }
- result.add(field.toString());
- return result;
- }
+ for (var error in AnalyzerError.parseStderr(stderr)) {
+ var staticError = StaticError({ErrorSource.analyzer: error.errorCode},
+ line: error.line, column: error.column, length: error.length);
- for (var line in stderr.split("\n")) {
- if (line.isEmpty) continue;
-
- var fields = splitMachineError(line);
-
- // Lines without enough fields are other output we don't care about.
- if (fields.length >= 8) {
- var severity = fields[0];
- var errorCode = "${fields[1]}.${fields[2]}";
- var line = int.parse(fields[4]);
- var column = int.parse(fields[5]);
- var length = int.parse(fields[6]);
-
- var error = StaticError(
- line: line, column: column, length: length, code: errorCode);
-
- if (severity == 'ERROR') {
- errors.add(error);
- } else if (severity == 'WARNING') {
- warnings?.add(error);
- }
+ if (error.severity == 'ERROR') {
+ errors.add(staticError);
+ } else if (error.severity == 'WARNING') {
+ warnings?.add(staticError);
}
}
}
@@ -577,6 +642,44 @@
return Expectation.pass;
}
+ @override
+ void describe(TestCase testCase, Progress progress, OutputWriter output) {
+ // Handle static error test output specially. We don't want to show the raw
+ // stdout if we can give the user the parsed expectations instead.
+ if (testCase.testFile.isStaticErrorTest || hasCrashed || hasTimedOut) {
+ super.describe(testCase, progress, output);
+ } else {
+ output.subsection("unexpected analysis errors");
+
+ var errorsByFile = <String, List<AnalyzerError>>{};
+
+ // Parse and sort the errors.
+ for (var error in AnalyzerError.parseStderr(decodeUtf8(stderr))) {
+ errorsByFile.putIfAbsent(error.file, () => []).add(error);
+ }
+
+ var files = errorsByFile.keys.toList();
+ files.sort();
+
+ for (var file in files) {
+ var path = Path(file).relativeTo(Repository.dir).toString();
+ output.write("In $path:");
+
+ var errors = errorsByFile[file];
+ errors.sort();
+
+ for (var error in errors) {
+ var line = error.line.toString();
+ var column = error.column.toString();
+ var message = wordWrap(error.message.trim(), prefix: " ");
+ output.write("- Line $line, column $column: ${error.errorCode}");
+ output.write(" $message");
+ output.separator();
+ }
+ }
+ }
+ }
+
/// Parses the machine-readable output of analyzer, which looks like:
///
/// ERROR|STATIC_TYPE_WARNING|SOME_ERROR_CODE|/path/to/some_test.dart|9|26|1|Error message.
@@ -696,6 +799,7 @@
static const _compileErrorExitCode = 254;
static const _uncaughtExceptionExitCode = 255;
static const _adbInfraFailureCodes = [10];
+ static const _ubsanFailureExitCode = 1;
VMCommandOutput(Command command, int exitCode, bool timedOut,
List<int> stdout, List<int> stderr, Duration time, int pid)
@@ -751,6 +855,10 @@
// The actual outcome depends on the exitCode.
if (exitCode == _compileErrorExitCode) return Expectation.compileTimeError;
if (exitCode == _uncaughtExceptionExitCode) return Expectation.runtimeError;
+ if ((exitCode == _ubsanFailureExitCode) &&
+ (testCase.configuration.sanitizer == Sanitizer.ubsan)) {
+ return Expectation.fail;
+ }
if (exitCode != 0) {
var ourExit = 5;
// Unknown nonzero exit code from vm command.
@@ -1074,7 +1182,8 @@
var line = int.parse(match.group(2));
var column = int.parse(match.group(3));
var message = match.group(4);
- errors.add(StaticError(line: line, column: column, message: message));
+ errors.add(
+ StaticError({ErrorSource.cfe: message}, line: line, column: column));
}
}
@@ -1201,10 +1310,11 @@
Expectation _validateExpectedErrors(TestCase testCase,
[OutputWriter writer]) {
// Filter out errors that aren't for this configuration.
- var expected = testCase.testFile.expectedErrors.where((error) =>
- testCase.configuration.compiler == Compiler.dart2analyzer
- ? error.isAnalyzer
- : error.isCfe);
+ var errorSource = testCase.configuration.compiler == Compiler.dart2analyzer
+ ? ErrorSource.analyzer
+ : ErrorSource.cfe;
+ var expected = testCase.testFile.expectedErrors
+ .where((error) => error.hasError(errorSource));
var validation = StaticError.validateExpectations(
expected,
diff --git a/pkg/test_runner/lib/src/options.dart b/pkg/test_runner/lib/src/options.dart
index 648bd24..be713c5 100644
--- a/pkg/test_runner/lib/src/options.dart
+++ b/pkg/test_runner/lib/src/options.dart
@@ -1014,8 +1014,10 @@
if (symbolizerPath != null) {
symbolizerPath = path.join(Directory.current.path, symbolizerPath);
environment['ASAN_SYMBOLIZER_PATH'] = symbolizerPath;
+ environment['LSAN_SYMBOLIZER_PATH'] = symbolizerPath;
environment['MSAN_SYMBOLIZER_PATH'] = symbolizerPath;
environment['TSAN_SYMBOLIZER_PATH'] = symbolizerPath;
+ environment['UBSAN_SYMBOLIZER_PATH'] = symbolizerPath;
}
return environment;
diff --git a/pkg/test_runner/lib/src/static_error.dart b/pkg/test_runner/lib/src/static_error.dart
index 6deb30f..202564b 100644
--- a/pkg/test_runner/lib/src/static_error.dart
+++ b/pkg/test_runner/lib/src/static_error.dart
@@ -5,23 +5,53 @@
// Only needed so that [TestFile] can be referenced in doc comments.
import 'test_file.dart';
-/// Describes a static error.
+/// A front end that can report static errors.
+class ErrorSource {
+ static const analyzer = ErrorSource._("analyzer");
+ static const cfe = ErrorSource._("CFE");
+ static const web = ErrorSource._("web");
+
+ /// All of the supported front ends.
+ ///
+ /// The order is significant here. In static error tests, error expectations
+ /// must be in this order for consistency.
+ static const all = [analyzer, cfe, web];
+
+ /// Gets the source whose lowercase name is [name] or `null` if no source
+ /// with that name could be found.
+ static ErrorSource find(String name) {
+ for (var source in all) {
+ if (source.marker == name) return source;
+ }
+
+ return null;
+ }
+
+ /// A user readable name for the error source.
+ final String name;
+
+ /// The string used to mark errors from this source in test files.
+ String get marker => name.toLowerCase();
+
+ const ErrorSource._(this.name);
+}
+
+/// Describes one or more static errors that should be reported at a specific
+/// location.
///
/// These can be parsed from comments in [TestFile]s, in which case they
/// represent *expected* errors. If a test contains any of these, then it is a
/// "static error test" and exists to validate that a conforming front end
-/// produces the expected compile-time errors.
+/// produces the expected compile-time errors. This same class is also used for
+/// *reported* errors when parsing the output of a front end.
///
-/// Aside from location, there are two interesting attributes of an error that
-/// a test can verify: its error code and the error message. Currently, for
-/// analyzer we only care about the error code. The CFE does not report an
-/// error code and only reports a message. So this class takes advantage of
-/// that by allowing you to set expectations for analyzer and CFE independently
-/// by assuming the [code] field is only used for the former and the [message]
-/// for the latter.
+/// Because there are multiple front ends that each report errors somewhat
+/// differently, each [StaticError] has a map to associate an error message
+/// with each front end. If there is no message for a given front end, it means
+/// the error is not reported by that front end.
///
-/// This same class is also used for *reported* errors when parsing the output
-/// of a front end.
+/// For analyzer errors, the error "message" is actually the constant name for
+/// the error code, like "CompileTimeErrorCode.WRONG_TYPE".
class StaticError implements Comparable<StaticError> {
static const _unspecified = "unspecified";
@@ -33,8 +63,8 @@
/// Collapses overlapping [errors] into a shorter list of errors where
/// possible.
///
- /// Two errors on the same location can be collapsed if one has an error code
- /// but no message and the other has a message but no code.
+ /// Errors on the same location can be collapsed if none of them both define
+ /// a message for the same front end.
static List<StaticError> simplify(List<StaticError> errors) {
var result = errors.toList();
result.sort();
@@ -62,18 +92,47 @@
continue;
}
- // Can't discard content.
- if (a.code != null && b.code != null) continue;
- if (a.message != null && b.message != null) continue;
+ // Can't lose any messages.
+ if (ErrorSource.all
+ .any((source) => a.hasError(source) && b.hasError(source))) {
+ continue;
+ }
- result[i] = StaticError(
- line: a.line,
- column: a.column,
- length: a.length ?? b.length,
- code: a.code ?? b.code,
- message: a.message ?? b.message);
+ // TODO(rnystrom): Now that there are more than two front ends, this
+ // isn't as smart as it could be. It could try to pack all of the
+ // messages in a given location into as few errors as possible by
+ // taking only the non-colliding messages from one error. But that's
+ // weird.
+ //
+ // A cleaner model is to have each StaticError represent a unique error
+ // location. It would have an open-ended list of every message that
+ // occurs at that location, across the various front-ends, including
+ // multiple messages for the same front end. But that would change how
+ // the existing static error tests look since something like:
+ //
+ // // ^^^
+ // // [cfe] Message 1.
+ // // ^^^
+ // // [cfe] Message 2.
+ //
+ // Would turn into:
+ //
+ // // ^^^
+ // // [cfe] Message 1.
+ // // [cfe] Message 2.
+ //
+ // That's a good change to do, but should probably wait until after
+ // NNBD.
+
+ // Merge the two errors.
+ result[i] = StaticError({...a._errors, ...b._errors},
+ line: a.line, column: a.column, length: a.length ?? b.length);
+
+ // Continue trying to merge this merged error with more since multiple
+ // errors might collapse into a single one.
result.removeAt(j);
- break;
+ a = result[i];
+ j--;
}
}
@@ -109,17 +168,16 @@
describeError(String adjective, StaticError error, String verb) {
buffer.writeln("$adjective static error at ${error.location}:");
- if (error.code == _unspecified) {
- buffer.writeln("- $verb unspecified error code.");
- } else if (error.code != null) {
- buffer.writeln("- $verb error code ${error.code}.");
+
+ for (var source in ErrorSource.all) {
+ var sourceError = error._errors[source];
+ if (sourceError == _unspecified) {
+ buffer.writeln("- $verb unspecified ${source.name} error.");
+ } else if (sourceError != null) {
+ buffer.writeln("- $verb ${source.name} error '$sourceError'.");
+ }
}
- if (error.message == _unspecified) {
- buffer.writeln("- $verb unspecified error message.");
- } else if (error.message != null) {
- buffer.writeln("- $verb error message '${error.message}'.");
- }
buffer.writeln();
}
@@ -185,13 +243,15 @@
/// This is optional. The CFE only reports error location, but not length.
final int length;
- /// The expected analyzer error code for the error or `null` if this error
- /// isn't expected to be reported by analyzer.
- final String code;
+ /// The error messages that should be or were reported by each front end.
+ final Map<ErrorSource, String> _errors;
- /// The expected CFE error message or `null` if this error isn't expected to
- /// be reported by the CFE.
- final String message;
+ /// Whether this static error exists for [source].
+ bool hasError(ErrorSource source) => _errors.containsKey(source);
+
+ /// The error for [source] or `null` if this error isn't expected to
+ /// reported by that source.
+ String errorFor(ErrorSource source) => _errors[source];
/// The zero-based index of the first line in the [TestFile] containing the
/// marker comments that define this error.
@@ -214,28 +274,21 @@
/// code or message be the special string "unspecified". When an unspecified
/// error is tested, a front end is expected to report *some* error on that
/// error's line, but it can be any location, error code, or message.
- StaticError(
+ StaticError(Map<ErrorSource, String> errors,
{this.line,
this.column,
this.length,
- this.code,
- this.message,
this.markerStartLine,
- this.markerEndLine}) {
+ this.markerEndLine})
+ : _errors = errors {
// Must have a location.
assert(line != null);
assert(column != null);
// Must have at least one piece of description.
- assert(code != null || message != null);
+ assert(_errors.isNotEmpty);
}
- /// Whether this error should be reported by analyzer.
- bool get isAnalyzer => code != null;
-
- /// Whether this error should be reported by the CFE.
- bool get isCfe => message != null;
-
/// A textual description of this error's location.
String get location {
var result = "line $line, column $column";
@@ -245,8 +298,14 @@
String toString() {
var result = "Error at $location";
- if (code != null) result += "\n$code";
- if (message != null) result += "\n$message";
+
+ for (var source in ErrorSource.all) {
+ var sourceError = _errors[source];
+ if (sourceError != null) {
+ result += "\n[${source.name.toLowerCase()}] $sourceError";
+ }
+ }
+
return result;
}
@@ -261,32 +320,42 @@
if (length != null && other.length == null) return -1;
if (length != other.length) return length.compareTo(other.length);
- var thisCode = code ?? "";
- var otherCode = other.code ?? "";
- if (thisCode != otherCode) return thisCode.compareTo(otherCode);
+ for (var source in ErrorSource.all) {
+ var thisError = _errors[source] ?? "";
+ var otherError = other._errors[source] ?? "";
+ if (thisError != otherError) {
+ return thisError.compareTo(otherError);
+ }
+ }
- var thisMessage = message ?? "";
- var otherMessage = other.message ?? "";
- return thisMessage.compareTo(otherMessage);
+ return 0;
}
@override
bool operator ==(other) => other is StaticError && compareTo(other) == 0;
@override
- int get hashCode {
- return 3 * line.hashCode +
- 5 * column.hashCode +
- 7 * (length ?? 0).hashCode +
- 11 * (code ?? "").hashCode +
- 13 * (message ?? "").hashCode;
- }
+ int get hashCode =>
+ 3 * line.hashCode +
+ 5 * column.hashCode +
+ 7 * (length ?? 0).hashCode +
+ 11 * (_errors[ErrorSource.analyzer] ?? "").hashCode +
+ 13 * (_errors[ErrorSource.cfe] ?? "").hashCode +
+ 17 * (_errors[ErrorSource.web] ?? "").hashCode;
/// Whether this error expectation is a specified error for the front end
/// reported by [actual].
bool isSpecifiedFor(StaticError actual) {
- if (actual.isAnalyzer) return isAnalyzer && code != _unspecified;
- return isCfe && message != _unspecified;
+ assert(actual._errors.length == 1,
+ "Actual error should only have one source.");
+
+ for (var source in ErrorSource.all) {
+ if (actual.hasError(source)) {
+ return hasError(source) && _errors[source] != _unspecified;
+ }
+ }
+
+ return false;
}
/// Compares this error expectation to [actual].
@@ -294,13 +363,12 @@
/// If this error correctly matches [actual], returns `null`. Otherwise
/// returns a list of strings describing the mismatch.
///
- /// Note that this does *not* check to see that [actual] matches the platforms
- /// that this error expects. For example, if [actual] only reports an error
- /// code (i.e. it is analyzer-only) and this error only specifies an error
- /// message (i.e. it is CFE-only), this will still report differences in
- /// location information. This method expects that error expectations have
- /// already been filtered by platform so this will only be called in cases
- /// where the platforms do match.
+ /// Note that this does *not* check to see that [actual] matches the front
+ /// ends that this error expects. For example, if [actual] only reports an
+ /// analyzer error and this error only specifies a CFE error, this will still
+ /// report differences in location information. This method expects that error
+ /// expectations have already been filtered by platform so this will only be
+ /// called in cases where the platforms do match.
List<String> describeDifferences(StaticError actual) {
var differences = <String>[];
@@ -323,19 +391,17 @@
}
}
- if (code != null &&
- code != _unspecified &&
- actual.code != null &&
- code != actual.code) {
- differences.add("Expected error code $code but was ${actual.code}.");
- }
+ for (var source in ErrorSource.all) {
+ var error = _errors[source];
+ var actualError = actual._errors[source];
- if (message != null &&
- message != _unspecified &&
- actual.message != null &&
- message != actual.message) {
- differences.add(
- "Expected error message '$message' but was '${actual.message}'.");
+ if (error != null &&
+ error != _unspecified &&
+ actualError != null &&
+ error != actualError) {
+ differences.add("Expected ${source.name} error '$error' "
+ "but was '$actualError'.");
+ }
}
if (differences.isNotEmpty) return differences;
@@ -366,16 +432,13 @@
static final _explicitLocationRegExp =
RegExp(r"^\s*//\s*\[\s*error line\s+(\d+)\s*,\s*column\s+(\d+)\s*\]\s*$");
- /// An analyzer error expectation starts with `// [analyzer]`.
- static final _analyzerErrorRegExp = RegExp(r"^\s*// \[analyzer\]\s*(.*)");
+ /// Matches the beginning of an error message, like `// [analyzer]`.
+ static final _errorMessageRegExp = RegExp(r"^\s*// \[(\w+)\]\s*(.*)");
/// An analyzer error code is a dotted identifier or the magic string
/// "unspecified".
static final _errorCodeRegExp = RegExp(r"^\w+\.\w+|unspecified$");
- /// The first line of a CFE error expectation starts with `// [cfe]`.
- static final _cfeErrorRegExp = RegExp(r"^\s*// \[cfe\]\s*(.*)");
-
/// Any line-comment-only lines after the first line of a CFE error message
/// are part of it.
static final _errorMessageRestRegExp = RegExp(r"^\s*//\s*(.*)");
@@ -402,7 +465,7 @@
_fail("An error expectation must follow some code.");
}
- _parseErrorDetails(
+ _parseErrorMessages(
line: _lastRealLine,
column: sourceLine.indexOf("^") + 1,
length: match.group(1).length);
@@ -412,7 +475,7 @@
match = _explicitLocationAndLengthRegExp.firstMatch(sourceLine);
if (match != null) {
- _parseErrorDetails(
+ _parseErrorMessages(
line: int.parse(match.group(1)),
column: int.parse(match.group(2)),
length: int.parse(match.group(3)));
@@ -422,7 +485,7 @@
match = _explicitLocationRegExp.firstMatch(sourceLine);
if (match != null) {
- _parseErrorDetails(
+ _parseErrorMessages(
line: int.parse(match.group(1)), column: int.parse(match.group(2)));
_advance();
continue;
@@ -436,60 +499,70 @@
}
/// Finishes parsing an error expectation after parsing the location.
- void _parseErrorDetails({int line, int column, int length}) {
- String code;
- String message;
+ void _parseErrorMessages({int line, int column, int length}) {
+ var errors = <ErrorSource, String>{};
var startLine = _currentLine;
- // Look for an error code line.
- if (!_isAtEnd) {
- var match = _analyzerErrorRegExp.firstMatch(_peek(1));
- if (match != null) {
- code = match.group(1);
+ while (!_isAtEnd) {
+ var match = _errorMessageRegExp.firstMatch(_peek(1));
+ if (match == null) break;
- if (!_errorCodeRegExp.hasMatch(code)) {
- _fail("An analyzer error expectation should be a dotted identifier.");
- }
+ var sourceName = match.group(1);
+ var source = ErrorSource.find(sourceName);
+ if (source == null) _fail("Unknown front end '[$sourceName]'.");
+ var message = match.group(2);
+ _advance();
+
+ // Consume as many additional error message lines as we find.
+ while (!_isAtEnd) {
+ var nextLine = _peek(1);
+
+ // A location line shouldn't be treated as part of the message.
+ if (_caretLocationRegExp.hasMatch(nextLine)) break;
+ if (_explicitLocationAndLengthRegExp.hasMatch(nextLine)) break;
+ if (_explicitLocationRegExp.hasMatch(nextLine)) break;
+
+ // The next source should not be treated as part of the message.
+ if (_errorMessageRegExp.hasMatch(nextLine)) break;
+
+ var messageMatch = _errorMessageRestRegExp.firstMatch(nextLine);
+ if (messageMatch == null) break;
+
+ message += "\n" + messageMatch.group(1);
_advance();
}
+
+ if (source == ErrorSource.analyzer &&
+ !_errorCodeRegExp.hasMatch(message)) {
+ _fail("An analyzer error expectation should be a dotted identifier.");
+ }
+
+ if (errors.containsKey(source)) {
+ _fail("Already have an error for ${source.name}:\n${errors[source]}");
+ }
+
+ errors[source] = message;
}
- // Look for an error message.
- if (!_isAtEnd) {
- var match = _cfeErrorRegExp.firstMatch(_peek(1));
- if (match != null) {
- message = match.group(1);
- _advance();
-
- // Consume as many additional error message lines as we find.
- while (!_isAtEnd) {
- var nextLine = _peek(1);
-
- // A location line shouldn't be treated as a message.
- if (_caretLocationRegExp.hasMatch(nextLine)) break;
- if (_explicitLocationAndLengthRegExp.hasMatch(nextLine)) break;
- if (_explicitLocationRegExp.hasMatch(nextLine)) break;
-
- // Don't let users arbitrarily order the error code and message.
- if (_analyzerErrorRegExp.hasMatch(nextLine)) {
- _fail("An analyzer expectation must come before a CFE "
- "expectation.");
- }
-
- var messageMatch = _errorMessageRestRegExp.firstMatch(nextLine);
- if (messageMatch == null) break;
-
- message += "\n" + messageMatch.group(1);
- _advance();
+ // Make sure the messages are in front end order.
+ var sources = errors.keys.toList();
+ for (var before = 0; before < ErrorSource.all.length - 1; before++) {
+ var beforeSource = ErrorSource.all[before];
+ for (var after = before + 1; after < ErrorSource.all.length; after++) {
+ var afterSource = ErrorSource.all[after];
+ if (errors.containsKey(beforeSource) &&
+ errors.containsKey(afterSource) &&
+ sources.indexOf(beforeSource) > sources.indexOf(afterSource)) {
+ _fail("The ${beforeSource.name} expectation must come before the "
+ "${afterSource.name} expectation.");
}
}
}
- if (code == null && message == null) {
- _fail("An error expectation must specify at least an analyzer or CFE "
- "error.");
+ if (errors.isEmpty) {
+ _fail("An error expectation must specify at least one error message.");
}
// Hack: If the error is CFE-only and the length is one, treat it as no
@@ -498,14 +571,16 @@
// when we parse back in a length one CFE error, we ignore the length so
// that the error round-trips correctly.
// TODO(rnystrom): Stop doing this when the CFE reports error lengths.
- if (code == null && length == 1) length = null;
+ if (length == 1 &&
+ errors.length == 1 &&
+ errors.containsKey(ErrorSource.cfe)) {
+ length = null;
+ }
- _errors.add(StaticError(
+ _errors.add(StaticError(errors,
line: line,
column: column,
length: length,
- code: code,
- message: message,
markerStartLine: startLine,
markerEndLine: _currentLine));
}
diff --git a/pkg/test_runner/lib/src/terminal.dart b/pkg/test_runner/lib/src/terminal.dart
index a96c846..5aa4421 100644
--- a/pkg/test_runner/lib/src/terminal.dart
+++ b/pkg/test_runner/lib/src/terminal.dart
@@ -40,3 +40,60 @@
_needsNewline = false;
}
}
+
+/// The maximum line length for output.
+///
+/// If the test runner isn't attached to a terminal, defaults to 80 columns.
+final int _lineLength = () {
+ try {
+ return stdout.terminalColumns;
+ } on StdoutException {
+ return 80;
+ }
+}();
+
+/// Wraps [text] so that it fits within [_lineLength], if there is a line length.
+///
+/// This preserves existing newlines and only splits words on spaces, not on
+/// other sorts of whitespace or separators.
+///
+/// If [prefix] is passed, it's added at the beginning of any wrapped lines.
+String wordWrap(String text, {String prefix}) {
+ prefix ??= '';
+
+ var buffer = StringBuffer();
+ var originalLines = text.split('\n');
+ var lengthSoFar = 0;
+ var needsNewline = false;
+ var needsSpace = false;
+
+ for (var i = 0; i < originalLines.length; i++) {
+ var originalLine = originalLines[i];
+ for (var word in originalLine.split(' ')) {
+ // If this word would push us over, split before it.
+ if (lengthSoFar + 1 + word.length > _lineLength) needsNewline = true;
+
+ if (needsNewline) {
+ buffer.writeln();
+ buffer.write(prefix);
+ lengthSoFar = prefix.length;
+ needsSpace = false;
+ } else if (needsSpace) {
+ buffer.write(' ');
+ lengthSoFar++;
+ }
+
+ buffer.write(word);
+ lengthSoFar += word.length;
+
+ // If the single word fills the entire line, we need to wrap after it too.
+ needsNewline = lengthSoFar > _lineLength;
+ needsSpace = !needsNewline;
+ }
+
+ if (needsNewline) buffer.writeln();
+ needsNewline = true;
+ }
+
+ return buffer.toString();
+}
diff --git a/pkg/test_runner/lib/src/test_suite.dart b/pkg/test_runner/lib/src/test_suite.dart
index 6ac30e0..c75180c 100644
--- a/pkg/test_runner/lib/src/test_suite.dart
+++ b/pkg/test_runner/lib/src/test_suite.dart
@@ -625,8 +625,8 @@
var vmOptionsList = getVmOptions(testFile);
assert(!vmOptionsList.isEmpty);
- bool emitDdsTest = false;
- for (int i = 0; i < 2; ++i) {
+ var emitDdsTest = false;
+ for (var i = 0; i < 2; ++i) {
for (var vmOptionsVariant = 0;
vmOptionsVariant < vmOptionsList.length;
vmOptionsVariant++) {
diff --git a/pkg/test_runner/lib/src/update_errors.dart b/pkg/test_runner/lib/src/update_errors.dart
index 83ab3b3..c7f2887 100644
--- a/pkg/test_runner/lib/src/update_errors.dart
+++ b/pkg/test_runner/lib/src/update_errors.dart
@@ -38,16 +38,18 @@
}
// Re-add errors for the portions we intend to preserve.
- var keepCode = !removeAnalyzer && error.code != null;
- var keepMessage = !removeCfe && error.message != null;
+ var keepAnalyzer = !removeAnalyzer && error.hasError(ErrorSource.analyzer);
+ var keepCfe = !removeCfe && error.hasError(ErrorSource.cfe);
- if (keepCode || keepMessage) {
- preservedErrors.add(StaticError(
- line: error.line,
- column: error.column,
- length: error.length,
- code: keepCode ? error.code : null,
- message: keepMessage ? error.message : null));
+ var keptErrors = {
+ if (keepAnalyzer)
+ ErrorSource.analyzer: error.errorFor(ErrorSource.analyzer),
+ if (keepCfe) ErrorSource.cfe: error.errorFor(ErrorSource.cfe),
+ };
+
+ if (keptErrors.isNotEmpty) {
+ preservedErrors.add(StaticError(keptErrors,
+ line: error.line, column: error.column, length: error.length));
}
}
@@ -113,13 +115,12 @@
result.add("$comment$spacing$carets");
}
- if (error.code != null) {
- result.add("$comment [analyzer] ${error.code}");
- }
+ for (var source in ErrorSource.all) {
+ var sourceError = error.errorFor(source);
+ if (sourceError == null) continue;
- if (error.message != null) {
- var errorLines = error.message.split("\n");
- result.add("$comment [cfe] ${errorLines[0]}");
+ var errorLines = sourceError.split("\n");
+ result.add("$comment [${source.marker}] ${errorLines[0]}");
for (var errorLine in errorLines.skip(1)) {
result.add("$comment $errorLine");
}
diff --git a/pkg/test_runner/test/static_error_test.dart b/pkg/test_runner/test/static_error_test.dart
index 000830b..711e69b 100644
--- a/pkg/test_runner/test/static_error_test.dart
+++ b/pkg/test_runner/test/static_error_test.dart
@@ -6,8 +6,11 @@
import 'package:test_runner/src/static_error.dart';
+import 'utils.dart';
+
void main() {
- testFlags();
+ testHasError();
+ testErrorFor();
testIsSpecifiedFor();
testCompareTo();
testDescribeDifferences();
@@ -15,119 +18,220 @@
testValidate();
}
-void testFlags() {
- var unspecified = StaticError(
+void testHasError() {
+ var analyzer =
+ makeError(line: 1, column: 2, length: 3, analyzerError: "E.CODE");
+ var cfe = makeError(line: 1, column: 2, length: 3, cfeError: "Error.");
+ var web = makeError(line: 1, column: 2, length: 3, webError: "Web.");
+ var all = makeError(
line: 1,
column: 2,
length: 3,
- code: "unspecified",
- message: "unspecified");
- var unspecifiedAnalyzer =
- StaticError(line: 1, column: 2, length: 3, code: "unspecified");
- var unspecifiedCfe =
- StaticError(line: 1, column: 2, length: 3, message: "unspecified");
- var noLength = StaticError(line: 1, column: 2, code: "E.CODE");
- var analyzer = StaticError(line: 1, column: 2, length: 3, code: "E.CODE");
- var cfe = StaticError(line: 1, column: 2, length: 3, message: "E.");
- var both =
- StaticError(line: 1, column: 2, length: 3, code: "E.CODE", message: "E.");
+ analyzerError: "E.CODE",
+ cfeError: "Error.",
+ webError: "Web.");
- // isAnalyzer.
- Expect.isTrue(unspecified.isAnalyzer);
- Expect.isTrue(unspecifiedAnalyzer.isAnalyzer);
- Expect.isFalse(unspecifiedCfe.isAnalyzer);
- Expect.isTrue(noLength.isAnalyzer);
- Expect.isTrue(analyzer.isAnalyzer);
- Expect.isFalse(cfe.isAnalyzer);
- Expect.isTrue(both.isAnalyzer);
+ Expect.isTrue(analyzer.hasError(ErrorSource.analyzer));
+ Expect.isFalse(analyzer.hasError(ErrorSource.cfe));
+ Expect.isFalse(analyzer.hasError(ErrorSource.web));
- // isCfe.
- Expect.isTrue(unspecified.isCfe);
- Expect.isFalse(unspecifiedAnalyzer.isCfe);
- Expect.isTrue(unspecifiedCfe.isCfe);
- Expect.isFalse(noLength.isCfe);
- Expect.isFalse(analyzer.isCfe);
- Expect.isTrue(cfe.isCfe);
- Expect.isTrue(both.isCfe);
+ Expect.isFalse(cfe.hasError(ErrorSource.analyzer));
+ Expect.isTrue(cfe.hasError(ErrorSource.cfe));
+ Expect.isFalse(cfe.hasError(ErrorSource.web));
+
+ Expect.isFalse(web.hasError(ErrorSource.analyzer));
+ Expect.isFalse(web.hasError(ErrorSource.cfe));
+ Expect.isTrue(web.hasError(ErrorSource.web));
+
+ Expect.isTrue(all.hasError(ErrorSource.analyzer));
+ Expect.isTrue(all.hasError(ErrorSource.cfe));
+ Expect.isTrue(all.hasError(ErrorSource.web));
+}
+
+void testErrorFor() {
+ var analyzer =
+ makeError(line: 1, column: 2, length: 3, analyzerError: "E.CODE");
+ var cfe = makeError(line: 1, column: 2, length: 3, cfeError: "Error.");
+ var web = makeError(line: 1, column: 2, length: 3, webError: "Web.");
+ var all = makeError(
+ line: 1,
+ column: 2,
+ length: 3,
+ analyzerError: "E.CODE",
+ cfeError: "Error.",
+ webError: "Web.");
+
+ Expect.equals("E.CODE", analyzer.errorFor(ErrorSource.analyzer));
+ Expect.isNull(analyzer.errorFor(ErrorSource.cfe));
+ Expect.isNull(analyzer.errorFor(ErrorSource.web));
+
+ Expect.isNull(cfe.errorFor(ErrorSource.analyzer));
+ Expect.equals("Error.", cfe.errorFor(ErrorSource.cfe));
+ Expect.isNull(cfe.errorFor(ErrorSource.web));
+
+ Expect.isNull(web.errorFor(ErrorSource.analyzer));
+ Expect.isNull(web.errorFor(ErrorSource.cfe));
+ Expect.equals("Web.", web.errorFor(ErrorSource.web));
+
+ Expect.equals("E.CODE", all.errorFor(ErrorSource.analyzer));
+ Expect.equals("Error.", all.errorFor(ErrorSource.cfe));
+ Expect.equals("Web.", all.errorFor(ErrorSource.web));
}
void testIsSpecifiedFor() {
- var specifiedBoth = StaticError(
- line: 1, column: 2, length: 3, code: "ERR.CODE", message: "Message.");
- var unspecifiedBoth = StaticError(
+ var specifiedAll = makeError(
line: 1,
column: 2,
length: 3,
- code: "unspecified",
- message: "unspecified");
- var specifiedAnalyzer = StaticError(
- line: 1, column: 2, length: 3, code: "ERR.CODE", message: "unspecified");
- var specifiedCfe = StaticError(
- line: 1, column: 2, length: 3, code: "unspecified", message: "Message.");
+ analyzerError: "ERR.CODE",
+ cfeError: "Message.",
+ webError: "Web.");
+ var unspecifiedAll = makeError(
+ line: 1,
+ column: 2,
+ length: 3,
+ analyzerError: "unspecified",
+ cfeError: "unspecified",
+ webError: "unspecified");
+ var specifiedAnalyzer = makeError(
+ line: 1,
+ column: 2,
+ length: 3,
+ analyzerError: "ERR.CODE",
+ cfeError: "unspecified",
+ webError: "unspecified");
+ var specifiedCfe = makeError(
+ line: 1,
+ column: 2,
+ length: 3,
+ analyzerError: "unspecified",
+ cfeError: "Message.",
+ webError: "unspecified");
+ var specifiedWeb = makeError(
+ line: 1,
+ column: 2,
+ length: 3,
+ analyzerError: "unspecified",
+ cfeError: "unspecified",
+ webError: "Web.");
var specifiedAnalyzerOnly =
- StaticError(line: 1, column: 2, length: 3, code: "ERR.CODE");
+ makeError(line: 1, column: 2, length: 3, analyzerError: "ERR.CODE");
var specifiedCfeOnly =
- StaticError(line: 1, column: 2, length: 3, message: "Message.");
+ makeError(line: 1, column: 2, length: 3, cfeError: "Message.");
+ var specifiedWebOnly =
+ makeError(line: 1, column: 2, length: 3, webError: "Web.");
var unspecifiedAnalyzerOnly =
- StaticError(line: 1, column: 2, length: 3, code: "unspecified");
+ makeError(line: 1, column: 2, length: 3, analyzerError: "unspecified");
var unspecifiedCfeOnly =
- StaticError(line: 1, column: 2, length: 3, message: "unspecified");
+ makeError(line: 1, column: 2, length: 3, cfeError: "unspecified");
+ var unspecifiedWebOnly =
+ makeError(line: 1, column: 2, length: 3, webError: "unspecified");
- var analyzer = StaticError(line: 1, column: 2, length: 3, code: "E.CODE");
- var cfe = StaticError(line: 1, column: 2, length: 3, message: "E.");
+ var analyzer =
+ makeError(line: 1, column: 2, length: 3, analyzerError: "E.CODE");
+ var cfe = makeError(line: 1, column: 2, length: 3, cfeError: "E.");
+ var web = makeError(line: 1, column: 2, length: 3, webError: "E.");
// isSpecifiedFor().
- Expect.isTrue(specifiedBoth.isSpecifiedFor(analyzer));
- Expect.isTrue(specifiedBoth.isSpecifiedFor(cfe));
+ Expect.isTrue(specifiedAll.isSpecifiedFor(analyzer));
+ Expect.isTrue(specifiedAll.isSpecifiedFor(cfe));
+ Expect.isTrue(specifiedAll.isSpecifiedFor(web));
- Expect.isFalse(unspecifiedBoth.isSpecifiedFor(analyzer));
- Expect.isFalse(unspecifiedBoth.isSpecifiedFor(cfe));
+ Expect.isFalse(unspecifiedAll.isSpecifiedFor(analyzer));
+ Expect.isFalse(unspecifiedAll.isSpecifiedFor(cfe));
+ Expect.isFalse(unspecifiedAll.isSpecifiedFor(web));
Expect.isTrue(specifiedAnalyzer.isSpecifiedFor(analyzer));
Expect.isFalse(specifiedAnalyzer.isSpecifiedFor(cfe));
+ Expect.isFalse(specifiedAnalyzer.isSpecifiedFor(web));
Expect.isFalse(specifiedCfe.isSpecifiedFor(analyzer));
Expect.isTrue(specifiedCfe.isSpecifiedFor(cfe));
+ Expect.isFalse(specifiedCfe.isSpecifiedFor(web));
+
+ Expect.isFalse(specifiedWeb.isSpecifiedFor(analyzer));
+ Expect.isFalse(specifiedWeb.isSpecifiedFor(cfe));
+ Expect.isTrue(specifiedWeb.isSpecifiedFor(web));
Expect.isTrue(specifiedAnalyzerOnly.isSpecifiedFor(analyzer));
Expect.isFalse(specifiedAnalyzerOnly.isSpecifiedFor(cfe));
+ Expect.isFalse(specifiedAnalyzerOnly.isSpecifiedFor(web));
Expect.isFalse(specifiedCfeOnly.isSpecifiedFor(analyzer));
Expect.isTrue(specifiedCfeOnly.isSpecifiedFor(cfe));
+ Expect.isFalse(specifiedCfeOnly.isSpecifiedFor(web));
+
+ Expect.isFalse(specifiedWebOnly.isSpecifiedFor(analyzer));
+ Expect.isFalse(specifiedWebOnly.isSpecifiedFor(cfe));
+ Expect.isTrue(specifiedWebOnly.isSpecifiedFor(web));
Expect.isFalse(unspecifiedAnalyzerOnly.isSpecifiedFor(analyzer));
Expect.isFalse(unspecifiedAnalyzerOnly.isSpecifiedFor(cfe));
+ Expect.isFalse(unspecifiedAnalyzerOnly.isSpecifiedFor(web));
Expect.isFalse(unspecifiedCfeOnly.isSpecifiedFor(analyzer));
Expect.isFalse(unspecifiedCfeOnly.isSpecifiedFor(cfe));
+ Expect.isFalse(unspecifiedCfeOnly.isSpecifiedFor(web));
+
+ Expect.isFalse(unspecifiedWebOnly.isSpecifiedFor(analyzer));
+ Expect.isFalse(unspecifiedWebOnly.isSpecifiedFor(cfe));
+ Expect.isFalse(unspecifiedWebOnly.isSpecifiedFor(web));
}
void testCompareTo() {
var errors = [
// Order by line.
- StaticError(line: 1, column: 2, length: 2, code: "E.CODE", message: "E."),
- StaticError(line: 2, column: 1, length: 1, code: "E.CODE", message: "E."),
+ makeError(
+ line: 1, column: 2, length: 2, analyzerError: "E.CODE", cfeError: "E."),
+ makeError(
+ line: 2, column: 1, length: 1, analyzerError: "E.CODE", cfeError: "E."),
// Then column.
- StaticError(line: 3, column: 1, length: 2, code: "E.CODE", message: "E."),
- StaticError(
- line: 3, column: 2, length: 1, code: "Error.CODE", message: "E."),
+ makeError(
+ line: 3, column: 1, length: 2, analyzerError: "E.CODE", cfeError: "E."),
+ makeError(
+ line: 3,
+ column: 2,
+ length: 1,
+ analyzerError: "Error.CODE",
+ cfeError: "E."),
// Then length.
- StaticError(line: 4, column: 1, length: 1, code: "Z.CODE", message: "Z."),
- StaticError(line: 4, column: 1, length: 2, code: "A.CODE", message: "A."),
+ makeError(
+ line: 4, column: 1, length: 1, analyzerError: "Z.CODE", cfeError: "Z."),
+ makeError(
+ line: 4, column: 1, length: 2, analyzerError: "A.CODE", cfeError: "A."),
- // Then code.
- StaticError(line: 5, column: 1, length: 1, message: "Z."),
- StaticError(line: 5, column: 1, length: 1, code: "A.CODE", message: "Z."),
- StaticError(line: 5, column: 1, length: 1, code: "Z.CODE", message: "Z."),
+ // Then analyzer error.
+ makeError(line: 5, column: 1, length: 1, cfeError: "Z."),
+ makeError(
+ line: 5, column: 1, length: 1, analyzerError: "A.CODE", cfeError: "Z."),
+ makeError(
+ line: 5, column: 1, length: 1, analyzerError: "Z.CODE", cfeError: "Z."),
- // Then message.
- StaticError(line: 6, column: 1, length: 1, code: "E.CODE"),
- StaticError(line: 6, column: 1, length: 1, code: "E.CODE", message: "A."),
- StaticError(line: 6, column: 1, length: 1, code: "E.CODE", message: "Z."),
+ // Then CFE error.
+ makeError(line: 6, column: 1, length: 1, analyzerError: "E.CODE"),
+ makeError(
+ line: 6,
+ column: 1,
+ length: 1,
+ analyzerError: "E.CODE",
+ cfeError: "A.",
+ webError: "Z."),
+ makeError(
+ line: 6,
+ column: 1,
+ length: 1,
+ analyzerError: "E.CODE",
+ cfeError: "Z.",
+ webError: "A."),
+
+ // Then web error.
+ makeError(line: 7, column: 1, length: 1, cfeError: "E."),
+ makeError(line: 7, column: 1, length: 1, cfeError: "E.", webError: "A."),
+ makeError(line: 7, column: 1, length: 1, cfeError: "E.", webError: "Z."),
];
// Every pair of errors in the array should be ordered correctly.
@@ -141,318 +245,316 @@
}
void testDescribeDifferences() {
- var precise = StaticError(
+ var precise = makeError(
line: 2,
column: 3,
length: 4,
- code: "Error.CODE",
- message: "Error message.");
+ analyzerError: "Error.CODE",
+ cfeError: "Error message.",
+ webError: "Web error.");
// Perfect match.
- expectNoDifferences(
- precise,
- StaticError(
- line: 2,
- column: 3,
- length: 4,
- code: "Error.CODE",
- message: "Error message."));
+ expectNoDifferences(precise,
+ makeError(line: 2, column: 3, length: 4, analyzerError: "Error.CODE"));
+ expectNoDifferences(precise,
+ makeError(line: 2, column: 3, length: 4, cfeError: "Error message."));
+ expectNoDifferences(precise,
+ makeError(line: 2, column: 3, length: 4, webError: "Web error."));
- // Ignore null code.
+ // Ignore null analyzer error.
expectNoDifferences(
- StaticError(line: 2, column: 3, length: 4, message: "Error message."),
- StaticError(
+ makeError(
line: 2,
column: 3,
length: 4,
- code: "Error.CODE",
- message: "Error message."));
- expectNoDifferences(
- StaticError(
- line: 2,
- column: 3,
- length: 4,
- code: "Error.CODE",
- message: "Error message."),
- StaticError(line: 2, column: 3, length: 4, message: "Error message."));
+ cfeError: "Error message.",
+ webError: "Web error."),
+ makeError(line: 2, column: 3, length: 4, cfeError: "Error message."));
- // Ignore null message.
+ // Ignore null CFE error.
expectNoDifferences(
- StaticError(line: 2, column: 3, length: 4, code: "Error.CODE"),
- StaticError(
+ makeError(
line: 2,
column: 3,
length: 4,
- code: "Error.CODE",
- message: "Error message."));
+ analyzerError: "Error.CODE",
+ webError: "Web error."),
+ makeError(line: 2, column: 3, length: 4, analyzerError: "Error.CODE"));
+
+ // Ignore null web error.
expectNoDifferences(
- StaticError(
+ makeError(
line: 2,
column: 3,
length: 4,
- code: "Error.CODE",
- message: "Error message."),
- StaticError(line: 2, column: 3, length: 4, code: "Error.CODE"));
+ analyzerError: "Error.CODE",
+ cfeError: "Error message."),
+ makeError(line: 2, column: 3, length: 4, cfeError: "Error message."));
// Different line.
- expectDifferences(
- precise,
- StaticError(
- line: 4,
- column: 3,
- length: 4,
- code: "Error.CODE",
- message: "Error message."),
- """
+ expectDifferences(precise,
+ makeError(line: 4, column: 3, length: 4, analyzerError: "Error.CODE"), """
Expected on line 2 but was on 4.
""");
// Different column.
- expectDifferences(
- precise,
- StaticError(
- line: 2,
- column: 5,
- length: 4,
- code: "Error.CODE",
- message: "Error message."),
- """
+ expectDifferences(precise,
+ makeError(line: 2, column: 5, length: 4, cfeError: "Error message."), """
Expected on column 3 but was on 5.
""");
// Different length.
- expectDifferences(
- precise,
- StaticError(
- line: 2,
- column: 3,
- length: 6,
- code: "Error.CODE",
- message: "Error message."),
- """
+ expectDifferences(precise,
+ makeError(line: 2, column: 3, length: 6, webError: "Web error."), """
Expected length 4 but was 6.
""");
- // Different code.
+ // Different analyzer error.
expectDifferences(
precise,
- StaticError(
- line: 2,
- column: 3,
- length: 4,
- code: "Weird.ERROR",
- message: "Error message."),
+ makeError(line: 2, column: 3, length: 4, analyzerError: "Weird.ERROR"),
"""
- Expected error code Error.CODE but was Weird.ERROR.
+ Expected analyzer error 'Error.CODE' but was 'Weird.ERROR'.
""");
- // Different message.
- expectDifferences(
- precise,
- StaticError(
- line: 2,
- column: 3,
- length: 4,
- code: "Error.CODE",
- message: "Funny story."),
- """
- Expected error message 'Error message.' but was 'Funny story.'.
+ // Different CFE error.
+ expectDifferences(precise,
+ makeError(line: 2, column: 3, length: 4, cfeError: "Funny story."), """
+ Expected CFE error 'Error message.' but was 'Funny story.'.
+ """);
+
+ // Different web error.
+ expectDifferences(precise,
+ makeError(line: 2, column: 3, length: 4, webError: "Funny story."), """
+ Expected web error 'Web error.' but was 'Funny story.'.
""");
// Multiple differences.
expectDifferences(
precise,
- StaticError(
- line: 4,
- column: 3,
- length: 6,
- code: "Weird.ERROR",
- message: "Error message."),
+ makeError(line: 4, column: 3, length: 6, analyzerError: "Weird.ERROR"),
"""
Expected on line 2 but was on 4.
Expected length 4 but was 6.
- Expected error code Error.CODE but was Weird.ERROR.
+ Expected analyzer error 'Error.CODE' but was 'Weird.ERROR'.
""");
// Unspecified errors.
- var unspecified = StaticError(
+ var unspecified = makeError(
line: 2,
column: 3,
length: 4,
- code: "unspecified",
- message: "unspecified");
- var specifiedAnalyzer = StaticError(
+ analyzerError: "unspecified",
+ cfeError: "unspecified",
+ webError: "unspecified");
+ var specifiedAnalyzer = makeError(
line: 2,
column: 3,
length: 4,
- code: "Error.CODE",
- message: "unspecified");
- var specifiedCfe = StaticError(
+ analyzerError: "Error.CODE",
+ cfeError: "unspecified",
+ webError: "unspecified");
+ var specifiedCfe = makeError(
line: 2,
column: 3,
length: 4,
- code: "unspecified",
- message: "Error message.");
+ analyzerError: "unspecified",
+ cfeError: "Error message.",
+ webError: "unspecified");
+ var specifiedWeb = makeError(
+ line: 2,
+ column: 3,
+ length: 4,
+ analyzerError: "unspecified",
+ cfeError: "unspecified",
+ webError: "Web error.");
// Matches if line is right.
- expectNoDifferences(
- unspecified,
- StaticError(
- line: 2,
- column: 3,
- length: 4,
- code: "Error.CODE",
- message: "Error message."));
+ expectNoDifferences(unspecified,
+ makeError(line: 2, column: 3, length: 4, analyzerError: "Error.CODE"));
// Does not match if lines differ.
- expectDifferences(
- unspecified,
- StaticError(
- line: 3,
- column: 3,
- length: 4,
- code: "Weird.ERROR",
- message: "Error message."),
- """
+ expectDifferences(unspecified,
+ makeError(line: 3, column: 3, length: 4, cfeError: "Error message."), """
Expected on line 2 but was on 3.
""");
- // Ignores differences in other fields.
- expectNoDifferences(
- unspecified,
- StaticError(
- line: 2,
- column: 333,
- length: 4444,
- code: "Different.CODE",
- message: "Different message."));
-
// If error is specified on analyzer, must match fields when actual is
// analyzer error.
- expectDifferences(specifiedAnalyzer,
- StaticError(line: 2, column: 5, length: 6, code: "Weird.ERROR"), """
+ expectDifferences(
+ specifiedAnalyzer,
+ makeError(line: 2, column: 5, length: 6, analyzerError: "Weird.ERROR"),
+ """
Expected on column 3 but was on 5.
Expected length 4 but was 6.
- Expected error code Error.CODE but was Weird.ERROR.
+ Expected analyzer error 'Error.CODE' but was 'Weird.ERROR'.
""");
expectNoDifferences(specifiedAnalyzer,
- StaticError(line: 2, column: 333, length: 444, message: "Message."));
- expectNoDifferences(specifiedAnalyzer,
- StaticError(line: 2, column: 3, length: 4, code: "Error.CODE"));
+ makeError(line: 2, column: 3, length: 4, analyzerError: "Error.CODE"));
// If error is specified on CFE, must match fields when actual is
// CFE error.
expectDifferences(
specifiedCfe,
- StaticError(line: 2, column: 5, length: 6, message: "Different message."),
+ makeError(line: 2, column: 5, length: 6, cfeError: "Different message."),
"""
Expected on column 3 but was on 5.
Expected length 4 but was 6.
- Expected error message 'Error message.' but was 'Different message.'.
+ Expected CFE error 'Error message.' but was 'Different message.'.
""");
expectNoDifferences(specifiedCfe,
- StaticError(line: 2, column: 333, length: 444, code: "Error.CODE."));
- expectNoDifferences(specifiedCfe,
- StaticError(line: 2, column: 3, length: 4, message: "Error message."));
+ makeError(line: 2, column: 3, length: 4, cfeError: "Error message."));
+
+ // If error is specified on web, must match fields when actual is web error.
+ expectDifferences(
+ specifiedWeb,
+ makeError(line: 2, column: 5, length: 6, webError: "Different message."),
+ """
+ Expected on column 3 but was on 5.
+ Expected length 4 but was 6.
+ Expected web error 'Web error.' but was 'Different message.'.
+ """);
+ expectNoDifferences(specifiedWeb,
+ makeError(line: 2, column: 3, length: 4, webError: "Web error."));
}
void testSimplify() {
- // Merges errors if one has only a code and the only a message.
+ // Merges errors if each has only one error.
expectSimplify([
- StaticError(line: 1, column: 2, length: 3, code: "Weird.ERROR"),
- StaticError(line: 1, column: 2, length: 3, message: "Message.")
+ makeError(line: 1, column: 2, length: 3, analyzerError: "Weird.ERROR"),
+ makeError(line: 1, column: 2, length: 3, cfeError: "Message."),
+ makeError(line: 1, column: 2, length: 3, webError: "Web.")
], [
- StaticError(
- line: 1, column: 2, length: 3, code: "Weird.ERROR", message: "Message.")
+ makeError(
+ line: 1,
+ column: 2,
+ length: 3,
+ analyzerError: "Weird.ERROR",
+ cfeError: "Message.",
+ webError: "Web.")
]);
// Merges if length is null.
expectSimplify([
- StaticError(line: 1, column: 1, code: "A.ERR"),
- StaticError(line: 1, column: 1, length: 3, message: "A."),
- StaticError(line: 2, column: 1, length: 4, code: "B.ERR"),
- StaticError(line: 2, column: 1, message: "B."),
- StaticError(line: 3, column: 1, code: "C.ERR"),
- StaticError(line: 3, column: 1, message: "C."),
+ makeError(line: 1, column: 1, analyzerError: "A.ERR"),
+ makeError(line: 1, column: 1, length: 3, cfeError: "A."),
+ makeError(line: 2, column: 1, length: 4, analyzerError: "B.ERR"),
+ makeError(line: 2, column: 1, webError: "B."),
+ makeError(line: 3, column: 1, analyzerError: "C.ERR"),
+ makeError(line: 3, column: 1, cfeError: "C."),
], [
- StaticError(line: 1, column: 1, length: 3, code: "A.ERR", message: "A."),
- StaticError(line: 2, column: 1, length: 4, code: "B.ERR", message: "B."),
- StaticError(line: 3, column: 1, code: "C.ERR", message: "C."),
+ makeError(
+ line: 1, column: 1, length: 3, analyzerError: "A.ERR", cfeError: "A."),
+ makeError(
+ line: 2, column: 1, length: 4, analyzerError: "B.ERR", webError: "B."),
+ makeError(line: 3, column: 1, analyzerError: "C.ERR", cfeError: "C."),
]);
// Merges multiple errors with no length with errors that have length.
expectSimplify([
- StaticError(line: 1, column: 2, length: 3, code: "ERROR.A"),
- StaticError(line: 1, column: 4, length: 3, code: "ERROR.C"),
- StaticError(line: 1, column: 2, length: 5, code: "ERROR.B"),
- StaticError(line: 1, column: 2, message: "One."),
- StaticError(line: 1, column: 4, message: "Three."),
- StaticError(line: 1, column: 2, message: "Two."),
+ makeError(line: 1, column: 2, length: 3, analyzerError: "ERROR.A"),
+ makeError(line: 1, column: 4, length: 3, analyzerError: "ERROR.C"),
+ makeError(line: 1, column: 2, length: 5, analyzerError: "ERROR.B"),
+ makeError(line: 1, column: 2, cfeError: "One."),
+ makeError(line: 1, column: 4, cfeError: "Three."),
+ makeError(line: 1, column: 2, cfeError: "Two."),
+ makeError(line: 1, column: 2, webError: "Web 1."),
+ makeError(line: 1, column: 2, webError: "Web 2."),
], [
- StaticError(
- line: 1, column: 2, length: 3, code: "ERROR.A", message: "One."),
- StaticError(
- line: 1, column: 2, length: 5, code: "ERROR.B", message: "Two."),
- StaticError(
- line: 1, column: 4, length: 3, code: "ERROR.C", message: "Three."),
+ makeError(
+ line: 1,
+ column: 2,
+ length: 3,
+ analyzerError: "ERROR.A",
+ cfeError: "One.",
+ webError: "Web 1."),
+ makeError(
+ line: 1,
+ column: 2,
+ length: 5,
+ analyzerError: "ERROR.B",
+ cfeError: "Two.",
+ webError: "Web 2."),
+ makeError(
+ line: 1,
+ column: 4,
+ length: 3,
+ analyzerError: "ERROR.C",
+ cfeError: "Three."),
]);
// Merges even if not adjacent in input array.
expectSimplify([
- StaticError(line: 1, column: 2, length: 3, code: "Some.ERROR"),
- StaticError(line: 10, column: 2, length: 3, code: "Other.ERROR"),
- StaticError(line: 1, column: 2, length: 3, message: "Message.")
+ makeError(line: 1, column: 2, length: 3, analyzerError: "Some.ERROR"),
+ makeError(line: 10, column: 2, length: 3, analyzerError: "Other.ERROR"),
+ makeError(line: 1, column: 2, length: 3, cfeError: "Message."),
+ makeError(line: 10, column: 2, length: 3, webError: "Web two."),
+ makeError(line: 1, column: 2, length: 3, webError: "Web."),
], [
- StaticError(
- line: 1, column: 2, length: 3, code: "Some.ERROR", message: "Message."),
- StaticError(line: 10, column: 2, length: 3, code: "Other.ERROR")
+ makeError(
+ line: 1,
+ column: 2,
+ length: 3,
+ analyzerError: "Some.ERROR",
+ cfeError: "Message.",
+ webError: "Web."),
+ makeError(
+ line: 10,
+ column: 2,
+ length: 3,
+ analyzerError: "Other.ERROR",
+ webError: "Web two.")
]);
// Does not merge if positions differ.
expectSimplify([
- StaticError(line: 1, column: 1, length: 1, code: "A.ERR"),
- StaticError(line: 2, column: 1, length: 1, message: "A."),
+ makeError(line: 1, column: 1, length: 1, analyzerError: "A.ERR"),
+ makeError(line: 2, column: 1, length: 1, cfeError: "A."),
], [
- StaticError(line: 1, column: 1, length: 1, code: "A.ERR"),
- StaticError(line: 2, column: 1, length: 1, message: "A."),
+ makeError(line: 1, column: 1, length: 1, analyzerError: "A.ERR"),
+ makeError(line: 2, column: 1, length: 1, cfeError: "A."),
]);
expectSimplify([
- StaticError(line: 1, column: 1, length: 1, code: "A.ERR"),
- StaticError(line: 1, column: 2, length: 1, message: "A."),
+ makeError(line: 1, column: 1, length: 1, analyzerError: "A.ERR"),
+ makeError(line: 1, column: 2, length: 1, webError: "A."),
], [
- StaticError(line: 1, column: 1, length: 1, code: "A.ERR"),
- StaticError(line: 1, column: 2, length: 1, message: "A."),
+ makeError(line: 1, column: 1, length: 1, analyzerError: "A.ERR"),
+ makeError(line: 1, column: 2, length: 1, webError: "A."),
]);
expectSimplify([
- StaticError(line: 1, column: 1, length: 1, code: "A.ERR"),
- StaticError(line: 1, column: 1, length: 2, message: "A."),
+ makeError(line: 1, column: 1, length: 1, cfeError: "A."),
+ makeError(line: 1, column: 1, length: 2, webError: "W."),
], [
- StaticError(line: 1, column: 1, length: 1, code: "A.ERR"),
- StaticError(line: 1, column: 1, length: 2, message: "A."),
+ makeError(line: 1, column: 1, length: 1, cfeError: "A."),
+ makeError(line: 1, column: 1, length: 2, webError: "W."),
]);
- // Does not merge if it would lose code or message.
+ // Does not merge if it would lose a message.
expectSimplify([
- StaticError(line: 1, column: 1, length: 1, code: "ERR.ONE"),
- StaticError(line: 1, column: 1, length: 1, code: "ERR.TWO"),
- StaticError(line: 2, column: 1, length: 1, message: "One."),
- StaticError(line: 2, column: 1, length: 1, message: "Two."),
+ makeError(line: 1, column: 1, length: 1, analyzerError: "ERR.ONE"),
+ makeError(line: 1, column: 1, length: 1, analyzerError: "ERR.TWO"),
+ makeError(line: 2, column: 1, length: 1, cfeError: "One."),
+ makeError(line: 2, column: 1, length: 1, cfeError: "Two."),
+ makeError(line: 3, column: 1, length: 1, webError: "One."),
+ makeError(line: 3, column: 1, length: 1, webError: "Two."),
], [
- StaticError(line: 1, column: 1, length: 1, code: "ERR.ONE"),
- StaticError(line: 1, column: 1, length: 1, code: "ERR.TWO"),
- StaticError(line: 2, column: 1, length: 1, message: "One."),
- StaticError(line: 2, column: 1, length: 1, message: "Two."),
+ makeError(line: 1, column: 1, length: 1, analyzerError: "ERR.ONE"),
+ makeError(line: 1, column: 1, length: 1, analyzerError: "ERR.TWO"),
+ makeError(line: 2, column: 1, length: 1, cfeError: "One."),
+ makeError(line: 2, column: 1, length: 1, cfeError: "Two."),
+ makeError(line: 3, column: 1, length: 1, webError: "One."),
+ makeError(line: 3, column: 1, length: 1, webError: "Two."),
]);
// Orders output.
expectSimplify([
- StaticError(line: 2, column: 1, length: 1, message: "Two."),
- StaticError(line: 3, column: 1, length: 1, message: "Three."),
- StaticError(line: 1, column: 1, length: 1, message: "One."),
+ makeError(line: 2, column: 1, length: 1, cfeError: "Two."),
+ makeError(line: 3, column: 1, length: 1, cfeError: "Three."),
+ makeError(line: 1, column: 1, length: 1, cfeError: "One."),
], [
- StaticError(line: 1, column: 1, length: 1, message: "One."),
- StaticError(line: 2, column: 1, length: 1, message: "Two."),
- StaticError(line: 3, column: 1, length: 1, message: "Three."),
+ makeError(line: 1, column: 1, length: 1, cfeError: "One."),
+ makeError(line: 2, column: 1, length: 1, cfeError: "Two."),
+ makeError(line: 3, column: 1, length: 1, cfeError: "Three."),
]);
}
@@ -462,38 +564,72 @@
// Same errors.
expectValidate([
- StaticError(line: 1, column: 2, length: 3, code: "ERR.A", message: "One."),
- StaticError(line: 2, column: 2, length: 3, code: "ERR.B", message: "Two."),
- StaticError(line: 3, column: 2, length: 3, code: "ERR.C", message: "Tres."),
+ makeError(
+ line: 1,
+ column: 2,
+ length: 3,
+ analyzerError: "ERR.A",
+ cfeError: "One.",
+ webError: "Web 1."),
+ makeError(
+ line: 2,
+ column: 2,
+ length: 3,
+ analyzerError: "ERR.B",
+ cfeError: "Two.",
+ webError: "Web 2."),
+ makeError(
+ line: 3,
+ column: 2,
+ length: 3,
+ analyzerError: "ERR.C",
+ cfeError: "Tres.",
+ webError: "Web 3."),
], [
// Order doesn't matter.
- StaticError(line: 3, column: 2, length: 3, code: "ERR.C", message: "Tres."),
- StaticError(line: 1, column: 2, length: 3, code: "ERR.A", message: "One."),
- StaticError(line: 2, column: 2, length: 3, code: "ERR.B", message: "Two."),
+ makeError(line: 3, column: 2, length: 3, analyzerError: "ERR.C"),
+ makeError(line: 1, column: 2, length: 3, analyzerError: "ERR.A"),
+ makeError(line: 2, column: 2, length: 3, analyzerError: "ERR.B"),
], null);
// Ignore fields that aren't in actual errors.
expectValidate([
- StaticError(line: 1, column: 2, length: 3, code: "ERR.A", message: "One."),
- StaticError(line: 2, column: 2, length: 3, code: "ERR.B", message: "Two."),
- StaticError(line: 3, column: 2, length: 3, code: "ERR.C", message: "Tres."),
+ makeError(
+ line: 1,
+ column: 2,
+ length: 3,
+ analyzerError: "ERR.A",
+ cfeError: "One.",
+ webError: "Web 1."),
+ makeError(
+ line: 2,
+ column: 2,
+ length: 3,
+ analyzerError: "ERR.B",
+ cfeError: "Two.",
+ webError: "Web 2."),
+ makeError(
+ line: 3,
+ column: 2,
+ length: 3,
+ analyzerError: "ERR.C",
+ cfeError: "Tres.",
+ webError: "Web 3."),
], [
- StaticError(line: 1, column: 2, code: "ERR.A", message: "One."),
- StaticError(line: 2, column: 2, length: 3, message: "Two."),
- StaticError(line: 3, column: 2, length: 3, code: "ERR.C"),
+ makeError(line: 1, column: 2, cfeError: "One."),
+ makeError(line: 2, column: 2, length: 3, cfeError: "Two."),
+ makeError(line: 3, column: 2, length: 3, cfeError: "Tres."),
], null);
// Catches differences in any field.
expectValidate([
- StaticError(line: 1, column: 2, length: 3, code: "ERR.A", message: "One."),
- StaticError(line: 2, column: 2, length: 3, code: "ERR.B", message: "Two."),
- StaticError(line: 3, column: 2, length: 3, code: "ERR.C", message: "Tres."),
- StaticError(line: 4, column: 2, length: 3, code: "ERR.D", message: "Four."),
+ makeError(line: 1, column: 2, length: 3, analyzerError: "ERR.A"),
+ makeError(line: 2, column: 2, length: 3, analyzerError: "ERR.B"),
+ makeError(line: 3, column: 2, length: 3, analyzerError: "ERR.C"),
], [
- StaticError(line: 1, column: 9, length: 3, code: "ERR.A", message: "One."),
- StaticError(line: 2, column: 2, length: 9, code: "ERR.B", message: "Two."),
- StaticError(line: 3, column: 2, length: 3, code: "ERR.Z", message: "Tres."),
- StaticError(line: 4, column: 2, length: 3, code: "ERR.D", message: "Zzz."),
+ makeError(line: 1, column: 9, length: 3, analyzerError: "ERR.A"),
+ makeError(line: 2, column: 2, length: 9, analyzerError: "ERR.B"),
+ makeError(line: 3, column: 2, length: 3, analyzerError: "ERR.Z"),
], """
Wrong static error at line 1, column 2, length 3:
- Expected on column 2 but was on 9.
@@ -502,229 +638,227 @@
- Expected length 3 but was 9.
Wrong static error at line 3, column 2, length 3:
-- Expected error code ERR.C but was ERR.Z.
+- Expected analyzer error 'ERR.C' but was 'ERR.Z'.""");
+ expectValidate([
+ makeError(line: 4, column: 2, length: 3, cfeError: "Four."),
+ ], [
+ makeError(line: 4, column: 2, length: 3, cfeError: "Zzz."),
+ ], """
Wrong static error at line 4, column 2, length 3:
-- Expected error message 'Four.' but was 'Zzz.'.""");
+- Expected CFE error 'Four.' but was 'Zzz.'.""");
+
+ expectValidate([
+ makeError(line: 5, column: 2, length: 3, webError: "Web 5."),
+ ], [
+ makeError(line: 5, column: 2, length: 3, webError: "Web Z."),
+ ], """
+Wrong static error at line 5, column 2, length 3:
+- Expected web error 'Web 5.' but was 'Web Z.'.""");
// Unexpected errors.
expectValidate([
- StaticError(line: 2, column: 2, length: 3, code: "ERR.A", message: "One."),
- StaticError(line: 4, column: 2, length: 3, code: "ERR.B", message: "Two."),
- StaticError(line: 6, column: 2, length: 3, code: "ERR.C", message: "Tres."),
+ makeError(
+ line: 2,
+ column: 2,
+ length: 3,
+ analyzerError: "ERR.A",
+ cfeError: "One."),
+ makeError(
+ line: 4,
+ column: 2,
+ length: 3,
+ analyzerError: "ERR.B",
+ cfeError: "Two.",
+ webError: "Web 2."),
+ makeError(
+ line: 6,
+ column: 2,
+ length: 3,
+ analyzerError: "ERR.C",
+ cfeError: "Tres."),
], [
- StaticError(line: 1, column: 2, length: 3, code: "ERR.W", message: "1."),
- StaticError(line: 2, column: 2, length: 3, code: "ERR.A", message: "One."),
- StaticError(line: 3, column: 2, length: 3, code: "ERR.X", message: "3."),
- StaticError(line: 4, column: 2, length: 3, code: "ERR.B", message: "Two."),
- StaticError(line: 5, column: 2, length: 3, code: "ERR.Y", message: "5."),
- StaticError(line: 6, column: 2, length: 3, code: "ERR.C", message: "Tres."),
- StaticError(line: 7, column: 2, length: 3, code: "ERR.Z", message: "7."),
+ makeError(line: 1, column: 2, length: 3, cfeError: "1."),
+ makeError(line: 2, column: 2, length: 3, cfeError: "One."),
+ makeError(line: 3, column: 2, length: 3, cfeError: "3."),
+ makeError(line: 4, column: 2, length: 3, cfeError: "Two."),
+ makeError(line: 5, column: 2, length: 3, cfeError: "5."),
+ makeError(line: 6, column: 2, length: 3, cfeError: "Tres."),
+ makeError(line: 7, column: 2, length: 3, cfeError: "7."),
], """
Unexpected static error at line 1, column 2, length 3:
-- Had error code ERR.W.
-- Had error message '1.'.
+- Had CFE error '1.'.
Unexpected static error at line 3, column 2, length 3:
-- Had error code ERR.X.
-- Had error message '3.'.
+- Had CFE error '3.'.
Unexpected static error at line 5, column 2, length 3:
-- Had error code ERR.Y.
-- Had error message '5.'.
+- Had CFE error '5.'.
Unexpected static error at line 7, column 2, length 3:
-- Had error code ERR.Z.
-- Had error message '7.'.""");
+- Had CFE error '7.'.""");
// Missing errors.
expectValidate([
- StaticError(line: 1, column: 2, length: 3, code: "ERR.A", message: "1."),
- StaticError(line: 2, column: 2, length: 3, code: "ERR.B", message: "2."),
- StaticError(line: 3, column: 2, length: 3, code: "ERR.C", message: "3."),
- StaticError(line: 4, column: 2, length: 3, code: "ERR.D", message: "4."),
- StaticError(line: 5, column: 2, length: 3, code: "ERR.E", message: "5."),
- StaticError(line: 6, column: 2, length: 3, code: "ERR.F", message: "6."),
- StaticError(line: 7, column: 2, length: 3, code: "ERR.G", message: "7."),
+ makeError(line: 1, column: 2, length: 3, analyzerError: "ERR.A"),
+ makeError(line: 2, column: 2, length: 3, analyzerError: "ERR.B"),
+ makeError(line: 3, column: 2, length: 3, analyzerError: "ERR.C"),
+ makeError(line: 4, column: 2, length: 3, analyzerError: "ERR.D"),
+ makeError(line: 5, column: 2, length: 3, analyzerError: "ERR.E"),
], [
- StaticError(line: 2, column: 2, length: 3, code: "ERR.B", message: "2."),
- StaticError(line: 4, column: 2, length: 3, code: "ERR.D", message: "4."),
- StaticError(line: 6, column: 2, length: 3, code: "ERR.F", message: "6."),
+ makeError(line: 2, column: 2, length: 3, analyzerError: "ERR.B"),
+ makeError(line: 4, column: 2, length: 3, analyzerError: "ERR.D"),
], """
Missing static error at line 1, column 2, length 3:
-- Expected error code ERR.A.
-- Expected error message '1.'.
+- Expected analyzer error 'ERR.A'.
Missing static error at line 3, column 2, length 3:
-- Expected error code ERR.C.
-- Expected error message '3.'.
+- Expected analyzer error 'ERR.C'.
Missing static error at line 5, column 2, length 3:
-- Expected error code ERR.E.
-- Expected error message '5.'.
-
-Missing static error at line 7, column 2, length 3:
-- Expected error code ERR.G.
-- Expected error message '7.'.""");
+- Expected analyzer error 'ERR.E'.""");
// Unspecified errors.
expectValidate([
// Missing.
- StaticError(line: 1, column: 2, length: 3, code: "unspecified"),
- StaticError(line: 2, column: 2, length: 3, message: "unspecified"),
- StaticError(
- line: 3,
- column: 2,
- length: 3,
- code: "unspecified",
- message: "unspecified"),
+ makeError(line: 2, column: 2, length: 3, cfeError: "unspecified"),
// Right.
- StaticError(line: 4, column: 2, length: 3, code: "unspecified"),
- StaticError(line: 5, column: 2, length: 3, message: "unspecified"),
- StaticError(
- line: 6,
- column: 2,
- length: 3,
- code: "unspecified",
- message: "unspecified"),
+ makeError(line: 6, column: 2, length: 3, cfeError: "unspecified"),
], [
- StaticError(line: 4, column: 2, length: 3, code: "ACT.UAL"),
- StaticError(line: 5, column: 2, length: 3, message: "Actual."),
- StaticError(
- line: 6, column: 2, length: 3, code: "ACT.UAL", message: "Actual."),
+ makeError(line: 6, column: 2, length: 3, cfeError: "Actual 1."),
// Unexpected.
- StaticError(line: 7, column: 9, length: 3, code: "ACT.UAL"),
+ makeError(line: 9, column: 9, length: 3, cfeError: "Actual 2."),
], """
-Missing static error at line 1, column 2, length 3:
-- Expected unspecified error code.
-
Missing static error at line 2, column 2, length 3:
-- Expected unspecified error message.
+- Expected unspecified CFE error.
-Missing static error at line 3, column 2, length 3:
-- Expected unspecified error code.
-- Expected unspecified error message.
-
-Unexpected static error at line 7, column 9, length 3:
-- Had error code ACT.UAL.""");
+Unexpected static error at line 9, column 9, length 3:
+- Had CFE error 'Actual 2.'.""");
// Unspecified errors can match multiple errors on the same line.
+ var actualAnalyzer = [
+ makeError(line: 1, column: 1, length: 3, analyzerError: "ERROR.CODE1"),
+ makeError(line: 1, column: 2, length: 3, analyzerError: "ERROR.CODE2"),
+ makeError(line: 1, column: 3, length: 3, analyzerError: "ERROR.CODE3"),
+ ];
- // Unspecified CFE-only error.
- expectValidate([
- StaticError(line: 2, column: 2, length: 3, message: "unspecified"),
- ], [
- StaticError(line: 2, column: 1, length: 3, message: "Actual 1."),
- StaticError(line: 2, column: 2, length: 3, message: "Actual 2."),
- StaticError(line: 2, column: 3, length: 3, message: "Actual 3."),
- ], null);
+ var actualCfe = [
+ makeError(line: 1, column: 1, length: 3, cfeError: "Actual 1."),
+ makeError(line: 1, column: 2, length: 3, cfeError: "Actual 2."),
+ makeError(line: 1, column: 3, length: 3, cfeError: "Actual 3."),
+ ];
- // Unspecified on both.
+ var actualWeb = [
+ makeError(line: 1, column: 1, length: 3, webError: "Web 1."),
+ makeError(line: 1, column: 2, length: 3, webError: "Web 2."),
+ makeError(line: 1, column: 3, length: 3, webError: "Web 3."),
+ ];
+
+ // Unspecified error specific to one front end.
expectValidate([
- StaticError(
- line: 2,
+ makeError(line: 1, column: 2, length: 3, analyzerError: "unspecified"),
+ ], actualAnalyzer, null);
+
+ expectValidate([
+ makeError(line: 1, column: 2, length: 3, cfeError: "unspecified"),
+ ], actualCfe, null);
+
+ expectValidate([
+ makeError(line: 1, column: 2, length: 3, webError: "unspecified"),
+ ], actualWeb, null);
+
+ // Unspecified error on multiple front ends.
+ expectValidate([
+ makeError(
+ line: 1,
column: 2,
length: 3,
- code: "unspecified",
- message: "unspecified"),
- ], [
- StaticError(line: 2, column: 1, length: 3, message: "Actual 1."),
- StaticError(line: 2, column: 2, length: 3, message: "Actual 2."),
- StaticError(line: 2, column: 3, length: 3, message: "Actual 3."),
- ], null);
+ analyzerError: "unspecified",
+ cfeError: "unspecified"),
+ ], actualAnalyzer, null);
- // Unspecified on CFE, specified on analyzer.
expectValidate([
- StaticError(
- line: 2,
+ makeError(
+ line: 1,
column: 2,
length: 3,
- code: "ERR.CODE",
- message: "unspecified"),
- ], [
- StaticError(line: 2, column: 1, length: 3, message: "Actual 1."),
- StaticError(line: 2, column: 2, length: 3, message: "Actual 2."),
- StaticError(line: 2, column: 3, length: 3, message: "Actual 3."),
- ], null);
+ cfeError: "unspecified",
+ webError: "unspecified"),
+ ], actualCfe, null);
- // Specified on CFE, unspecified on analyzer.
expectValidate([
- StaticError(
- line: 2,
+ makeError(
+ line: 1,
+ column: 2,
+ length: 3,
+ analyzerError: "unspecified",
+ webError: "unspecified"),
+ ], actualWeb, null);
+
+ expectValidate([
+ makeError(
+ line: 1,
+ column: 2,
+ length: 3,
+ analyzerError: "unspecified",
+ cfeError: "unspecified",
+ webError: "unspecified"),
+ ], actualAnalyzer, null);
+
+ // Specified on one, unspecified on another, no error at all on the third.
+ var specifiedAnalyzer = [
+ makeError(
+ line: 1,
column: 1,
length: 3,
- code: "unspecified",
- message: "Actual 1."),
- ], [
- // These are not matched.
- StaticError(line: 2, column: 1, length: 3, message: "Actual 1."),
- StaticError(line: 2, column: 2, length: 3, message: "Actual 2."),
- StaticError(line: 2, column: 3, length: 3, message: "Actual 3."),
- ], """
-Unexpected static error at line 2, column 2, length 3:
-- Had error message 'Actual 2.'.
+ analyzerError: "ERROR.CODE1",
+ cfeError: "unspecified")
+ ];
-Unexpected static error at line 2, column 3, length 3:
-- Had error message 'Actual 3.'.""");
-
- // Unspecified analyzer-only error.
- expectValidate([
- StaticError(line: 2, column: 1, length: 3, code: "unspecified"),
- ], [
- StaticError(line: 2, column: 1, length: 3, code: "ERR.CODE1"),
- StaticError(line: 2, column: 2, length: 3, code: "ERR.CODE2"),
- StaticError(line: 2, column: 3, length: 3, code: "ERR.CODE3"),
- ], null);
-
- // Unspecified on both.
- expectValidate([
- StaticError(
- line: 2,
+ var specifiedCfe = [
+ makeError(
+ line: 1,
column: 1,
length: 3,
- code: "unspecified",
- message: "unspecified"),
- ], [
- StaticError(line: 2, column: 1, length: 3, code: "ERR.CODE1"),
- StaticError(line: 2, column: 2, length: 3, code: "ERR.CODE2"),
- StaticError(line: 2, column: 3, length: 3, code: "ERR.CODE3"),
- ], null);
+ cfeError: "Actual 1.",
+ webError: "unspecified")
+ ];
- // Unspecified on analyzer, specified on CFE.
- expectValidate([
- StaticError(
- line: 2,
+ var specifiedWeb = [
+ makeError(
+ line: 1,
column: 1,
length: 3,
- code: "unspecified",
- message: "Message."),
- ], [
- StaticError(line: 2, column: 1, length: 3, code: "ERR.CODE1"),
- StaticError(line: 2, column: 2, length: 3, code: "ERR.CODE2"),
- StaticError(line: 2, column: 3, length: 3, code: "ERR.CODE3"),
- ], null);
+ analyzerError: "unspecified",
+ webError: "Web 1.")
+ ];
- // Specified on analyzer, unspecified on CFE.
- expectValidate([
- StaticError(
- line: 2,
- column: 1,
- length: 3,
- code: "ERR.CODE1",
- message: "unspecified"),
- ], [
- // These are not matched.
- StaticError(line: 2, column: 1, length: 3, code: "ERR.CODE1"),
- StaticError(line: 2, column: 2, length: 3, code: "ERR.CODE2"),
- StaticError(line: 2, column: 3, length: 3, code: "ERR.CODE3"),
- ], """
-Unexpected static error at line 2, column 2, length 3:
-- Had error code ERR.CODE2.
+ expectValidate(specifiedAnalyzer, actualCfe, null);
+ expectValidate(specifiedCfe, actualWeb, null);
+ expectValidate(specifiedWeb, actualAnalyzer, null);
-Unexpected static error at line 2, column 3, length 3:
-- Had error code ERR.CODE3.""");
+ expectValidate(specifiedAnalyzer, actualAnalyzer, """
+Unexpected static error at line 1, column 2, length 3:
+- Had analyzer error 'ERROR.CODE2'.
+
+Unexpected static error at line 1, column 3, length 3:
+- Had analyzer error 'ERROR.CODE3'.""");
+
+ expectValidate(specifiedCfe, actualCfe, """
+Unexpected static error at line 1, column 2, length 3:
+- Had CFE error 'Actual 2.'.
+
+Unexpected static error at line 1, column 3, length 3:
+- Had CFE error 'Actual 3.'.""");
+
+ expectValidate(specifiedWeb, actualWeb, """
+Unexpected static error at line 1, column 2, length 3:
+- Had web error 'Web 2.'.
+
+Unexpected static error at line 1, column 3, length 3:
+- Had web error 'Web 3.'.""");
}
void expectNoDifferences(StaticError expectedError, StaticError actualError) {
diff --git a/pkg/test_runner/test/test_file_test.dart b/pkg/test_runner/test/test_file_test.dart
index b2988d3..03c1227 100644
--- a/pkg/test_runner/test/test_file_test.dart
+++ b/pkg/test_runner/test/test_file_test.dart
@@ -298,24 +298,28 @@
/\/ ^^^
/\/ [analyzer] CompileTimeErrorCode.WRONG_TYPE
/\/ [cfe] Error: Can't assign a string to an int.
+/\/ [web] Web-specific error.
num j = "str";
/\/ ^^^^^
/\/ [analyzer] CompileTimeErrorCode.ALSO_WRONG_TYPE
/\/ [cfe] Error: Can't assign a string to a num.
+/\/ [web] Another web error.
""", [
- StaticError(
+ makeError(
line: 1,
column: 9,
length: 3,
- code: "CompileTimeErrorCode.WRONG_TYPE",
- message: "Error: Can't assign a string to an int."),
- StaticError(
- line: 6,
+ analyzerError: "CompileTimeErrorCode.WRONG_TYPE",
+ cfeError: "Error: Can't assign a string to an int.",
+ webError: "Web-specific error."),
+ makeError(
+ line: 7,
column: 9,
length: 5,
- code: "CompileTimeErrorCode.ALSO_WRONG_TYPE",
- message: "Error: Can't assign a string to a num.")
+ analyzerError: "CompileTimeErrorCode.ALSO_WRONG_TYPE",
+ cfeError: "Error: Can't assign a string to a num.",
+ webError: "Another web error.")
]);
// Explicit error location.
@@ -326,25 +330,27 @@
/\/ [ error line 23 , column 5 , length 78 ]
/\/ [analyzer] CompileTimeErrorCode.SECOND
/\/ [cfe] Second error.
+/\/ [web] Second web error.
/\/[error line 9,column 8,length 7]
/\/ [cfe] Third.
/\/[error line 10,column 9]
/\/ [cfe] No length.
""", [
- StaticError(
+ makeError(
line: 123,
column: 45,
length: 678,
- code: "CompileTimeErrorCode.FIRST",
- message: "First error."),
- StaticError(
+ analyzerError: "CompileTimeErrorCode.FIRST",
+ cfeError: "First error."),
+ makeError(
line: 23,
column: 5,
length: 78,
- code: "CompileTimeErrorCode.SECOND",
- message: "Second error."),
- StaticError(line: 9, column: 8, length: 7, message: "Third."),
- StaticError(line: 10, column: 9, message: "No length.")
+ analyzerError: "CompileTimeErrorCode.SECOND",
+ cfeError: "Second error.",
+ webError: "Second web error."),
+ makeError(line: 9, column: 8, length: 7, cfeError: "Third."),
+ makeError(line: 10, column: 9, cfeError: "No length.")
]);
// Multi-line error message.
@@ -355,15 +361,19 @@
/\/ [cfe] First line.
/\/Second line.
/\/ Third line.
+/\/ [web] Web first line.
+/\/Web second line.
+ /\/ Web third line.
/\/ The preceding blank line ends the message.
""", [
- StaticError(
+ makeError(
line: 1,
column: 9,
length: 3,
- code: "CompileTimeErrorCode.WRONG_TYPE",
- message: "First line.\nSecond line.\nThird line.")
+ analyzerError: "CompileTimeErrorCode.WRONG_TYPE",
+ cfeError: "First line.\nSecond line.\nThird line.",
+ webError: "Web first line.\nWeb second line.\nWeb third line.")
]);
// Multiple errors attached to same line.
@@ -377,9 +387,9 @@
/\/ ^^^^^^^
/\/ [cfe] Third error.
""", [
- StaticError(line: 2, column: 9, length: 3, message: "First error."),
- StaticError(line: 2, column: 7, length: 1, code: "ErrorCode.second"),
- StaticError(line: 2, column: 5, length: 7, message: "Third error."),
+ makeError(line: 2, column: 9, length: 3, cfeError: "First error."),
+ makeError(line: 2, column: 7, length: 1, analyzerError: "ErrorCode.second"),
+ makeError(line: 2, column: 5, length: 7, cfeError: "Third error."),
]);
// Unspecified errors.
@@ -388,6 +398,7 @@
/\/ ^^^
// [analyzer] unspecified
// [cfe] unspecified
+// [web] unspecified
int j = "s";
/\/ ^^^
// [analyzer] unspecified
@@ -402,27 +413,32 @@
int m = "s";
/\/ ^^^
// [cfe] unspecified
+int n = "s";
+/\/ ^^^
+// [web] unspecified
""", [
- StaticError(
+ makeError(
line: 1,
column: 8,
length: 3,
- code: "unspecified",
- message: "unspecified"),
- StaticError(
- line: 5,
+ analyzerError: "unspecified",
+ cfeError: "unspecified",
+ webError: "unspecified"),
+ makeError(
+ line: 6,
column: 8,
length: 3,
- code: "unspecified",
- message: "Message."),
- StaticError(
- line: 9,
+ analyzerError: "unspecified",
+ cfeError: "Message."),
+ makeError(
+ line: 10,
column: 8,
length: 3,
- code: "Error.CODE",
- message: "unspecified"),
- StaticError(line: 13, column: 8, length: 3, code: "unspecified"),
- StaticError(line: 16, column: 8, length: 3, message: "unspecified"),
+ analyzerError: "Error.CODE",
+ cfeError: "unspecified"),
+ makeError(line: 14, column: 8, length: 3, analyzerError: "unspecified"),
+ makeError(line: 17, column: 8, length: 3, cfeError: "unspecified"),
+ makeError(line: 20, column: 8, length: 3, webError: "unspecified"),
]);
// Ignore multitest markers.
@@ -435,16 +451,16 @@
/\/ [error line 12, column 34, length 56] /\/# 3: continued
/\/ [cfe] Message.
""", [
- StaticError(
+ makeError(
line: 1,
column: 9,
length: 3,
- code: "ErrorCode.BAD_THING",
- message: "Message.\nMore message."),
- StaticError(line: 12, column: 34, length: 56, message: "Message."),
+ analyzerError: "ErrorCode.BAD_THING",
+ cfeError: "Message.\nMore message."),
+ makeError(line: 12, column: 34, length: 56, cfeError: "Message."),
]);
- // Must have either a code or a message.
+ // Must have at least one error message.
expectFormatError("""
int i = "s";
/\/ ^^^
@@ -460,19 +476,38 @@
/\/ [cfe] This doesn't make sense.
""");
- // Location at end without code or message.
+ // Location at end without message.
expectFormatError("""
int i = "s";
/\/ ^^^
""");
- // Code cannot follow message.
+ // Must recognize the front end.
+ expectFormatError("""
+int i = "s";
+/\/ ^^^
+/\/ [wat] Error message.
+""");
+
+ // Front ends must be ordered.
expectFormatError("""
int i = "s";
/\/ ^^^
/\/ [cfe] Error message.
/\/ [analyzer] ErrorCode.BAD_THING
""");
+ expectFormatError("""
+int i = "s";
+/\/ ^^^
+/\/ [web] Error message.
+/\/ [analyzer] ErrorCode.BAD_THING
+""");
+ expectFormatError("""
+int i = "s";
+/\/ ^^^
+/\/ [web] Error message.
+/\/ [cfe] Error message
+""");
// Analyzer error must look like an error code.
expectFormatError("""
@@ -491,11 +526,47 @@
/\/ ^
/\/ [analyzer] Error.BAD
/\/ [cfe] Message.
+
+int j = "s";
+/\/ ^
+/\/ [cfe] Message.
+/\/ [web] Web message.
""", [
- StaticError(line: 1, column: 9, length: null, message: "Message."),
- StaticError(
- line: 5, column: 9, length: 1, code: "Error.BAD", message: "Message."),
+ makeError(line: 1, column: 9, length: null, cfeError: "Message."),
+ makeError(
+ line: 5,
+ column: 9,
+ length: 1,
+ analyzerError: "Error.BAD",
+ cfeError: "Message."),
+ makeError(
+ line: 10,
+ column: 9,
+ length: 1,
+ cfeError: "Message.",
+ webError: "Web message.",
+ ),
]);
+
+ // Cannot have the same front end more than once.
+ expectFormatError("""
+int i = "s";
+/\/ ^^^
+/\/ [analyzer] ErrorCode.BAD_THING
+/\/ [analyzer] ErrorCode.ANOTHER_THING
+""");
+ expectFormatError("""
+int i = "s";
+/\/ ^^^
+/\/ [cfe] Message 1.
+/\/ [cfe] Message 2.
+""");
+ expectFormatError("""
+int i = "s";
+/\/ ^^^
+/\/ [web] Web 1.
+/\/ [web] Web 2.
+""");
}
void testName() {
diff --git a/pkg/test_runner/test/update_errors_test.dart b/pkg/test_runner/test/update_errors_test.dart
index 9d07b9c..8d50b29 100644
--- a/pkg/test_runner/test/update_errors_test.dart
+++ b/pkg/test_runner/test/update_errors_test.dart
@@ -7,6 +7,8 @@
import 'package:test_runner/src/static_error.dart';
import 'package:test_runner/src/update_errors.dart';
+import 'utils.dart';
+
// Note: This test file validates how some of the special markers used by the
// test runner are parsed. But this test is also run *by* that same test
// runner, and we don't want it to see the markers inside the string literals
@@ -22,14 +24,14 @@
int third = "boo";
""", errors: [
- StaticError(line: 1, column: 9, length: 5, code: "some.error"),
- StaticError(line: 3, column: 15, length: 7, message: "Bad."),
- StaticError(
+ makeError(line: 1, column: 9, length: 5, analyzerError: "some.error"),
+ makeError(line: 3, column: 15, length: 7, cfeError: "Bad."),
+ makeError(
line: 5,
column: 13,
length: 5,
- code: "an.error",
- message: "Wrong.\nLine.\nAnother."),
+ analyzerError: "an.error",
+ cfeError: "Wrong.\nLine.\nAnother."),
], expected: """
int i = "bad";
/\/ ^^^^^
@@ -111,12 +113,12 @@
/\/ ^^
/\/ [analyzer] previous.error
""", errors: [
- StaticError(
+ makeError(
line: 1,
column: 9,
length: 5,
- code: "updated.error",
- message: "Long.\nError.\nMessage."),
+ analyzerError: "updated.error",
+ cfeError: "Long.\nError.\nMessage."),
], expected: """
int i = "bad";
/\/ ^^^^^
@@ -133,7 +135,7 @@
int i = "bad";
}
""", errors: [
- StaticError(line: 2, column: 11, length: 5, code: "updated.error"),
+ makeError(line: 2, column: 11, length: 5, analyzerError: "updated.error"),
], expected: """
main() {
int i = "bad";
@@ -153,8 +155,8 @@
"bad";
}
""", errors: [
- StaticError(line: 1, column: 9, length: 5, message: "Error."),
- StaticError(line: 7, column: 3, length: 5, code: "new.error"),
+ makeError(line: 1, column: 9, length: 5, cfeError: "Error."),
+ makeError(line: 7, column: 3, length: 5, analyzerError: "new.error"),
], expected: """
int i = "bad";
/\/ ^^^^^
@@ -178,8 +180,8 @@
int j =
"bad";
""", errors: [
- StaticError(line: 2, column: 1, length: 5, code: "updated.error"),
- StaticError(line: 7, column: 1, length: 5, message: "Error."),
+ makeError(line: 2, column: 1, length: 5, analyzerError: "updated.error"),
+ makeError(line: 7, column: 1, length: 5, cfeError: "Error."),
], expected: """
int i =
"bad";
@@ -195,7 +197,7 @@
// Uses length one if there's no length.
expectUpdate("""
int i = "bad";
-""", errors: [StaticError(line: 1, column: 9, message: "Error.")], expected: """
+""", errors: [makeError(line: 1, column: 9, cfeError: "Error.")], expected: """
int i = "bad";
/\/ ^
/\/ [cfe] Error.
@@ -205,7 +207,7 @@
expectUpdate("""
int i =
"bad";
-""", errors: [StaticError(line: 2, column: 1, message: "Error.")], expected: """
+""", errors: [makeError(line: 2, column: 1, cfeError: "Error.")], expected: """
int i =
"bad";
/\/ [error line 2, column 1]
@@ -223,8 +225,8 @@
}
Error here;
""", errors: [
- StaticError(line: 6, column: 1, length: 5, code: "NEW.ERROR"),
- StaticError(line: 6, column: 2, length: 3, message: "Error."),
+ makeError(line: 6, column: 1, length: 5, analyzerError: "NEW.ERROR"),
+ makeError(line: 6, column: 2, length: 3, cfeError: "Error."),
], expected: """
main() {
}
@@ -241,7 +243,7 @@
int i = "bad";
// Line comment.
""", errors: [
- StaticError(line: 1, column: 9, length: 5, message: "Wrong."),
+ makeError(line: 1, column: 9, length: 5, cfeError: "Wrong."),
], expected: """
int i = "bad";
/\/ ^^^^^
@@ -250,14 +252,29 @@
// Line comment.
""");
+ // Inserts a blank line if a subsequent line comment would become part of the
+ // error message.
+ expectUpdate("""
+int i = "bad";
+// Line comment.
+""", errors: [
+ makeError(line: 1, column: 9, length: 5, analyzerError: "ERR.CODE"),
+ ], expected: """
+int i = "bad";
+/\/ ^^^^^
+/\/ [analyzer] ERR.CODE
+
+// Line comment.
+""");
+
// Multiple errors on the same line are ordered by column then length.
expectUpdate("""
someBadCode();
""", errors: [
- StaticError(line: 1, column: 9, length: 5, message: "Wrong 1."),
- StaticError(line: 1, column: 9, length: 4, message: "Wrong 2."),
- StaticError(line: 1, column: 6, length: 3, message: "Wrong 3."),
- StaticError(line: 1, column: 5, length: 5, message: "Wrong 4."),
+ makeError(line: 1, column: 9, length: 5, cfeError: "Wrong 1."),
+ makeError(line: 1, column: 9, length: 4, cfeError: "Wrong 2."),
+ makeError(line: 1, column: 6, length: 3, cfeError: "Wrong 3."),
+ makeError(line: 1, column: 5, length: 5, cfeError: "Wrong 4."),
], expected: """
someBadCode();
/\/ ^^^^^
@@ -300,12 +317,15 @@
""",
removeAnalyzer: false,
errors: [
- StaticError(
- line: 6, column: 5, length: 14, message: "Setter not found: 'xx'."),
- StaticError(
+ makeError(
+ line: 6,
+ column: 5,
+ length: 14,
+ cfeError: "Setter not found: 'xx'."),
+ makeError(
line: 16,
column: 7,
- message: "The method 'call' isn't defined for the class 'int'.")
+ cfeError: "The method 'call' isn't defined for the class 'int'.")
],
expected: """
int get xx => 3;
diff --git a/pkg/test_runner/test/utils.dart b/pkg/test_runner/test/utils.dart
index e3ccc1b..e8a87be 100644
--- a/pkg/test_runner/test/utils.dart
+++ b/pkg/test_runner/test/utils.dart
@@ -4,6 +4,7 @@
import 'package:test_runner/src/configuration.dart';
import 'package:test_runner/src/options.dart';
import 'package:test_runner/src/path.dart';
+import 'package:test_runner/src/static_error.dart';
import 'package:test_runner/src/test_file.dart';
import 'package:test_runner/src/test_suite.dart';
@@ -24,6 +25,21 @@
TestConfiguration configuration, List<TestFile> testFiles) =>
_MockTestSuite(configuration, testFiles);
+StaticError makeError(
+ {int line,
+ int column,
+ int length,
+ String analyzerError,
+ String cfeError,
+ String webError}) {
+ var errors = {
+ if (analyzerError != null) ErrorSource.analyzer: analyzerError,
+ if (cfeError != null) ErrorSource.cfe: cfeError,
+ if (webError != null) ErrorSource.web: webError,
+ };
+ return StaticError(errors, line: line, column: column, length: length);
+}
+
class _MockTestSuite extends StandardTestSuite {
final List<TestFile> _testFiles;
diff --git a/pkg/vm/bin/kernel_service.dart b/pkg/vm/bin/kernel_service.dart
index a0bd437..82b2a4c 100644
--- a/pkg/vm/bin/kernel_service.dart
+++ b/pkg/vm/bin/kernel_service.dart
@@ -31,7 +31,6 @@
import 'package:front_end/src/api_prototype/experimental_flags.dart';
import 'package:front_end/src/api_prototype/front_end.dart' as fe
show CompilerResult;
-import 'package:front_end/src/api_prototype/language_version.dart';
import 'package:front_end/src/api_prototype/memory_file_system.dart';
import 'package:front_end/src/api_unstable/vm.dart';
import 'package:kernel/binary/ast_to_binary.dart';
@@ -46,7 +45,10 @@
import 'package:vm/bytecode/options.dart' show BytecodeOptions;
import 'package:vm/incremental_compiler.dart';
import 'package:vm/kernel_front_end.dart'
- show createLoadedLibrariesSet, runWithFrontEndCompilerContext;
+ show
+ autoDetectNullSafetyMode,
+ createLoadedLibrariesSet,
+ runWithFrontEndCompilerContext;
import 'package:vm/http_filesystem.dart';
import 'package:vm/target/vm.dart' show VmTarget;
import 'package:front_end/src/api_prototype/compiler_options.dart'
@@ -90,12 +92,6 @@
const int kNullSafetyOptionWeak = 1;
const int kNullSafetyOptionStrong = 2;
-Future<void> autoDetectNullSafetyMode(
- Uri script, CompilerOptions options) async {
- var isLegacy = await uriUsesLegacyLanguageVersion(script, options);
- options.nnbdMode = isLegacy ? NnbdMode.Weak : NnbdMode.Strong;
-}
-
abstract class Compiler {
final int isolateId;
final FileSystem fileSystem;
diff --git a/pkg/vm/lib/kernel_front_end.dart b/pkg/vm/lib/kernel_front_end.dart
index 834750e..dcff366 100644
--- a/pkg/vm/lib/kernel_front_end.dart
+++ b/pkg/vm/lib/kernel_front_end.dart
@@ -15,6 +15,9 @@
import 'package:crypto/crypto.dart';
+import 'package:front_end/src/api_prototype/language_version.dart'
+ show uriUsesLegacyLanguageVersion;
+
import 'package:front_end/src/api_unstable/vm.dart'
show
CompilerContext,
@@ -22,6 +25,7 @@
CompilerResult,
DiagnosticMessage,
DiagnosticMessageHandler,
+ ExperimentalFlag,
FileSystem,
FileSystemEntity,
FileSystemException,
@@ -110,7 +114,7 @@
args.addFlag('null-safety',
help:
'Respect the nullability of types at runtime in casts and instance checks.',
- defaultsTo: false);
+ defaultsTo: null);
args.addFlag('split-output-by-packages',
help:
'Split resulting kernel file into multiple files (one per package).',
@@ -200,12 +204,6 @@
aot: aot,
)..parseCommandLineFlags(options['bytecode-options']);
- final target = createFrontEndTarget(targetName, nullSafety: nullSafety);
- if (target == null) {
- print('Failed to create front-end target $targetName.');
- return badUsageExitCode;
- }
-
final fileSystem =
createFrontEndFileSystem(fileSystemScheme, fileSystemRoots);
@@ -227,19 +225,30 @@
final CompilerOptions compilerOptions = new CompilerOptions()
..sdkSummary = platformKernelUri
- ..target = target
..fileSystem = fileSystem
..additionalDills = additionalDills
..packagesFileUri = packagesUri
..experimentalFlags = parseExperimentalFlags(
parseExperimentalArguments(experimentalFlags),
onError: print)
- ..nnbdMode = nullSafety ? NnbdMode.Strong : NnbdMode.Weak
+ ..nnbdMode = (nullSafety == true) ? NnbdMode.Strong : NnbdMode.Weak
..onDiagnostic = (DiagnosticMessage m) {
errorDetector(m);
}
..embedSourceText = embedSources;
+ if (nullSafety == null &&
+ compilerOptions.experimentalFlags[ExperimentalFlag.nonNullable]) {
+ await autoDetectNullSafetyMode(mainUri, compilerOptions);
+ }
+
+ compilerOptions.target = createFrontEndTarget(targetName,
+ nullSafety: compilerOptions.nnbdMode == NnbdMode.Strong);
+ if (compilerOptions.target == null) {
+ print('Failed to create front-end target $targetName.');
+ return badUsageExitCode;
+ }
+
final results = await compileToKernel(mainUri, compilerOptions,
includePlatform: additionalDills.isNotEmpty,
aot: aot,
@@ -558,6 +567,13 @@
return true;
}
+/// Detect null safety mode from an entry point and set [options.nnbdMode].
+Future<void> autoDetectNullSafetyMode(
+ Uri script, CompilerOptions options) async {
+ var isLegacy = await uriUsesLegacyLanguageVersion(script, options);
+ options.nnbdMode = isLegacy ? NnbdMode.Weak : NnbdMode.Strong;
+}
+
/// Create front-end target with given name.
Target createFrontEndTarget(String targetName,
{bool trackWidgetCreation = false, bool nullSafety = false}) {
diff --git a/pkg/vm/lib/target/flutter.dart b/pkg/vm/lib/target/flutter.dart
index cc259c5..dc3b107 100644
--- a/pkg/vm/lib/target/flutter.dart
+++ b/pkg/vm/lib/target/flutter.dart
@@ -64,9 +64,9 @@
logger: logger, changedStructureNotifier: changedStructureNotifier);
if (flags.trackWidgetCreation) {
if (_widgetTracker == null) {
- _widgetTracker = WidgetCreatorTracker(changedStructureNotifier);
+ _widgetTracker = WidgetCreatorTracker();
}
- _widgetTracker.transform(component, libraries);
+ _widgetTracker.transform(component, libraries, changedStructureNotifier);
}
}
}
diff --git a/pkg/vm/lib/transformations/type_flow/native_code.dart b/pkg/vm/lib/transformations/type_flow/native_code.dart
index 14336a1..8c50b21 100644
--- a/pkg/vm/lib/transformations/type_flow/native_code.dart
+++ b/pkg/vm/lib/transformations/type_flow/native_code.dart
@@ -9,6 +9,8 @@
import 'package:kernel/ast.dart';
import 'package:kernel/library_index.dart' show LibraryIndex;
+import 'package:front_end/src/api_unstable/vm.dart'
+ show getRedirectingFactoryBody;
import 'calls.dart';
import 'types.dart';
@@ -75,6 +77,27 @@
var type = _annotationsDefineRoot(proc.annotations);
if (type == null) return;
+ if (proc.isRedirectingFactoryConstructor) {
+ if (type != PragmaEntryPointType.CallOnly &&
+ type != PragmaEntryPointType.Default) {
+ throw "Error: factory $proc doesn't have a setter or getter";
+ }
+ Member target = proc;
+ while (target is Procedure && target.isRedirectingFactoryConstructor) {
+ target = getRedirectingFactoryBody(target).target;
+ assertx(target != null);
+ assertx(
+ (target is Procedure && target.isFactory) || target is Constructor);
+ }
+ entryPoints
+ .addRawCall(new DirectSelector(target, callKind: CallKind.Method));
+ if (target is Constructor) {
+ entryPoints.addAllocatedClass(target.enclosingClass);
+ }
+ nativeCodeOracle.setMemberReferencedFromNativeCode(target);
+ return;
+ }
+
void addSelector(CallKind ck) {
entryPoints.addRawCall(proc.isInstanceMember
? new InterfaceSelector(proc, callKind: ck)
@@ -99,11 +122,14 @@
if (proc.isSetter) {
throw "Error: cannot closurize a setter ($proc).";
}
+ if (proc.isFactory) {
+ throw "Error: cannot closurize a factory ($proc).";
+ }
addSelector(CallKind.PropertyGet);
break;
case PragmaEntryPointType.Default:
addSelector(defaultCallKind);
- if (!proc.isSetter && !proc.isGetter) {
+ if (!proc.isSetter && !proc.isGetter && !proc.isFactory) {
addSelector(CallKind.PropertyGet);
}
}
diff --git a/pkg/vm/lib/transformations/type_flow/summary_collector.dart b/pkg/vm/lib/transformations/type_flow/summary_collector.dart
index b95602b..bbd77a6 100644
--- a/pkg/vm/lib/transformations/type_flow/summary_collector.dart
+++ b/pkg/vm/lib/transformations/type_flow/summary_collector.dart
@@ -596,6 +596,7 @@
debugPrint(
"===== ${member}${fieldSummaryType == FieldSummaryType.kFieldGuard ? " (guard)" : ""} =====");
assertx(!member.isAbstract);
+ assertx(!(member is Procedure && member.isRedirectingFactoryConstructor));
_staticTypeContext = new StaticTypeContext(member, _environment);
_variablesInfo = new _VariablesInfoCollector(member);
diff --git a/pkg/vm/lib/transformations/type_flow/transformer.dart b/pkg/vm/lib/transformations/type_flow/transformer.dart
index b16f5c1..1578f0b 100644
--- a/pkg/vm/lib/transformations/type_flow/transformer.dart
+++ b/pkg/vm/lib/transformations/type_flow/transformer.dart
@@ -1146,17 +1146,16 @@
if (args.named.isEmpty) return invocation;
Expression outer = invocation;
- int argIdx = args.named.length + args.positional.length;
for (int i = args.named.length - 1; i >= 0; --i) {
final arg = args.named[i];
- final variable = VariableDeclaration("#arg${argIdx--}",
+ final variable = VariableDeclaration(null,
initializer: arg.value,
type: arg.value.getStaticType(staticTypeContext));
arg.value = VariableGet(variable)..parent = arg;
outer = Let(variable, outer);
}
for (int i = args.positional.length - 1; i >= 0; --i) {
- final variable = VariableDeclaration("#arg${argIdx--}",
+ final variable = VariableDeclaration(null,
initializer: args.positional[i],
type: args.positional[i].getStaticType(staticTypeContext));
args.positional[i] = VariableGet(variable)..parent = args;
@@ -1168,16 +1167,15 @@
void _fixArgumentEvaluationOrderInInitializer(Arguments args) {
if (args.named.isEmpty) return;
- int argIndex = 0;
for (int i = 0; i < args.positional.length; ++i) {
- final variable = VariableDeclaration("#arg${argIndex++}",
- initializer: args.positional[i]);
+ final variable =
+ VariableDeclaration(null, initializer: args.positional[i]);
args.positional[i] = VariableGet(variable)..parent = args;
additionalInitializers.add(LocalInitializer(variable));
}
for (int i = 0; i < args.named.length; ++i) {
- final variable = VariableDeclaration("#arg${argIndex++}",
- initializer: args.named[i].value);
+ final variable =
+ VariableDeclaration(null, initializer: args.named[i].value);
args.named[i].value = VariableGet(variable)..parent = args.named[i];
additionalInitializers.add(LocalInitializer(variable));
}
diff --git a/pkg/vm/lib/transformations/type_flow/types.dart b/pkg/vm/lib/transformations/type_flow/types.dart
index dceb628..4bd891c 100644
--- a/pkg/vm/lib/transformations/type_flow/types.dart
+++ b/pkg/vm/lib/transformations/type_flow/types.dart
@@ -901,7 +901,7 @@
Nullability get nullability => _type.nullability;
RuntimeType withNullability(Nullability n) =>
- RuntimeType(_type.withNullability(n), typeArgs);
+ RuntimeType(_type.withDeclaredNullability(n), typeArgs);
DartType get representedTypeRaw => _type;
diff --git a/pkg/vm/test/incremental_compiler_test.dart b/pkg/vm/test/incremental_compiler_test.dart
index 9ab5182..65cec8a 100644
--- a/pkg/vm/test/incremental_compiler_test.dart
+++ b/pkg/vm/test/incremental_compiler_test.dart
@@ -454,7 +454,7 @@
const kObservatoryListening = 'Observatory listening on ';
final RegExp observatoryPortRegExp =
- new RegExp("Observatory listening on http://127.0.0.1:\([0-9]*\)/");
+ new RegExp("Observatory listening on http://127.0.0.1:\([0-9]*\)");
int port;
final splitter = new LineSplitter();
Completer<String> portLineCompleter = new Completer<String>();
@@ -580,7 +580,7 @@
const kObservatoryListening = 'Observatory listening on ';
final RegExp observatoryPortRegExp =
- new RegExp("Observatory listening on http://127.0.0.1:\([0-9]*\)/");
+ new RegExp("Observatory listening on http://127.0.0.1:\([0-9]*\)");
int port;
final splitter = new LineSplitter();
Completer<String> portLineCompleter = new Completer<String>();
@@ -679,7 +679,7 @@
String portLine = await portLineCompleter.future;
final RegExp observatoryPortRegExp =
- new RegExp("Observatory listening on http://127.0.0.1:\([0-9]*\)/");
+ new RegExp("Observatory listening on http://127.0.0.1:\([0-9]*\)");
expect(observatoryPortRegExp.hasMatch(portLine), isTrue);
final match = observatoryPortRegExp.firstMatch(portLine);
final port = int.parse(match.group(1));
@@ -820,7 +820,7 @@
const kObservatoryListening = 'Observatory listening on ';
final RegExp observatoryPortRegExp =
- new RegExp("Observatory listening on http://127.0.0.1:\([0-9]*\)/");
+ new RegExp("Observatory listening on http://127.0.0.1:\([0-9]*\)");
int port;
final splitter = new LineSplitter();
Completer<String> portLineCompleter = new Completer<String>();
@@ -1297,7 +1297,7 @@
/// Retrieves the ID of the main isolate using the service protocol.
Future<String> _computeMainId() async {
- var vm = await rpc.sendRequest('getVM');
+ var vm = await rpc.sendRequest('getVM', {});
var isolates = vm['isolates'];
for (var isolate in isolates) {
if (isolate['name'].contains(r'$main')) {
diff --git a/pkg/vm/test/snapshot/instruction_sizes_test.dart b/pkg/vm/test/snapshot/instruction_sizes_test.dart
new file mode 100644
index 0000000..0ed14f0
--- /dev/null
+++ b/pkg/vm/test/snapshot/instruction_sizes_test.dart
@@ -0,0 +1,156 @@
+// Copyright (c) 2020, 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:io';
+
+import 'package:path/path.dart' as path;
+import 'package:test/test.dart';
+
+import 'package:vm/snapshot/instruction_sizes.dart' as instruction_sizes;
+
+void main() async {
+ if (!Platform.executable.contains('dart-sdk')) {
+ // If we are not running from the prebuilt SDK then this test does nothing.
+ return;
+ }
+
+ final sdkBin = path.dirname(Platform.executable);
+ final dart2native =
+ path.join(sdkBin, Platform.isWindows ? 'dart2native.bat' : 'dart2native');
+
+ if (!File(dart2native).existsSync()) {
+ throw 'Failed to locate dart2native in the SDK';
+ }
+
+ group('instruction-sizes', () {
+ test('basic-parsing', () async {
+ await withTempDir('basic-parsing', (dir) async {
+ final inputDart = path.join(dir, 'input.dart');
+ final outputBinary = path.join(dir, 'output.exe');
+ final sizesJson = path.join(dir, 'sizes.json');
+
+ // Create test input.
+ await File(inputDart).writeAsString("""
+@pragma('vm:never-inline')
+dynamic makeSomeClosures() {
+ return [
+ () => true,
+ () => false,
+ () => 11,
+ ];
+}
+
+class A {
+ @pragma('vm:never-inline')
+ dynamic tornOff() {
+ return true;
+ }
+}
+
+class B {
+ @pragma('vm:never-inline')
+ dynamic tornOff() {
+ return false;
+ }
+}
+
+@pragma('vm:never-inline')
+Function tearOff(dynamic o) {
+ return o.tornOff;
+}
+
+void main(List<String> args) {
+ for (var cl in makeSomeClosures()) {
+ print(cl());
+ }
+ print(tearOff(args.isEmpty ? A() : B()));
+}
+""");
+
+ // Compile input.dart to native and output instruction sizes.
+ final result = await Process.run(dart2native, [
+ '-o',
+ outputBinary,
+ '--extra-gen-snapshot-options=--print_instructions_sizes_to=$sizesJson',
+ inputDart,
+ ]);
+
+ expect(result.exitCode, equals(0),
+ reason: 'Compilation completed successfully');
+ expect(File(outputBinary).existsSync(), isTrue,
+ reason: 'Output binary exists');
+ expect(File(sizesJson).existsSync(), isTrue,
+ reason: 'Instruction sizes output exists');
+
+ final symbols = await instruction_sizes.load(File(sizesJson));
+ expect(symbols, isNotNull,
+ reason: 'Sizes file was successfully parsed');
+ expect(symbols.length, greaterThan(0),
+ reason: 'Sizes file is non-empty');
+
+ // Check for duplicated symbols (using both raw and scrubbed names).
+ final symbolRawNamesByLibrary = Map<String, Set<String>>();
+ final symbolScrubbedNamesByLibrary = Map<String, Set<String>>();
+
+ Set<String> getSetOfNames(
+ Map<String, Set<String>> map, String libraryUri) {
+ // For file uris make sure to canonicalize the path. This prevents
+ // issues with mismatching case on Windows which has case insensitive
+ // file system.
+ if (libraryUri != null) {
+ final uri = Uri.parse(libraryUri);
+ if (uri.scheme == 'file') {
+ libraryUri =
+ Uri.file(path.canonicalize(uri.toFilePath())).toString();
+ }
+ }
+ return map.putIfAbsent(libraryUri ?? '', () => {});
+ }
+
+ for (var sym in symbols) {
+ expect(
+ getSetOfNames(symbolRawNamesByLibrary, sym.libraryUri)
+ .add(sym.name.raw),
+ isTrue,
+ reason:
+ 'All symbols should have unique names (within libraries): ${sym.name.raw}');
+ expect(
+ getSetOfNames(symbolScrubbedNamesByLibrary, sym.libraryUri)
+ .add(sym.name.scrubbed),
+ isTrue,
+ reason: 'Scrubbing the name should not make it non-unique');
+ }
+
+ // Check for expected names which should appear in the output.
+ final inputDartSymbolNames = symbolScrubbedNamesByLibrary[
+ Uri.file(path.canonicalize(inputDart)).toString()];
+ expect(inputDartSymbolNames, isNotNull,
+ reason: 'Symbols from input.dart are included into sizes output');
+
+ expect(inputDartSymbolNames, contains('makeSomeClosures'));
+ final closures = inputDartSymbolNames.where(
+ (name) => name.startsWith('makeSomeClosures.<anonymous closure'));
+ expect(closures.length, 3);
+ expect(inputDartSymbolNames, contains('A.tornOff'));
+ expect(inputDartSymbolNames, contains('[tear-off] A.tornOff'));
+ expect(inputDartSymbolNames,
+ contains('[tear-off-extractor] A.get:tornOff'));
+ expect(inputDartSymbolNames, contains('B.tornOff'));
+ expect(inputDartSymbolNames, contains('[tear-off] B.tornOff'));
+ expect(inputDartSymbolNames,
+ contains('[tear-off-extractor] B.get:tornOff'));
+ });
+ });
+ });
+}
+
+Future withTempDir(String prefix, Future fun(String dir)) async {
+ final tempDir =
+ Directory.systemTemp.createTempSync('instruction-sizes-test-${prefix}');
+ try {
+ await fun(tempDir.path);
+ } finally {
+ tempDir.deleteSync(recursive: true);
+ }
+}
diff --git a/pkg/vm/test/snapshot/name_test.dart b/pkg/vm/test/snapshot/name_test.dart
new file mode 100644
index 0000000..9bd1216
--- /dev/null
+++ b/pkg/vm/test/snapshot/name_test.dart
@@ -0,0 +1,31 @@
+// Copyright (c) 2020, 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 'package:test/test.dart';
+
+import 'package:vm/snapshot/name.dart';
+
+void main() async {
+ group('name', () {
+ test('scrubbing', () async {
+ expect(Name('[Optimized] [Stub] name').scrubbed, equals('name'),
+ reason: 'Prefixes are removed');
+ expect(
+ Name('name@1234.of@5678.method@9').scrubbed, equals('name.of.method'),
+ reason: 'Private keys are removed');
+ expect(Name('name@1234.<anonymous closure @1234>').scrubbed,
+ equals('name.<anonymous closure @1234>'),
+ reason: 'Closure token positions are preserved');
+ });
+
+ test('stub-name-parsing', () async {
+ expect(Name('[Stub] name').isStub, isTrue);
+ expect(Name('[Stub] name').isAllocationStub, isFalse);
+ expect(Name('[Stub] Allocate ').isStub, isTrue);
+ expect(Name('[Stub] Allocate ').isAllocationStub, isTrue);
+ expect(Name('[Optimized] name').isStub, isFalse);
+ expect(Name('[Optimized] name').isAllocationStub, isFalse);
+ });
+ });
+}
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/devirt.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/devirt.dart.expect
index 50a1095..87813fc 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/devirt.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/devirt.dart.expect
@@ -58,7 +58,7 @@
self::callerA1(new self::B::•());
self::callerA1(new self::C::•());
self::callerA2(new self::B::•());
- let self::C* #arg1 = new self::C::•() in self::callerA3(#arg1);
+ let self::C* #t1 = new self::C::•() in self::callerA3(#t1);
self::callerA4([@vm.inferred-type.metadata=#lib::D?] self::dd);
self::dd = new self::D::•();
self::callerE1("abc");
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/named_params_shaking_test.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/named_params_shaking_test.dart.expect
index 7ed0d87..208399d 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/named_params_shaking_test.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/named_params_shaking_test.dart.expect
@@ -11,13 +11,13 @@
abstract class TestNamedOrderBase extends core::Object {
[@vm.unboxing-info.metadata=(i)->b] constructor •([@vm.inferred-type.metadata=int] dynamic w, [@vm.inferred-type.metadata=int] core::int* x, [@vm.inferred-type.metadata=int] core::int* y, [@vm.inferred-type.metadata=int] core::int* z) → self::TestNamedOrderBase*
: super core::Object::•() {
- let core::int* #arg1 = _in::unsafeCast<core::int*>(w) in let core::int* #arg2 = z in let core::int* #arg3 = y in let core::int* #arg4 = x in self::testNamedOrder(#arg1, #arg4, #arg3, #arg2);
+ let core::int* #t1 = _in::unsafeCast<core::int*>(w) in let core::int* #t2 = z in let core::int* #t3 = y in let core::int* #t4 = x in self::testNamedOrder(#t1, #t4, #t3, #t2);
}
}
class TestNamedOrderSub extends self::TestNamedOrderBase {
[@vm.inferred-type.metadata=int] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] field core::int* x;
constructor •() → self::TestNamedOrderSub*
- : self::TestNamedOrderSub::x = [@vm.inferred-type.metadata=int] self::dec(), dynamic #arg0 = [@vm.inferred-type.metadata=int] self::inc(), dynamic #arg1 = [@vm.inferred-type.metadata=int] self::inc(), dynamic #arg2 = [@vm.inferred-type.metadata=int] self::inc(), dynamic #arg3 = [@vm.inferred-type.metadata=int] self::dec(), super self::TestNamedOrderBase::•(#arg0, #arg3, #arg2, #arg1) {
+ : self::TestNamedOrderSub::x = [@vm.inferred-type.metadata=int] self::dec(), dynamic #t5 = [@vm.inferred-type.metadata=int] self::inc(), dynamic #t6 = [@vm.inferred-type.metadata=int] self::inc(), dynamic #t7 = [@vm.inferred-type.metadata=int] self::inc(), dynamic #t8 = [@vm.inferred-type.metadata=int] self::dec(), super self::TestNamedOrderBase::•(#t5, #t8, #t7, #t6) {
exp::Expect::equals([@vm.direct-call.metadata=TestNamedOrderSub::x] [@vm.inferred-type.metadata=int] this.{self::TestNamedOrderSub::x}, 0);
}
}
@@ -33,7 +33,7 @@
exp::Expect::equals(x, 2);
}
static method main() → dynamic {
- let core::int* #arg1 = [@vm.inferred-type.metadata=int] self::inc() in let core::int* #arg2 = [@vm.inferred-type.metadata=int] self::inc() in let core::int* #arg3 = [@vm.inferred-type.metadata=int] self::inc() in let core::int* #arg4 = [@vm.inferred-type.metadata=int] self::dec() in self::testNamedOrder(#arg1, #arg4, #arg3, #arg2);
+ let core::int* #t9 = [@vm.inferred-type.metadata=int] self::inc() in let core::int* #t10 = [@vm.inferred-type.metadata=int] self::inc() in let core::int* #t11 = [@vm.inferred-type.metadata=int] self::inc() in let core::int* #t12 = [@vm.inferred-type.metadata=int] self::dec() in self::testNamedOrder(#t9, #t12, #t11, #t10);
self::global = 1;
new self::TestNamedOrderSub::•();
}
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/null_check_elimination_nnbd.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/null_check_elimination_nnbd.dart.expect
index 4780f9d..b7eefb1 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/null_check_elimination_nnbd.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/null_check_elimination_nnbd.dart.expect
@@ -11,7 +11,7 @@
: self::A::nonNullable = nonNullable, self::A::nullable = nullable, self::A::alwaysNull = alwaysNull, super core::Object::•()
;
}
-[@vm.inferred-type.metadata=#lib::A?]static field self::A staticField = let core::String #arg1 = "hi" in let core::String #arg2 = "bye" in new self::A::•(#arg1, #arg2);
+[@vm.inferred-type.metadata=#lib::A?]static field self::A staticField = let core::String #t1 = "hi" in let core::String #t2 = "bye" in new self::A::•(#t1, #t2);
static method testNonNullable([@vm.inferred-type.metadata=#lib::A?] self::A a) → dynamic
return _in::unsafeCast<core::String>([@vm.direct-call.metadata=A::nonNullable??] [@vm.inferred-type.metadata=dart.core::_OneByteString] a.{self::A::nonNullable});
static method testNullable([@vm.inferred-type.metadata=#lib::A?] self::A a) → dynamic
@@ -19,7 +19,7 @@
static method testAlwaysNull([@vm.inferred-type.metadata=#lib::A?] self::A a) → dynamic
return [@vm.direct-call.metadata=A::alwaysNull??] [@vm.inferred-type.metadata=dart.core::Null? (value: null)] a.{self::A::alwaysNull}!;
static method main() → void {
- final core::List<self::A> list = <self::A>[let core::String #arg1 = "foo" in let core::Null? #arg2 = null in let core::Null? #arg3 = null in new self::A::•(#arg1, #arg2, alwaysNull: #arg3), self::staticField];
+ final core::List<self::A> list = <self::A>[let core::String #t3 = "foo" in let core::Null? #t4 = null in let core::Null? #t5 = null in new self::A::•(#t3, #t4, alwaysNull: #t5), self::staticField];
{
core::Iterator<self::A> :sync-for-iterator = [@vm.direct-call.metadata=_GrowableList::iterator] [@vm.inferred-type.metadata=dart._internal::ListIterator<InterfaceType(A)>] list.{core::Iterable::iterator};
for (; [@vm.direct-call.metadata=ListIterator::moveNext] [@vm.inferred-type.metadata=dart.core::bool (skip check)] :sync-for-iterator.{core::Iterator::moveNext}(); ) {
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/null_test_elimination.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/null_test_elimination.dart.expect
index 89327df..a6b4bb5 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/null_test_elimination.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/null_test_elimination.dart.expect
@@ -11,9 +11,9 @@
: self::A::nonNullable = nonNullable, self::A::nullable = nullable, self::A::alwaysNull = alwaysNull, super core::Object::•()
;
}
-[@vm.inferred-type.metadata=#lib::A?]static field self::A* staticField = let core::String* #arg1 = "hi" in let core::String* #arg2 = "bye" in new self::A::•(#arg1, #arg2);
+[@vm.inferred-type.metadata=#lib::A?]static field self::A* staticField = let core::String* #t1 = "hi" in let core::String* #t2 = "bye" in new self::A::•(#t1, #t2);
static method testNonNullableIf1([@vm.inferred-type.metadata=#lib::A?] self::A* a) → dynamic {
- if(let dynamic #t1 = [@vm.direct-call.metadata=A::nonNullable??] [@vm.inferred-type.metadata=dart.core::_OneByteString] a.{self::A::nonNullable} in false) {
+ if(let dynamic #t3 = [@vm.direct-call.metadata=A::nonNullable??] [@vm.inferred-type.metadata=dart.core::_OneByteString] a.{self::A::nonNullable} in false) {
core::print("null");
}
}
@@ -23,12 +23,12 @@
}
}
static method testAlwaysNullIf1([@vm.inferred-type.metadata=#lib::A?] self::A* a) → dynamic {
- if(let dynamic #t2 = [@vm.direct-call.metadata=A::alwaysNull??] [@vm.inferred-type.metadata=dart.core::Null? (value: null)] a.{self::A::alwaysNull} in true) {
+ if(let dynamic #t4 = [@vm.direct-call.metadata=A::alwaysNull??] [@vm.inferred-type.metadata=dart.core::Null? (value: null)] a.{self::A::alwaysNull} in true) {
core::print("null");
}
}
static method testNonNullableIf2([@vm.inferred-type.metadata=#lib::A?] self::A* a) → dynamic {
- if(!(let dynamic #t3 = [@vm.direct-call.metadata=A::nonNullable??] [@vm.inferred-type.metadata=dart.core::_OneByteString] a.{self::A::nonNullable} in false) && _in::unsafeCast<core::bool*>([@vm.inferred-type.metadata=dart.core::bool] self::someCondition())) {
+ if(!(let dynamic #t5 = [@vm.direct-call.metadata=A::nonNullable??] [@vm.inferred-type.metadata=dart.core::_OneByteString] a.{self::A::nonNullable} in false) && _in::unsafeCast<core::bool*>([@vm.inferred-type.metadata=dart.core::bool] self::someCondition())) {
core::print("not null");
}
}
@@ -38,20 +38,20 @@
}
}
static method testAlwaysNullIf2([@vm.inferred-type.metadata=#lib::A?] self::A* a) → dynamic {
- if(!(let dynamic #t4 = [@vm.direct-call.metadata=A::alwaysNull??] [@vm.inferred-type.metadata=dart.core::Null? (value: null)] a.{self::A::alwaysNull} in true) && _in::unsafeCast<core::bool*>([@vm.inferred-type.metadata=dart.core::bool] self::someCondition())) {
+ if(!(let dynamic #t6 = [@vm.direct-call.metadata=A::alwaysNull??] [@vm.inferred-type.metadata=dart.core::Null? (value: null)] a.{self::A::alwaysNull} in true) && _in::unsafeCast<core::bool*>([@vm.inferred-type.metadata=dart.core::bool] self::someCondition())) {
core::print("not null");
}
}
static method testNonNullableCondExpr([@vm.inferred-type.metadata=#lib::A?] self::A* a) → dynamic
- return !(let dynamic #t5 = [@vm.direct-call.metadata=A::nonNullable??] [@vm.inferred-type.metadata=dart.core::_OneByteString] a.{self::A::nonNullable} in false) ?{core::String*} "not null" : "null";
+ return !(let dynamic #t7 = [@vm.direct-call.metadata=A::nonNullable??] [@vm.inferred-type.metadata=dart.core::_OneByteString] a.{self::A::nonNullable} in false) ?{core::String*} "not null" : "null";
static method testNullableCondExpr([@vm.inferred-type.metadata=#lib::A?] self::A* a) → dynamic
return ![@vm.direct-call.metadata=A::nullable??] [@vm.inferred-type.metadata=dart.core::_OneByteString?] a.{self::A::nullable}.{core::String::==}(null) ?{core::String*} "not null" : "null";
static method testAlwaysNullCondExpr([@vm.inferred-type.metadata=#lib::A?] self::A* a) → dynamic
- return !(let dynamic #t6 = [@vm.direct-call.metadata=A::alwaysNull??] [@vm.inferred-type.metadata=dart.core::Null? (value: null)] a.{self::A::alwaysNull} in true) ?{core::String*} "not null" : "null";
+ return !(let dynamic #t8 = [@vm.direct-call.metadata=A::alwaysNull??] [@vm.inferred-type.metadata=dart.core::Null? (value: null)] a.{self::A::alwaysNull} in true) ?{core::String*} "not null" : "null";
static method someCondition() → dynamic
return [@vm.direct-call.metadata=_IntegerImplementation::==] [@vm.inferred-type.metadata=dart.core::bool (skip check)] [@vm.inferred-type.metadata=int] core::int::parse("1").{core::num::==}(1);
static method main() → void {
- final core::List<self::A*>* list = <self::A*>[let core::String* #arg1 = "foo" in let core::Null? #arg2 = null in let core::Null? #arg3 = null in new self::A::•(#arg1, #arg2, alwaysNull: #arg3), self::staticField];
+ final core::List<self::A*>* list = <self::A*>[let core::String* #t9 = "foo" in let core::Null? #t10 = null in let core::Null? #t11 = null in new self::A::•(#t9, #t10, alwaysNull: #t11), self::staticField];
{
core::Iterator<self::A*>* :sync-for-iterator = [@vm.direct-call.metadata=_GrowableList::iterator] [@vm.inferred-type.metadata=dart._internal::ListIterator<InterfaceType(A*)>] list.{core::Iterable::iterator};
for (; [@vm.direct-call.metadata=ListIterator::moveNext] [@vm.inferred-type.metadata=dart.core::bool (skip check)] :sync-for-iterator.{core::Iterator::moveNext}(); ) {
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/regress_flutter57213.dart b/pkg/vm/testcases/transformations/type_flow/transformer/regress_flutter57213.dart
new file mode 100644
index 0000000..28b812f
--- /dev/null
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/regress_flutter57213.dart
@@ -0,0 +1,37 @@
+// Copyright (c) 2020, 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.
+
+// Regression test for https://github.com/flutter/flutter/issues/57213.
+// Verifies that TFA doesn't crash if @pragma("vm:entry-point") is used
+// on redirecting factory constructors.
+
+@pragma("vm:entry-point")
+class A {
+ A();
+
+ @pragma("vm:entry-point")
+ factory A.foo() = B;
+}
+
+class B extends A {
+ B(); // Should be retained.
+}
+
+class C {
+ C();
+
+ @pragma("vm:entry-point")
+ factory C.bar() = D.baz;
+}
+
+class D extends C {
+ D();
+ factory D.baz() = E;
+}
+
+class E extends D {
+ E(); // Should be retained.
+}
+
+void main() {}
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/regress_flutter57213.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/regress_flutter57213.dart.expect
new file mode 100644
index 0000000..036a094
--- /dev/null
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/regress_flutter57213.dart.expect
@@ -0,0 +1,31 @@
+library #lib;
+import self as self;
+import "dart:core" as core;
+
+@#C3
+class A extends core::Object {
+ constructor •() → self::A*
+ : super core::Object::•()
+ ;
+}
+class B extends self::A {
+ constructor •() → self::B*
+ : super self::A::•()
+ ;
+}
+abstract class C extends core::Object {
+ constructor •() → self::C*
+ : super core::Object::•()
+ ;
+}
+abstract class D extends self::C {
+ constructor •() → self::D*
+ : super self::C::•()
+ ;
+}
+class E extends self::D {
+ constructor •() → self::E*
+ : super self::D::•()
+ ;
+}
+static method main() → void {}
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/unboxed_static_method.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/unboxed_static_method.dart.expect
index bfc8f13..1d4ae0d 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/unboxed_static_method.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/unboxed_static_method.dart.expect
@@ -42,7 +42,7 @@
static method main() → dynamic {
self::takePositional([@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::int*} 1 : 2, [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::int*} [@vm.inferred-type.metadata=int] self::smiOrMint : 2, [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::double*} 1.1 : 2.2, [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::int*} [@vm.inferred-type.metadata=int] self::smiOrMint : null, [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::double*} 1.1 : null, [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::num*} [@vm.inferred-type.metadata=int] self::smiOrMint : 1.1, [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::num*} [@vm.inferred-type.metadata=dart.core::bool?] self::kFalse ?{core::num*} [@vm.inferred-type.metadata=int] self::smiOrMint : 1.1 : null, [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{self::X*} new self::X::•() : null, new self::X::•());
self::takeOptional([@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::int*} 1 : 2, [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::int*} [@vm.inferred-type.metadata=int] self::smiOrMint : 2, [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::double*} 1.1 : 2.2, [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::int*} [@vm.inferred-type.metadata=int] self::smiOrMint : null, [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::double*} 1.1 : null, [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::num*} [@vm.inferred-type.metadata=int] self::smiOrMint : 1.1, [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::num*} [@vm.inferred-type.metadata=dart.core::bool?] self::kFalse ?{core::num*} [@vm.inferred-type.metadata=int] self::smiOrMint : 1.1 : null, [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{self::X*} new self::X::•() : null, new self::X::•());
- let core::int* #arg1 = [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::int*} 1 : 2 in let core::int* #arg2 = [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::int*} [@vm.inferred-type.metadata=int] self::smiOrMint : 2 in let core::double* #arg3 = [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::double*} 1.1 : 2.2 in let core::int* #arg4 = [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::int*} [@vm.inferred-type.metadata=int] self::smiOrMint : null in let core::double* #arg5 = [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::double*} 1.1 : null in let core::num* #arg6 = [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::num*} [@vm.inferred-type.metadata=int] self::smiOrMint : 1.1 in let core::num* #arg7 = [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::num*} [@vm.inferred-type.metadata=dart.core::bool?] self::kFalse ?{core::num*} [@vm.inferred-type.metadata=int] self::smiOrMint : 1.1 : null in let self::X* #arg8 = [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{self::X*} new self::X::•() : null in let self::X* #arg9 = new self::X::•() in self::takeNamed(#arg6, #arg5, #arg4, #arg7, #arg8, #arg9, #arg3, #arg2, #arg1);
+ let core::int* #t1 = [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::int*} 1 : 2 in let core::int* #t2 = [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::int*} [@vm.inferred-type.metadata=int] self::smiOrMint : 2 in let core::double* #t3 = [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::double*} 1.1 : 2.2 in let core::int* #t4 = [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::int*} [@vm.inferred-type.metadata=int] self::smiOrMint : null in let core::double* #t5 = [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::double*} 1.1 : null in let core::num* #t6 = [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::num*} [@vm.inferred-type.metadata=int] self::smiOrMint : 1.1 in let core::num* #t7 = [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::num*} [@vm.inferred-type.metadata=dart.core::bool?] self::kFalse ?{core::num*} [@vm.inferred-type.metadata=int] self::smiOrMint : 1.1 : null in let self::X* #t8 = [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{self::X*} new self::X::•() : null in let self::X* #t9 = new self::X::•() in self::takeNamed(#t6, #t5, #t4, #t7, #t8, #t9, #t3, #t2, #t1);
self::takeBoxedSmiFromEntryPoint([@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::int*} 1 : 2);
self::use([@vm.inferred-type.metadata=dart.core::_Smi] self::returnUnboxedSmi());
self::use([@vm.inferred-type.metadata=int] self::returnUnboxedInt());
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/unboxed_static_method_tearoff.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/unboxed_static_method_tearoff.dart.expect
index e2ab8a5..04e9c52 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/unboxed_static_method_tearoff.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/unboxed_static_method_tearoff.dart.expect
@@ -37,7 +37,7 @@
static method main() → dynamic {
self::takePositional([@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::int*} 1 : 2, [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::int*} [@vm.inferred-type.metadata=int] self::smiOrMint : 2, [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::double*} 1.1 : 2.2, [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::int*} [@vm.inferred-type.metadata=int] self::smiOrMint : null, [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::double*} 1.1 : null, [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::num*} [@vm.inferred-type.metadata=int] self::smiOrMint : 1.1, [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::num*} [@vm.inferred-type.metadata=dart.core::bool?] self::kFalse ?{core::num*} [@vm.inferred-type.metadata=int] self::smiOrMint : 1.1 : null, [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{self::X*} new self::X::•() : null, new self::X::•());
self::takeOptional([@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::int*} 1 : 2, [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::int*} [@vm.inferred-type.metadata=int] self::smiOrMint : 2, [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::double*} 1.1 : 2.2, [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::int*} [@vm.inferred-type.metadata=int] self::smiOrMint : null, [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::double*} 1.1 : null, [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::num*} [@vm.inferred-type.metadata=int] self::smiOrMint : 1.1, [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::num*} [@vm.inferred-type.metadata=dart.core::bool?] self::kFalse ?{core::num*} [@vm.inferred-type.metadata=int] self::smiOrMint : 1.1 : null, [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{self::X*} new self::X::•() : null, new self::X::•());
- let core::int* #arg1 = [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::int*} 1 : 2 in let core::int* #arg2 = [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::int*} [@vm.inferred-type.metadata=int] self::smiOrMint : 2 in let core::double* #arg3 = [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::double*} 1.1 : 2.2 in let core::int* #arg4 = [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::int*} [@vm.inferred-type.metadata=int] self::smiOrMint : null in let core::double* #arg5 = [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::double*} 1.1 : null in let core::num* #arg6 = [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::num*} [@vm.inferred-type.metadata=int] self::smiOrMint : 1.1 in let core::num* #arg7 = [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::num*} [@vm.inferred-type.metadata=dart.core::bool?] self::kFalse ?{core::num*} [@vm.inferred-type.metadata=int] self::smiOrMint : 1.1 : null in let self::X* #arg8 = [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{self::X*} new self::X::•() : null in let self::X* #arg9 = new self::X::•() in self::takeNamed(#arg6, #arg5, #arg4, #arg7, #arg8, #arg9, #arg3, #arg2, #arg1);
+ let core::int* #t1 = [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::int*} 1 : 2 in let core::int* #t2 = [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::int*} [@vm.inferred-type.metadata=int] self::smiOrMint : 2 in let core::double* #t3 = [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::double*} 1.1 : 2.2 in let core::int* #t4 = [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::int*} [@vm.inferred-type.metadata=int] self::smiOrMint : null in let core::double* #t5 = [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::double*} 1.1 : null in let core::num* #t6 = [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::num*} [@vm.inferred-type.metadata=int] self::smiOrMint : 1.1 in let core::num* #t7 = [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::num*} [@vm.inferred-type.metadata=dart.core::bool?] self::kFalse ?{core::num*} [@vm.inferred-type.metadata=int] self::smiOrMint : 1.1 : null in let self::X* #t8 = [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{self::X*} new self::X::•() : null in let self::X* #t9 = new self::X::•() in self::takeNamed(#t6, #t5, #t4, #t7, #t8, #t9, #t3, #t2, #t1);
self::use([@vm.inferred-type.metadata=dart.core::_Smi] self::returnUnboxedSmi());
self::use([@vm.inferred-type.metadata=int] self::returnUnboxedInt());
self::use([@vm.inferred-type.metadata=dart.core::_Double] self::returnUnboxedDouble());
diff --git a/pkg/vm_service/CHANGELOG.md b/pkg/vm_service/CHANGELOG.md
index 3d045e8..70f5ded 100644
--- a/pkg/vm_service/CHANGELOG.md
+++ b/pkg/vm_service/CHANGELOG.md
@@ -1,6 +1,15 @@
# Changelog
-## 4.0.3
+## 4.0.4
+- Update to version `3.34.0` of the spec.
+- Fixed issue where `TimelineEvents` was not a valid service event kind.
+- Fixed issue where invoking a service extension with no arguments would result
+ in a TypeError during request routing.
+- Added `TimelineStreamSubscriptionsUpdate` event, which is broadcast when
+ `setVMTimelineFlags` is used to change the set of currently recording timeline
+ streams.
+
+## 4.0.3
- Update to version `3.33.0` of the spec.
- Add static error code constants to `RPCError`.
- Update the toString() method or `RPCError` and add a toMap() method.
diff --git a/pkg/vm_service/example/vm_service_assert.dart b/pkg/vm_service/example/vm_service_assert.dart
index de481b9..33a518d 100644
--- a/pkg/vm_service/example/vm_service_assert.dart
+++ b/pkg/vm_service/example/vm_service_assert.dart
@@ -154,6 +154,8 @@
if (obj == "ServiceExtensionAdded") return obj;
if (obj == "ServiceRegistered") return obj;
if (obj == "ServiceUnregistered") return obj;
+ if (obj == "TimelineEvents") return obj;
+ if (obj == "TimelineStreamSubscriptionsUpdate") return obj;
if (obj == "VMFlagUpdate") return obj;
if (obj == "VMUpdate") return obj;
if (obj == "WriteEvent") return obj;
@@ -916,6 +918,28 @@
return list;
}
+vms.ProtocolList assertProtocolList(vms.ProtocolList obj) {
+ assertNotNull(obj);
+ assertString(obj.type);
+ assertListOfProtocol(obj.protocols);
+ return obj;
+}
+
+vms.Protocol assertProtocol(vms.Protocol obj) {
+ assertNotNull(obj);
+ assertString(obj.protocolName);
+ assertInt(obj.major);
+ assertInt(obj.minor);
+ return obj;
+}
+
+List<vms.Protocol> assertListOfProtocol(List<vms.Protocol> list) {
+ for (vms.Protocol elem in list) {
+ assertProtocol(elem);
+ }
+ return list;
+}
+
vms.ReloadReport assertReloadReport(vms.ReloadReport obj) {
assertNotNull(obj);
assertString(obj.type);
diff --git a/pkg/vm_service/java/.gitignore b/pkg/vm_service/java/.gitignore
index ebfb5c7..3e3793d 100644
--- a/pkg/vm_service/java/.gitignore
+++ b/pkg/vm_service/java/.gitignore
@@ -26,6 +26,7 @@
src/org/dartlang/vm/service/consumer/InvokeConsumer.java
src/org/dartlang/vm/service/consumer/KillConsumer.java
src/org/dartlang/vm/service/consumer/PauseConsumer.java
+src/org/dartlang/vm/service/consumer/ProtocolListConsumer.java
src/org/dartlang/vm/service/consumer/ReloadSourcesConsumer.java
src/org/dartlang/vm/service/consumer/RemoveBreakpointConsumer.java
src/org/dartlang/vm/service/consumer/RequestHeapSnapshotConsumer.java
@@ -95,6 +96,8 @@
src/org/dartlang/vm/service/element/Obj.java
src/org/dartlang/vm/service/element/ObjRef.java
src/org/dartlang/vm/service/element/ProfileFunction.java
+src/org/dartlang/vm/service/element/Protocol.java
+src/org/dartlang/vm/service/element/ProtocolList.java
src/org/dartlang/vm/service/element/ReloadReport.java
src/org/dartlang/vm/service/element/Response.java
src/org/dartlang/vm/service/element/RetainingObject.java
diff --git a/pkg/vm_service/java/version.properties b/pkg/vm_service/java/version.properties
index 47ae094..469b122 100644
--- a/pkg/vm_service/java/version.properties
+++ b/pkg/vm_service/java/version.properties
@@ -1 +1 @@
-version=3.33
+version=3.35
diff --git a/pkg/vm_service/lib/src/vm_service.dart b/pkg/vm_service/lib/src/vm_service.dart
index d9ce8d7..745a6e2 100644
--- a/pkg/vm_service/lib/src/vm_service.dart
+++ b/pkg/vm_service/lib/src/vm_service.dart
@@ -28,7 +28,7 @@
HeapSnapshotObjectNoData,
HeapSnapshotObjectNullData;
-const String vmServiceVersion = '3.33.0';
+const String vmServiceVersion = '3.35.0';
/// @optional
const String optional = 'optional';
@@ -158,6 +158,8 @@
'@Object': ObjRef.parse,
'Object': Obj.parse,
'ProfileFunction': ProfileFunction.parse,
+ 'ProtocolList': ProtocolList.parse,
+ 'Protocol': Protocol.parse,
'ReloadReport': ReloadReport.parse,
'RetainingObject': RetainingObject.parse,
'RetainingPath': RetainingPath.parse,
@@ -208,6 +210,7 @@
'getObject': const ['Obj'],
'getRetainingPath': const ['RetainingPath'],
'getStack': const ['Stack'],
+ 'getSupportedProtocols': const ['ProtocolList'],
'getSourceReport': const ['SourceReport'],
'getVersion': const ['Version'],
'getVM': const ['VM'],
@@ -731,6 +734,16 @@
/// returned.
Future<Stack> getStack(String isolateId);
+ /// The `getSupportedProtocols` RPC is used to determine which protocols are
+ /// supported by the current server.
+ ///
+ /// The result of this call should be intercepted by any middleware that
+ /// extends the core VM service protocol and should add its own protocol to
+ /// the list of protocols before forwarding the response to the client.
+ ///
+ /// See [ProtocolList].
+ Future<ProtocolList> getSupportedProtocols();
+
/// The `getSourceReport` RPC is used to generate a set of reports tied to
/// source locations in an isolate.
///
@@ -1077,6 +1090,9 @@
/// are to be enabled. Streams not explicitly specified will be disabled.
/// Invalid stream names are ignored.
///
+ /// A `TimelineStreamSubscriptionsUpdate` event is sent on the `Timeline`
+ /// stream as a result of invoking this RPC.
+ ///
/// To get the list of currently enabled timeline streams, see
/// [getVMTimelineFlags].
///
@@ -1109,7 +1125,7 @@
/// BreakpointResolved, BreakpointRemoved, Inspect, None
/// GC | GC
/// Extension | Extension
- /// Timeline | TimelineEvents
+ /// Timeline | TimelineEvents, TimelineStreamsSubscriptionUpdate
/// Logging | Logging
/// Service | ServiceRegistered, ServiceUnregistered
/// HeapSnapshot | HeapSnapshot
@@ -1348,6 +1364,9 @@
params['isolateId'],
);
break;
+ case 'getSupportedProtocols':
+ response = await _serviceImplementation.getSupportedProtocols();
+ break;
case 'getSourceReport':
response = await _serviceImplementation.getSourceReport(
params['isolateId'],
@@ -1612,7 +1631,7 @@
// Extension
Stream<Event> get onExtensionEvent => _getEventController('Extension').stream;
- // TimelineEvents
+ // TimelineEvents, TimelineStreamsSubscriptionUpdate
Stream<Event> get onTimelineEvent => _getEventController('Timeline').stream;
// Logging
@@ -1808,6 +1827,10 @@
_call('getStack', {'isolateId': isolateId});
@override
+ Future<ProtocolList> getSupportedProtocols() =>
+ _call('getSupportedProtocols');
+
+ @override
Future<SourceReport> getSourceReport(
String isolateId,
/*List<SourceReportKind>*/
@@ -2095,7 +2118,8 @@
}
Future _processRequest(Map<String, dynamic> json) async {
- final Map m = await _routeRequest(json['method'], json['params'] ?? {});
+ final Map m = await _routeRequest(
+ json['method'], json['params'] ?? <String, dynamic>{});
m['id'] = json['id'];
m['jsonrpc'] = '2.0';
String message = jsonEncode(m);
@@ -2105,7 +2129,7 @@
Future _processNotification(Map<String, dynamic> json) async {
final String method = json['method'];
- final Map params = json['params'] ?? {};
+ final Map params = json['params'] ?? <String, dynamic>{};
if (method == 'streamNotify') {
String streamId = params['streamId'];
_getEventController(streamId)
@@ -2115,7 +2139,7 @@
}
}
- Future<Map> _routeRequest(String method, Map params) async {
+ Future<Map> _routeRequest(String method, Map<String, dynamic> params) async {
if (!_services.containsKey(method)) {
RPCError error = RPCError(
method, RPCError.kMethodNotFound, 'method not found \'$method\'');
@@ -2362,6 +2386,18 @@
/// Event from dart:developer.log.
static const String kLogging = 'Logging';
+ /// A block of timeline events has been completed.
+ ///
+ /// This service event is not sent for individual timeline events. It is
+ /// subject to buffering, so the most recent timeline events may never be
+ /// included in any TimelineEvents event if no timeline events occur later to
+ /// complete the block.
+ static const String kTimelineEvents = 'TimelineEvents';
+
+ /// The set of active timeline streams was changed via `setVMTimelineFlags`.
+ static const String kTimelineStreamSubscriptionsUpdate =
+ 'TimelineStreamSubscriptionsUpdate';
+
/// Notification that a Service has been registered into the Service Protocol
/// from another client.
static const String kServiceRegistered = 'ServiceRegistered';
@@ -3576,6 +3612,12 @@
@optional
List<TimelineEvent> timelineEvents;
+ /// The new set of recorded timeline streams.
+ ///
+ /// This is provided for the TimelineStreamSubscriptionsUpdate event.
+ @optional
+ List<String> updatedStreams;
+
/// Is the isolate paused at an await, yield, or yield* statement?
///
/// This is provided for the event kinds:
@@ -3662,6 +3704,7 @@
this.extensionKind,
this.extensionData,
this.timelineEvents,
+ this.updatedStreams,
this.atAsyncSuspension,
this.status,
this.logRecord,
@@ -3695,6 +3738,9 @@
? null
: List<TimelineEvent>.from(createServiceObject(
json['timelineEvents'], const ['TimelineEvent']));
+ updatedStreams = json['updatedStreams'] == null
+ ? null
+ : List<String>.from(json['updatedStreams']);
atAsyncSuspension = json['atAsyncSuspension'];
status = json['status'];
logRecord = createServiceObject(json['logRecord'], const ['LogRecord']);
@@ -3729,6 +3775,8 @@
_setIfNotNull(json, 'extensionData', extensionData?.data);
_setIfNotNull(json, 'timelineEvents',
timelineEvents?.map((f) => f?.toJson())?.toList());
+ _setIfNotNull(
+ json, 'updatedStreams', updatedStreams?.map((f) => f)?.toList());
_setIfNotNull(json, 'atAsyncSuspension', atAsyncSuspension);
_setIfNotNull(json, 'status', status);
_setIfNotNull(json, 'logRecord', logRecord?.toJson());
@@ -5748,6 +5796,79 @@
'resolvedUrl: ${resolvedUrl}, function: ${function}]';
}
+/// A `ProtocolList` contains a list of all protocols supported by the service
+/// instance.
+///
+/// See [Protocol] and [getSupportedProtocols].
+class ProtocolList extends Response {
+ static ProtocolList parse(Map<String, dynamic> json) =>
+ json == null ? null : ProtocolList._fromJson(json);
+
+ /// A list of supported protocols provided by this service.
+ List<Protocol> protocols;
+
+ ProtocolList({
+ @required this.protocols,
+ });
+
+ ProtocolList._fromJson(Map<String, dynamic> json) : super._fromJson(json) {
+ protocols = List<Protocol>.from(
+ createServiceObject(json['protocols'], const ['Protocol']) ?? []);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ var json = <String, dynamic>{};
+ json['type'] = 'ProtocolList';
+ json.addAll({
+ 'protocols': protocols.map((f) => f.toJson()).toList(),
+ });
+ return json;
+ }
+
+ String toString() => '[ProtocolList type: ${type}, protocols: ${protocols}]';
+}
+
+/// See [getSupportedProtocols].
+class Protocol {
+ static Protocol parse(Map<String, dynamic> json) =>
+ json == null ? null : Protocol._fromJson(json);
+
+ /// The name of the supported protocol.
+ String protocolName;
+
+ /// The major revision of the protocol.
+ int major;
+
+ /// The minor revision of the protocol.
+ int minor;
+
+ Protocol({
+ @required this.protocolName,
+ @required this.major,
+ @required this.minor,
+ });
+
+ Protocol._fromJson(Map<String, dynamic> json) {
+ protocolName = json['protocolName'];
+ major = json['major'];
+ minor = json['minor'];
+ }
+
+ Map<String, dynamic> toJson() {
+ var json = <String, dynamic>{};
+ json.addAll({
+ 'protocolName': protocolName,
+ 'major': major,
+ 'minor': minor,
+ });
+ return json;
+ }
+
+ String toString() => '[Protocol ' //
+ 'protocolName: ${protocolName}, major: ${major}, minor: ${minor}]';
+}
+
class ReloadReport extends Response {
static ReloadReport parse(Map<String, dynamic> json) =>
json == null ? null : ReloadReport._fromJson(json);
diff --git a/pkg/vm_service/pubspec.yaml b/pkg/vm_service/pubspec.yaml
index a59b68f..c066883 100644
--- a/pkg/vm_service/pubspec.yaml
+++ b/pkg/vm_service/pubspec.yaml
@@ -2,7 +2,7 @@
description: >-
A library to communicate with a service implementing the Dart VM
service protocol.
-version: 4.0.3
+version: 4.0.4
homepage: https://github.com/dart-lang/sdk/tree/master/pkg/vm_service
diff --git a/pkg/vm_service/test/common/test_helper.dart b/pkg/vm_service/test/common/test_helper.dart
index 2851672..dd1e71c 100644
--- a/pkg/vm_service/test/common/test_helper.dart
+++ b/pkg/vm_service/test/common/test_helper.dart
@@ -141,7 +141,9 @@
List<String> extraArgs) {
String dartExecutable = Platform.executable;
- var fullArgs = <String>[];
+ var fullArgs = <String>[
+ '--disable-dart-dev',
+ ];
if (pause_on_start) {
fullArgs.add('--pause-isolates-on-start');
}
diff --git a/pkg/vm_service/tool/dart/generate_dart.dart b/pkg/vm_service/tool/dart/generate_dart.dart
index 68b7daa..a45d705 100644
--- a/pkg/vm_service/tool/dart/generate_dart.dart
+++ b/pkg/vm_service/tool/dart/generate_dart.dart
@@ -220,7 +220,7 @@
}
Future _processRequest(Map<String, dynamic> json) async {
- final Map m = await _routeRequest(json['method'], json['params'] ?? {});
+ final Map m = await _routeRequest(json['method'], json['params'] ?? <String, dynamic>{});
m['id'] = json['id'];
m['jsonrpc'] = '2.0';
String message = jsonEncode(m);
@@ -230,7 +230,7 @@
Future _processNotification(Map<String, dynamic> json) async {
final String method = json['method'];
- final Map params = json['params'] ?? {};
+ final Map params = json['params'] ?? <String, dynamic>{};
if (method == 'streamNotify') {
String streamId = params['streamId'];
_getEventController(streamId).add(createServiceObject(params['event'], const ['Event']));
@@ -239,7 +239,7 @@
}
}
- Future<Map> _routeRequest(String method, Map params) async{
+ Future<Map> _routeRequest(String method, Map<String, dynamic> params) async{
if (!_services.containsKey(method)) {
RPCError error = RPCError(
method, RPCError.kMethodNotFound, 'method not found \'$method\'');
@@ -1016,6 +1016,7 @@
'LibraryDependency',
'Message',
'ProfileFunction',
+ 'Protocol',
'RetainingObject',
'SourceReportRange',
'TimelineEvent',
diff --git a/runtime/BUILD.gn b/runtime/BUILD.gn
index b7998c8..34e1238 100644
--- a/runtime/BUILD.gn
+++ b/runtime/BUILD.gn
@@ -155,9 +155,10 @@
"-ggdb3",
"-fno-rtti",
"-fno-exceptions",
- "-Wimplicit-fallthrough",
]
- if (!is_clang) {
+ if (is_clang) {
+ cflags += [ "-Wimplicit-fallthrough" ]
+ } else {
cflags += [ "-Wno-cast-function-type" ]
}
@@ -222,7 +223,7 @@
} else {
extra_deps += [
"//zircon/public/lib/fbl",
- "//zircon/public/lib/trace-engine",
+ "//zircon/system/ulib/trace-engine",
]
}
}
diff --git a/runtime/bin/ffi_test/ffi_test_functions_vmspecific.cc b/runtime/bin/ffi_test/ffi_test_functions_vmspecific.cc
index 9ce7d9e..543f0fe 100644
--- a/runtime/bin/ffi_test/ffi_test_functions_vmspecific.cc
+++ b/runtime/bin/ffi_test/ffi_test_functions_vmspecific.cc
@@ -757,4 +757,37 @@
SimulateWork2::StopWorkSimulator();
}
+////////////////////////////////////////////////////////////////////////////////
+// Helpers used for lightweight isolate tests.
+////////////////////////////////////////////////////////////////////////////////
+
+DART_EXPORT void ThreadPoolTest_BarrierSync(
+ Dart_Isolate (*dart_current_isolate)(),
+ void (*dart_enter_isolate)(Dart_Isolate),
+ void (*dart_exit_isolate)(),
+ intptr_t num_threads) {
+ // Guaranteed to be initialized exactly once (no race between multiple
+ // threads).
+ static std::mutex mutex;
+ static std::condition_variable cvar;
+ static intptr_t thread_count = 0;
+
+ const Dart_Isolate isolate = dart_current_isolate();
+ dart_exit_isolate();
+ {
+ std::unique_lock<std::mutex> lock(mutex);
+
+ ++thread_count;
+ if (thread_count < num_threads) {
+ while (thread_count < num_threads) {
+ cvar.wait(lock);
+ }
+ } else {
+ if (thread_count != num_threads) FATAL("bug");
+ cvar.notify_all();
+ }
+ }
+ dart_enter_isolate(isolate);
+}
+
} // namespace dart
diff --git a/runtime/bin/gen_snapshot.cc b/runtime/bin/gen_snapshot.cc
index c6685da..3598a3c 100644
--- a/runtime/bin/gen_snapshot.cc
+++ b/runtime/bin/gen_snapshot.cc
@@ -578,7 +578,7 @@
const uint8_t* buffer,
intptr_t size) {
File* file = reinterpret_cast<File*>(callback_data);
- if (!file->WriteFully(buffer, size)) {
+ if ((file != nullptr) && !file->WriteFully(buffer, size)) {
Syslog::PrintErr("Error: Unable to write snapshot file\n\n");
Dart_ExitScope();
Dart_ShutdownIsolate();
diff --git a/runtime/bin/main.cc b/runtime/bin/main.cc
index 06b9109..8742d98 100644
--- a/runtime/bin/main.cc
+++ b/runtime/bin/main.cc
@@ -999,7 +999,7 @@
char* script_name;
const int EXTRA_VM_ARGUMENTS = 10;
CommandLineOptions vm_options(argc + EXTRA_VM_ARGUMENTS);
- CommandLineOptions dart_options(argc);
+ CommandLineOptions dart_options(argc + EXTRA_VM_ARGUMENTS);
bool print_flags_seen = false;
bool verbose_debug_seen = false;
diff --git a/runtime/bin/main_options.cc b/runtime/bin/main_options.cc
index 7dd360d..d72e5a8 100644
--- a/runtime/bin/main_options.cc
+++ b/runtime/bin/main_options.cc
@@ -35,6 +35,7 @@
};
SnapshotKind Options::gen_snapshot_kind_ = kNone;
+bool Options::enable_vm_service_ = false;
#define OPTION_FIELD(variable) Options::variable##_
@@ -298,9 +299,10 @@
static const char* DEFAULT_VM_SERVICE_SERVER_IP = "localhost";
static const int DEFAULT_VM_SERVICE_SERVER_PORT = 8181;
+static const int INVALID_VM_SERVICE_SERVER_PORT = -1;
const char* Options::vm_service_server_ip_ = DEFAULT_VM_SERVICE_SERVER_IP;
-int Options::vm_service_server_port_ = -1;
+int Options::vm_service_server_port_ = INVALID_VM_SERVICE_SERVER_PORT;
bool Options::ProcessEnableVmServiceOption(const char* arg,
CommandLineOptions* vm_options) {
const char* value =
@@ -319,7 +321,7 @@
#if !defined(DART_PRECOMPILED_RUNTIME)
dfe()->set_use_incremental_compiler(true);
#endif // !defined(DART_PRECOMPILED_RUNTIME)
-
+ enable_vm_service_ = true;
return true;
}
@@ -346,6 +348,7 @@
#if !defined(DART_PRECOMPILED_RUNTIME)
dfe()->set_use_incremental_compiler(true);
#endif // !defined(DART_PRECOMPILED_RUNTIME)
+ enable_vm_service_ = true;
return true;
}
@@ -397,7 +400,7 @@
// Parse out the vm options.
while (i < argc) {
- if (OptionProcessor::TryProcess(argv[i], vm_options)) {
+ if (OptionProcessor::TryProcess(argv[i], &temp_vm_options)) {
i++;
} else {
// Check if this flag is a potentially valid VM flag.
@@ -424,6 +427,15 @@
}
}
+ if (!Options::disable_dart_dev()) {
+ // Don't start the VM service for the DartDev process. Without doing a
+ // second pass over the argument list to explicitly check for
+ // --disable-dart-dev, this is the earliest we can assume we know whether
+ // or not we're running with DartDev enabled.
+ vm_service_server_port_ = INVALID_VM_SERVICE_SERVER_PORT;
+ vm_service_server_ip_ = DEFAULT_VM_SERVICE_SERVER_IP;
+ }
+
#if !defined(DART_PRECOMPILED_RUNTIME)
Options::dfe()->set_use_dfe();
#endif // !defined(DART_PRECOMPILED_RUNTIME)
@@ -442,18 +454,21 @@
// The arguments to the VM are at positions 1 through i-1 in argv.
Platform::SetExecutableArguments(i, argv);
- bool is_script = false;
+ bool implicitly_use_dart_dev = false;
+ bool run_script = false;
int script_or_cmd_index = -1;
// Get the script name.
if (i < argc) {
- // If the script name is a valid file or a URL, we'll run the script directly.
- // Otherwise, this might be a DartDev command and we need to try to
- // find the DartDev snapshot so we can forward the command and its arguments.
+ // If the script name is a valid file or a URL, we'll run the script
+ // directly. Otherwise, this might be a DartDev command and we need to try
+ // to find the DartDev snapshot so we can forward the command and its
+ // arguments.
+ bool is_potential_file_path = !DartDevUtils::ShouldParseCommand(argv[i]);
script_or_cmd_index = i;
if (Options::disable_dart_dev() ||
- !DartDevUtils::ShouldParseCommand(argv[i])) {
+ (is_potential_file_path && !enable_vm_service_)) {
*script_name = strdup(argv[i]);
- is_script = true;
+ run_script = true;
i++;
} else if (!DartDevUtils::TryResolveDartDevSnapshotPath(script_name)) {
Syslog::PrintErr(
@@ -461,6 +476,14 @@
argv[i]);
Platform::Exit(kErrorExitCode);
}
+ // Handle the special case where the user is running a Dart program without
+ // using a DartDev command and wants to use the VM service. Here we'll run
+ // the program using DartDev as it's used to spawn a DDS instance
+ if (!Options::disable_dart_dev() && is_potential_file_path &&
+ enable_vm_service_) {
+ implicitly_use_dart_dev = true;
+ dart_options->AddArgument("run");
+ }
} else if (!Options::disable_dart_dev() &&
((Options::help_option() && !Options::verbose_option()) ||
(argc == 1)) &&
@@ -472,11 +495,19 @@
return -1;
}
- if (Options::disable_dart_dev() || is_script) {
- // Only populate the VM options if we're not running with dartdev.
- const char** vm_argv = temp_vm_options.arguments();
- int vm_argc = temp_vm_options.count();
+ const char** vm_argv = temp_vm_options.arguments();
+ int vm_argc = temp_vm_options.count();
+
+ if (Options::disable_dart_dev() || run_script) {
+ // Only populate the VM options if we're not running with DartDev.
vm_options->AddArguments(vm_argv, vm_argc);
+ } else if (implicitly_use_dart_dev) {
+ // If we're using DartDev implicitly (e.g., dart --observe foo.dart), we
+ // want to forward all the VM arguments to the spawned process to ensure
+ // the program behaves as the user expects even though we're running
+ // through DartDev without their knowledge.
+ dart_options->AddArguments(const_cast<const char**>(argv + 1),
+ script_or_cmd_index - 1);
} else if (i > 1) {
// If we're running with DartDev, we're going to ignore the VM options for
// this VM instance and print a warning.
diff --git a/runtime/bin/main_options.h b/runtime/bin/main_options.h
index 6493349..9247863 100644
--- a/runtime/bin/main_options.h
+++ b/runtime/bin/main_options.h
@@ -168,6 +168,7 @@
// VM Service argument processing.
static const char* vm_service_server_ip_;
+ static bool enable_vm_service_;
static int vm_service_server_port_;
static bool ExtractPortAndAddress(const char* option_value,
int* out_port,
diff --git a/runtime/bin/process_test.cc b/runtime/bin/process_test.cc
index f8fb361..c6529c5 100644
--- a/runtime/bin/process_test.cc
+++ b/runtime/bin/process_test.cc
@@ -6,9 +6,11 @@
#include <stdlib.h>
#include <string.h>
-#if defined(__GNUC__) || defined(__Clang__)
+#if defined(__has_feature)
+#if __has_feature(undefined_behavior_sanitizer)
__attribute__((no_sanitize("undefined")))
#endif
+#endif
void Crash() {
int* segfault = NULL;
*segfault = 1;
diff --git a/runtime/lib/string.cc b/runtime/lib/string.cc
index 71ae8a6..170bc96 100644
--- a/runtime/lib/string.cc
+++ b/runtime/lib/string.cc
@@ -286,7 +286,7 @@
return result.raw();
}
-DEFINE_NATIVE_ENTRY(OneByteString_allocate, 0, 1) {
+DEFINE_NATIVE_ENTRY(Internal_allocateOneByteString, 0, 1) {
GET_NON_NULL_NATIVE_ARGUMENT(Integer, length_obj, arguments->NativeArgAt(0));
const int64_t length = length_obj.AsInt64Value();
if ((length < 0) || (length > OneByteString::kMaxElements)) {
@@ -300,6 +300,20 @@
return OneByteString::New(static_cast<intptr_t>(length), Heap::kNew);
}
+DEFINE_NATIVE_ENTRY(Internal_allocateTwoByteString, 0, 1) {
+ GET_NON_NULL_NATIVE_ARGUMENT(Integer, length_obj, arguments->NativeArgAt(0));
+ const int64_t length = length_obj.AsInt64Value();
+ if ((length < 0) || (length > TwoByteString::kMaxElements)) {
+ // Assume that negative lengths are the result of wrapping in code in
+ // string_patch.dart.
+ const Instance& exception =
+ Instance::Handle(thread->isolate()->object_store()->out_of_memory());
+ Exceptions::Throw(thread, exception);
+ UNREACHABLE();
+ }
+ return TwoByteString::New(static_cast<intptr_t>(length), Heap::kNew);
+}
+
DEFINE_NATIVE_ENTRY(OneByteString_allocateFromOneByteList, 0, 3) {
Instance& list = Instance::CheckedHandle(zone, arguments->NativeArgAt(0));
GET_NON_NULL_NATIVE_ARGUMENT(Smi, start_obj, arguments->NativeArgAt(1));
@@ -384,7 +398,7 @@
return Object::null();
}
-DEFINE_NATIVE_ENTRY(OneByteString_setAt, 0, 3) {
+DEFINE_NATIVE_ENTRY(Internal_writeIntoOneByteString, 0, 3) {
GET_NON_NULL_NATIVE_ARGUMENT(String, receiver, arguments->NativeArgAt(0));
ASSERT(receiver.IsOneByteString());
GET_NON_NULL_NATIVE_ARGUMENT(Smi, index_obj, arguments->NativeArgAt(1));
@@ -394,6 +408,16 @@
return Object::null();
}
+DEFINE_NATIVE_ENTRY(Internal_writeIntoTwoByteString, 0, 3) {
+ GET_NON_NULL_NATIVE_ARGUMENT(String, receiver, arguments->NativeArgAt(0));
+ ASSERT(receiver.IsTwoByteString());
+ GET_NON_NULL_NATIVE_ARGUMENT(Smi, index_obj, arguments->NativeArgAt(1));
+ GET_NON_NULL_NATIVE_ARGUMENT(Smi, code_point_obj, arguments->NativeArgAt(2));
+ ASSERT((0 <= code_point_obj.Value()) && (code_point_obj.Value() <= 0xFFFF));
+ TwoByteString::SetCharAt(receiver, index_obj.Value(), code_point_obj.Value());
+ return Object::null();
+}
+
DEFINE_NATIVE_ENTRY(TwoByteString_allocateFromTwoByteList, 0, 3) {
Instance& list = Instance::CheckedHandle(zone, arguments->NativeArgAt(0));
GET_NON_NULL_NATIVE_ARGUMENT(Smi, start_obj, arguments->NativeArgAt(1));
diff --git a/runtime/observatory/lib/src/service/object.dart b/runtime/observatory/lib/src/service/object.dart
index 738766a..5badd86 100644
--- a/runtime/observatory/lib/src/service/object.dart
+++ b/runtime/observatory/lib/src/service/object.dart
@@ -2204,6 +2204,9 @@
static const kConnectionClosed = 'ConnectionClosed';
static const kLogging = 'Logging';
static const kExtension = 'Extension';
+ static const kTimelineEvents = 'TimelineEvents';
+ static const kTimelineStreamSubscriptionsUpdate =
+ 'TimelineStreamSubscriptionsUpdate';
static const kServiceRegistered = 'ServiceRegistered';
static const kServiceUnregistered = 'ServiceUnregistered';
static const kDartDevelopmentServiceConnected =
@@ -2237,6 +2240,7 @@
String extensionKind;
Map extensionData;
List timelineEvents;
+ List<String> updatedStreams;
String spawnToken;
String spawnError;
String editor;
@@ -2322,6 +2326,9 @@
if (map['timelineEvents'] != null) {
timelineEvents = map['timelineEvents'];
}
+ if (map['updatedStreams'] != null) {
+ updatedStreams = map['updatedStreams'].cast<String>();
+ }
if (map['spawnToken'] != null) {
spawnToken = map['spawnToken'];
}
diff --git a/runtime/observatory/tests/service/bad_web_socket_address_test.dart b/runtime/observatory/tests/service/bad_web_socket_address_test.dart
index 08df24d..8f83fd8 100644
--- a/runtime/observatory/tests/service/bad_web_socket_address_test.dart
+++ b/runtime/observatory/tests/service/bad_web_socket_address_test.dart
@@ -6,18 +6,23 @@
import "package:observatory/service_io.dart";
import 'package:test/test.dart';
-void testBadWebSocket() {
+void testBadWebSocket() async {
var vm = new WebSocketVM(new WebSocketVMTarget('ws://karatekid/ws'));
- vm.load().then<dynamic>((_) => null).catchError(expectAsync((error) {
- expect(error, new isInstanceOf<NetworkRpcException>());
- }));
+
+ dynamic error;
+ try {
+ await vm.load();
+ } catch (e) {
+ error = e;
+ }
+ expect(error, new isInstanceOf<NetworkRpcException>());
}
-main() {
+main() async {
Logger.root.level = Level.INFO;
Logger.root.onRecord.listen((LogRecord rec) {
print('${rec.level.name}: ${rec.time}: ${rec.message}');
});
- test('bad web socket address', testBadWebSocket);
+ await test('bad web socket address', testBadWebSocket);
}
diff --git a/runtime/observatory/tests/service/breakpoint_non_debuggable_library_test.dart b/runtime/observatory/tests/service/breakpoint_non_debuggable_library_test.dart
index ccc7895..1c7af66 100644
--- a/runtime/observatory/tests/service/breakpoint_non_debuggable_library_test.dart
+++ b/runtime/observatory/tests/service/breakpoint_non_debuggable_library_test.dart
@@ -2,42 +2,44 @@
// 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:developer';
import 'package:observatory/service_io.dart';
-import 'package:path/path.dart';
+import 'package:observatory_test_package/has_part.dart' as test_pkg;
import 'package:test/test.dart';
import 'service_test_common.dart';
import 'test_helper.dart';
-const String file = 'package:path/path.dart';
-// At join() function
-const int LINE_A = 271;
-// At current getter function
-const int LINE_B = 83;
+const String file = 'package:observatory_test_package/has_part.dart';
+// print() within fooz()
+const int LINE_A = 15;
+// print() within barz()
+const int LINE_B = 11;
testMain() {
- print(join('test', 'test'));
+ test_pkg.fooz();
}
var tests = <IsolateTest>[
hasPausedAtStart,
(Isolate isolate) async {
- // Mark 'package:path/path.dart' as not debuggable.
+ // Mark 'package:observatory_test_package/has_part.dart' as not debuggable.
await isolate.reload();
- Library path =
+ Library has_part =
isolate.libraries.firstWhere((Library library) => library.uri == file);
- await path.load();
- expect(path.debuggable, true);
-
+ await has_part.load();
+ expect(has_part.debuggable, true);
// SetBreakpoint before setting library to non-debuggable.
- // Breakpoints are allowed to be set (before marking library as non-debuggable) but are not hit when running (after marking library as non-debuggable).
- Script script = path.scripts.single;
+ // Breakpoints are allowed to be set (before marking library as
+ // non-debuggable) but are not hit when running (after marking library
+ // as non-debuggable).
+ Script script =
+ has_part.scripts.firstWhere((Script script) => script.uri == file);
Breakpoint bpt = await isolate.addBreakpoint(script, LINE_A);
print("Breakpoint is $bpt");
expect(bpt, isNotNull);
expect(bpt is Breakpoint, isTrue);
- // Set breakpoint and check later that this breakpoint won't be added if library is non-debuggable.
+ // Set breakpoint and check later that this breakpoint won't be added if
+ // the library is non-debuggable.
bpt = await isolate.addBreakpoint(script, LINE_B);
print("Breakpoint is $bpt");
expect(bpt, isNotNull);
@@ -48,15 +50,15 @@
expect(res.type, 'Success');
var setDebugParams = {
- 'libraryId': path.id,
+ 'libraryId': has_part.id,
'isDebuggable': false,
};
Map<String, dynamic> result = await isolate.invokeRpcNoUpgrade(
'setLibraryDebuggable', setDebugParams);
expect(result['type'], 'Success');
- await path.reload();
- expect(path.debuggable, false);
- print('$path is debuggable: ${path.debuggable}');
+ await has_part.reload();
+ expect(has_part.debuggable, false);
+ print('$has_part is debuggable: ${has_part.debuggable}');
// Breakpoints are not allowed to set on non-debuggable libraries.
try {
diff --git a/runtime/observatory/tests/service/command_test.dart b/runtime/observatory/tests/service/command_test.dart
index 57ca485..a23d6b4 100644
--- a/runtime/observatory/tests/service/command_test.dart
+++ b/runtime/observatory/tests/service/command_test.dart
@@ -143,24 +143,22 @@
});
}
-void testCommandRunSimple() {
+testCommandRunSimple() async {
// Run a simple command.
StringBuffer out = new StringBuffer();
RootCommand cmd =
new RootCommand([new TestCommand(out, 'alpha', <Command>[])]);
// Full name dispatch works. Argument passing works.
- cmd.runCommand('alpha dog').then(expectAsync((_) {
- expect(out.toString(), contains('executing alpha([dog])\n'));
- out.clear();
- // Substring dispatch works.
- cmd.runCommand('al cat mouse').then(expectAsync((_) {
- expect(out.toString(), contains('executing alpha([cat , mouse])\n'));
- }));
- }));
+ await cmd.runCommand('alpha dog');
+ expect(out.toString(), contains('executing alpha([dog])\n'));
+ out.clear();
+ // Substring dispatch works.
+ await cmd.runCommand('al cat mouse');
+ expect(out.toString(), contains('executing alpha([cat , mouse])\n'));
}
-void testCommandRunSubcommand() {
+testCommandRunSubcommand() async {
// Run a simple command.
StringBuffer out = new StringBuffer();
RootCommand cmd = new RootCommand([
@@ -170,27 +168,29 @@
])
]);
- cmd.runCommand('a b').then(expectAsync((_) {
- expect(out.toString(), equals('executing beta([])\n'));
- out.clear();
- cmd.runCommand('alpha g ').then(expectAsync((_) {
- expect(out.toString(), equals('executing gamma([])\n'));
- }));
- }));
+ await cmd.runCommand('a b');
+ expect(out.toString(), equals('executing beta([])\n'));
+ out.clear();
+ await cmd.runCommand('alpha g ');
+ expect(out.toString(), equals('executing gamma([])\n'));
}
-void testCommandRunNotFound() {
+testCommandRunNotFound() async {
// Run a simple command.
StringBuffer out = new StringBuffer();
RootCommand cmd =
new RootCommand([new TestCommand(out, 'alpha', <Command>[])]);
- cmd.runCommand('goose').catchError(expectAsync((e) {
- expect(e.toString(), equals("No such command: 'goose'"));
- }));
+ dynamic e;
+ try {
+ await cmd.runCommand('goose');
+ } catch (ex) {
+ e = ex;
+ }
+ expect(e.toString(), equals("No such command: 'goose'"));
}
-void testCommandRunAmbiguous() {
+testCommandRunAmbiguous() async {
// Run a simple command.
StringBuffer out = new StringBuffer();
RootCommand cmd = new RootCommand([
@@ -198,16 +198,20 @@
new TestCommand(out, 'ankle', <Command>[])
]);
- cmd.runCommand('a 55').catchError(expectAsync((e) {
- expect(e.toString(), equals("Command 'a 55' is ambiguous: [alpha, ankle]"));
- out.clear();
- cmd.runCommand('ankl 55').then(expectAsync((_) {
- expect(out.toString(), equals('executing ankle([55])\n'));
- }));
- }));
+ dynamic e;
+ try {
+ await cmd.runCommand('a 55');
+ } catch (ex) {
+ e = ex;
+ }
+ expect(e.toString(), equals("Command 'a 55' is ambiguous: [alpha, ankle]"));
+ out.clear();
+
+ await cmd.runCommand('ankl 55');
+ expect(out.toString(), equals('executing ankle([55])\n'));
}
-void testCommandRunAlias() {
+testCommandRunAlias() async {
// Run a simple command.
StringBuffer out = new StringBuffer();
var aliasCmd = new TestCommand(out, 'alpha', <Command>[]);
@@ -215,9 +219,8 @@
RootCommand cmd =
new RootCommand([aliasCmd, new TestCommand(out, 'ankle', <Command>[])]);
- cmd.runCommand('a 55').then(expectAsync((_) {
- expect(out.toString(), equals('executing alpha([55])\n'));
- }));
+ await cmd.runCommand('a 55');
+ expect(out.toString(), equals('executing alpha([55])\n'));
}
main() {
diff --git a/runtime/observatory/tests/service/developer_extension_test.dart b/runtime/observatory/tests/service/developer_extension_test.dart
index d210539..30ca38d 100644
--- a/runtime/observatory/tests/service/developer_extension_test.dart
+++ b/runtime/observatory/tests/service/developer_extension_test.dart
@@ -38,10 +38,6 @@
'method': method,
'parameters': paremeters,
})));
- case 'ext..null':
- return null;
- case 'ext..nullFuture':
- return new Future<ServiceExtensionResponse>.value(null);
}
}
@@ -52,8 +48,6 @@
debugger();
registerExtension('ext..error', Handler);
registerExtension('ext..exception', Handler);
- registerExtension('ext..null', Handler);
- registerExtension('ext..nullFuture', Handler);
registerExtension('ext..success', Handler);
bool exceptionThrown = false;
try {
@@ -74,8 +68,6 @@
expect(isolate.extensionRPCs, contains('ext..delay'));
expect(isolate.extensionRPCs, isNot(contains('ext..error')));
expect(isolate.extensionRPCs, isNot(contains('ext..exception')));
- expect(isolate.extensionRPCs, isNot(contains('ext..null')));
- expect(isolate.extensionRPCs, isNot(contains('ext..nullFuture')));
expect(isolate.extensionRPCs, isNot(contains('ext..success')));
},
resumeIsolateAndAwaitEvent(Isolate.kExtensionStream, (ServiceEvent event) {
@@ -113,23 +105,6 @@
expect(e.message.startsWith('I always throw!\n'), isTrue);
}
- try {
- await isolate.invokeRpcNoUpgrade('ext..null', {});
- } on ServerRpcException catch (e, st) {
- expect(e.code, equals(ServiceExtensionResponse.extensionError));
- expect(e.message, equals('Extension handler must return a Future'));
- }
-
- try {
- await isolate.invokeRpcNoUpgrade('ext..nullFuture', {});
- } on ServerRpcException catch (e, st) {
- expect(e.code, equals(ServiceExtensionResponse.extensionError));
- expect(
- e.message,
- equals('Extension handler must complete to a '
- 'ServiceExtensionResponse'));
- }
-
result =
await isolate.invokeRpcNoUpgrade('ext..success', {'apple': 'banana'});
expect(result['type'], equals('_extensionType'));
diff --git a/runtime/observatory/tests/service/get_supported_protocols_test.dart b/runtime/observatory/tests/service/get_supported_protocols_test.dart
new file mode 100644
index 0000000..e72aeef
--- /dev/null
+++ b/runtime/observatory/tests/service/get_supported_protocols_test.dart
@@ -0,0 +1,32 @@
+// Copyright (c) 2020, 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 'package:observatory/service_io.dart';
+import 'package:test/test.dart';
+
+import 'test_helper.dart';
+
+final tests = <VMTest>[
+ (VM vm) async {
+ final result = await vm.invokeRpcNoUpgrade('getSupportedProtocols', {});
+ expect(result['type'], equals('ProtocolList'));
+ final List<Map> protocols =
+ result['protocols'].cast<Map<String, dynamic>>();
+ expect(protocols.length, useDds ? 2 : 1);
+
+ final expectedProtocols = <String>{
+ 'VM Service',
+ if (useDds) 'DDS',
+ };
+
+ for (final protocol in protocols) {
+ final protocolName = protocol['protocolName'];
+ expect(expectedProtocols.contains(protocolName), isTrue);
+ expect(protocol['major'] > 0, isTrue);
+ expect(protocol['minor'] >= 0, isTrue);
+ }
+ },
+];
+
+main(args) async => runVMTests(args, tests);
diff --git a/runtime/observatory/tests/service/get_version_rpc_test.dart b/runtime/observatory/tests/service/get_version_rpc_test.dart
index 3dc33db..f6c9473 100644
--- a/runtime/observatory/tests/service/get_version_rpc_test.dart
+++ b/runtime/observatory/tests/service/get_version_rpc_test.dart
@@ -12,7 +12,7 @@
var result = await vm.invokeRpcNoUpgrade('getVersion', {});
expect(result['type'], equals('Version'));
expect(result['major'], equals(3));
- expect(result['minor'], equals(33));
+ expect(result['minor'], equals(35));
expect(result['_privateMajor'], equals(0));
expect(result['_privateMinor'], equals(0));
},
diff --git a/runtime/observatory/tests/service/observatory_test_package/has_part.dart b/runtime/observatory/tests/service/observatory_test_package/has_part.dart
index 381f7e8..f59bb93 100644
--- a/runtime/observatory/tests/service/observatory_test_package/has_part.dart
+++ b/runtime/observatory/tests/service/observatory_test_package/has_part.dart
@@ -7,6 +7,15 @@
part 'the_part.dart';
part 'the_part_2.dart';
+barz() {
+ print('in bar!');
+}
+
+fooz() {
+ print('in foo!');
+ bar();
+}
+
main() {
Foo10 foo = new Foo10("Foo!");
print(foo);
diff --git a/runtime/observatory/tests/service/test_helper.dart b/runtime/observatory/tests/service/test_helper.dart
index bbb68b4..4c78a05 100644
--- a/runtime/observatory/tests/service/test_helper.dart
+++ b/runtime/observatory/tests/service/test_helper.dart
@@ -159,7 +159,9 @@
final String dartExecutable = Platform.executable;
- final fullArgs = <String>[];
+ final fullArgs = <String>[
+ '--disable-dart-dev',
+ ];
if (pause_on_start) {
fullArgs.add('--pause-isolates-on-start');
}
@@ -415,7 +417,7 @@
() => ignoreLateException(
() async {
if (useDds) {
- await dds.shutdown();
+ await dds?.shutdown();
}
process.requestExit();
},
diff --git a/runtime/observatory/tests/service/vm_timeline_events_test.dart b/runtime/observatory/tests/service/vm_timeline_events_test.dart
index a47bcf2..5ae3e8b 100644
--- a/runtime/observatory/tests/service/vm_timeline_events_test.dart
+++ b/runtime/observatory/tests/service/vm_timeline_events_test.dart
@@ -30,6 +30,9 @@
int eventCount;
onTimelineEvent(ServiceEvent event) {
+ if (event.kind != ServiceEvent.kTimelineEvents) {
+ return;
+ }
eventCount++;
expect(filterEvents(event.timelineEvents, isDart).length, greaterThan(0));
if (eventCount == 5) {
diff --git a/runtime/observatory/tests/service/vm_timeline_flags_test.dart b/runtime/observatory/tests/service/vm_timeline_flags_test.dart
index 32c42b0..72608f6 100644
--- a/runtime/observatory/tests/service/vm_timeline_flags_test.dart
+++ b/runtime/observatory/tests/service/vm_timeline_flags_test.dart
@@ -2,6 +2,7 @@
// 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 'dart:developer';
import 'package:observatory/service_io.dart';
import 'package:test/test.dart';
@@ -47,10 +48,19 @@
expect(filterEvents(result['traceEvents'], isNotMetaData).length, 0);
},
(Isolate isolate) async {
+ final completer = Completer<void>();
+ await subscribeToStream(isolate.vm, 'Timeline', (event) async {
+ expect(event.kind, ServiceEvent.kTimelineStreamSubscriptionsUpdate);
+ expect(event.updatedStreams.length, 1);
+ expect(event.updatedStreams.first, 'Dart');
+ await cancelStreamSubscription('Timeline');
+ completer.complete();
+ });
// Enable the Dart category.
await isolate.vm.invokeRpcNoUpgrade('setVMTimelineFlags', {
"recordedStreams": ["Dart"]
});
+ await completer.future;
},
(Isolate isolate) async {
// Get the flags.
@@ -77,6 +87,14 @@
},
hasStoppedAtBreakpoint,
(Isolate isolate) async {
+ final completer = Completer<void>();
+ await subscribeToStream(isolate.vm, 'Timeline', (event) async {
+ expect(event.kind, ServiceEvent.kTimelineStreamSubscriptionsUpdate);
+ expect(event.updatedStreams.length, 0);
+ await cancelStreamSubscription('Timeline');
+ completer.complete();
+ });
+
// Disable the Dart category.
await isolate.vm
.invokeRpcNoUpgrade('setVMTimelineFlags', {"recordedStreams": []});
@@ -85,6 +103,8 @@
expect(result['type'], equals('Timeline'));
expect(result['traceEvents'], new isInstanceOf<List>());
dartEventCount = filterEvents(result['traceEvents'], isDart).length;
+
+ await completer.future;
},
(Isolate isolate) async {
// Get the flags.
diff --git a/runtime/platform/address_sanitizer.h b/runtime/platform/address_sanitizer.h
index cc3f836..a0b9657 100644
--- a/runtime/platform/address_sanitizer.h
+++ b/runtime/platform/address_sanitizer.h
@@ -17,25 +17,13 @@
#if defined(USING_ADDRESS_SANITIZER)
extern "C" void __asan_unpoison_memory_region(void*, size_t);
-extern "C" void __lsan_register_root_region(const void* p, size_t size);
-extern "C" void __lsan_unregister_root_region(const void* p, size_t size);
#define NO_SANITIZE_ADDRESS __attribute__((no_sanitize("address")))
#define ASAN_UNPOISON(ptr, len) __asan_unpoison_memory_region(ptr, len)
-#define LSAN_REGISTER_ROOT_REGION(ptr, len) \
- __lsan_register_root_region(ptr, len)
-#define LSAN_UNREGISTER_ROOT_REGION(ptr, len) \
- __lsan_unregister_root_region(ptr, len)
-#else // __has_feature(address_sanitizer)
+#else // defined(USING_ADDRESS_SANITIZER)
#define NO_SANITIZE_ADDRESS
#define ASAN_UNPOISON(ptr, len) \
do { \
} while (false && (ptr) == 0 && (len) == 0)
-#define LSAN_REGISTER_ROOT_REGION(ptr, len) \
- do { \
- } while (false && (ptr) == 0 && (len) == 0)
-#define LSAN_UNREGISTER_ROOT_REGION(ptr, len) \
- do { \
- } while (false && (ptr) == 0 && (len) == 0)
#endif // defined(USING_ADDRESS_SANITIZER)
#endif // RUNTIME_PLATFORM_ADDRESS_SANITIZER_H_
diff --git a/runtime/platform/leak_sanitizer.h b/runtime/platform/leak_sanitizer.h
new file mode 100644
index 0000000..554be51
--- /dev/null
+++ b/runtime/platform/leak_sanitizer.h
@@ -0,0 +1,32 @@
+// Copyright (c) 2020, 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.
+
+#ifndef RUNTIME_PLATFORM_LEAK_SANITIZER_H_
+#define RUNTIME_PLATFORM_LEAK_SANITIZER_H_
+
+#include "platform/globals.h"
+
+#if defined(__has_feature)
+#if __has_feature(leak_sanitizer) || __has_feature(address_sanitizer)
+#define USING_LEAK_SANITIZER
+#endif
+#endif
+
+#if defined(USING_LEAK_SANITIZER)
+extern "C" void __lsan_register_root_region(const void* p, size_t size);
+extern "C" void __lsan_unregister_root_region(const void* p, size_t size);
+#define LSAN_REGISTER_ROOT_REGION(ptr, len) \
+ __lsan_register_root_region(ptr, len)
+#define LSAN_UNREGISTER_ROOT_REGION(ptr, len) \
+ __lsan_unregister_root_region(ptr, len)
+#else // defined(USING_LEAK_SANITIZER)
+#define LSAN_REGISTER_ROOT_REGION(ptr, len) \
+ do { \
+ } while (false && (ptr) == 0 && (len) == 0)
+#define LSAN_UNREGISTER_ROOT_REGION(ptr, len) \
+ do { \
+ } while (false && (ptr) == 0 && (len) == 0)
+#endif // defined(USING_LEAK_SANITIZER)
+
+#endif // RUNTIME_PLATFORM_LEAK_SANITIZER_H_
diff --git a/runtime/platform/utils.cc b/runtime/platform/utils.cc
index 4a23476..6314265 100644
--- a/runtime/platform/utils.cc
+++ b/runtime/platform/utils.cc
@@ -176,7 +176,7 @@
const uint64_t exp = 1LL << 63;
// Initialize the computations.
- uint64_t abs_d = (divisor >= 0) ? divisor : -divisor;
+ uint64_t abs_d = (divisor >= 0) ? divisor : -static_cast<uint64_t>(divisor);
uint64_t sign_bit = static_cast<uint64_t>(divisor) >> 63;
uint64_t tmp = exp + sign_bit;
uint64_t abs_nc = tmp - 1 - (tmp % abs_d);
diff --git a/runtime/platform/utils.h b/runtime/platform/utils.h
index c64a062..d69f2ee 100644
--- a/runtime/platform/utils.h
+++ b/runtime/platform/utils.h
@@ -300,6 +300,25 @@
return static_cast<int64_t>(static_cast<uint64_t>(a) << b);
}
+ template <typename T>
+ static inline T RotateLeft(T value, uint8_t rotate) {
+ const uint8_t width = sizeof(T) * kBitsPerByte;
+ ASSERT(0 <= rotate);
+ ASSERT(rotate <= width);
+ using Unsigned = typename std::make_unsigned<T>::type;
+ return (static_cast<Unsigned>(value) << rotate) |
+ (static_cast<T>(value) >> ((width - rotate) & (width - 1)));
+ }
+ template <typename T>
+ static inline T RotateRight(T value, uint8_t rotate) {
+ const uint8_t width = sizeof(T) * kBitsPerByte;
+ ASSERT(0 <= rotate);
+ ASSERT(rotate <= width);
+ using Unsigned = typename std::make_unsigned<T>::type;
+ return (static_cast<T>(value) >> rotate) |
+ (static_cast<Unsigned>(value) << ((width - rotate) & (width - 1)));
+ }
+
// Utility functions for converting values from host endianness to
// big or little endian values.
static uint16_t HostToBigEndian16(uint16_t host_value);
diff --git a/runtime/tests/vm/dart/isolates/enum_isolate_regress41824_test.dart b/runtime/tests/vm/dart/isolates/enum_isolate_regress41824_test.dart
new file mode 100644
index 0000000..902d5ef
--- /dev/null
+++ b/runtime/tests/vm/dart/isolates/enum_isolate_regress41824_test.dart
@@ -0,0 +1,633 @@
+// Copyright (c) 2020, 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 'dart:isolate';
+
+import 'package:expect/expect.dart';
+
+enum Command {
+ kValue0,
+ kValue1,
+ kValue2,
+ kValue3,
+ kValue4,
+ kValue5,
+ kValue6,
+ kValue7,
+ kValue8,
+ kValue9,
+ kValue10,
+ kValue11,
+ kValue12,
+ kValue13,
+ kValue14,
+ kValue15,
+ kValue16,
+ kValue17,
+ kValue18,
+ kValue19,
+ kValue20,
+ kValue21,
+ kValue22,
+ kValue23,
+ kValue24,
+ kValue25,
+ kValue26,
+ kValue27,
+ kValue28,
+ kValue29,
+ kValue30,
+ kValue31,
+ kValue32,
+ kValue33,
+ kValue34,
+ kValue35,
+ kValue36,
+ kValue37,
+ kValue38,
+ kValue39,
+ kValue40,
+ kValue41,
+ kValue42,
+ kValue43,
+ kValue44,
+ kValue45,
+ kValue46,
+ kValue47,
+ kValue48,
+ kValue49,
+ kValue50,
+ kValue51,
+ kValue52,
+ kValue53,
+ kValue54,
+ kValue55,
+ kValue56,
+ kValue57,
+ kValue58,
+ kValue59,
+ kValue60,
+ kValue61,
+ kValue62,
+ kValue63,
+ kValue64,
+ kValue65,
+ kValue66,
+ kValue67,
+ kValue68,
+ kValue69,
+ kValue70,
+ kValue71,
+ kValue72,
+ kValue73,
+ kValue74,
+ kValue75,
+ kValue76,
+ kValue77,
+ kValue78,
+ kValue79,
+ kValue80,
+ kValue81,
+ kValue82,
+ kValue83,
+ kValue84,
+ kValue85,
+ kValue86,
+ kValue87,
+ kValue88,
+ kValue89,
+ kValue90,
+ kValue91,
+ kValue92,
+ kValue93,
+ kValue94,
+ kValue95,
+ kValue96,
+ kValue97,
+ kValue98,
+ kValue99,
+ kValue100,
+ kValue101,
+ kValue102,
+ kValue103,
+ kValue104,
+ kValue105,
+ kValue106,
+ kValue107,
+ kValue108,
+ kValue109,
+ kValue110,
+ kValue111,
+ kValue112,
+ kValue113,
+ kValue114,
+ kValue115,
+ kValue116,
+ kValue117,
+ kValue118,
+ kValue119,
+ kValue120,
+ kValue121,
+ kValue122,
+ kValue123,
+ kValue124,
+ kValue125,
+ kValue126,
+ kValue127,
+ kValue128,
+ kValue129,
+ kValue130,
+ kValue131,
+ kValue132,
+ kValue133,
+ kValue134,
+ kValue135,
+ kValue136,
+ kValue137,
+ kValue138,
+ kValue139,
+ kValue140,
+ kValue141,
+ kValue142,
+ kValue143,
+ kValue144,
+ kValue145,
+ kValue146,
+ kValue147,
+ kValue148,
+ kValue149,
+ kValue150,
+ kValue151,
+ kValue152,
+ kValue153,
+ kValue154,
+ kValue155,
+ kValue156,
+ kValue157,
+ kValue158,
+ kValue159,
+ kValue160,
+ kValue161,
+ kValue162,
+ kValue163,
+ kValue164,
+ kValue165,
+ kValue166,
+ kValue167,
+ kValue168,
+ kValue169,
+ kValue170,
+ kValue171,
+ kValue172,
+ kValue173,
+ kValue174,
+ kValue175,
+ kValue176,
+ kValue177,
+ kValue178,
+ kValue179,
+ kValue180,
+ kValue181,
+ kValue182,
+ kValue183,
+ kValue184,
+ kValue185,
+ kValue186,
+ kValue187,
+ kValue188,
+ kValue189,
+ kValue190,
+ kValue191,
+ kValue192,
+ kValue193,
+ kValue194,
+ kValue195,
+ kValue196,
+ kValue197,
+ kValue198,
+ kValue199,
+ kValue200
+}
+
+void tryClose(List list) {
+ final List commands = list[0];
+ final SendPort sendPort = list[1];
+ sendPort.send(identical(commands[0], Command.kValue0) &&
+ identical(commands[1], Command.kValue1) &&
+ identical(commands[2], Command.kValue2) &&
+ identical(commands[3], Command.kValue3) &&
+ identical(commands[4], Command.kValue4) &&
+ identical(commands[5], Command.kValue5) &&
+ identical(commands[6], Command.kValue6) &&
+ identical(commands[7], Command.kValue7) &&
+ identical(commands[8], Command.kValue8) &&
+ identical(commands[9], Command.kValue9) &&
+ identical(commands[10], Command.kValue10) &&
+ identical(commands[11], Command.kValue11) &&
+ identical(commands[12], Command.kValue12) &&
+ identical(commands[13], Command.kValue13) &&
+ identical(commands[14], Command.kValue14) &&
+ identical(commands[15], Command.kValue15) &&
+ identical(commands[16], Command.kValue16) &&
+ identical(commands[17], Command.kValue17) &&
+ identical(commands[18], Command.kValue18) &&
+ identical(commands[19], Command.kValue19) &&
+ identical(commands[20], Command.kValue20) &&
+ identical(commands[21], Command.kValue21) &&
+ identical(commands[22], Command.kValue22) &&
+ identical(commands[23], Command.kValue23) &&
+ identical(commands[24], Command.kValue24) &&
+ identical(commands[25], Command.kValue25) &&
+ identical(commands[26], Command.kValue26) &&
+ identical(commands[27], Command.kValue27) &&
+ identical(commands[28], Command.kValue28) &&
+ identical(commands[29], Command.kValue29) &&
+ identical(commands[30], Command.kValue30) &&
+ identical(commands[31], Command.kValue31) &&
+ identical(commands[32], Command.kValue32) &&
+ identical(commands[33], Command.kValue33) &&
+ identical(commands[34], Command.kValue34) &&
+ identical(commands[35], Command.kValue35) &&
+ identical(commands[36], Command.kValue36) &&
+ identical(commands[37], Command.kValue37) &&
+ identical(commands[38], Command.kValue38) &&
+ identical(commands[39], Command.kValue39) &&
+ identical(commands[40], Command.kValue40) &&
+ identical(commands[41], Command.kValue41) &&
+ identical(commands[42], Command.kValue42) &&
+ identical(commands[43], Command.kValue43) &&
+ identical(commands[44], Command.kValue44) &&
+ identical(commands[45], Command.kValue45) &&
+ identical(commands[46], Command.kValue46) &&
+ identical(commands[47], Command.kValue47) &&
+ identical(commands[48], Command.kValue48) &&
+ identical(commands[49], Command.kValue49) &&
+ identical(commands[50], Command.kValue50) &&
+ identical(commands[51], Command.kValue51) &&
+ identical(commands[52], Command.kValue52) &&
+ identical(commands[53], Command.kValue53) &&
+ identical(commands[54], Command.kValue54) &&
+ identical(commands[55], Command.kValue55) &&
+ identical(commands[56], Command.kValue56) &&
+ identical(commands[57], Command.kValue57) &&
+ identical(commands[58], Command.kValue58) &&
+ identical(commands[59], Command.kValue59) &&
+ identical(commands[60], Command.kValue60) &&
+ identical(commands[61], Command.kValue61) &&
+ identical(commands[62], Command.kValue62) &&
+ identical(commands[63], Command.kValue63) &&
+ identical(commands[64], Command.kValue64) &&
+ identical(commands[65], Command.kValue65) &&
+ identical(commands[66], Command.kValue66) &&
+ identical(commands[67], Command.kValue67) &&
+ identical(commands[68], Command.kValue68) &&
+ identical(commands[69], Command.kValue69) &&
+ identical(commands[70], Command.kValue70) &&
+ identical(commands[71], Command.kValue71) &&
+ identical(commands[72], Command.kValue72) &&
+ identical(commands[73], Command.kValue73) &&
+ identical(commands[74], Command.kValue74) &&
+ identical(commands[75], Command.kValue75) &&
+ identical(commands[76], Command.kValue76) &&
+ identical(commands[77], Command.kValue77) &&
+ identical(commands[78], Command.kValue78) &&
+ identical(commands[79], Command.kValue79) &&
+ identical(commands[80], Command.kValue80) &&
+ identical(commands[81], Command.kValue81) &&
+ identical(commands[82], Command.kValue82) &&
+ identical(commands[83], Command.kValue83) &&
+ identical(commands[84], Command.kValue84) &&
+ identical(commands[85], Command.kValue85) &&
+ identical(commands[86], Command.kValue86) &&
+ identical(commands[87], Command.kValue87) &&
+ identical(commands[88], Command.kValue88) &&
+ identical(commands[89], Command.kValue89) &&
+ identical(commands[90], Command.kValue90) &&
+ identical(commands[91], Command.kValue91) &&
+ identical(commands[92], Command.kValue92) &&
+ identical(commands[93], Command.kValue93) &&
+ identical(commands[94], Command.kValue94) &&
+ identical(commands[95], Command.kValue95) &&
+ identical(commands[96], Command.kValue96) &&
+ identical(commands[97], Command.kValue97) &&
+ identical(commands[98], Command.kValue98) &&
+ identical(commands[99], Command.kValue99) &&
+ identical(commands[100], Command.kValue100) &&
+ identical(commands[101], Command.kValue101) &&
+ identical(commands[102], Command.kValue102) &&
+ identical(commands[103], Command.kValue103) &&
+ identical(commands[104], Command.kValue104) &&
+ identical(commands[105], Command.kValue105) &&
+ identical(commands[106], Command.kValue106) &&
+ identical(commands[107], Command.kValue107) &&
+ identical(commands[108], Command.kValue108) &&
+ identical(commands[109], Command.kValue109) &&
+ identical(commands[110], Command.kValue110) &&
+ identical(commands[111], Command.kValue111) &&
+ identical(commands[112], Command.kValue112) &&
+ identical(commands[113], Command.kValue113) &&
+ identical(commands[114], Command.kValue114) &&
+ identical(commands[115], Command.kValue115) &&
+ identical(commands[116], Command.kValue116) &&
+ identical(commands[117], Command.kValue117) &&
+ identical(commands[118], Command.kValue118) &&
+ identical(commands[119], Command.kValue119) &&
+ identical(commands[120], Command.kValue120) &&
+ identical(commands[121], Command.kValue121) &&
+ identical(commands[122], Command.kValue122) &&
+ identical(commands[123], Command.kValue123) &&
+ identical(commands[124], Command.kValue124) &&
+ identical(commands[125], Command.kValue125) &&
+ identical(commands[126], Command.kValue126) &&
+ identical(commands[127], Command.kValue127) &&
+ identical(commands[128], Command.kValue128) &&
+ identical(commands[129], Command.kValue129) &&
+ identical(commands[130], Command.kValue130) &&
+ identical(commands[131], Command.kValue131) &&
+ identical(commands[132], Command.kValue132) &&
+ identical(commands[133], Command.kValue133) &&
+ identical(commands[134], Command.kValue134) &&
+ identical(commands[135], Command.kValue135) &&
+ identical(commands[136], Command.kValue136) &&
+ identical(commands[137], Command.kValue137) &&
+ identical(commands[138], Command.kValue138) &&
+ identical(commands[139], Command.kValue139) &&
+ identical(commands[140], Command.kValue140) &&
+ identical(commands[141], Command.kValue141) &&
+ identical(commands[142], Command.kValue142) &&
+ identical(commands[143], Command.kValue143) &&
+ identical(commands[144], Command.kValue144) &&
+ identical(commands[145], Command.kValue145) &&
+ identical(commands[146], Command.kValue146) &&
+ identical(commands[147], Command.kValue147) &&
+ identical(commands[148], Command.kValue148) &&
+ identical(commands[149], Command.kValue149) &&
+ identical(commands[150], Command.kValue150) &&
+ identical(commands[151], Command.kValue151) &&
+ identical(commands[152], Command.kValue152) &&
+ identical(commands[153], Command.kValue153) &&
+ identical(commands[154], Command.kValue154) &&
+ identical(commands[155], Command.kValue155) &&
+ identical(commands[156], Command.kValue156) &&
+ identical(commands[157], Command.kValue157) &&
+ identical(commands[158], Command.kValue158) &&
+ identical(commands[159], Command.kValue159) &&
+ identical(commands[160], Command.kValue160) &&
+ identical(commands[161], Command.kValue161) &&
+ identical(commands[162], Command.kValue162) &&
+ identical(commands[163], Command.kValue163) &&
+ identical(commands[164], Command.kValue164) &&
+ identical(commands[165], Command.kValue165) &&
+ identical(commands[166], Command.kValue166) &&
+ identical(commands[167], Command.kValue167) &&
+ identical(commands[168], Command.kValue168) &&
+ identical(commands[169], Command.kValue169) &&
+ identical(commands[170], Command.kValue170) &&
+ identical(commands[171], Command.kValue171) &&
+ identical(commands[172], Command.kValue172) &&
+ identical(commands[173], Command.kValue173) &&
+ identical(commands[174], Command.kValue174) &&
+ identical(commands[175], Command.kValue175) &&
+ identical(commands[176], Command.kValue176) &&
+ identical(commands[177], Command.kValue177) &&
+ identical(commands[178], Command.kValue178) &&
+ identical(commands[179], Command.kValue179) &&
+ identical(commands[180], Command.kValue180) &&
+ identical(commands[181], Command.kValue181) &&
+ identical(commands[182], Command.kValue182) &&
+ identical(commands[183], Command.kValue183) &&
+ identical(commands[184], Command.kValue184) &&
+ identical(commands[185], Command.kValue185) &&
+ identical(commands[186], Command.kValue186) &&
+ identical(commands[187], Command.kValue187) &&
+ identical(commands[188], Command.kValue188) &&
+ identical(commands[189], Command.kValue189) &&
+ identical(commands[190], Command.kValue190) &&
+ identical(commands[191], Command.kValue191) &&
+ identical(commands[192], Command.kValue192) &&
+ identical(commands[193], Command.kValue193) &&
+ identical(commands[194], Command.kValue194) &&
+ identical(commands[195], Command.kValue195) &&
+ identical(commands[196], Command.kValue196) &&
+ identical(commands[197], Command.kValue197) &&
+ identical(commands[198], Command.kValue198) &&
+ identical(commands[199], Command.kValue199) &&
+ identical(commands[200], Command.kValue200));
+}
+
+main(args) async {
+ final rp = ReceivePort();
+ final si = StreamIterator(rp);
+ print('spawning child isolate');
+ await Isolate.spawn(tryClose, [
+ [
+ Command.kValue0,
+ Command.kValue1,
+ Command.kValue2,
+ Command.kValue3,
+ Command.kValue4,
+ Command.kValue5,
+ Command.kValue6,
+ Command.kValue7,
+ Command.kValue8,
+ Command.kValue9,
+ Command.kValue10,
+ Command.kValue11,
+ Command.kValue12,
+ Command.kValue13,
+ Command.kValue14,
+ Command.kValue15,
+ Command.kValue16,
+ Command.kValue17,
+ Command.kValue18,
+ Command.kValue19,
+ Command.kValue20,
+ Command.kValue21,
+ Command.kValue22,
+ Command.kValue23,
+ Command.kValue24,
+ Command.kValue25,
+ Command.kValue26,
+ Command.kValue27,
+ Command.kValue28,
+ Command.kValue29,
+ Command.kValue30,
+ Command.kValue31,
+ Command.kValue32,
+ Command.kValue33,
+ Command.kValue34,
+ Command.kValue35,
+ Command.kValue36,
+ Command.kValue37,
+ Command.kValue38,
+ Command.kValue39,
+ Command.kValue40,
+ Command.kValue41,
+ Command.kValue42,
+ Command.kValue43,
+ Command.kValue44,
+ Command.kValue45,
+ Command.kValue46,
+ Command.kValue47,
+ Command.kValue48,
+ Command.kValue49,
+ Command.kValue50,
+ Command.kValue51,
+ Command.kValue52,
+ Command.kValue53,
+ Command.kValue54,
+ Command.kValue55,
+ Command.kValue56,
+ Command.kValue57,
+ Command.kValue58,
+ Command.kValue59,
+ Command.kValue60,
+ Command.kValue61,
+ Command.kValue62,
+ Command.kValue63,
+ Command.kValue64,
+ Command.kValue65,
+ Command.kValue66,
+ Command.kValue67,
+ Command.kValue68,
+ Command.kValue69,
+ Command.kValue70,
+ Command.kValue71,
+ Command.kValue72,
+ Command.kValue73,
+ Command.kValue74,
+ Command.kValue75,
+ Command.kValue76,
+ Command.kValue77,
+ Command.kValue78,
+ Command.kValue79,
+ Command.kValue80,
+ Command.kValue81,
+ Command.kValue82,
+ Command.kValue83,
+ Command.kValue84,
+ Command.kValue85,
+ Command.kValue86,
+ Command.kValue87,
+ Command.kValue88,
+ Command.kValue89,
+ Command.kValue90,
+ Command.kValue91,
+ Command.kValue92,
+ Command.kValue93,
+ Command.kValue94,
+ Command.kValue95,
+ Command.kValue96,
+ Command.kValue97,
+ Command.kValue98,
+ Command.kValue99,
+ Command.kValue100,
+ Command.kValue101,
+ Command.kValue102,
+ Command.kValue103,
+ Command.kValue104,
+ Command.kValue105,
+ Command.kValue106,
+ Command.kValue107,
+ Command.kValue108,
+ Command.kValue109,
+ Command.kValue110,
+ Command.kValue111,
+ Command.kValue112,
+ Command.kValue113,
+ Command.kValue114,
+ Command.kValue115,
+ Command.kValue116,
+ Command.kValue117,
+ Command.kValue118,
+ Command.kValue119,
+ Command.kValue120,
+ Command.kValue121,
+ Command.kValue122,
+ Command.kValue123,
+ Command.kValue124,
+ Command.kValue125,
+ Command.kValue126,
+ Command.kValue127,
+ Command.kValue128,
+ Command.kValue129,
+ Command.kValue130,
+ Command.kValue131,
+ Command.kValue132,
+ Command.kValue133,
+ Command.kValue134,
+ Command.kValue135,
+ Command.kValue136,
+ Command.kValue137,
+ Command.kValue138,
+ Command.kValue139,
+ Command.kValue140,
+ Command.kValue141,
+ Command.kValue142,
+ Command.kValue143,
+ Command.kValue144,
+ Command.kValue145,
+ Command.kValue146,
+ Command.kValue147,
+ Command.kValue148,
+ Command.kValue149,
+ Command.kValue150,
+ Command.kValue151,
+ Command.kValue152,
+ Command.kValue153,
+ Command.kValue154,
+ Command.kValue155,
+ Command.kValue156,
+ Command.kValue157,
+ Command.kValue158,
+ Command.kValue159,
+ Command.kValue160,
+ Command.kValue161,
+ Command.kValue162,
+ Command.kValue163,
+ Command.kValue164,
+ Command.kValue165,
+ Command.kValue166,
+ Command.kValue167,
+ Command.kValue168,
+ Command.kValue169,
+ Command.kValue170,
+ Command.kValue171,
+ Command.kValue172,
+ Command.kValue173,
+ Command.kValue174,
+ Command.kValue175,
+ Command.kValue176,
+ Command.kValue177,
+ Command.kValue178,
+ Command.kValue179,
+ Command.kValue180,
+ Command.kValue181,
+ Command.kValue182,
+ Command.kValue183,
+ Command.kValue184,
+ Command.kValue185,
+ Command.kValue186,
+ Command.kValue187,
+ Command.kValue188,
+ Command.kValue189,
+ Command.kValue190,
+ Command.kValue191,
+ Command.kValue192,
+ Command.kValue193,
+ Command.kValue194,
+ Command.kValue195,
+ Command.kValue196,
+ Command.kValue197,
+ Command.kValue198,
+ Command.kValue199,
+ Command.kValue200
+ ],
+ rp.sendPort
+ ]);
+ await si.moveNext();
+ Expect.equals(true, si.current);
+ rp.close();
+}
diff --git a/runtime/tests/vm/dart/isolates/limited_active_mutator_test.dart b/runtime/tests/vm/dart/isolates/limited_active_mutator_test.dart
new file mode 100644
index 0000000..71ca959
--- /dev/null
+++ b/runtime/tests/vm/dart/isolates/limited_active_mutator_test.dart
@@ -0,0 +1,53 @@
+// Copyright (c) 2020, 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.
+
+// SharedObjects=ffi_test_functions
+// VMOptions=--enable-isolate-groups --disable-heap-verification --disable-thread-pool-limit
+
+import 'dart:async';
+import 'dart:math' as math;
+
+import 'package:expect/expect.dart';
+
+import 'test_utils.dart';
+
+// This should be larger than max-new-space-size/tlab-size.
+const int threadCount = 1000;
+const int treeHeight = 10;
+final expectedSum = math.pow(2, treeHeight) - 1;
+
+class Worker extends RingElement {
+ final int id;
+ Worker(this.id);
+
+ Future run(dynamic _, dynamic _2) async {
+ return buildTree(treeHeight).sum;
+ }
+}
+
+main(args) async {
+ // This test tests a custom embedder which installs it's own message handler
+ // and therefore does not use our thread pool implementation.
+ // The test passes `--disable-thread-pool-limit` to similate an embedder which
+ // can use arbitrarily number of threads.
+ //
+ // The VM is responsible for ensuring at most N number of mutator threads can
+ // be actively executing Dart code (if not, too many threads would be fighting
+ // to obtain TLABs and performance would be terrible).
+
+ final ring = await Ring.create(threadCount);
+
+ // Let each worker do a lot of allocations: If the VM doesn't limit the number
+ // of concurrent mutators, it would cause the threads to fight over TLABs and
+ // this test would timeout.
+ final results = await ring.run((int id) => Worker(id));
+
+ Expect.equals(threadCount, results.length);
+ for (int i = 0; i < threadCount; ++i) {
+ final int sum = results[i];
+ Expect.equals(expectedSum, sum);
+ }
+
+ await ring.close();
+}
diff --git a/runtime/tests/vm/dart/isolates/test_utils.dart b/runtime/tests/vm/dart/isolates/test_utils.dart
index 0017fab..67b84d8 100644
--- a/runtime/tests/vm/dart/isolates/test_utils.dart
+++ b/runtime/tests/vm/dart/isolates/test_utils.dart
@@ -60,11 +60,7 @@
port.send(results[0] + results[1]);
}
-class Command {
- static const int kRun = 0;
- static const int kRunAndClose = 1;
- static const int kClose = 2;
-}
+enum Command { kRun, kRunAndClose, kClose }
abstract class RingElement {
Future run(SendPort nextNeighbour, StreamIterator prevNeighbour);
diff --git a/runtime/tests/vm/dart/isolates/thread_pool_test.dart b/runtime/tests/vm/dart/isolates/thread_pool_test.dart
new file mode 100644
index 0000000..ff8a7e6
--- /dev/null
+++ b/runtime/tests/vm/dart/isolates/thread_pool_test.dart
@@ -0,0 +1,76 @@
+// Copyright (c) 2020, 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.
+
+// SharedObjects=ffi_test_functions
+// VMOptions=--enable-isolate-groups --disable-heap-verification
+
+import 'dart:async';
+import 'dart:ffi';
+
+import 'package:expect/expect.dart';
+
+import 'test_utils.dart';
+import '../../../../../tests/ffi_2/dylib_utils.dart';
+
+// This should be larger than max-new-space-size/tlab-size.
+const int threadCount = 200;
+
+class Isolate extends Struct {}
+
+typedef Dart_CurrentIsolateFT = Pointer<Isolate> Function();
+typedef Dart_CurrentIsolateNFT = Pointer<Isolate> Function();
+typedef Dart_EnterIsolateFT = void Function(Pointer<Isolate>);
+typedef Dart_EnterIsolateNFT = Void Function(Pointer<Isolate>);
+typedef Dart_ExitIsolateFT = void Function();
+typedef Dart_ExitIsolateNFT = Void Function();
+
+final ffiTestFunctions = dlopenPlatformSpecific("ffi_test_functions");
+
+final threadPoolBarrierSync = ffiTestFunctions.lookupFunction<
+ Void Function(
+ Pointer<NativeFunction<Dart_CurrentIsolateNFT>>,
+ Pointer<NativeFunction<Dart_EnterIsolateNFT>>,
+ Pointer<NativeFunction<Dart_ExitIsolateNFT>>,
+ IntPtr),
+ void Function(
+ Pointer<NativeFunction<Dart_CurrentIsolateNFT>>,
+ Pointer<NativeFunction<Dart_EnterIsolateNFT>>,
+ Pointer<NativeFunction<Dart_ExitIsolateNFT>>,
+ int)>('ThreadPoolTest_BarrierSync');
+
+final Pointer<NativeFunction<Dart_CurrentIsolateNFT>> dartCurrentIsolate =
+ DynamicLibrary.executable().lookup("Dart_CurrentIsolate").cast();
+final Pointer<NativeFunction<Dart_EnterIsolateNFT>> dartEnterIsolate =
+ DynamicLibrary.executable().lookup("Dart_EnterIsolate").cast();
+final Pointer<NativeFunction<Dart_ExitIsolateNFT>> dartExitIsolate =
+ DynamicLibrary.executable().lookup("Dart_ExitIsolate").cast();
+
+class Worker extends RingElement {
+ final int id;
+ Worker(this.id);
+
+ Future run(dynamic _, dynamic _2) async {
+ threadPoolBarrierSync(
+ dartCurrentIsolate, dartEnterIsolate, dartExitIsolate, threadCount);
+ return id;
+ }
+}
+
+main(args) async {
+ final ring = await Ring.create(threadCount);
+
+ // Let each worker:
+ // - call into C
+ // - exit the isolate
+ // - wait until notified
+ // - continue & exit
+ final results = await ring.run((int id) => Worker(id));
+
+ Expect.equals(threadCount, results.length);
+ for (int i = 0; i < threadCount; ++i) {
+ Expect.equals(i, results[i]);
+ }
+
+ await ring.close();
+}
diff --git a/runtime/tests/vm/dart/null_safety_autodetection_in_kernel_compiler_test.dart b/runtime/tests/vm/dart/null_safety_autodetection_in_kernel_compiler_test.dart
new file mode 100644
index 0000000..348b154
--- /dev/null
+++ b/runtime/tests/vm/dart/null_safety_autodetection_in_kernel_compiler_test.dart
@@ -0,0 +1,44 @@
+// Copyright (c) 2020, 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.
+
+// Tests auto-detection of null safety mode in gen_kernel tool.
+
+import 'dart:io' show File, Platform;
+
+import 'package:path/path.dart' as path;
+import 'snapshot_test_helper.dart';
+
+compileAndRunTest(String comment, String expectedOutput) async {
+ await withTempDir((String temp) async {
+ final testScriptPath = path.join(temp, 'test.dart');
+ File(testScriptPath).writeAsStringSync('''
+ // $comment
+
+ void main() {
+ try {
+ null as int;
+ print('weak mode');
+ } on TypeError {
+ print('strong mode');
+ }
+ }
+ ''');
+
+ final testDillPath = path.join(temp, 'test.dill');
+ await runGenKernel('BUILD DILL FILE', [
+ '--enable-experiment=non-nullable',
+ '--output=$testDillPath',
+ testScriptPath,
+ ]);
+
+ final result = await runBinary(
+ 'RUN TEST FROM DILL', Platform.executable, [testDillPath]);
+ expectOutput(expectedOutput, result);
+ });
+}
+
+main() async {
+ await compileAndRunTest('', 'strong mode');
+ await compileAndRunTest('@dart=2.7', 'weak mode');
+}
diff --git a/runtime/tests/vm/dart/use_dwarf_stack_traces_flag_test.dart b/runtime/tests/vm/dart/use_dwarf_stack_traces_flag_test.dart
index 00c7f4f..04c06e6 100644
--- a/runtime/tests/vm/dart/use_dwarf_stack_traces_flag_test.dart
+++ b/runtime/tests/vm/dart/use_dwarf_stack_traces_flag_test.dart
@@ -106,8 +106,9 @@
// For DWARF stack traces, we can't guarantee that the stack traces are
// textually equal on all platforms, but if we retrieve the PC offsets
// out of the stack trace, those should be equal.
- Expect.deepEquals(
- collectPCOffsets(dwarfTrace1), collectPCOffsets(dwarfTrace2));
+ final tracePCOffsets1 = collectPCOffsets(dwarfTrace1);
+ final tracePCOffsets2 = collectPCOffsets(dwarfTrace2);
+ Expect.deepEquals(tracePCOffsets1, tracePCOffsets2);
// Check that translating the DWARF stack trace (without internal frames)
// matches the symbolic stack trace.
@@ -132,6 +133,17 @@
Expect.isTrue(originalStackFrames.length > 0);
Expect.deepEquals(translatedStackFrames, originalStackFrames);
+
+ // Since we compiled directly to ELF, there should be 'virt' markers in the
+ // stack traces. Make sure the address following the marker matches the
+ // relocated address calculated from the PCOffset for each frame.
+ final virtTrace1 = explicitVirtualAddresses(dwarfTrace1);
+ final virtTrace2 = explicitVirtualAddresses(dwarfTrace2);
+
+ Expect.deepEquals(
+ virtTrace1, tracePCOffsets1.map((o) => o.virtualAddressIn(dwarf)));
+ Expect.deepEquals(
+ virtTrace2, tracePCOffsets2.map((o) => o.virtualAddressIn(dwarf)));
});
}
@@ -140,3 +152,14 @@
Iterable<String> onlySymbolicFrameLines(Iterable<String> lines) {
return lines.where((line) => _symbolicFrameRE.hasMatch(line));
}
+
+final _virtRE = RegExp(r'virt ([a-f\d]+)');
+
+Iterable<int> explicitVirtualAddresses(Iterable<String> lines) sync* {
+ for (final line in lines) {
+ final match = _virtRE.firstMatch(line);
+ if (match != null) {
+ yield int.parse(match.group(1), radix: 16);
+ }
+ }
+}
diff --git a/runtime/tests/vm/vm.status b/runtime/tests/vm/vm.status
index 1bf7994..b65f316 100644
--- a/runtime/tests/vm/vm.status
+++ b/runtime/tests/vm/vm.status
@@ -17,6 +17,7 @@
dart/emit_aot_size_info_flag_test: Pass, Slow # Spawns several subprocesses
dart/minimal_kernel_bytecode_test: Pass, Slow # Spawns several subprocesses
dart/minimal_kernel_test: Pass, Slow # Spawns several subprocesses
+dart/null_safety_autodetection_in_kernel_compiler_test: Pass, Slow # Spawns several subprocesses
dart/slow_path_shared_stub_test: Pass, Slow # Uses --shared-slow-path-triggers-gc flag.
dart/snapshot_version_test: Skip # This test is a Dart1 test (script snapshot)
dart/stack_overflow_shared_test: Pass, Slow # Uses --shared-slow-path-triggers-gc flag.
@@ -26,12 +27,17 @@
dart/isolates/fibonacci_call_ig_test: Skip # Only AOT has lightweight enough isolates to run those tests, JIT work is pending.
dart/isolates/fibonacci_call_test: Skip # Only AOT has lightweight enough isolates to run those tests.
dart/isolates/internal: Skip # Only AOT has lightweight enough isolates to run those tests.
+dart/isolates/limited_active_mutator_test: Skip # Only AOT has lightweight enough isolates to run those tests.
dart/isolates/ring_gc_sendAndExit_test: Skip # Only AOT has lightweight enough isolates to run those tests.
dart/isolates/ring_gc_test: Skip # Only AOT has lightweight enough isolates to run those tests.
dart/isolates/sum_recursive_call_ig_test: Skip # Only AOT has lightweight enough isolates to run those tests.
dart/isolates/sum_recursive_call_test: Skip # Only AOT has lightweight enough isolates to run those tests.
dart/isolates/sum_recursive_tail_call_ig_test: Skip # Only AOT has lightweight enough isolates to run those tests.
dart/isolates/sum_recursive_tail_call_test: Skip # Only AOT has lightweight enough isolates to run those tests.
+dart/isolates/thread_pool_test: Skip # Only AOT has lightweight enough isolates to run those tests.
+
+[ $arch == simarm || $arch == simarm64 ]
+dart/isolates/thread_pool_test: SkipByDesign # Test uses dart:ffi which is not supported on simulators.
[ $builder_tag == asan ]
dart/transferable_throws_oom_test: SkipByDesign # This test tries to allocate too much memory on purpose. Still dartbug.com/37188
@@ -52,6 +58,7 @@
dart/kernel_determinism_test: SkipSlow
dart/minimal_kernel_bytecode_test: SkipSlow # gen_kernel is too slow with optimization_counter_threshold
dart/minimal_kernel_test: SkipSlow # gen_kernel is too slow with optimization_counter_threshold
+dart/null_safety_autodetection_in_kernel_compiler_test: SkipSlow # gen_kernel is too slow with optimization_counter_threshold
[ $builder_tag == tsan ]
dart/appjit_cha_deopt_test: SkipSlow
@@ -79,6 +86,7 @@
dart/appjit_cha_deopt_test: Pass, Slow # Quite slow in debug mode, uses --optimization-counter-threshold=100
dart/minimal_kernel_bytecode_test: SkipSlow # gen_kernel is too slow in debug mode
dart/minimal_kernel_test: SkipSlow # gen_kernel is too slow in debug mode
+dart/null_safety_autodetection_in_kernel_compiler_test: SkipSlow # gen_kernel is too slow in debug mode
dart/spawn_shutdown_test: Pass, Slow # VM Shutdown test, It can take some time for all the isolates to shutdown in a Debug build.
[ $mode == product ]
@@ -141,6 +149,7 @@
dart/kernel_determinism_test: SkipByDesign # Test needs to run from source
dart/minimal_kernel_bytecode_test: SkipByDesign # Test needs to run from source
dart/minimal_kernel_test: SkipByDesign # Test needs to run from source
+dart/null_safety_autodetection_in_kernel_compiler_test: SkipByDesign # Test needs to run from source
dart/snapshot_depfile_test: SkipByDesign # Test needs to run from source
[ $compiler == dartkp && ($runtime == dart_precompiled || $runtime == vm) ]
@@ -202,6 +211,7 @@
dart/data_uri_spawn_test: Skip # Please triage.
dart/minimal_kernel_bytecode_test: SkipSlow # gen_kernel is too slow on simulated architectures
dart/minimal_kernel_test: SkipSlow # gen_kernel is too slow on simulated architectures
+dart/null_safety_autodetection_in_kernel_compiler_test: SkipSlow # gen_kernel is too slow on simulated architectures
dart/snapshot_version_test: RuntimeError # Please triage.
[ $hot_reload || $hot_reload_rollback ]
@@ -302,6 +312,7 @@
dart/issue_31959_31960_test: SkipSlow
dart/minimal_kernel_bytecode_test: SkipSlow # gen_kernel is too slow in hot reload testing mode
dart/minimal_kernel_test: SkipSlow # gen_kernel is too slow in hot reload testing mode
+dart/null_safety_autodetection_in_kernel_compiler_test: SkipSlow # gen_kernel is too slow in hot reload testing mode
dart/print_flow_graph_determinism_test: SkipSlow
dart/slow_path_shared_stub_test: SkipSlow # Too slow with --shared-slow-path-triggers-gc flag and not relevant outside precompiled.
dart/spawn_infinite_loop_test: Skip # We can shutdown an isolate before it reloads.
diff --git a/runtime/vm/BUILD.gn b/runtime/vm/BUILD.gn
index b29ca39..f8d4cdf 100644
--- a/runtime/vm/BUILD.gn
+++ b/runtime/vm/BUILD.gn
@@ -83,8 +83,9 @@
# necessary.
"//sdk/fidl/fuchsia.deprecatedtimezone",
"//sdk/lib/sys/cpp",
+ "//sdk/lib/sys/inspect/cpp",
"//zircon/public/lib/fbl",
- "//zircon/public/lib/trace-engine",
+ "//zircon/system/ulib/trace-engine",
]
}
}
@@ -128,7 +129,7 @@
} else {
extra_deps = [
"//zircon/public/lib/fbl",
- "//zircon/public/lib/trace-engine",
+ "//zircon/system/ulib/trace-engine",
]
}
}
diff --git a/runtime/vm/bootstrap.cc b/runtime/vm/bootstrap.cc
index 1065295..8903a2b 100644
--- a/runtime/vm/bootstrap.cc
+++ b/runtime/vm/bootstrap.cc
@@ -105,6 +105,7 @@
const String& msg = String::Handle(String::New(message_buffer, Heap::kOld));
return ApiError::New(msg, Heap::kOld);
}
+ program->AutoDetectNullSafety(thread->isolate());
kernel::KernelLoader loader(program.get(), /*uri_to_source_table=*/nullptr);
Isolate* isolate = thread->isolate();
diff --git a/runtime/vm/bootstrap_natives.h b/runtime/vm/bootstrap_natives.h
index 6e113a0..7246a53 100644
--- a/runtime/vm/bootstrap_natives.h
+++ b/runtime/vm/bootstrap_natives.h
@@ -125,9 +125,7 @@
V(StringBuffer_createStringFromUint16Array, 3) \
V(OneByteString_substringUnchecked, 3) \
V(OneByteString_splitWithCharCode, 2) \
- V(OneByteString_allocate, 1) \
V(OneByteString_allocateFromOneByteList, 3) \
- V(OneByteString_setAt, 3) \
V(TwoByteString_allocateFromTwoByteList, 3) \
V(String_getHashCode, 1) \
V(String_getLength, 1) \
@@ -338,6 +336,10 @@
V(Internal_extractTypeArguments, 2) \
V(Internal_prependTypeArguments, 4) \
V(Internal_boundsCheckForPartialInstantiation, 2) \
+ V(Internal_allocateOneByteString, 1) \
+ V(Internal_allocateTwoByteString, 1) \
+ V(Internal_writeIntoOneByteString, 3) \
+ V(Internal_writeIntoTwoByteString, 3) \
V(InvocationMirror_unpackTypeArguments, 2) \
V(NoSuchMethodError_existingMethodSignature, 3) \
V(LinkedHashMap_getIndex, 1) \
diff --git a/runtime/vm/class_finalizer.cc b/runtime/vm/class_finalizer.cc
index cfe2a4d..0e26873 100644
--- a/runtime/vm/class_finalizer.cc
+++ b/runtime/vm/class_finalizer.cc
@@ -1755,11 +1755,6 @@
auto object_store = isolate->object_store();
auto& null_code = Code::Handle(zone);
object_store->set_build_method_extractor_code(null_code);
-
- auto& miss_function =
- Function::Handle(zone, object_store->megamorphic_call_miss_function());
- miss_function.ClearCode();
- object_store->SetMegamorphicCallMissHandler(null_code, miss_function);
}
#endif // !DART_PRECOMPILED_RUNTIME
}
diff --git a/runtime/vm/compiler/aot/precompiler.cc b/runtime/vm/compiler/aot/precompiler.cc
index f63bf47..5a2d32b 100644
--- a/runtime/vm/compiler/aot/precompiler.cc
+++ b/runtime/vm/compiler/aot/precompiler.cc
@@ -293,9 +293,6 @@
stub_code =
StubCode::GetBuildMethodExtractorStub(global_object_pool_builder());
I->object_store()->set_build_method_extractor_code(stub_code);
-
- MegamorphicCacheTable::ReInitMissHandlerCode(
- isolate_, global_object_pool_builder());
}
CollectDynamicFunctionNames();
@@ -2368,7 +2365,8 @@
ZoneGrowableArray<const ICData*>* ic_data_array = nullptr;
const Function& function = parsed_function()->function();
- CompilerState compiler_state(thread(), /*is_aot=*/true);
+ CompilerState compiler_state(thread(), /*is_aot=*/true,
+ CompilerState::ShouldTrace(function));
{
ic_data_array = new (zone) ZoneGrowableArray<const ICData*>();
diff --git a/runtime/vm/compiler/asm_intrinsifier_arm.cc b/runtime/vm/compiler/asm_intrinsifier_arm.cc
index 531400e..7a5bd68 100644
--- a/runtime/vm/compiler/asm_intrinsifier_arm.cc
+++ b/runtime/vm/compiler/asm_intrinsifier_arm.cc
@@ -2011,12 +2011,14 @@
__ Ret();
}
-// Allocates a _OneByteString. The content is not initialized.
+// Allocates a _OneByteString or _TwoByteString. The content is not initialized.
// 'length-reg' (R2) contains the desired length as a _Smi or _Mint.
// Returns new string as tagged pointer in R0.
-static void TryAllocateOneByteString(Assembler* assembler,
- Label* ok,
- Label* failure) {
+static void TryAllocateString(Assembler* assembler,
+ classid_t cid,
+ Label* ok,
+ Label* failure) {
+ ASSERT(cid == kOneByteStringCid || cid == kTwoByteStringCid);
const Register length_reg = R2;
// _Mint length: call to runtime to produce error.
__ BranchIfNotSmi(length_reg, failure);
@@ -2024,10 +2026,14 @@
__ cmp(length_reg, Operand(0));
__ b(failure, LT);
- NOT_IN_PRODUCT(__ LoadAllocationStatsAddress(R0, kOneByteStringCid));
+ NOT_IN_PRODUCT(__ LoadAllocationStatsAddress(R0, cid));
NOT_IN_PRODUCT(__ MaybeTraceAllocation(R0, failure));
__ mov(R8, Operand(length_reg)); // Save the length register.
- __ SmiUntag(length_reg);
+ if (cid == kOneByteStringCid) {
+ __ SmiUntag(length_reg);
+ } else {
+ // Untag length and multiply by element size -> no-op.
+ }
const intptr_t fixed_size_plus_alignment_padding =
target::String::InstanceSize() +
target::ObjectAlignment::kObjectAlignment - 1;
@@ -2035,7 +2041,6 @@
__ bic(length_reg, length_reg,
Operand(target::ObjectAlignment::kObjectAlignment - 1));
- const intptr_t cid = kOneByteStringCid;
__ ldr(R0, Address(THR, target::Thread::top_offset()));
// length_reg: allocation size.
@@ -2105,7 +2110,7 @@
__ b(normal_ir_body, NE); // 'start', 'end' not Smi.
__ sub(R2, R2, Operand(TMP));
- TryAllocateOneByteString(assembler, &ok, normal_ir_body);
+ TryAllocateString(assembler, kOneByteStringCid, &ok, normal_ir_body);
__ Bind(&ok);
// R0: new string as tagged pointer.
// Copy string.
@@ -2146,8 +2151,8 @@
__ Bind(normal_ir_body);
}
-void AsmIntrinsifier::OneByteStringSetAt(Assembler* assembler,
- Label* normal_ir_body) {
+void AsmIntrinsifier::WriteIntoOneByteString(Assembler* assembler,
+ Label* normal_ir_body) {
__ ldr(R2, Address(SP, 0 * target::kWordSize)); // Value.
__ ldr(R1, Address(SP, 1 * target::kWordSize)); // Index.
__ ldr(R0, Address(SP, 2 * target::kWordSize)); // OneByteString.
@@ -2159,11 +2164,36 @@
__ Ret();
}
-void AsmIntrinsifier::OneByteString_allocate(Assembler* assembler,
+void AsmIntrinsifier::WriteIntoTwoByteString(Assembler* assembler,
Label* normal_ir_body) {
+ __ ldr(R2, Address(SP, 0 * target::kWordSize)); // Value.
+ __ ldr(R1, Address(SP, 1 * target::kWordSize)); // Index.
+ __ ldr(R0, Address(SP, 2 * target::kWordSize)); // TwoByteString.
+ // Untag index and multiply by element size -> no-op.
+ __ SmiUntag(R2);
+ __ AddImmediate(R3, R0,
+ target::TwoByteString::data_offset() - kHeapObjectTag);
+ __ strh(R2, Address(R3, R1));
+ __ Ret();
+}
+
+void AsmIntrinsifier::AllocateOneByteString(Assembler* assembler,
+ Label* normal_ir_body) {
__ ldr(R2, Address(SP, 0 * target::kWordSize)); // Length.
Label ok;
- TryAllocateOneByteString(assembler, &ok, normal_ir_body);
+ TryAllocateString(assembler, kOneByteStringCid, &ok, normal_ir_body);
+
+ __ Bind(&ok);
+ __ Ret();
+
+ __ Bind(normal_ir_body);
+}
+
+void AsmIntrinsifier::AllocateTwoByteString(Assembler* assembler,
+ Label* normal_ir_body) {
+ __ ldr(R2, Address(SP, 0 * target::kWordSize)); // Length.
+ Label ok;
+ TryAllocateString(assembler, kTwoByteStringCid, &ok, normal_ir_body);
__ Bind(&ok);
__ Ret();
diff --git a/runtime/vm/compiler/asm_intrinsifier_arm64.cc b/runtime/vm/compiler/asm_intrinsifier_arm64.cc
index 82c487d..a6247f9 100644
--- a/runtime/vm/compiler/asm_intrinsifier_arm64.cc
+++ b/runtime/vm/compiler/asm_intrinsifier_arm64.cc
@@ -2077,22 +2077,29 @@
__ ret();
}
-// Allocates a _OneByteString. The content is not initialized.
+// Allocates a _OneByteString or _TwoByteString. The content is not initialized.
// 'length-reg' (R2) contains the desired length as a _Smi or _Mint.
// Returns new string as tagged pointer in R0.
-static void TryAllocateOneByteString(Assembler* assembler,
- Label* ok,
- Label* failure) {
+static void TryAllocateString(Assembler* assembler,
+ classid_t cid,
+ Label* ok,
+ Label* failure) {
+ ASSERT(cid == kOneByteStringCid || cid == kTwoByteStringCid);
const Register length_reg = R2;
// _Mint length: call to runtime to produce error.
__ BranchIfNotSmi(length_reg, failure);
// negative length: call to runtime to produce error.
__ tbnz(failure, length_reg, compiler::target::kBitsPerWord - 1);
- NOT_IN_PRODUCT(__ MaybeTraceAllocation(kOneByteStringCid, R0, failure));
+ NOT_IN_PRODUCT(__ MaybeTraceAllocation(cid, R0, failure));
__ mov(R6, length_reg); // Save the length register.
- // TODO(koda): Protect against negative length and overflow here.
- __ adds(length_reg, ZR, Operand(length_reg, ASR, kSmiTagSize)); // Smi untag.
+ if (cid == kOneByteStringCid) {
+ // Untag length.
+ __ adds(length_reg, ZR, Operand(length_reg, ASR, kSmiTagSize));
+ } else {
+ // Untag length and multiply by element size -> no-op.
+ __ adds(length_reg, ZR, Operand(length_reg));
+ }
// If the length is 0 then we have to make the allocated size a bit bigger,
// otherwise the string takes up less space than an ExternalOneByteString,
// and cannot be externalized. TODO(erikcorry): We should probably just
@@ -2106,7 +2113,6 @@
__ andi(length_reg, length_reg,
Immediate(~(target::ObjectAlignment::kObjectAlignment - 1)));
- const intptr_t cid = kOneByteStringCid;
__ ldr(R0, Address(THR, target::Thread::top_offset()));
// length_reg: allocation size.
@@ -2171,7 +2177,7 @@
__ BranchIfNotSmi(R3, normal_ir_body); // 'start', 'end' not Smi.
__ sub(R2, R2, Operand(TMP));
- TryAllocateOneByteString(assembler, &ok, normal_ir_body);
+ TryAllocateString(assembler, kOneByteStringCid, &ok, normal_ir_body);
__ Bind(&ok);
// R0: new string as tagged pointer.
// Copy string.
@@ -2214,8 +2220,8 @@
__ Bind(normal_ir_body);
}
-void AsmIntrinsifier::OneByteStringSetAt(Assembler* assembler,
- Label* normal_ir_body) {
+void AsmIntrinsifier::WriteIntoOneByteString(Assembler* assembler,
+ Label* normal_ir_body) {
__ ldr(R2, Address(SP, 0 * target::kWordSize)); // Value.
__ ldr(R1, Address(SP, 1 * target::kWordSize)); // Index.
__ ldr(R0, Address(SP, 2 * target::kWordSize)); // OneByteString.
@@ -2227,12 +2233,38 @@
__ ret();
}
-void AsmIntrinsifier::OneByteString_allocate(Assembler* assembler,
+void AsmIntrinsifier::WriteIntoTwoByteString(Assembler* assembler,
Label* normal_ir_body) {
+ __ ldr(R2, Address(SP, 0 * target::kWordSize)); // Value.
+ __ ldr(R1, Address(SP, 1 * target::kWordSize)); // Index.
+ __ ldr(R0, Address(SP, 2 * target::kWordSize)); // TwoByteString.
+ // Untag index and multiply by element size -> no-op.
+ __ SmiUntag(R2);
+ __ AddImmediate(R3, R0,
+ target::TwoByteString::data_offset() - kHeapObjectTag);
+ __ str(R2, Address(R3, R1), kUnsignedHalfword);
+ __ ret();
+}
+
+void AsmIntrinsifier::AllocateOneByteString(Assembler* assembler,
+ Label* normal_ir_body) {
Label ok;
__ ldr(R2, Address(SP, 0 * target::kWordSize)); // Length.
- TryAllocateOneByteString(assembler, &ok, normal_ir_body);
+ TryAllocateString(assembler, kOneByteStringCid, &ok, normal_ir_body);
+
+ __ Bind(&ok);
+ __ ret();
+
+ __ Bind(normal_ir_body);
+}
+
+void AsmIntrinsifier::AllocateTwoByteString(Assembler* assembler,
+ Label* normal_ir_body) {
+ Label ok;
+
+ __ ldr(R2, Address(SP, 0 * target::kWordSize)); // Length.
+ TryAllocateString(assembler, kTwoByteStringCid, &ok, normal_ir_body);
__ Bind(&ok);
__ ret();
diff --git a/runtime/vm/compiler/asm_intrinsifier_ia32.cc b/runtime/vm/compiler/asm_intrinsifier_ia32.cc
index 45627cb..47ba761 100644
--- a/runtime/vm/compiler/asm_intrinsifier_ia32.cc
+++ b/runtime/vm/compiler/asm_intrinsifier_ia32.cc
@@ -2021,27 +2021,32 @@
__ ret();
}
-// Allocates a _OneByteString. The content is not initialized.
-// 'length-reg' contains the desired length as a _Smi or _Mint.
+// Allocates a _OneByteString or _TwoByteString. The content is not initialized.
+// 'length_reg' contains the desired length as a _Smi or _Mint.
// Returns new string as tagged pointer in EAX.
-static void TryAllocateOneByteString(Assembler* assembler,
- Label* ok,
- Label* failure,
- Register length_reg) {
+static void TryAllocateString(Assembler* assembler,
+ classid_t cid,
+ Label* ok,
+ Label* failure,
+ Register length_reg) {
+ ASSERT(cid == kOneByteStringCid || cid == kTwoByteStringCid);
// _Mint length: call to runtime to produce error.
__ BranchIfNotSmi(length_reg, failure);
// negative length: call to runtime to produce error.
__ cmpl(length_reg, Immediate(0));
__ j(LESS, failure);
- NOT_IN_PRODUCT(
- __ MaybeTraceAllocation(kOneByteStringCid, EAX, failure, false));
+ NOT_IN_PRODUCT(__ MaybeTraceAllocation(cid, EAX, failure, false));
if (length_reg != EDI) {
__ movl(EDI, length_reg);
}
Label pop_and_fail;
__ pushl(EDI); // Preserve length.
- __ SmiUntag(EDI);
+ if (cid == kOneByteStringCid) {
+ __ SmiUntag(EDI);
+ } else {
+ // Untag length and multiply by element size -> no-op.
+ }
const intptr_t fixed_size_plus_alignment_padding =
target::String::InstanceSize() +
target::ObjectAlignment::kObjectAlignment - 1;
@@ -2049,7 +2054,6 @@
fixed_size_plus_alignment_padding)); // EDI is untagged.
__ andl(EDI, Immediate(-target::ObjectAlignment::kObjectAlignment));
- const intptr_t cid = kOneByteStringCid;
__ movl(EAX, Address(THR, target::Thread::top_offset()));
__ movl(EBX, EAX);
@@ -2122,7 +2126,7 @@
__ j(NOT_ZERO, normal_ir_body); // 'start', 'end' not Smi.
__ subl(EDI, Address(ESP, +kStartIndexOffset));
- TryAllocateOneByteString(assembler, &ok, normal_ir_body, EDI);
+ TryAllocateString(assembler, kOneByteStringCid, &ok, normal_ir_body, EDI);
__ Bind(&ok);
// EAX: new string as tagged pointer.
// Copy string.
@@ -2156,8 +2160,8 @@
__ Bind(normal_ir_body);
}
-void AsmIntrinsifier::OneByteStringSetAt(Assembler* assembler,
- Label* normal_ir_body) {
+void AsmIntrinsifier::WriteIntoOneByteString(Assembler* assembler,
+ Label* normal_ir_body) {
__ movl(ECX, Address(ESP, +1 * target::kWordSize)); // Value.
__ movl(EBX, Address(ESP, +2 * target::kWordSize)); // Index.
__ movl(EAX, Address(ESP, +3 * target::kWordSize)); // OneByteString.
@@ -2168,11 +2172,36 @@
__ ret();
}
-void AsmIntrinsifier::OneByteString_allocate(Assembler* assembler,
+void AsmIntrinsifier::WriteIntoTwoByteString(Assembler* assembler,
Label* normal_ir_body) {
+ __ movl(ECX, Address(ESP, +1 * target::kWordSize)); // Value.
+ __ movl(EBX, Address(ESP, +2 * target::kWordSize)); // Index.
+ __ movl(EAX, Address(ESP, +3 * target::kWordSize)); // TwoByteString.
+ // Untag index and multiply by element size -> no-op.
+ __ SmiUntag(ECX);
+ __ movw(FieldAddress(EAX, EBX, TIMES_1, target::TwoByteString::data_offset()),
+ ECX);
+ __ ret();
+}
+
+void AsmIntrinsifier::AllocateOneByteString(Assembler* assembler,
+ Label* normal_ir_body) {
__ movl(EDI, Address(ESP, +1 * target::kWordSize)); // Length.
Label ok;
- TryAllocateOneByteString(assembler, &ok, normal_ir_body, EDI);
+ TryAllocateString(assembler, kOneByteStringCid, &ok, normal_ir_body, EDI);
+ // EDI: Start address to copy from (untagged).
+
+ __ Bind(&ok);
+ __ ret();
+
+ __ Bind(normal_ir_body);
+}
+
+void AsmIntrinsifier::AllocateTwoByteString(Assembler* assembler,
+ Label* normal_ir_body) {
+ __ movl(EDI, Address(ESP, +1 * target::kWordSize)); // Length.
+ Label ok;
+ TryAllocateString(assembler, kTwoByteStringCid, &ok, normal_ir_body, EDI);
// EDI: Start address to copy from (untagged).
__ Bind(&ok);
diff --git a/runtime/vm/compiler/asm_intrinsifier_x64.cc b/runtime/vm/compiler/asm_intrinsifier_x64.cc
index 1305a35..003c256 100644
--- a/runtime/vm/compiler/asm_intrinsifier_x64.cc
+++ b/runtime/vm/compiler/asm_intrinsifier_x64.cc
@@ -2047,26 +2047,34 @@
__ ret();
}
-// Allocates a _OneByteString. The content is not initialized.
-// 'length-reg' contains the desired length as a _Smi or _Mint.
+// Allocates a _OneByteString or _TwoByteString. The content is not initialized.
+// 'length_reg' contains the desired length as a _Smi or _Mint.
// Returns new string as tagged pointer in RAX.
-static void TryAllocateOneByteString(Assembler* assembler,
- Label* ok,
- Label* failure,
- Register length_reg) {
+static void TryAllocateString(Assembler* assembler,
+ classid_t cid,
+ Label* ok,
+ Label* failure,
+ Register length_reg) {
+ ASSERT(cid == kOneByteStringCid || cid == kTwoByteStringCid);
// _Mint length: call to runtime to produce error.
__ BranchIfNotSmi(length_reg, failure);
// negative length: call to runtime to produce error.
__ cmpq(length_reg, Immediate(0));
__ j(LESS, failure);
- NOT_IN_PRODUCT(__ MaybeTraceAllocation(kOneByteStringCid, failure, false));
+ NOT_IN_PRODUCT(__ MaybeTraceAllocation(cid, failure, false));
if (length_reg != RDI) {
__ movq(RDI, length_reg);
}
Label pop_and_fail, not_zero_length;
__ pushq(RDI); // Preserve length.
- __ sarq(RDI, Immediate(kSmiTagShift)); // Untag length.
+ if (cid == kOneByteStringCid) {
+ // Untag length.
+ __ sarq(RDI, Immediate(kSmiTagShift));
+ } else {
+ // Untag length and multiply by element size -> no-op.
+ __ testq(RDI, RDI);
+ }
// If the length is 0 then we have to make the allocated size a bit bigger,
// otherwise the string takes up less space than an ExternalOneByteString,
// and cannot be externalized. TODO(erikcorry): We should probably just
@@ -2080,7 +2088,6 @@
__ addq(RDI, Immediate(fixed_size_plus_alignment_padding));
__ andq(RDI, Immediate(-target::ObjectAlignment::kObjectAlignment));
- const intptr_t cid = kOneByteStringCid;
__ movq(RAX, Address(THR, target::Thread::top_offset()));
// RDI: allocation size.
@@ -2151,7 +2158,7 @@
__ j(NOT_ZERO, normal_ir_body); // 'start', 'end' not Smi.
__ subq(RDI, Address(RSP, +kStartIndexOffset));
- TryAllocateOneByteString(assembler, &ok, normal_ir_body, RDI);
+ TryAllocateString(assembler, kOneByteStringCid, &ok, normal_ir_body, RDI);
__ Bind(&ok);
// RAX: new string as tagged pointer.
// Copy string.
@@ -2185,8 +2192,8 @@
__ Bind(normal_ir_body);
}
-void AsmIntrinsifier::OneByteStringSetAt(Assembler* assembler,
- Label* normal_ir_body) {
+void AsmIntrinsifier::WriteIntoOneByteString(Assembler* assembler,
+ Label* normal_ir_body) {
__ movq(RCX, Address(RSP, +1 * target::kWordSize)); // Value.
__ movq(RBX, Address(RSP, +2 * target::kWordSize)); // Index.
__ movq(RAX, Address(RSP, +3 * target::kWordSize)); // target::OneByteString.
@@ -2197,11 +2204,36 @@
__ ret();
}
-void AsmIntrinsifier::OneByteString_allocate(Assembler* assembler,
+void AsmIntrinsifier::WriteIntoTwoByteString(Assembler* assembler,
Label* normal_ir_body) {
+ __ movq(RCX, Address(RSP, +1 * target::kWordSize)); // Value.
+ __ movq(RBX, Address(RSP, +2 * target::kWordSize)); // Index.
+ __ movq(RAX, Address(RSP, +3 * target::kWordSize)); // target::TwoByteString.
+ // Untag index and multiply by element size -> no-op.
+ __ SmiUntag(RCX);
+ __ movw(FieldAddress(RAX, RBX, TIMES_1, target::TwoByteString::data_offset()),
+ RCX);
+ __ ret();
+}
+
+void AsmIntrinsifier::AllocateOneByteString(Assembler* assembler,
+ Label* normal_ir_body) {
__ movq(RDI, Address(RSP, +1 * target::kWordSize)); // Length.v=
Label ok;
- TryAllocateOneByteString(assembler, &ok, normal_ir_body, RDI);
+ TryAllocateString(assembler, kOneByteStringCid, &ok, normal_ir_body, RDI);
+ // RDI: Start address to copy from (untagged).
+
+ __ Bind(&ok);
+ __ ret();
+
+ __ Bind(normal_ir_body);
+}
+
+void AsmIntrinsifier::AllocateTwoByteString(Assembler* assembler,
+ Label* normal_ir_body) {
+ __ movq(RDI, Address(RSP, +1 * target::kWordSize)); // Length.v=
+ Label ok;
+ TryAllocateString(assembler, kTwoByteStringCid, &ok, normal_ir_body, RDI);
// RDI: Start address to copy from (untagged).
__ Bind(&ok);
diff --git a/runtime/vm/compiler/assembler/assembler_arm.h b/runtime/vm/compiler/assembler/assembler_arm.h
index ebaaf28..67c8495 100644
--- a/runtime/vm/compiler/assembler/assembler_arm.h
+++ b/runtime/vm/compiler/assembler/assembler_arm.h
@@ -189,7 +189,7 @@
}
// Note that immediate must be unsigned for the test to work correctly.
for (int rot = 0; rot < 16; rot++) {
- uint32_t imm8 = (immediate << 2 * rot) | (immediate >> (32 - 2 * rot));
+ uint32_t imm8 = Utils::RotateLeft(immediate, 2 * rot);
if (imm8 < (1 << kImmed8Bits)) {
o->type_ = 1;
o->encoding_ = (rot << kRotateShift) | (imm8 << kImmed8Shift);
diff --git a/runtime/vm/compiler/assembler/assembler_arm64.cc b/runtime/vm/compiler/assembler/assembler_arm64.cc
index c0cadfd..388c37b 100644
--- a/runtime/vm/compiler/assembler/assembler_arm64.cc
+++ b/runtime/vm/compiler/assembler/assembler_arm64.cc
@@ -782,8 +782,8 @@
Operand op;
if (Operand::CanHold(imm, kXRegSizeInBits, &op) == Operand::Immediate) {
cmp(rn, op);
- } else if (Operand::CanHold(-imm, kXRegSizeInBits, &op) ==
- Operand::Immediate) {
+ } else if (Operand::CanHold(-static_cast<uint64_t>(imm), kXRegSizeInBits,
+ &op) == Operand::Immediate) {
cmn(rn, op);
} else {
ASSERT(rn != TMP2);
diff --git a/runtime/vm/compiler/assembler/assembler_arm64.h b/runtime/vm/compiler/assembler/assembler_arm64.h
index 1b30517..df7c6e9 100644
--- a/runtime/vm/compiler/assembler/assembler_arm64.h
+++ b/runtime/vm/compiler/assembler/assembler_arm64.h
@@ -151,7 +151,8 @@
ASSERT((at == PairOffset) || (at == PairPreIndex) ||
(at == PairPostIndex));
ASSERT(Utils::IsInt(7 + scale, offset) &&
- (offset == ((offset >> scale) << scale)));
+ (static_cast<uint32_t>(offset) ==
+ ((static_cast<uint32_t>(offset) >> scale) << scale)));
int32_t idx = 0;
switch (at) {
case PairPostIndex:
@@ -167,8 +168,10 @@
UNREACHABLE();
break;
}
- encoding_ = idx | (((offset >> scale) << kImm7Shift) & kImm7Mask) |
- Arm64Encode::Rn(rn);
+ encoding_ =
+ idx |
+ ((static_cast<uint32_t>(offset >> scale) << kImm7Shift) & kImm7Mask) |
+ Arm64Encode::Rn(rn);
}
type_ = at;
base_ = ConcreteRegister(rn);
@@ -199,7 +202,8 @@
(at == PairPostIndex));
const int32_t scale = Log2OperandSizeBytes(sz);
return (Utils::IsInt(7 + scale, offset) &&
- (offset == ((offset >> scale) << scale)));
+ (static_cast<uint32_t>(offset) ==
+ ((static_cast<uint32_t>(offset) >> scale) << scale)));
}
}
@@ -1877,12 +1881,14 @@
BailoutWithBranchOffsetError();
}
const int32_t imm32 = static_cast<int32_t>(imm);
- const int32_t off = (((imm32 >> 2) << kImm19Shift) & kImm19Mask);
+ const int32_t off =
+ ((static_cast<uint32_t>(imm32 >> 2) << kImm19Shift) & kImm19Mask);
return (instr & ~kImm19Mask) | off;
}
int64_t DecodeImm19BranchOffset(int32_t instr) {
- const int32_t off = (((instr & kImm19Mask) >> kImm19Shift) << 13) >> 11;
+ int32_t insns = (static_cast<uint32_t>(instr) & kImm19Mask) >> kImm19Shift;
+ const int32_t off = static_cast<int32_t>(insns << 13) >> 11;
return static_cast<int64_t>(off);
}
@@ -1892,12 +1898,14 @@
BailoutWithBranchOffsetError();
}
const int32_t imm32 = static_cast<int32_t>(imm);
- const int32_t off = (((imm32 >> 2) << kImm14Shift) & kImm14Mask);
+ const int32_t off =
+ ((static_cast<uint32_t>(imm32 >> 2) << kImm14Shift) & kImm14Mask);
return (instr & ~kImm14Mask) | off;
}
int64_t DecodeImm14BranchOffset(int32_t instr) {
- const int32_t off = (((instr & kImm14Mask) >> kImm14Shift) << 18) >> 16;
+ int32_t insns = (static_cast<uint32_t>(instr) & kImm14Mask) >> kImm14Shift;
+ const int32_t off = static_cast<int32_t>(insns << 18) >> 16;
return static_cast<int64_t>(off);
}
@@ -2211,7 +2219,8 @@
ASSERT(Utils::IsInt(21, imm.value()));
ASSERT((rd != R31) && (rd != CSP));
const int32_t loimm = (imm.value() & 0x3) << 29;
- const int32_t hiimm = ((imm.value() >> 2) << kImm19Shift) & kImm19Mask;
+ const int32_t hiimm =
+ (static_cast<uint32_t>(imm.value() >> 2) << kImm19Shift) & kImm19Mask;
const int32_t encoding = op | loimm | hiimm | Arm64Encode::Rd(rd);
Emit(encoding);
}
diff --git a/runtime/vm/compiler/assembler/disassembler_arm.cc b/runtime/vm/compiler/assembler/disassembler_arm.cc
index 5079549..5ca27fb 100644
--- a/runtime/vm/compiler/assembler/disassembler_arm.cc
+++ b/runtime/vm/compiler/assembler/disassembler_arm.cc
@@ -186,9 +186,9 @@
// Print the immediate operand for the instruction. Generally used for data
// processing instructions.
void ARMDecoder::PrintShiftImm(Instr* instr) {
- int rotate = instr->RotateField() * 2;
- int immed8 = instr->Immed8Field();
- int imm = (immed8 >> rotate) | (immed8 << (32 - rotate));
+ uint8_t rotate = instr->RotateField() * 2;
+ int32_t immed8 = instr->Immed8Field();
+ int32_t imm = Utils::RotateRight(immed8, rotate);
buffer_pos_ += Utils::SNPrint(current_position_in_buffer(),
remaining_size_in_buffer(), "#%d", imm);
}
@@ -403,7 +403,8 @@
case 'd': {
if (format[1] == 'e') { // 'dest: branch destination
ASSERT(STRING_STARTS_WITH(format, "dest"));
- const int32_t off = (instr->SImmed24Field() << 2) + 8;
+ const int32_t off =
+ (static_cast<uint32_t>(instr->SImmed24Field()) << 2) + 8;
if (FLAG_disassemble_relative) {
buffer_pos_ +=
Utils::SNPrint(current_position_in_buffer(),
@@ -570,7 +571,7 @@
}
case 't': { // 'target: target of branch instructions.
ASSERT(STRING_STARTS_WITH(format, "target"));
- int off = (instr->SImmed24Field() << 2) + 8;
+ int32_t off = (static_cast<uint32_t>(instr->SImmed24Field()) << 2) + 8;
buffer_pos_ += Utils::SNPrint(current_position_in_buffer(),
remaining_size_in_buffer(), "%+d", off);
return 6;
diff --git a/runtime/vm/compiler/assembler/disassembler_arm64.cc b/runtime/vm/compiler/assembler/disassembler_arm64.cc
index 0a75a17..08604a4 100644
--- a/runtime/vm/compiler/assembler/disassembler_arm64.cc
+++ b/runtime/vm/compiler/assembler/disassembler_arm64.cc
@@ -256,7 +256,7 @@
void ARM64Decoder::PrintPairMemOperand(Instr* instr) {
const Register rn = instr->RnField();
- const int32_t simm7 = instr->SImm7Field();
+ const uint32_t simm7 = instr->SImm7Field();
const int32_t offset = simm7 << (2 + instr->Bit(31));
Print("[");
PrintRegister(rn, R31IsSP);
@@ -398,14 +398,14 @@
int64_t off;
if (format[4] == '2') {
ASSERT(STRING_STARTS_WITH(format, "dest26"));
- off = instr->SImm26Field() << 2;
+ off = static_cast<uint64_t>(instr->SImm26Field()) << 2;
} else {
if (format[5] == '4') {
ASSERT(STRING_STARTS_WITH(format, "dest14"));
- off = instr->SImm14Field() << 2;
+ off = static_cast<uint64_t>(instr->SImm14Field()) << 2;
} else {
ASSERT(STRING_STARTS_WITH(format, "dest19"));
- off = instr->SImm19Field() << 2;
+ off = static_cast<uint64_t>(instr->SImm19Field()) << 2;
}
}
if (FLAG_disassemble_relative) {
@@ -542,19 +542,19 @@
if (format[1] == 'c') {
if (format[2] == 'a') {
ASSERT(STRING_STARTS_WITH(format, "pcadr"));
- const int64_t immhi = instr->SImm19Field();
- const int64_t immlo = instr->Bits(29, 2);
- const int64_t off = (immhi << 2) | immlo;
- const int64_t pc = reinterpret_cast<int64_t>(instr);
- const int64_t dest = pc + off;
+ const uint64_t immhi = instr->SImm19Field();
+ const uint64_t immlo = instr->Bits(29, 2);
+ const uint64_t off = (immhi << 2) | immlo;
+ const uint64_t pc = reinterpret_cast<int64_t>(instr);
+ const uint64_t dest = pc + off;
buffer_pos_ +=
Utils::SNPrint(current_position_in_buffer(),
remaining_size_in_buffer(), "0x%" Px64, dest);
} else {
ASSERT(STRING_STARTS_WITH(format, "pcldr"));
- const int64_t off = instr->SImm19Field() << 2;
- const int64_t pc = reinterpret_cast<int64_t>(instr);
- const int64_t dest = pc + off;
+ const uint64_t off = instr->SImm19Field() << 2;
+ const uint64_t pc = reinterpret_cast<int64_t>(instr);
+ const uint64_t dest = pc + off;
buffer_pos_ +=
Utils::SNPrint(current_position_in_buffer(),
remaining_size_in_buffer(), "0x%" Px64, dest);
diff --git a/runtime/vm/compiler/backend/constant_propagator.cc b/runtime/vm/compiler/backend/constant_propagator.cc
index 00dbb2d..c20199f 100644
--- a/runtime/vm/compiler/backend/constant_propagator.cc
+++ b/runtime/vm/compiler/backend/constant_propagator.cc
@@ -431,13 +431,15 @@
}
void ConstantPropagator::VisitAssertAssignable(AssertAssignableInstr* instr) {
- const Object& value = instr->value()->definition()->constant_value();
- if (IsNonConstant(value)) {
+ const auto& value = instr->value()->definition()->constant_value();
+ const auto& dst_type = instr->dst_type()->definition()->constant_value();
+
+ if (IsNonConstant(value) || IsNonConstant(dst_type)) {
SetValue(instr, non_constant_);
- } else if (IsConstant(value)) {
+ } else if (IsConstant(value) && IsConstant(dst_type)) {
// We are ignoring the instantiator and instantiator_type_arguments, but
// still monotonic and safe.
- if (instr->value()->Type()->IsAssignableTo(instr->dst_type())) {
+ if (instr->value()->Type()->IsAssignableTo(AbstractType::Cast(dst_type))) {
SetValue(instr, value);
} else {
SetValue(instr, non_constant_);
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler.cc b/runtime/vm/compiler/backend/flow_graph_compiler.cc
index 60cbfb7..f50a514 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler.cc
@@ -2308,6 +2308,22 @@
}
}
+bool FlowGraphCompiler::CheckAssertAssignableTypeTestingABILocations(
+ const LocationSummary& locs) {
+ ASSERT(locs.in(0).IsRegister() &&
+ locs.in(0).reg() == TypeTestABI::kInstanceReg);
+ ASSERT((locs.in(1).IsConstant() && locs.in(1).constant().IsAbstractType()) ||
+ (locs.in(1).IsRegister() &&
+ locs.in(1).reg() == TypeTestABI::kDstTypeReg));
+ ASSERT(locs.in(2).IsRegister() &&
+ locs.in(2).reg() == TypeTestABI::kInstantiatorTypeArgumentsReg);
+ ASSERT(locs.in(3).IsRegister() &&
+ locs.in(3).reg() == TypeTestABI::kFunctionTypeArgumentsReg);
+ ASSERT(locs.out(0).IsRegister() &&
+ locs.out(0).reg() == TypeTestABI::kInstanceReg);
+ return true;
+}
+
bool FlowGraphCompiler::ShouldUseTypeTestingStubFor(bool optimizing,
const AbstractType& type) {
return FLAG_precompiled_mode ||
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler.h b/runtime/vm/compiler/backend/flow_graph_compiler.h
index 1635fc1..0e57c12 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler.h
+++ b/runtime/vm/compiler/backend/flow_graph_compiler.h
@@ -568,10 +568,12 @@
Representation src_type,
TemporaryRegisterAllocator* temp);
+ bool CheckAssertAssignableTypeTestingABILocations(
+ const LocationSummary& locs);
+
void GenerateAssertAssignable(CompileType* receiver_type,
TokenPosition token_pos,
intptr_t deopt_id,
- const AbstractType& dst_type,
const String& dst_name,
LocationSummary* locs);
@@ -583,7 +585,6 @@
void GenerateAssertAssignableViaTypeTestingStub(CompileType* receiver_type,
TokenPosition token_pos,
intptr_t deopt_id,
- const AbstractType& dst_type,
const String& dst_name,
LocationSummary* locs);
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler_arm.cc b/runtime/vm/compiler/backend/flow_graph_compiler_arm.cc
index c1349ab..13b6e62 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler_arm.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler_arm.cc
@@ -688,6 +688,7 @@
// - Class equality (only if class is not parameterized).
// Inputs:
// - R0: instance being type checked.
+// - R8: destination type (if non-constant).
// - R2: instantiator type arguments or raw_null.
// - R1: function type arguments or raw_null.
// Returns:
@@ -697,72 +698,85 @@
void FlowGraphCompiler::GenerateAssertAssignable(CompileType* receiver_type,
TokenPosition token_pos,
intptr_t deopt_id,
- const AbstractType& dst_type,
const String& dst_name,
LocationSummary* locs) {
ASSERT(!token_pos.IsClassifying());
- ASSERT(!dst_type.IsNull());
- ASSERT(dst_type.IsFinalized());
- // Assignable check is skipped in FlowGraphBuilder, not here.
- ASSERT(!dst_type.IsTopTypeForSubtyping());
+ ASSERT(CheckAssertAssignableTypeTestingABILocations(*locs));
- if (ShouldUseTypeTestingStubFor(is_optimizing(), dst_type)) {
- GenerateAssertAssignableViaTypeTestingStub(
- receiver_type, token_pos, deopt_id, dst_type, dst_name, locs);
- } else {
- compiler::Label is_assignable_fast, is_assignable, runtime_call;
+ compiler::Label is_assignable_fast, is_assignable, runtime_call;
+
+ // Generate inline type check, linking to runtime call if not assignable.
+ SubtypeTestCache& test_cache = SubtypeTestCache::ZoneHandle(zone());
+ static_assert(
+ TypeTestABI::kFunctionTypeArgumentsReg <
+ TypeTestABI::kInstantiatorTypeArgumentsReg,
+ "Should be ordered to push and load arguments with one instruction");
+ static RegList type_args = (1 << TypeTestABI::kFunctionTypeArgumentsReg) |
+ (1 << TypeTestABI::kInstantiatorTypeArgumentsReg);
+
+ if (locs->in(1).IsConstant()) {
+ const auto& dst_type = AbstractType::Cast(locs->in(1).constant());
+ ASSERT(dst_type.IsFinalized());
+
+ if (dst_type.IsTopTypeForSubtyping()) return; // No code needed.
+
+ if (ShouldUseTypeTestingStubFor(is_optimizing(), dst_type)) {
+ GenerateAssertAssignableViaTypeTestingStub(receiver_type, token_pos,
+ deopt_id, dst_name, locs);
+ return;
+ }
if (Instance::NullIsAssignableTo(dst_type)) {
__ CompareObject(TypeTestABI::kInstanceReg, Object::null_object());
__ b(&is_assignable_fast, EQ);
}
- static_assert(TypeTestABI::kFunctionTypeArgumentsReg <
- TypeTestABI::kInstantiatorTypeArgumentsReg,
- "Should be ordered to push arguments with one instruction");
- __ PushList((1 << TypeTestABI::kInstantiatorTypeArgumentsReg) |
- (1 << TypeTestABI::kFunctionTypeArgumentsReg));
+ __ PushList(type_args);
- // Generate inline type check, linking to runtime call if not assignable.
- SubtypeTestCache& test_cache = SubtypeTestCache::ZoneHandle(zone());
test_cache = GenerateInlineInstanceof(token_pos, dst_type, &is_assignable,
&runtime_call);
-
- __ Bind(&runtime_call);
- static_assert(TypeTestABI::kFunctionTypeArgumentsReg <
- TypeTestABI::kInstantiatorTypeArgumentsReg,
- "Should be ordered to load arguments with one instruction");
- __ ldm(IA, SP,
- (1 << TypeTestABI::kFunctionTypeArgumentsReg) |
- (1 << TypeTestABI::kInstantiatorTypeArgumentsReg));
- __ PushObject(Object::null_object()); // Make room for the result.
- __ Push(TypeTestABI::kInstanceReg); // Push the source object.
- __ PushObject(dst_type); // Push the type of the destination.
- __ PushList((1 << TypeTestABI::kInstantiatorTypeArgumentsReg) |
- (1 << TypeTestABI::kFunctionTypeArgumentsReg));
- __ PushObject(dst_name); // Push the name of the destination.
- __ LoadUniqueObject(R0, test_cache);
- __ Push(R0);
- __ PushImmediate(Smi::RawValue(kTypeCheckFromInline));
- GenerateRuntimeCall(token_pos, deopt_id, kTypeCheckRuntimeEntry, 7, locs);
- // Pop the parameters supplied to the runtime entry. The result of the
- // type check runtime call is the checked value.
- __ Drop(7);
- __ Pop(R0);
- __ Bind(&is_assignable);
- __ PopList((1 << TypeTestABI::kFunctionTypeArgumentsReg) |
- (1 << TypeTestABI::kInstantiatorTypeArgumentsReg));
- __ Bind(&is_assignable_fast);
+ } else {
+ // TODO(dartbug.com/40813): Handle setting up the non-constant case.
+ UNREACHABLE();
}
+
+ __ Bind(&runtime_call);
+ __ ldm(IA, SP, type_args);
+ __ PushObject(Object::null_object()); // Make room for the result.
+ __ Push(TypeTestABI::kInstanceReg); // Push the source object.
+ // Push the type of the destination.
+ if (locs->in(1).IsConstant()) {
+ __ PushObject(locs->in(1).constant());
+ } else {
+ // TODO(dartbug.com/40813): Handle setting up the non-constant case.
+ UNREACHABLE();
+ }
+ __ PushList(type_args);
+ __ PushObject(dst_name); // Push the name of the destination.
+ __ LoadUniqueObject(R0, test_cache);
+ __ Push(R0);
+ __ PushImmediate(Smi::RawValue(kTypeCheckFromInline));
+ GenerateRuntimeCall(token_pos, deopt_id, kTypeCheckRuntimeEntry, 7, locs);
+ // Pop the parameters supplied to the runtime entry. The result of the
+ // type check runtime call is the checked value.
+ __ Drop(7);
+ __ Pop(TypeTestABI::kInstanceReg);
+ __ Bind(&is_assignable);
+ __ PopList(type_args);
+ __ Bind(&is_assignable_fast);
}
void FlowGraphCompiler::GenerateAssertAssignableViaTypeTestingStub(
CompileType* receiver_type,
TokenPosition token_pos,
intptr_t deopt_id,
- const AbstractType& dst_type,
const String& dst_name,
LocationSummary* locs) {
+ ASSERT(CheckAssertAssignableTypeTestingABILocations(*locs));
+ // We must have a constant dst_type for generating a call to the stub.
+ ASSERT(locs->in(1).IsConstant());
+ const auto& dst_type = AbstractType::Cast(locs->in(1).constant());
+
// If the dst_type is instantiated we know the target TTS stub at
// compile-time and can therefore use a pc-relative call.
const bool use_pc_relative_call = dst_type.IsInstantiated() &&
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler_arm64.cc b/runtime/vm/compiler/backend/flow_graph_compiler_arm64.cc
index a7bbc2e..7bbe356 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler_arm64.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler_arm64.cc
@@ -654,6 +654,7 @@
// - Class equality (only if class is not parameterized).
// Inputs:
// - R0: instance being type checked.
+// - R8: destination type (if non-constant).
// - R2: instantiator type arguments or raw_null.
// - R1: function type arguments or raw_null.
// Returns:
@@ -663,20 +664,26 @@
void FlowGraphCompiler::GenerateAssertAssignable(CompileType* receiver_type,
TokenPosition token_pos,
intptr_t deopt_id,
- const AbstractType& dst_type,
const String& dst_name,
LocationSummary* locs) {
ASSERT(!TokenPosition(token_pos).IsClassifying());
- ASSERT(!dst_type.IsNull());
- ASSERT(dst_type.IsFinalized());
- // Assignable check is skipped in FlowGraphBuilder, not here.
- ASSERT(!dst_type.IsTopTypeForSubtyping());
+ ASSERT(CheckAssertAssignableTypeTestingABILocations(*locs));
- if (ShouldUseTypeTestingStubFor(is_optimizing(), dst_type)) {
- GenerateAssertAssignableViaTypeTestingStub(
- receiver_type, token_pos, deopt_id, dst_type, dst_name, locs);
- } else {
- compiler::Label is_assignable_fast, is_assignable, runtime_call;
+ compiler::Label is_assignable_fast, is_assignable, runtime_call;
+ // Generate inline type check, linking to runtime call if not assignable.
+ SubtypeTestCache& test_cache = SubtypeTestCache::ZoneHandle(zone());
+
+ if (locs->in(1).IsConstant()) {
+ const auto& dst_type = AbstractType::Cast(locs->in(1).constant());
+ ASSERT(dst_type.IsFinalized());
+
+ if (dst_type.IsTopTypeForSubtyping()) return; // No code needed.
+
+ if (ShouldUseTypeTestingStubFor(is_optimizing(), dst_type)) {
+ GenerateAssertAssignableViaTypeTestingStub(receiver_type, token_pos,
+ deopt_id, dst_name, locs);
+ return;
+ }
if (Instance::NullIsAssignableTo(dst_type)) {
__ CompareObject(TypeTestABI::kInstanceReg, Object::null_object());
@@ -686,45 +693,56 @@
__ PushPair(TypeTestABI::kFunctionTypeArgumentsReg,
TypeTestABI::kInstantiatorTypeArgumentsReg);
- // Generate inline type check, linking to runtime call if not assignable.
- SubtypeTestCache& test_cache = SubtypeTestCache::ZoneHandle(zone());
test_cache = GenerateInlineInstanceof(token_pos, dst_type, &is_assignable,
&runtime_call);
-
- __ Bind(&runtime_call);
- __ ldp(TypeTestABI::kFunctionTypeArgumentsReg,
- TypeTestABI::kInstantiatorTypeArgumentsReg,
- compiler::Address(SP, 0 * kWordSize, compiler::Address::PairOffset));
- __ PushPair(TypeTestABI::kInstanceReg,
- NULL_REG); // Make room for the result and
- // push the source object.
- __ LoadObject(TMP, dst_type); // Push the type of the dest.
- __ PushPair(TypeTestABI::kInstantiatorTypeArgumentsReg, TMP);
- __ LoadObject(TMP, dst_name); // Push the name of the destination.
- __ PushPair(TMP, TypeTestABI::kFunctionTypeArgumentsReg);
-
- __ LoadUniqueObject(R0, test_cache);
- __ LoadObject(TMP, Smi::ZoneHandle(zone(), Smi::New(kTypeCheckFromInline)));
- __ PushPair(TMP, R0);
- GenerateRuntimeCall(token_pos, deopt_id, kTypeCheckRuntimeEntry, 7, locs);
- // Pop the parameters supplied to the runtime entry. The result of the
- // type check runtime call is the checked value.
- __ Drop(7);
- __ Pop(R0);
- __ Bind(&is_assignable);
- __ PopPair(TypeTestABI::kFunctionTypeArgumentsReg,
- TypeTestABI::kInstantiatorTypeArgumentsReg);
- __ Bind(&is_assignable_fast);
+ } else {
+ // TODO(dartbug.com/40813): Handle setting up the non-constant case.
+ UNREACHABLE();
}
+
+ __ Bind(&runtime_call);
+ __ ldp(TypeTestABI::kFunctionTypeArgumentsReg,
+ TypeTestABI::kInstantiatorTypeArgumentsReg,
+ compiler::Address(SP, 0 * kWordSize, compiler::Address::PairOffset));
+ // Make room for the result and push the source object.
+ __ PushPair(TypeTestABI::kInstanceReg, NULL_REG);
+ // Push the destination type and the instantiator type arguments.
+ if (locs->in(1).IsConstant()) {
+ __ LoadObject(TMP, locs->in(1).constant());
+ __ PushPair(TypeTestABI::kInstantiatorTypeArgumentsReg, TMP);
+ } else {
+ // TODO(dartbug.com/40813): Handle setting up the non-constant case.
+ UNREACHABLE();
+ }
+ // Push the function type arguments and the name of the destination.
+ __ LoadObject(TMP, dst_name);
+ __ PushPair(TMP, TypeTestABI::kFunctionTypeArgumentsReg);
+
+ __ LoadUniqueObject(R0, test_cache);
+ __ LoadObject(TMP, Smi::ZoneHandle(zone(), Smi::New(kTypeCheckFromInline)));
+ __ PushPair(TMP, R0);
+ GenerateRuntimeCall(token_pos, deopt_id, kTypeCheckRuntimeEntry, 7, locs);
+ // Pop the parameters supplied to the runtime entry. The result of the
+ // type check runtime call is the checked value.
+ __ Drop(7);
+ __ Pop(TypeTestABI::kInstanceReg);
+ __ Bind(&is_assignable);
+ __ PopPair(TypeTestABI::kFunctionTypeArgumentsReg,
+ TypeTestABI::kInstantiatorTypeArgumentsReg);
+ __ Bind(&is_assignable_fast);
}
void FlowGraphCompiler::GenerateAssertAssignableViaTypeTestingStub(
CompileType* receiver_type,
TokenPosition token_pos,
intptr_t deopt_id,
- const AbstractType& dst_type,
const String& dst_name,
LocationSummary* locs) {
+ ASSERT(CheckAssertAssignableTypeTestingABILocations(*locs));
+ // We must have a constant dst_type for generating a call to the stub.
+ ASSERT(locs->in(1).IsConstant());
+ const auto& dst_type = AbstractType::Cast(locs->in(1).constant());
+
// If the dst_type is instantiated we know the target TTS stub at
// compile-time and can therefore use a pc-relative call.
const bool use_pc_relative_call = dst_type.IsInstantiated() &&
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler_ia32.cc b/runtime/vm/compiler/backend/flow_graph_compiler_ia32.cc
index 9a69432..f5fd0a2 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler_ia32.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler_ia32.cc
@@ -664,6 +664,7 @@
// - Class equality (only if class is not parameterized).
// Inputs:
// - EAX: object.
+// - EBX: destination type (if non-constant).
// - EDX: instantiator type arguments or raw_null.
// - ECX: function type arguments or raw_null.
// Returns:
@@ -673,14 +674,21 @@
void FlowGraphCompiler::GenerateAssertAssignable(CompileType* receiver_type,
TokenPosition token_pos,
intptr_t deopt_id,
- const AbstractType& dst_type,
const String& dst_name,
LocationSummary* locs) {
ASSERT(!token_pos.IsClassifying());
- ASSERT(!dst_type.IsNull());
+ ASSERT(CheckAssertAssignableTypeTestingABILocations(*locs));
+
+ if (!locs->in(1).IsConstant()) {
+ // TODO(dartbug.com/40813): Handle setting up the non-constant case.
+ UNREACHABLE();
+ }
+
+ ASSERT(locs->in(1).constant().IsAbstractType());
+ const auto& dst_type = AbstractType::Cast(locs->in(1).constant());
ASSERT(dst_type.IsFinalized());
- // Assignable check is skipped in FlowGraphBuilder, not here.
- ASSERT(!dst_type.IsTopTypeForSubtyping());
+
+ if (dst_type.IsTopTypeForSubtyping()) return; // No code needed.
__ pushl(TypeTestABI::kInstantiatorTypeArgumentsReg);
__ pushl(TypeTestABI::kFunctionTypeArgumentsReg);
@@ -689,7 +697,7 @@
if (Instance::NullIsAssignableTo(dst_type)) {
const compiler::Immediate& raw_null =
compiler::Immediate(static_cast<intptr_t>(Object::null()));
- __ cmpl(EAX, raw_null);
+ __ cmpl(TypeTestABI::kInstanceReg, raw_null);
__ j(EQUAL, &is_assignable);
}
@@ -705,8 +713,13 @@
__ movl(TypeTestABI::kFunctionTypeArgumentsReg,
compiler::Address(ESP, 0 * kWordSize)); // Get function type args.
__ PushObject(Object::null_object()); // Make room for the result.
- __ pushl(EAX); // Push the source object.
- __ PushObject(dst_type); // Push the type of the destination.
+ __ pushl(TypeTestABI::kInstanceReg); // Push the source object.
+ if (locs->in(1).IsConstant()) {
+ __ PushObject(locs->in(1).constant()); // Push the type of the destination.
+ } else {
+ // TODO(dartbug.com/40813): Handle setting up the non-constant case.
+ UNREACHABLE();
+ }
__ pushl(TypeTestABI::kInstantiatorTypeArgumentsReg);
__ pushl(TypeTestABI::kFunctionTypeArgumentsReg);
__ PushObject(dst_name); // Push the name of the destination.
@@ -717,7 +730,7 @@
// Pop the parameters supplied to the runtime entry. The result of the
// type check runtime call is the checked value.
__ Drop(7);
- __ popl(EAX);
+ __ popl(TypeTestABI::kInstanceReg);
__ Bind(&is_assignable);
__ popl(TypeTestABI::kFunctionTypeArgumentsReg);
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler_x64.cc b/runtime/vm/compiler/backend/flow_graph_compiler_x64.cc
index b8c8ba7..756778ee 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler_x64.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler_x64.cc
@@ -669,6 +669,7 @@
// - Class equality (only if class is not parameterized).
// Inputs:
// - RAX: object.
+// - RBX: destination type (if non-constant).
// - RDX: instantiator type arguments or raw_null.
// - RCX: function type arguments or raw_null.
// Returns:
@@ -678,58 +679,77 @@
void FlowGraphCompiler::GenerateAssertAssignable(CompileType* receiver_type,
TokenPosition token_pos,
intptr_t deopt_id,
- const AbstractType& dst_type,
const String& dst_name,
LocationSummary* locs) {
ASSERT(!token_pos.IsClassifying());
- ASSERT(!dst_type.IsNull());
- ASSERT(dst_type.IsFinalized());
- // Assignable check is skipped in FlowGraphBuilder, not here.
- ASSERT(!dst_type.IsTopTypeForSubtyping());
+ ASSERT(CheckAssertAssignableTypeTestingABILocations(*locs));
- if (ShouldUseTypeTestingStubFor(is_optimizing(), dst_type)) {
- GenerateAssertAssignableViaTypeTestingStub(
- receiver_type, token_pos, deopt_id, dst_type, dst_name, locs);
- } else {
- compiler::Label is_assignable, runtime_call;
+ compiler::Label is_assignable, runtime_call;
+
+ // Generate inline type check, linking to runtime call if not assignable.
+ SubtypeTestCache& test_cache = SubtypeTestCache::ZoneHandle(zone());
+
+ if (locs->in(1).IsConstant()) {
+ const auto& dst_type = AbstractType::Cast(locs->in(1).constant());
+ ASSERT(dst_type.IsFinalized());
+
+ if (dst_type.IsTopTypeForSubtyping()) return; // No code needed.
+
+ if (ShouldUseTypeTestingStubFor(is_optimizing(), dst_type)) {
+ GenerateAssertAssignableViaTypeTestingStub(receiver_type, token_pos,
+ deopt_id, dst_name, locs);
+ return;
+ }
if (Instance::NullIsAssignableTo(dst_type)) {
__ CompareObject(TypeTestABI::kInstanceReg, Object::null_object());
__ j(EQUAL, &is_assignable);
}
- // Generate inline type check, linking to runtime call if not assignable.
- SubtypeTestCache& test_cache = SubtypeTestCache::ZoneHandle(zone());
// The registers RAX, RCX, RDX are preserved across the call.
test_cache = GenerateInlineInstanceof(token_pos, dst_type, &is_assignable,
&runtime_call);
- __ Bind(&runtime_call);
- __ PushObject(Object::null_object()); // Make room for the result.
- __ pushq(TypeTestABI::kInstanceReg); // Push the source object.
- __ PushObject(dst_type); // Push the type of the destination.
- __ pushq(TypeTestABI::kInstantiatorTypeArgumentsReg);
- __ pushq(TypeTestABI::kFunctionTypeArgumentsReg);
- __ PushObject(dst_name); // Push the name of the destination.
- __ LoadUniqueObject(RAX, test_cache);
- __ pushq(RAX);
- __ PushImmediate(compiler::Immediate(Smi::RawValue(kTypeCheckFromInline)));
- GenerateRuntimeCall(token_pos, deopt_id, kTypeCheckRuntimeEntry, 7, locs);
- // Pop the parameters supplied to the runtime entry. The result of the
- // type check runtime call is the checked value.
- __ Drop(7);
- __ popq(RAX);
- __ Bind(&is_assignable);
+ } else {
+ // TODO(dartbug.com/40813): Handle setting up the non-constant case.
+ UNREACHABLE();
}
+
+ __ Bind(&runtime_call);
+ __ PushObject(Object::null_object()); // Make room for the result.
+ __ pushq(TypeTestABI::kInstanceReg); // Push the source object.
+ // Push the destination type.
+ if (locs->in(1).IsConstant()) {
+ __ PushObject(locs->in(1).constant());
+ } else {
+ // TODO(dartbug.com/40813): Handle setting up the non-constant case.
+ UNREACHABLE();
+ }
+ __ pushq(TypeTestABI::kInstantiatorTypeArgumentsReg);
+ __ pushq(TypeTestABI::kFunctionTypeArgumentsReg);
+ __ PushObject(dst_name); // Push the name of the destination.
+ __ LoadUniqueObject(RAX, test_cache);
+ __ pushq(RAX);
+ __ PushImmediate(compiler::Immediate(Smi::RawValue(kTypeCheckFromInline)));
+ GenerateRuntimeCall(token_pos, deopt_id, kTypeCheckRuntimeEntry, 7, locs);
+ // Pop the parameters supplied to the runtime entry. The result of the
+ // type check runtime call is the checked value.
+ __ Drop(7);
+ __ popq(TypeTestABI::kInstanceReg);
+ __ Bind(&is_assignable);
}
void FlowGraphCompiler::GenerateAssertAssignableViaTypeTestingStub(
CompileType* receiver_type,
TokenPosition token_pos,
intptr_t deopt_id,
- const AbstractType& dst_type,
const String& dst_name,
LocationSummary* locs) {
+ ASSERT(CheckAssertAssignableTypeTestingABILocations(*locs));
+ // We must have a constant dst_type for generating a call to the stub.
+ ASSERT(locs->in(1).IsConstant());
+ const auto& dst_type = AbstractType::Cast(locs->in(1).constant());
+
// If the dst_type is instantiated we know the target TTS stub at
// compile-time and can therefore use a pc-relative call.
const bool use_pc_relative_call = dst_type.IsInstantiated() &&
diff --git a/runtime/vm/compiler/backend/il.cc b/runtime/vm/compiler/backend/il.cc
index ebd5cc6..f0e0620 100644
--- a/runtime/vm/compiler/backend/il.cc
+++ b/runtime/vm/compiler/backend/il.cc
@@ -974,55 +974,39 @@
return field().raw() == other->AsGuardFieldType()->field().raw();
}
-bool AssertAssignableInstr::AttributesEqual(Instruction* other) const {
- AssertAssignableInstr* other_assert = other->AsAssertAssignable();
- ASSERT(other_assert != NULL);
- // This predicate has to be commutative for DominatorBasedCSE to work.
- // TODO(fschneider): Eliminate more asserts with subtype relation.
- return dst_type().raw() == other_assert->dst_type().raw();
-}
-
Instruction* AssertSubtypeInstr::Canonicalize(FlowGraph* flow_graph) {
- // If all values for type parameters are known (i.e. from instantiator and
- // function) we can instantiate the sub and super type and remove this
- // instruction if the subtype test succeeds.
- ConstantInstr* constant_instantiator_type_args =
- instantiator_type_arguments()->definition()->AsConstant();
- ConstantInstr* constant_function_type_args =
- function_type_arguments()->definition()->AsConstant();
- if ((constant_instantiator_type_args != NULL) &&
- (constant_function_type_args != NULL)) {
- ASSERT(constant_instantiator_type_args->value().IsNull() ||
- constant_instantiator_type_args->value().IsTypeArguments());
- ASSERT(constant_function_type_args->value().IsNull() ||
- constant_function_type_args->value().IsTypeArguments());
+ // If all inputs are constant, we can instantiate the sub and super type and
+ // remove this instruction if the subtype test succeeds.
+ if (super_type()->BindsToConstant() && sub_type()->BindsToConstant() &&
+ instantiator_type_arguments()->BindsToConstant() &&
+ function_type_arguments()->BindsToConstant()) {
+ auto Z = Thread::Current()->zone();
+ const auto& constant_instantiator_type_args =
+ instantiator_type_arguments()->BoundConstant().IsNull()
+ ? TypeArguments::null_type_arguments()
+ : TypeArguments::Cast(
+ instantiator_type_arguments()->BoundConstant());
+ const auto& constant_function_type_args =
+ function_type_arguments()->BoundConstant().IsNull()
+ ? TypeArguments::null_type_arguments()
+ : TypeArguments::Cast(function_type_arguments()->BoundConstant());
+ auto& constant_sub_type = AbstractType::Handle(
+ Z, AbstractType::Cast(sub_type()->BoundConstant()).raw());
+ auto& constant_super_type = AbstractType::Handle(
+ Z, AbstractType::Cast(super_type()->BoundConstant()).raw());
- Zone* Z = Thread::Current()->zone();
- const TypeArguments& instantiator_type_args = TypeArguments::Handle(
- Z,
- TypeArguments::RawCast(constant_instantiator_type_args->value().raw()));
+ ASSERT(!constant_super_type.IsTypeRef());
+ ASSERT(!constant_sub_type.IsTypeRef());
- const TypeArguments& function_type_args = TypeArguments::Handle(
- Z, TypeArguments::RawCast(constant_function_type_args->value().raw()));
-
- AbstractType& sub_type = AbstractType::Handle(Z, sub_type_.raw());
- AbstractType& super_type = AbstractType::Handle(Z, super_type_.raw());
- if (AbstractType::InstantiateAndTestSubtype(&sub_type, &super_type,
- instantiator_type_args,
- function_type_args)) {
- return NULL;
+ if (AbstractType::InstantiateAndTestSubtype(
+ &constant_sub_type, &constant_super_type,
+ constant_instantiator_type_args, constant_function_type_args)) {
+ return nullptr;
}
}
return this;
}
-bool AssertSubtypeInstr::AttributesEqual(Instruction* other) const {
- AssertSubtypeInstr* other_assert = other->AsAssertSubtype();
- ASSERT(other_assert != NULL);
- return super_type().raw() == other_assert->super_type().raw() &&
- sub_type().raw() == other_assert->sub_type().raw();
-}
-
bool StrictCompareInstr::AttributesEqual(Instruction* other) const {
StrictCompareInstr* other_op = other->AsStrictCompare();
ASSERT(other_op != NULL);
@@ -2862,11 +2846,17 @@
}
Definition* AssertAssignableInstr::Canonicalize(FlowGraph* flow_graph) {
- if (FLAG_eliminate_type_checks &&
- value()->Type()->IsAssignableTo(dst_type())) {
+ // We need dst_type() to be a constant AbstractType to perform any
+ // canonicalization.
+ if (!dst_type()->BindsToConstant()) return this;
+ const auto& abs_type = AbstractType::Cast(dst_type()->BoundConstant());
+
+ if (abs_type.IsTopTypeForSubtyping() ||
+ (FLAG_eliminate_type_checks &&
+ value()->Type()->IsAssignableTo(abs_type))) {
return value()->definition();
}
- if (dst_type().IsInstantiated()) {
+ if (abs_type.IsInstantiated()) {
return this;
}
@@ -2930,8 +2920,8 @@
if ((instantiator_type_args != nullptr) && (function_type_args != nullptr)) {
AbstractType& new_dst_type = AbstractType::Handle(
Z,
- dst_type().InstantiateFrom(*instantiator_type_args, *function_type_args,
- kAllFree, nullptr, Heap::kOld));
+ abs_type.InstantiateFrom(*instantiator_type_args, *function_type_args,
+ kAllFree, nullptr, Heap::kOld));
if (new_dst_type.IsNull()) {
// Failed instantiation in dead code.
return this;
@@ -2944,7 +2934,7 @@
// Successfully instantiated destination type: update the type attached
// to this instruction and set type arguments to null because we no
// longer need them (the type was instantiated).
- set_dst_type(new_dst_type);
+ dst_type()->BindTo(flow_graph->GetConstant(new_dst_type));
instantiator_type_arguments()->BindTo(flow_graph->constant_null());
function_type_arguments()->BindTo(flow_graph->constant_null());
@@ -5050,18 +5040,36 @@
void AssertAssignableInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
compiler->GenerateAssertAssignable(value()->Type(), token_pos(), deopt_id(),
- dst_type(), dst_name(), locs());
+ dst_name(), locs());
ASSERT(locs()->in(0).reg() == locs()->out(0).reg());
}
-void AssertSubtypeInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
- ASSERT(sub_type().IsFinalized());
- ASSERT(super_type().IsFinalized());
+LocationSummary* AssertSubtypeInstr::MakeLocationSummary(Zone* zone,
+ bool opt) const {
+ if (!sub_type()->BindsToConstant() || !super_type()->BindsToConstant()) {
+ // TODO(dartbug.com/40813): Handle setting up the non-constant case.
+ UNREACHABLE();
+ }
+ const intptr_t kNumInputs = 4;
+ const intptr_t kNumTemps = 0;
+ LocationSummary* summary = new (zone)
+ LocationSummary(zone, kNumInputs, kNumTemps, LocationSummary::kCall);
+ summary->set_in(0, Location::RegisterLocation(
+ TypeTestABI::kInstantiatorTypeArgumentsReg));
+ summary->set_in(
+ 1, Location::RegisterLocation(TypeTestABI::kFunctionTypeArgumentsReg));
+ summary->set_in(2,
+ Location::Constant(sub_type()->definition()->AsConstant()));
+ summary->set_in(3,
+ Location::Constant(super_type()->definition()->AsConstant()));
+ return summary;
+}
+void AssertSubtypeInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
__ PushRegister(locs()->in(0).reg());
__ PushRegister(locs()->in(1).reg());
- __ PushObject(sub_type());
- __ PushObject(super_type());
+ __ PushObject(locs()->in(2).constant());
+ __ PushObject(locs()->in(3).constant());
__ PushObject(dst_name());
compiler->GenerateRuntimeCall(token_pos(), deopt_id(),
diff --git a/runtime/vm/compiler/backend/il.h b/runtime/vm/compiler/backend/il.h
index 63a8bf0..1e7e67e 100644
--- a/runtime/vm/compiler/backend/il.h
+++ b/runtime/vm/compiler/backend/il.h
@@ -3456,37 +3456,33 @@
// Checks that one type is a subtype of another (e.g. for type parameter bounds
// checking). Throws a TypeError otherwise. Both types are instantiated at
// runtime as necessary.
-class AssertSubtypeInstr : public TemplateInstruction<2, Throws, Pure> {
+class AssertSubtypeInstr : public TemplateInstruction<4, Throws, Pure> {
public:
AssertSubtypeInstr(TokenPosition token_pos,
Value* instantiator_type_arguments,
Value* function_type_arguments,
- const AbstractType& sub_type,
- const AbstractType& super_type,
+ Value* sub_type,
+ Value* super_type,
const String& dst_name,
intptr_t deopt_id)
: TemplateInstruction(deopt_id),
token_pos_(token_pos),
- sub_type_(AbstractType::ZoneHandle(sub_type.raw())),
- super_type_(AbstractType::ZoneHandle(super_type.raw())),
dst_name_(String::ZoneHandle(dst_name.raw())) {
- ASSERT(!super_type.IsNull());
- ASSERT(!super_type.IsTypeRef());
- ASSERT(!sub_type.IsNull());
- ASSERT(!sub_type.IsTypeRef());
ASSERT(!dst_name.IsNull());
SetInputAt(0, instantiator_type_arguments);
SetInputAt(1, function_type_arguments);
+ SetInputAt(2, sub_type);
+ SetInputAt(3, super_type);
}
DECLARE_INSTRUCTION(AssertSubtype);
Value* instantiator_type_arguments() const { return inputs_[0]; }
Value* function_type_arguments() const { return inputs_[1]; }
+ Value* sub_type() const { return inputs_[2]; }
+ Value* super_type() const { return inputs_[3]; }
virtual TokenPosition token_pos() const { return token_pos_; }
- const AbstractType& super_type() const { return super_type_; }
- const AbstractType& sub_type() const { return sub_type_; }
const String& dst_name() const { return dst_name_; }
virtual bool ComputeCanDeoptimize() const {
@@ -3497,20 +3493,18 @@
virtual Instruction* Canonicalize(FlowGraph* flow_graph);
- virtual bool AttributesEqual(Instruction* other) const;
+ virtual bool AttributesEqual(Instruction* other) const { return true; }
PRINT_OPERANDS_TO_SUPPORT
private:
const TokenPosition token_pos_;
- AbstractType& sub_type_;
- AbstractType& super_type_;
const String& dst_name_;
DISALLOW_COPY_AND_ASSIGN(AssertSubtypeInstr);
};
-class AssertAssignableInstr : public TemplateDefinition<3, Throws, Pure> {
+class AssertAssignableInstr : public TemplateDefinition<4, Throws, Pure> {
public:
#define FOR_EACH_ASSERT_ASSIGNABLE_KIND(V) \
V(ParameterCheck) \
@@ -3527,24 +3521,21 @@
AssertAssignableInstr(TokenPosition token_pos,
Value* value,
+ Value* dst_type,
Value* instantiator_type_arguments,
Value* function_type_arguments,
- const AbstractType& dst_type,
const String& dst_name,
intptr_t deopt_id,
Kind kind = kUnknown)
: TemplateDefinition(deopt_id),
token_pos_(token_pos),
- dst_type_(AbstractType::ZoneHandle(dst_type.raw())),
dst_name_(dst_name),
kind_(kind) {
- ASSERT(!dst_type.IsNull());
- ASSERT(!dst_type.IsTypeRef());
ASSERT(!dst_name.IsNull());
- ASSERT(!dst_type.IsDynamicType());
SetInputAt(0, value);
- SetInputAt(1, instantiator_type_arguments);
- SetInputAt(2, function_type_arguments);
+ SetInputAt(1, dst_type);
+ SetInputAt(2, instantiator_type_arguments);
+ SetInputAt(3, function_type_arguments);
}
virtual intptr_t statistics_tag() const;
@@ -3554,15 +3545,11 @@
virtual bool RecomputeType();
Value* value() const { return inputs_[0]; }
- Value* instantiator_type_arguments() const { return inputs_[1]; }
- Value* function_type_arguments() const { return inputs_[2]; }
+ Value* dst_type() const { return inputs_[1]; }
+ Value* instantiator_type_arguments() const { return inputs_[2]; }
+ Value* function_type_arguments() const { return inputs_[3]; }
virtual TokenPosition token_pos() const { return token_pos_; }
- const AbstractType& dst_type() const { return dst_type_; }
- void set_dst_type(const AbstractType& dst_type) {
- ASSERT(!dst_type.IsTypeRef());
- dst_type_ = dst_type.raw();
- }
const String& dst_name() const { return dst_name_; }
virtual bool ComputeCanDeoptimize() const {
@@ -3577,7 +3564,7 @@
virtual Definition* Canonicalize(FlowGraph* flow_graph);
- virtual bool AttributesEqual(Instruction* other) const;
+ virtual bool AttributesEqual(Instruction* other) const { return true; }
virtual Value* RedefinedValue() const;
@@ -3586,7 +3573,6 @@
private:
const TokenPosition token_pos_;
- AbstractType& dst_type_;
const String& dst_name_;
const Kind kind_;
diff --git a/runtime/vm/compiler/backend/il_arm.cc b/runtime/vm/compiler/backend/il_arm.cc
index 59da8b5..2e30d5d 100644
--- a/runtime/vm/compiler/backend/il_arm.cc
+++ b/runtime/vm/compiler/backend/il_arm.cc
@@ -626,21 +626,26 @@
LocationSummary* AssertAssignableInstr::MakeLocationSummary(Zone* zone,
bool opt) const {
+ auto const dst_type_loc =
+ LocationFixedRegisterOrConstant(dst_type(), TypeTestABI::kDstTypeReg);
+
// When using a type testing stub, we want to prevent spilling of the
// function/instantiator type argument vectors, since stub preserves them. So
// we make this a `kNoCall` summary, even though most other registers can be
// modified by the stub. To tell the register allocator about it, we reserve
// all the other registers as temporary registers.
// TODO(http://dartbug.com/32788): Simplify this.
- const bool using_stub =
- FlowGraphCompiler::ShouldUseTypeTestingStubFor(opt, dst_type());
+ const bool using_stub = dst_type_loc.IsConstant() &&
+ FlowGraphCompiler::ShouldUseTypeTestingStubFor(
+ opt, AbstractType::Cast(dst_type_loc.constant()));
const intptr_t kNonChangeableInputRegs =
(1 << TypeTestABI::kInstanceReg) |
+ ((dst_type_loc.IsRegister() ? 1 : 0) << TypeTestABI::kDstTypeReg) |
(1 << TypeTestABI::kInstantiatorTypeArgumentsReg) |
(1 << TypeTestABI::kFunctionTypeArgumentsReg);
- const intptr_t kNumInputs = 3;
+ const intptr_t kNumInputs = 4;
// We invoke a stub that can potentially clobber any CPU register
// but can only clobber FPU registers on the slow path when
@@ -663,14 +668,12 @@
zone, kNumInputs, kNumTemps,
using_stub ? LocationSummary::kCallCalleeSafe : LocationSummary::kCall);
summary->set_in(0, Location::RegisterLocation(TypeTestABI::kInstanceReg));
- summary->set_in(1, Location::RegisterLocation(
+ summary->set_in(1, dst_type_loc);
+ summary->set_in(2, Location::RegisterLocation(
TypeTestABI::kInstantiatorTypeArgumentsReg));
summary->set_in(
- 2, Location::RegisterLocation(TypeTestABI::kFunctionTypeArgumentsReg));
-
- // TODO(http://dartbug.com/32787): Use Location::SameAsFirstInput() instead,
- // once register allocator no longer hits assertion.
- summary->set_out(0, Location::RegisterLocation(TypeTestABI::kInstanceReg));
+ 3, Location::RegisterLocation(TypeTestABI::kFunctionTypeArgumentsReg));
+ summary->set_out(0, Location::SameAsFirstInput());
if (using_stub) {
// Let's reserve all registers except for the input ones.
@@ -695,17 +698,6 @@
return summary;
}
-LocationSummary* AssertSubtypeInstr::MakeLocationSummary(Zone* zone,
- bool opt) const {
- const intptr_t kNumInputs = 2;
- const intptr_t kNumTemps = 0;
- LocationSummary* summary = new (zone)
- LocationSummary(zone, kNumInputs, kNumTemps, LocationSummary::kCall);
- summary->set_in(0, Location::RegisterLocation(R2)); // Instant. type args.
- summary->set_in(1, Location::RegisterLocation(R1)); // Function type args.
- return summary;
-}
-
static Condition TokenKindToSmiCondition(Token::Kind kind) {
switch (kind) {
case Token::kEQ:
@@ -1849,6 +1841,7 @@
case kArrayCid:
return kTagged;
case kOneByteStringCid:
+ case kTwoByteStringCid:
case kTypedDataInt8ArrayCid:
case kTypedDataInt16ArrayCid:
case kTypedDataUint8ArrayCid:
@@ -1934,6 +1927,7 @@
case kTypedDataUint8ArrayCid:
case kTypedDataUint8ClampedArrayCid:
case kOneByteStringCid:
+ case kTwoByteStringCid:
case kTypedDataInt16ArrayCid:
case kTypedDataUint16ArrayCid:
case kTypedDataInt32ArrayCid:
@@ -2057,6 +2051,7 @@
}
break;
}
+ case kTwoByteStringCid:
case kTypedDataInt16ArrayCid:
case kTypedDataUint16ArrayCid: {
ASSERT(RequiredInputRepresentation(2) == kUnboxedIntPtr);
diff --git a/runtime/vm/compiler/backend/il_arm64.cc b/runtime/vm/compiler/backend/il_arm64.cc
index 8b5b9e8..c94d18e 100644
--- a/runtime/vm/compiler/backend/il_arm64.cc
+++ b/runtime/vm/compiler/backend/il_arm64.cc
@@ -519,21 +519,26 @@
LocationSummary* AssertAssignableInstr::MakeLocationSummary(Zone* zone,
bool opt) const {
+ auto const dst_type_loc =
+ LocationFixedRegisterOrConstant(dst_type(), TypeTestABI::kDstTypeReg);
+
// When using a type testing stub, we want to prevent spilling of the
// function/instantiator type argument vectors, since stub preserves them. So
// we make this a `kNoCall` summary, even though most other registers can be
// modified by the stub. To tell the register allocator about it, we reserve
// all the other registers as temporary registers.
// TODO(http://dartbug.com/32788): Simplify this.
- const bool using_stub =
- FlowGraphCompiler::ShouldUseTypeTestingStubFor(opt, dst_type());
+ const bool using_stub = dst_type_loc.IsConstant() &&
+ FlowGraphCompiler::ShouldUseTypeTestingStubFor(
+ opt, AbstractType::Cast(dst_type_loc.constant()));
const intptr_t kNonChangeableInputRegs =
(1 << TypeTestABI::kInstanceReg) |
+ ((dst_type_loc.IsRegister() ? 1 : 0) << TypeTestABI::kDstTypeReg) |
(1 << TypeTestABI::kInstantiatorTypeArgumentsReg) |
(1 << TypeTestABI::kFunctionTypeArgumentsReg);
- const intptr_t kNumInputs = 3;
+ const intptr_t kNumInputs = 4;
// We invoke a stub that can potentially clobber any CPU register
// but can only clobber FPU registers on the slow path when
@@ -554,14 +559,12 @@
zone, kNumInputs, kNumTemps,
using_stub ? LocationSummary::kCallCalleeSafe : LocationSummary::kCall);
summary->set_in(0, Location::RegisterLocation(TypeTestABI::kInstanceReg));
- summary->set_in(1, Location::RegisterLocation(
+ summary->set_in(1, dst_type_loc);
+ summary->set_in(2, Location::RegisterLocation(
TypeTestABI::kInstantiatorTypeArgumentsReg));
summary->set_in(
- 2, Location::RegisterLocation(TypeTestABI::kFunctionTypeArgumentsReg));
-
- // TODO(http://dartbug.com/32787): Use Location::SameAsFirstInput() instead,
- // once register allocator no longer hits assertion.
- summary->set_out(0, Location::RegisterLocation(TypeTestABI::kInstanceReg));
+ 3, Location::RegisterLocation(TypeTestABI::kFunctionTypeArgumentsReg));
+ summary->set_out(0, Location::SameAsFirstInput());
if (using_stub) {
// Let's reserve all registers except for the input ones.
@@ -586,17 +589,6 @@
return summary;
}
-LocationSummary* AssertSubtypeInstr::MakeLocationSummary(Zone* zone,
- bool opt) const {
- const intptr_t kNumInputs = 2;
- const intptr_t kNumTemps = 0;
- LocationSummary* summary = new (zone)
- LocationSummary(zone, kNumInputs, kNumTemps, LocationSummary::kCall);
- summary->set_in(0, Location::RegisterLocation(R2)); // Instant. type args.
- summary->set_in(1, Location::RegisterLocation(R1)); // Function type args.
- return summary;
-}
-
static Condition TokenKindToSmiCondition(Token::Kind kind) {
switch (kind) {
case Token::kEQ:
@@ -1594,6 +1586,7 @@
case kArrayCid:
return kTagged;
case kOneByteStringCid:
+ case kTwoByteStringCid:
case kTypedDataInt8ArrayCid:
case kTypedDataInt16ArrayCid:
case kTypedDataUint8ArrayCid:
@@ -1654,6 +1647,7 @@
case kTypedDataUint8ArrayCid:
case kTypedDataUint8ClampedArrayCid:
case kOneByteStringCid:
+ case kTwoByteStringCid:
case kTypedDataInt16ArrayCid:
case kTypedDataUint16ArrayCid:
case kTypedDataInt32ArrayCid:
@@ -1760,6 +1754,7 @@
}
break;
}
+ case kTwoByteStringCid:
case kTypedDataInt16ArrayCid:
case kTypedDataUint16ArrayCid: {
ASSERT(RequiredInputRepresentation(2) == kUnboxedIntPtr);
diff --git a/runtime/vm/compiler/backend/il_deserializer.cc b/runtime/vm/compiler/backend/il_deserializer.cc
index 98c044d..cf78000 100644
--- a/runtime/vm/compiler/backend/il_deserializer.cc
+++ b/runtime/vm/compiler/backend/il_deserializer.cc
@@ -885,16 +885,15 @@
auto const val = ParseValue(Retrieve(sexp, 1));
if (val == nullptr) return nullptr;
- auto const inst_type_args = ParseValue(Retrieve(sexp, 2));
+ auto const dst_type = ParseValue(Retrieve(sexp, 2));
+ if (dst_type == nullptr) return nullptr;
+
+ auto const inst_type_args = ParseValue(Retrieve(sexp, 3));
if (inst_type_args == nullptr) return nullptr;
- auto const func_type_args = ParseValue(Retrieve(sexp, 3));
+ auto const func_type_args = ParseValue(Retrieve(sexp, 4));
if (func_type_args == nullptr) return nullptr;
- auto& dst_type = AbstractType::Handle(zone());
- auto const dst_type_sexp = Retrieve(sexp, "type");
- if (!ParseDartValue(dst_type_sexp, &dst_type)) return nullptr;
-
auto& dst_name = String::ZoneHandle(zone());
auto const dst_name_sexp = Retrieve(sexp, "name");
if (!ParseDartValue(dst_name_sexp, &dst_name)) return nullptr;
@@ -908,8 +907,8 @@
}
return new (zone())
- AssertAssignableInstr(info.token_pos, val, inst_type_args, func_type_args,
- dst_type, dst_name, info.deopt_id, kind);
+ AssertAssignableInstr(info.token_pos, val, dst_type, inst_type_args,
+ func_type_args, dst_name, info.deopt_id, kind);
}
AssertBooleanInstr* FlowGraphDeserializer::DeserializeAssertBoolean(
diff --git a/runtime/vm/compiler/backend/il_ia32.cc b/runtime/vm/compiler/backend/il_ia32.cc
index addc43e..b9a8c06 100644
--- a/runtime/vm/compiler/backend/il_ia32.cc
+++ b/runtime/vm/compiler/backend/il_ia32.cc
@@ -363,27 +363,18 @@
LocationSummary* AssertAssignableInstr::MakeLocationSummary(Zone* zone,
bool opt) const {
- const intptr_t kNumInputs = 3;
+ const intptr_t kNumInputs = 4;
const intptr_t kNumTemps = 0;
LocationSummary* summary = new (zone)
LocationSummary(zone, kNumInputs, kNumTemps, LocationSummary::kCall);
- summary->set_in(0, Location::RegisterLocation(EAX)); // Value.
- summary->set_in(1, Location::RegisterLocation(
+ summary->set_in(0, Location::RegisterLocation(TypeTestABI::kInstanceReg));
+ summary->set_in(
+ 1, LocationFixedRegisterOrConstant(dst_type(), TypeTestABI::kDstTypeReg));
+ summary->set_in(2, Location::RegisterLocation(
TypeTestABI::kInstantiatorTypeArgumentsReg));
summary->set_in(
- 2, Location::RegisterLocation(TypeTestABI::kFunctionTypeArgumentsReg));
- summary->set_out(0, Location::RegisterLocation(EAX));
- return summary;
-}
-
-LocationSummary* AssertSubtypeInstr::MakeLocationSummary(Zone* zone,
- bool opt) const {
- const intptr_t kNumInputs = 2;
- const intptr_t kNumTemps = 0;
- LocationSummary* summary = new (zone)
- LocationSummary(zone, kNumInputs, kNumTemps, LocationSummary::kCall);
- summary->set_in(0, Location::RegisterLocation(EDX)); // Instant. type args.
- summary->set_in(1, Location::RegisterLocation(ECX)); // Function type args.
+ 3, Location::RegisterLocation(TypeTestABI::kFunctionTypeArgumentsReg));
+ summary->set_out(0, Location::SameAsFirstInput());
return summary;
}
@@ -1353,6 +1344,7 @@
case kArrayCid:
return kTagged;
case kOneByteStringCid:
+ case kTwoByteStringCid:
case kTypedDataInt8ArrayCid:
case kTypedDataInt16ArrayCid:
case kTypedDataUint8ArrayCid:
@@ -1416,6 +1408,7 @@
case kTypedDataUint8ArrayCid:
case kTypedDataUint8ClampedArrayCid:
case kOneByteStringCid:
+ case kTwoByteStringCid:
// TODO(fschneider): Add location constraint for byte registers (EAX,
// EBX, ECX, EDX) instead of using a fixed register.
locs->set_in(2, LocationFixedRegisterOrSmiConstant(value(), EAX));
@@ -1526,6 +1519,7 @@
}
break;
}
+ case kTwoByteStringCid:
case kTypedDataInt16ArrayCid:
case kTypedDataUint16ArrayCid: {
ASSERT(RequiredInputRepresentation(2) == kUnboxedIntPtr);
diff --git a/runtime/vm/compiler/backend/il_printer.cc b/runtime/vm/compiler/backend/il_printer.cc
index 83dda2b..5175f1e 100644
--- a/runtime/vm/compiler/backend/il_printer.cc
+++ b/runtime/vm/compiler/backend/il_printer.cc
@@ -415,14 +415,11 @@
}
}
-static const char* TypeToUserVisibleName(const AbstractType& type) {
- return String::Handle(type.UserVisibleName()).ToCString();
-}
-
void AssertAssignableInstr::PrintOperandsTo(BufferFormatter* f) const {
value()->PrintTo(f);
- f->Print(", %s, '%s',", TypeToUserVisibleName(dst_type()),
- dst_name().ToCString());
+ f->Print(", ");
+ dst_type()->PrintTo(f);
+ f->Print(", '%s',", dst_name().ToCString());
f->Print(" instantiator_type_args(");
instantiator_type_arguments()->PrintTo(f);
f->Print("), function_type_args(");
@@ -431,8 +428,10 @@
}
void AssertSubtypeInstr::PrintOperandsTo(BufferFormatter* f) const {
- f->Print("%s, %s, '%s',", TypeToUserVisibleName(sub_type()),
- TypeToUserVisibleName(super_type()), dst_name().ToCString());
+ sub_type()->PrintTo(f);
+ f->Print(", ");
+ super_type()->PrintTo(f);
+ f->Print(", '%s', ", dst_name().ToCString());
f->Print(" instantiator_type_args(");
instantiator_type_arguments()->PrintTo(f);
f->Print("), function_type_args(");
diff --git a/runtime/vm/compiler/backend/il_serializer.cc b/runtime/vm/compiler/backend/il_serializer.cc
index 3708c8f..8d2f489 100644
--- a/runtime/vm/compiler/backend/il_serializer.cc
+++ b/runtime/vm/compiler/backend/il_serializer.cc
@@ -907,7 +907,6 @@
SExpList* sexp,
FlowGraphSerializer* s) const {
Instruction::AddExtraInfoToSExpression(sexp, s);
- sexp->AddExtra("type", s->DartValueToSExp(dst_type()));
sexp->AddExtra("name", s->DartValueToSExp(dst_name()));
}
diff --git a/runtime/vm/compiler/backend/il_test_helper.h b/runtime/vm/compiler/backend/il_test_helper.h
index 1d8a121..903b94a 100644
--- a/runtime/vm/compiler/backend/il_test_helper.h
+++ b/runtime/vm/compiler/backend/il_test_helper.h
@@ -69,7 +69,9 @@
CompilerPass::PipelineMode mode)
: function_(function),
thread_(Thread::Current()),
- compiler_state_(thread_, mode == CompilerPass::PipelineMode::kAOT),
+ compiler_state_(thread_,
+ mode == CompilerPass::PipelineMode::kAOT,
+ CompilerState::ShouldTrace(function)),
mode_(mode) {}
~TestPipeline() { delete pass_state_; }
diff --git a/runtime/vm/compiler/backend/il_x64.cc b/runtime/vm/compiler/backend/il_x64.cc
index 19ddebf..539abcd 100644
--- a/runtime/vm/compiler/backend/il_x64.cc
+++ b/runtime/vm/compiler/backend/il_x64.cc
@@ -476,21 +476,26 @@
LocationSummary* AssertAssignableInstr::MakeLocationSummary(Zone* zone,
bool opt) const {
+ auto const dst_type_loc =
+ LocationFixedRegisterOrConstant(dst_type(), TypeTestABI::kDstTypeReg);
+
// When using a type testing stub, we want to prevent spilling of the
// function/instantiator type argument vectors, since stub preserves them. So
// we make this a `kNoCall` summary, even though most other registers can be
// modified by the stub. To tell the register allocator about it, we reserve
// all the other registers as temporary registers.
// TODO(http://dartbug.com/32788): Simplify this.
- const bool using_stub =
- FlowGraphCompiler::ShouldUseTypeTestingStubFor(opt, dst_type());
+ const bool using_stub = dst_type_loc.IsConstant() &&
+ FlowGraphCompiler::ShouldUseTypeTestingStubFor(
+ opt, AbstractType::Cast(dst_type_loc.constant()));
const intptr_t kNonChangeableInputRegs =
(1 << TypeTestABI::kInstanceReg) |
+ ((dst_type_loc.IsRegister() ? 1 : 0) << TypeTestABI::kDstTypeReg) |
(1 << TypeTestABI::kInstantiatorTypeArgumentsReg) |
(1 << TypeTestABI::kFunctionTypeArgumentsReg);
- const intptr_t kNumInputs = 3;
+ const intptr_t kNumInputs = 4;
// We invoke a stub that can potentially clobber any CPU register
// but can only clobber FPU registers on the slow path when
@@ -510,14 +515,12 @@
zone, kNumInputs, kNumTemps,
using_stub ? LocationSummary::kCallCalleeSafe : LocationSummary::kCall);
summary->set_in(0, Location::RegisterLocation(TypeTestABI::kInstanceReg));
- summary->set_in(1, Location::RegisterLocation(
+ summary->set_in(1, dst_type_loc);
+ summary->set_in(2, Location::RegisterLocation(
TypeTestABI::kInstantiatorTypeArgumentsReg));
summary->set_in(
- 2, Location::RegisterLocation(TypeTestABI::kFunctionTypeArgumentsReg));
-
- // TODO(http://dartbug.com/32787): Use Location::SameAsFirstInput() instead,
- // once register allocator no longer hits assertion.
- summary->set_out(0, Location::RegisterLocation(TypeTestABI::kInstanceReg));
+ 3, Location::RegisterLocation(TypeTestABI::kFunctionTypeArgumentsReg));
+ summary->set_out(0, Location::SameAsFirstInput());
if (using_stub) {
// Let's reserve all registers except for the input ones.
@@ -542,17 +545,6 @@
return summary;
}
-LocationSummary* AssertSubtypeInstr::MakeLocationSummary(Zone* zone,
- bool opt) const {
- const intptr_t kNumInputs = 2;
- const intptr_t kNumTemps = 0;
- LocationSummary* summary = new (zone)
- LocationSummary(zone, kNumInputs, kNumTemps, LocationSummary::kCall);
- summary->set_in(0, Location::RegisterLocation(RDX)); // Instant. type args.
- summary->set_in(1, Location::RegisterLocation(RCX)); // Function type args.
- return summary;
-}
-
static Condition TokenKindToIntCondition(Token::Kind kind) {
switch (kind) {
case Token::kEQ:
@@ -1549,6 +1541,7 @@
case kArrayCid:
return kTagged;
case kOneByteStringCid:
+ case kTwoByteStringCid:
case kTypedDataInt8ArrayCid:
case kTypedDataInt16ArrayCid:
case kTypedDataUint8ArrayCid:
@@ -1616,6 +1609,7 @@
case kTypedDataUint8ArrayCid:
case kTypedDataUint8ClampedArrayCid:
case kOneByteStringCid:
+ case kTwoByteStringCid:
// TODO(fschneider): Add location constraint for byte registers (RAX,
// RBX, RCX, RDX) instead of using a fixed register.
locs->set_in(2, LocationFixedRegisterOrSmiConstant(value(), RAX));
@@ -1723,6 +1717,7 @@
}
break;
}
+ case kTwoByteStringCid:
case kTypedDataInt16ArrayCid:
case kTypedDataUint16ArrayCid: {
ASSERT(RequiredInputRepresentation(2) == kUnboxedIntPtr);
diff --git a/runtime/vm/compiler/backend/inliner.cc b/runtime/vm/compiler/backend/inliner.cc
index 24ad6a3..58c4c88 100644
--- a/runtime/vm/compiler/backend/inliner.cc
+++ b/runtime/vm/compiler/backend/inliner.cc
@@ -2611,11 +2611,12 @@
if (exactness != nullptr && exactness->is_exact) {
exactness->emit_exactness_guard = true;
} else {
+ auto const function_type_args = flow_graph->constant_null();
+ auto const dst_type = flow_graph->GetConstant(value_type);
AssertAssignableInstr* assert_value = new (Z) AssertAssignableInstr(
- token_pos, new (Z) Value(stored_value), new (Z) Value(type_args),
- new (Z)
- Value(flow_graph->constant_null()), // Function type arguments.
- value_type, Symbols::Value(), call->deopt_id());
+ token_pos, new (Z) Value(stored_value), new (Z) Value(dst_type),
+ new (Z) Value(type_args), new (Z) Value(function_type_args),
+ Symbols::Value(), call->deopt_id());
cursor = flow_graph->AppendTo(cursor, assert_value, call->env(),
FlowGraph::kValue);
}
@@ -4146,7 +4147,8 @@
return false;
}
- case MethodRecognizer::kOneByteStringSetAt: {
+ case MethodRecognizer::kWriteIntoOneByteString:
+ case MethodRecognizer::kWriteIntoTwoByteString: {
// This is an internal method, no need to check argument types nor
// range.
*entry = new (Z)
@@ -4167,11 +4169,13 @@
value->AsUnboxInteger()->mark_truncating();
flow_graph->AppendTo(*entry, value, env, FlowGraph::kValue);
+ const bool is_onebyte = kind == MethodRecognizer::kWriteIntoOneByteString;
+ const intptr_t index_scale = is_onebyte ? 1 : 2;
+ const intptr_t cid = is_onebyte ? kOneByteStringCid : kTwoByteStringCid;
*last = new (Z) StoreIndexedInstr(
new (Z) Value(str), new (Z) Value(index), new (Z) Value(value),
- kNoStoreBarrier, /*index_unboxed=*/false,
- /*index_scale=*/1, kOneByteStringCid, kAlignedAccess,
- call->deopt_id(), call->token_pos());
+ kNoStoreBarrier, /*index_unboxed=*/false, index_scale, cid,
+ kAlignedAccess, call->deopt_id(), call->token_pos());
flow_graph->AppendTo(value, *last, env, FlowGraph::kEffect);
// We need a return value to replace uses of the original definition.
diff --git a/runtime/vm/compiler/backend/linearscan.cc b/runtime/vm/compiler/backend/linearscan.cc
index 2aa6944..96c6a3a 100644
--- a/runtime/vm/compiler/backend/linearscan.cc
+++ b/runtime/vm/compiler/backend/linearscan.cc
@@ -16,10 +16,14 @@
namespace dart {
-#if defined(DEBUG)
+#if !defined(PRODUCT)
+#define INCLUDE_LINEAR_SCAN_TRACING_CODE
+#endif
+
+#if defined(INCLUDE_LINEAR_SCAN_TRACING_CODE)
#define TRACE_ALLOC(statement) \
do { \
- if (FLAG_trace_ssa_allocator) statement; \
+ if (FLAG_trace_ssa_allocator && CompilerState::ShouldTrace()) statement; \
} while (0)
#else
#define TRACE_ALLOC(statement)
@@ -2718,12 +2722,7 @@
bool FlowGraphAllocator::TargetLocationIsSpillSlot(LiveRange* range,
Location target) {
- if (target.IsStackSlot() || target.IsDoubleStackSlot() ||
- target.IsConstant()) {
- ASSERT(GetLiveRange(range->vreg())->spill_slot().Equals(target));
- return true;
- }
- return false;
+ return GetLiveRange(range->vreg())->spill_slot().Equals(target);
}
void FlowGraphAllocator::ConnectSplitSiblings(LiveRange* parent,
@@ -2746,7 +2745,7 @@
Location target;
Location source;
-#if defined(DEBUG)
+#if defined(INCLUDE_LINEAR_SCAN_TRACING_CODE)
LiveRange* source_cover = NULL;
LiveRange* target_cover = NULL;
#endif
@@ -2756,14 +2755,14 @@
if (range->CanCover(source_pos)) {
ASSERT(source.IsInvalid());
source = range->assigned_location();
-#if defined(DEBUG)
+#if defined(INCLUDE_LINEAR_SCAN_TRACING_CODE)
source_cover = range;
#endif
}
if (range->CanCover(target_pos)) {
ASSERT(target.IsInvalid());
target = range->assigned_location();
-#if defined(DEBUG)
+#if defined(INCLUDE_LINEAR_SCAN_TRACING_CODE)
target_cover = range;
#endif
}
@@ -2839,11 +2838,7 @@
// this will cause spilling to occur on the fast path (at the definition).
for (intptr_t i = 0; i < spilled_.length(); i++) {
LiveRange* range = spilled_[i];
- if (range->assigned_location().IsStackSlot() ||
- range->assigned_location().IsDoubleStackSlot() ||
- range->assigned_location().IsConstant()) {
- ASSERT(range->assigned_location().Equals(range->spill_slot()));
- } else {
+ if (!range->assigned_location().Equals(range->spill_slot())) {
AddMoveAt(range->Start() + 1, range->spill_slot(),
range->assigned_location());
}
@@ -2926,7 +2921,7 @@
BuildLiveRanges();
- if (FLAG_print_ssa_liveranges) {
+ if (FLAG_print_ssa_liveranges && CompilerState::ShouldTrace()) {
const Function& function = flow_graph_.function();
THR_Print("-- [before ssa allocator] ranges [%s] ---------\n",
function.ToFullyQualifiedCString());
@@ -2968,7 +2963,7 @@
intptr_t double_spill_slot_count = spill_slots_.length() * kDoubleSpillFactor;
entry->set_spill_slot_count(cpu_spill_slot_count_ + double_spill_slot_count);
- if (FLAG_print_ssa_liveranges) {
+ if (FLAG_print_ssa_liveranges && CompilerState::ShouldTrace()) {
const Function& function = flow_graph_.function();
THR_Print("-- [after ssa allocator] ranges [%s] ---------\n",
diff --git a/runtime/vm/compiler/backend/locations.cc b/runtime/vm/compiler/backend/locations.cc
index c9b0dac..8d7c759 100644
--- a/runtime/vm/compiler/backend/locations.cc
+++ b/runtime/vm/compiler/backend/locations.cc
@@ -70,6 +70,7 @@
LocationSummary::ContainsCall contains_call)
: num_inputs_(input_count),
num_temps_(temp_count),
+ output_location_(), // out(0)->IsInvalid() unless later set.
stack_bitmap_(NULL),
contains_call_(contains_call),
live_registers_() {
@@ -94,6 +95,42 @@
return summary;
}
+static bool ValidOutputForAlwaysCalls(const Location& loc) {
+ return loc.IsMachineRegister() || loc.IsInvalid() || loc.IsPairLocation();
+}
+
+void LocationSummary::set_in(intptr_t index, Location loc) {
+ ASSERT(index >= 0);
+ ASSERT(index < num_inputs_);
+#if defined(DEBUG)
+ // See FlowGraphAllocator::ProcessOneInstruction for explanation of these
+ // restrictions.
+ if (always_calls()) {
+ if (loc.IsUnallocated()) {
+ ASSERT(loc.policy() == Location::kAny);
+ } else if (loc.IsPairLocation()) {
+ ASSERT(!loc.AsPairLocation()->At(0).IsUnallocated() ||
+ loc.AsPairLocation()->At(0).policy() == Location::kAny);
+ ASSERT(!loc.AsPairLocation()->At(0).IsUnallocated() ||
+ loc.AsPairLocation()->At(0).policy() == Location::kAny);
+ }
+ if (index == 0 && out(0).IsUnallocated() &&
+ out(0).policy() == Location::kSameAsFirstInput) {
+ ASSERT(ValidOutputForAlwaysCalls(loc));
+ }
+ }
+#endif
+ input_locations_[index] = loc;
+}
+
+void LocationSummary::set_out(intptr_t index, Location loc) {
+ ASSERT(index == 0);
+ ASSERT(!always_calls() || ValidOutputForAlwaysCalls(loc) ||
+ (loc.IsUnallocated() && loc.policy() == Location::kSameAsFirstInput &&
+ num_inputs_ > 0 && ValidOutputForAlwaysCalls(in(0))));
+ output_location_ = loc;
+}
+
Location Location::Pair(Location first, Location second) {
PairLocation* pair_location = new PairLocation();
ASSERT((reinterpret_cast<intptr_t>(pair_location) & kLocationTagMask) == 0);
diff --git a/runtime/vm/compiler/backend/locations.h b/runtime/vm/compiler/backend/locations.h
index 558767f..d685250 100644
--- a/runtime/vm/compiler/backend/locations.h
+++ b/runtime/vm/compiler/backend/locations.h
@@ -664,23 +664,7 @@
return &input_locations_[index];
}
- void set_in(intptr_t index, Location loc) {
- ASSERT(index >= 0);
- ASSERT(index < num_inputs_);
- // See FlowGraphAllocator::ProcessOneInstruction for explanation of this
- // restriction.
- if (always_calls()) {
- if (loc.IsUnallocated()) {
- ASSERT(loc.policy() == Location::kAny);
- } else if (loc.IsPairLocation()) {
- ASSERT(!loc.AsPairLocation()->At(0).IsUnallocated() ||
- loc.AsPairLocation()->At(0).policy() == Location::kAny);
- ASSERT(!loc.AsPairLocation()->At(0).IsUnallocated() ||
- loc.AsPairLocation()->At(0).policy() == Location::kAny);
- }
- }
- input_locations_[index] = loc;
- }
+ void set_in(intptr_t index, Location loc);
intptr_t temp_count() const { return num_temps_; }
@@ -715,12 +699,7 @@
return &output_location_;
}
- void set_out(intptr_t index, Location loc) {
- ASSERT(index == 0);
- ASSERT(!always_calls() || (loc.IsMachineRegister() || loc.IsInvalid() ||
- loc.IsPairLocation()));
- output_location_ = loc;
- }
+ void set_out(intptr_t index, Location loc);
BitmapBuilder* stack_bitmap() {
if (stack_bitmap_ == NULL) {
diff --git a/runtime/vm/compiler/backend/redundancy_elimination_test.cc b/runtime/vm/compiler/backend/redundancy_elimination_test.cc
index 2fb3b16..fdbd957 100644
--- a/runtime/vm/compiler/backend/redundancy_elimination_test.cc
+++ b/runtime/vm/compiler/backend/redundancy_elimination_test.cc
@@ -361,10 +361,11 @@
static Definition* MakeAssertAssignable(CompilerState* S,
FlowGraph* flow_graph,
Definition* defn) {
+ const auto& dst_type = AbstractType::ZoneHandle(Type::ObjectType());
return new AssertAssignableInstr(TokenPosition::kNoSource, new Value(defn),
+ new Value(flow_graph->GetConstant(dst_type)),
new Value(flow_graph->constant_null()),
new Value(flow_graph->constant_null()),
- AbstractType::ZoneHandle(Type::ObjectType()),
Symbols::Empty(), S->GetNextDeoptId());
}
diff --git a/runtime/vm/compiler/backend/type_propagator.cc b/runtime/vm/compiler/backend/type_propagator.cc
index 1f4c05d..763710b 100644
--- a/runtime/vm/compiler/backend/type_propagator.cc
+++ b/runtime/vm/compiler/backend/type_propagator.cc
@@ -1160,11 +1160,15 @@
CompileType AssertAssignableInstr::ComputeType() const {
CompileType* value_type = value()->Type();
- if (value_type->IsSubtypeOf(dst_type())) {
- return *value_type;
+ const AbstractType* abs_type = &AbstractType::dynamic_type();
+ if (dst_type()->BindsToConstant() &&
+ dst_type()->BoundConstant().IsAbstractType()) {
+ abs_type = &AbstractType::Cast(dst_type()->BoundConstant());
+ if (value_type->IsSubtypeOf(*abs_type)) {
+ return *value_type;
+ }
}
-
- return CompileType::FromAbstractType(dst_type(), value_type->is_nullable());
+ return CompileType::FromAbstractType(*abs_type, value_type->is_nullable());
}
bool AssertAssignableInstr::RecomputeType() {
diff --git a/runtime/vm/compiler/call_specializer.cc b/runtime/vm/compiler/call_specializer.cc
index 4369236..bcf1f47 100644
--- a/runtime/vm/compiler/call_specializer.cc
+++ b/runtime/vm/compiler/call_specializer.cc
@@ -909,8 +909,9 @@
instr,
new (Z) AssertAssignableInstr(
instr->token_pos(), new (Z) Value(instr->ArgumentAt(1)),
+ new (Z) Value(flow_graph_->GetConstant(dst_type)),
new (Z) Value(instantiator_type_args),
- new (Z) Value(function_type_args), dst_type,
+ new (Z) Value(function_type_args),
String::ZoneHandle(zone(), field.name()), instr->deopt_id()),
instr->env(), FlowGraph::kEffect);
}
diff --git a/runtime/vm/compiler/compiler_state.cc b/runtime/vm/compiler/compiler_state.cc
index cdf77e6..e3e129e 100644
--- a/runtime/vm/compiler/compiler_state.cc
+++ b/runtime/vm/compiler/compiler_state.cc
@@ -6,6 +6,7 @@
#include <functional>
+#include "vm/compiler/backend/il_printer.h"
#include "vm/compiler/backend/slot.h"
#include "vm/growable_array.h"
#include "vm/scopes.h"
@@ -70,4 +71,9 @@
});
}
+CompilerTracing CompilerState::ShouldTrace(const Function& func) {
+ return FlowGraphPrinter::ShouldPrint(func) ? CompilerTracing::kOn
+ : CompilerTracing::kOff;
+}
+
} // namespace dart
diff --git a/runtime/vm/compiler/compiler_state.h b/runtime/vm/compiler/compiler_state.h
index 9baaceb..c059c77 100644
--- a/runtime/vm/compiler/compiler_state.h
+++ b/runtime/vm/compiler/compiler_state.h
@@ -16,16 +16,27 @@
namespace dart {
+class Function;
class LocalScope;
class LocalVariable;
class SlotCache;
class Slot;
+enum class CompilerTracing {
+ kOn,
+ kOff,
+};
+
// Global compiler state attached to the thread.
class CompilerState : public ThreadStackResource {
public:
- CompilerState(Thread* thread, bool is_aot)
- : ThreadStackResource(thread), cha_(thread), is_aot_(is_aot) {
+ CompilerState(Thread* thread,
+ bool is_aot,
+ CompilerTracing tracing = CompilerTracing::kOn)
+ : ThreadStackResource(thread),
+ cha_(thread),
+ is_aot_(is_aot),
+ tracing_(tracing) {
previous_ = thread->SetCompilerState(this);
}
@@ -88,6 +99,12 @@
bool is_aot() const { return is_aot_; }
+ bool should_trace() const { return tracing_ == CompilerTracing::kOn; }
+
+ static bool ShouldTrace() { return Current().should_trace(); }
+
+ static CompilerTracing ShouldTrace(const Function& func);
+
private:
CHA cha_;
intptr_t deopt_id_ = 0;
@@ -100,7 +117,9 @@
ZoneGrowableArray<ZoneGrowableArray<const Slot*>*>* dummy_slots_ = nullptr;
ZoneGrowableArray<LocalVariable*>* dummy_captured_vars_ = nullptr;
- bool is_aot_;
+ const bool is_aot_;
+
+ const CompilerTracing tracing_;
CompilerState* previous_;
};
diff --git a/runtime/vm/compiler/frontend/base_flow_graph_builder.cc b/runtime/vm/compiler/frontend/base_flow_graph_builder.cc
index 6ab86e8..0e1da45 100644
--- a/runtime/vm/compiler/frontend/base_flow_graph_builder.cc
+++ b/runtime/vm/compiler/frontend/base_flow_graph_builder.cc
@@ -1105,15 +1105,15 @@
Fragment BaseFlowGraphBuilder::AssertAssignable(
TokenPosition position,
- const AbstractType& dst_type,
const String& dst_name,
AssertAssignableInstr::Kind kind) {
Value* function_type_args = Pop();
Value* instantiator_type_args = Pop();
+ Value* dst_type = Pop();
Value* value = Pop();
AssertAssignableInstr* instr = new (Z) AssertAssignableInstr(
- position, value, instantiator_type_args, function_type_args, dst_type,
+ position, value, dst_type, instantiator_type_args, function_type_args,
dst_name, GetNextDeoptId(), kind);
Push(instr);
diff --git a/runtime/vm/compiler/frontend/base_flow_graph_builder.h b/runtime/vm/compiler/frontend/base_flow_graph_builder.h
index e4ebf61..846ba73 100644
--- a/runtime/vm/compiler/frontend/base_flow_graph_builder.h
+++ b/runtime/vm/compiler/frontend/base_flow_graph_builder.h
@@ -397,11 +397,10 @@
// _StringBase._interpolate call.
Fragment StringInterpolate(TokenPosition position);
- // Pops function type arguments, instantiator type arguments and value; and
- // type checks value against the type arguments.
+ // Pops function type arguments, instantiator type arguments, dst_type, and
+ // value; and type checks value against the type arguments.
Fragment AssertAssignable(
TokenPosition position,
- const AbstractType& dst_type,
const String& dst_name,
AssertAssignableInstr::Kind kind = AssertAssignableInstr::kUnknown);
diff --git a/runtime/vm/compiler/frontend/bytecode_flow_graph_builder.cc b/runtime/vm/compiler/frontend/bytecode_flow_graph_builder.cc
index c7555ff..b4079a9 100644
--- a/runtime/vm/compiler/frontend/bytecode_flow_graph_builder.cc
+++ b/runtime/vm/compiler/frontend/bytecode_flow_graph_builder.cc
@@ -1382,12 +1382,12 @@
const String& dst_name = String::Cast(PopConstant().value());
Value* function_type_args = Pop();
Value* instantiator_type_args = Pop();
- code_ += B->Drop(); // dst_type
+ Value* dst_type_value = Pop();
Value* value = Pop();
AssertAssignableInstr* instr = new (Z) AssertAssignableInstr(
- position_, value, instantiator_type_args, function_type_args, dst_type,
- dst_name, B->GetNextDeoptId());
+ position_, value, dst_type_value, instantiator_type_args,
+ function_type_args, dst_name, B->GetNextDeoptId());
code_ <<= instr;
@@ -1402,8 +1402,8 @@
LoadStackSlots(5);
const String& dst_name = String::Cast(PopConstant().value());
- const AbstractType& super_type = AbstractType::Cast(PopConstant().value());
- const AbstractType& sub_type = AbstractType::Cast(PopConstant().value());
+ Value* super_type = Pop();
+ Value* sub_type = Pop();
Value* function_type_args = Pop();
Value* instantiator_type_args = Pop();
diff --git a/runtime/vm/compiler/frontend/kernel_to_il.cc b/runtime/vm/compiler/frontend/kernel_to_il.cc
index 35e2fad..c640174 100644
--- a/runtime/vm/compiler/frontend/kernel_to_il.cc
+++ b/runtime/vm/compiler/frontend/kernel_to_il.cc
@@ -1263,13 +1263,11 @@
const auto& pointer_type_args =
TypeArguments::Handle(pointer_class.type_parameters());
const auto& pointer_type_arg =
- AbstractType::Handle(pointer_type_args.TypeAt(0));
+ AbstractType::ZoneHandle(pointer_type_args.TypeAt(0));
// But we type check it as a method on a generic class at runtime.
- body += LoadLocal(arg_value);
- body += LoadLocal(arg_pointer);
- body += CheckNullOptimized(TokenPosition::kNoSource,
- String::ZoneHandle(Z, function.name()));
+ body += LoadLocal(arg_value); // value.
+ body += Constant(pointer_type_arg); // dst_type.
// We pass the Pointer type argument as instantiator_type_args.
//
// Call sites to this recognized method are guaranteed to pass a
@@ -1280,11 +1278,13 @@
// The following is safe to do, as (1) we are guaranteed to have a
// Pointer<Pointer<X>> as argument, and (2) the bound on the pointer
// type parameter guarantees X is an interface type.
+ body += LoadLocal(arg_pointer);
+ body += CheckNullOptimized(TokenPosition::kNoSource,
+ String::ZoneHandle(Z, function.name()));
body += LoadNativeField(
Slot::GetTypeArgumentsSlotFor(thread_, pointer_class));
body += NullConstant(); // function_type_args.
- body += AssertAssignable(TokenPosition::kNoSource, pointer_type_arg,
- Symbols::Empty());
+ body += AssertAssignable(TokenPosition::kNoSource, Symbols::Empty());
body += Drop();
}
@@ -1567,6 +1567,8 @@
AssertAssignableInstr::Kind kind) {
Fragment instructions;
+ instructions += Constant(AbstractType::ZoneHandle(dst_type.raw()));
+
if (!dst_type.IsInstantiated(kCurrentClass)) {
instructions += LoadInstantiatorTypeArguments();
} else {
@@ -1579,21 +1581,26 @@
instructions += NullConstant();
}
- instructions += AssertAssignable(position, dst_type, dst_name, kind);
+ instructions += AssertAssignable(position, dst_name, kind);
return instructions;
}
Fragment FlowGraphBuilder::AssertSubtype(TokenPosition position,
- const AbstractType& sub_type,
- const AbstractType& super_type,
+ const AbstractType& sub_type_value,
+ const AbstractType& super_type_value,
const String& dst_name) {
Fragment instructions;
instructions += LoadInstantiatorTypeArguments();
- Value* instantiator_type_args = Pop();
instructions += LoadFunctionTypeArguments();
+ instructions += Constant(AbstractType::ZoneHandle(sub_type_value.raw()));
+ instructions += Constant(AbstractType::ZoneHandle(super_type_value.raw()));
+
+ Value* super_type = Pop();
+ Value* sub_type = Pop();
Value* function_type_args = Pop();
+ Value* instantiator_type_args = Pop();
AssertSubtypeInstr* instr = new (Z)
AssertSubtypeInstr(position, instantiator_type_args, function_type_args,
diff --git a/runtime/vm/compiler/frontend/scope_builder.cc b/runtime/vm/compiler/frontend/scope_builder.cc
index a1582ac..3856434 100644
--- a/runtime/vm/compiler/frontend/scope_builder.cc
+++ b/runtime/vm/compiler/frontend/scope_builder.cc
@@ -213,7 +213,17 @@
}
ParameterTypeCheckMode type_check_mode = kTypeCheckAllParameters;
- if (function.IsNonImplicitClosureFunction()) {
+ if (function.IsSyncYielding()) {
+ // Don't type check the parameter of sync-yielding since these calls are
+ // all synthetic and types should always match.
+ ASSERT((function.NumParameters() - function.NumImplicitParameters()) ==
+ 1);
+ ASSERT(
+ Class::Handle(
+ AbstractType::Handle(function.ParameterTypeAt(1)).type_class())
+ .Name() == Symbols::_SyncIterator().raw());
+ type_check_mode = kTypeCheckForStaticFunction;
+ } else if (function.IsNonImplicitClosureFunction()) {
type_check_mode = kTypeCheckAllParameters;
} else if (function.IsImplicitClosureFunction()) {
if (MethodCanSkipTypeChecksForNonCovariantArguments(
diff --git a/runtime/vm/compiler/intrinsifier.cc b/runtime/vm/compiler/intrinsifier.cc
index 7c6d764..e14922b 100644
--- a/runtime/vm/compiler/intrinsifier.cc
+++ b/runtime/vm/compiler/intrinsifier.cc
@@ -111,6 +111,11 @@
DEVELOPER_LIB_INTRINSIC_LIST(DEFINE_INTRINSIC)
{nullptr, nullptr},
};
+
+static IntrinsicDesc internal_intrinsics[] = {
+ INTERNAL_LIB_INTRINSIC_LIST(DEFINE_INTRINSIC)
+ {nullptr, nullptr},
+};
// clang-format on
void Intrinsifier::InitializeState() {
@@ -123,7 +128,7 @@
String& str2 = String::Handle(zone);
Error& error = Error::Handle(zone);
- static const intptr_t kNumLibs = 4;
+ static const intptr_t kNumLibs = 5;
LibraryInstrinsicsDesc intrinsics[kNumLibs] = {
{Library::Handle(zone, Library::CoreLibrary()), core_intrinsics},
{Library::Handle(zone, Library::MathLibrary()), math_intrinsics},
@@ -131,6 +136,7 @@
typed_data_intrinsics},
{Library::Handle(zone, Library::DeveloperLibrary()),
developer_intrinsics},
+ {Library::Handle(zone, Library::InternalLibrary()), internal_intrinsics},
};
for (intptr_t i = 0; i < kNumLibs; i++) {
diff --git a/runtime/vm/compiler/jit/compiler.cc b/runtime/vm/compiler/jit/compiler.cc
index befaa2a..03cccf6 100644
--- a/runtime/vm/compiler/jit/compiler.cc
+++ b/runtime/vm/compiler/jit/compiler.cc
@@ -532,7 +532,8 @@
FlowGraph* flow_graph = nullptr;
ZoneGrowableArray<const ICData*>* ic_data_array = nullptr;
- CompilerState compiler_state(thread(), /*is_aot=*/false);
+ CompilerState compiler_state(thread(), /*is_aot=*/false,
+ CompilerState::ShouldTrace(function));
{
if (optimized()) {
diff --git a/runtime/vm/compiler/recognized_methods_list.h b/runtime/vm/compiler/recognized_methods_list.h
index c26d1f8..c57f806 100644
--- a/runtime/vm/compiler/recognized_methods_list.h
+++ b/runtime/vm/compiler/recognized_methods_list.h
@@ -220,8 +220,6 @@
V(_OneByteString, get:hashCode, OneByteString_getHashCode, 0x22a75237) \
V(_OneByteString, _substringUncheckedNative, \
OneByteString_substringUnchecked, 0x94c41563) \
- V(_OneByteString, _setAt, OneByteStringSetAt, 0xc6c7e75d) \
- V(_OneByteString, _allocate, OneByteString_allocate, 0xbe472ce0) \
V(_OneByteString, ==, OneByteString_equality, 0xe1ea0c11) \
V(_TwoByteString, ==, TwoByteString_equality, 0xe1ea0c11) \
V(_Type, get:hashCode, Type_getHashCode, 0x22a75237) \
@@ -229,7 +227,6 @@
V(::, _getHash, Object_getHash, 0xb05aa13f) \
V(::, _setHash, Object_setHash, 0xcb404dd2) \
-
#define CORE_INTEGER_LIB_INTRINSIC_LIST(V) \
V(_IntegerImplementation, _addFromInteger, Integer_addFromInteger, \
0xc7bd74ae) \
@@ -372,7 +369,6 @@
V(_Double, ceilToDouble, DoubleCeil, 0x25a81a9d) \
V(_Double, _modulo, DoubleMod, 0x42a93471)
-
#define GRAPH_INTRINSICS_LIST(V) \
GRAPH_CORE_INTRINSICS_LIST(V) \
GRAPH_TYPED_DATA_INTRINSICS_LIST(V) \
@@ -388,10 +384,17 @@
V(::, _clearAsyncThreadStackTrace, ClearAsyncThreadStackTrace, 0x341efd8e) \
V(::, _setAsyncThreadStackTrace, SetAsyncThreadStackTrace, 0x5f29f453) \
+#define INTERNAL_LIB_INTRINSIC_LIST(V) \
+ V(::, allocateOneByteString, AllocateOneByteString, 0x3e7f209a) \
+ V(::, allocateTwoByteString, AllocateTwoByteString, 0x46445c37) \
+ V(::, writeIntoOneByteString, WriteIntoOneByteString, 0x63d30528) \
+ V(::, writeIntoTwoByteString, WriteIntoTwoByteString, 0x5b280bf1) \
+
#define ALL_INTRINSICS_NO_INTEGER_LIB_LIST(V) \
ASYNC_LIB_INTRINSIC_LIST(V) \
CORE_LIB_INTRINSIC_LIST(V) \
DEVELOPER_LIB_INTRINSIC_LIST(V) \
+ INTERNAL_LIB_INTRINSIC_LIST(V) \
MATH_LIB_INTRINSIC_LIST(V) \
TYPED_DATA_LIB_INTRINSIC_LIST(V) \
diff --git a/runtime/vm/compiler/stub_code_compiler.h b/runtime/vm/compiler/stub_code_compiler.h
index 6c4f4a3..cf4e58d 100644
--- a/runtime/vm/compiler/stub_code_compiler.h
+++ b/runtime/vm/compiler/stub_code_compiler.h
@@ -64,7 +64,6 @@
VM_STUB_CODE_LIST(STUB_CODE_GENERATE)
#undef STUB_CODE_GENERATE
- static void GenerateMegamorphicCallMissStub(Assembler* assembler);
static void GenerateAllocationStubForClass(
Assembler* assembler,
UnresolvedPcRelativeCalls* unresolved_calls,
diff --git a/runtime/vm/compiler/stub_code_compiler_arm.cc b/runtime/vm/compiler/stub_code_compiler_arm.cc
index e6dcde1..3abc747 100644
--- a/runtime/vm/compiler/stub_code_compiler_arm.cc
+++ b/runtime/vm/compiler/stub_code_compiler_arm.cc
@@ -3447,8 +3447,8 @@
// R4: arguments descriptor
// CODE_REG: target Code
void StubCodeCompiler::GenerateMegamorphicCallStub(Assembler* assembler) {
- __ LoadTaggedClassIdMayBeSmi(R0, R0);
- // R0: receiver cid as Smi.
+ __ LoadTaggedClassIdMayBeSmi(R8, R0);
+ // R8: receiver cid as Smi.
__ ldr(R2, FieldAddress(R9, target::MegamorphicCache::buckets_offset()));
__ ldr(R1, FieldAddress(R9, target::MegamorphicCache::mask_offset()));
// R2: cache buckets array.
@@ -3457,7 +3457,7 @@
// Compute the table index.
ASSERT(target::MegamorphicCache::kSpreadFactor == 7);
// Use reverse subtract to multiply with 7 == 8 - 1.
- __ rsb(R3, R0, Operand(R0, LSL, 3));
+ __ rsb(R3, R8, Operand(R8, LSL, 3));
// R3: probe.
Label loop;
__ Bind(&loop);
@@ -3468,7 +3468,7 @@
Label probe_failed;
__ add(IP, R2, Operand(R3, LSL, 2));
__ ldr(R6, FieldAddress(IP, base));
- __ cmp(R6, Operand(R0));
+ __ cmp(R6, Operand(R8));
__ b(&probe_failed, NE);
Label load_target;
@@ -3496,11 +3496,15 @@
__ Bind(&probe_failed);
ASSERT(kIllegalCid == 0);
__ tst(R6, Operand(R6));
- __ b(&load_target, EQ); // branch if miss.
+ Label miss;
+ __ b(&miss, EQ); // branch if miss.
// Try next entry in the table.
__ AddImmediate(R3, target::ToRawSmi(1));
__ b(&loop);
+
+ __ Bind(&miss);
+ GenerateSwitchableCallMissStub(assembler);
}
void StubCodeCompiler::GenerateICCallThroughCodeStub(Assembler* assembler) {
@@ -3586,8 +3590,8 @@
static void CallSwitchableCallMissRuntimeEntry(Assembler* assembler,
Register receiver_reg) {
__ LoadImmediate(IP, 0);
- __ Push(IP); // Result slot
- __ Push(IP); // Arg0: stub out
+ __ Push(IP); // Result slot
+ __ Push(IP); // Arg0: stub out
__ Push(receiver_reg); // Arg1: Receiver
__ CallRuntime(kSwitchableCallMissRuntimeEntry, 2);
__ Pop(R0); // Get the receiver
@@ -3608,26 +3612,6 @@
CODE_REG, target::Code::entry_point_offset(CodeEntryKind::kNormal)));
}
-// Called from megamorphic call sites and from megamorphic miss handlers.
-// R9: ICData/MegamorphicCache
-void StubCodeCompiler::GenerateMegamorphicCallMissStub(Assembler* assembler) {
- __ EnterStubFrame();
- // Load argument descriptor from ICData/MegamorphicCache.
- __ ldr(R4,
- FieldAddress(R9, target::CallSiteData::arguments_descriptor_offset()));
-
- // Load the receiver.
- __ ldr(R2, FieldAddress(R4, target::ArgumentsDescriptor::size_offset()));
- __ add(IP, FP, Operand(R2, LSL, 1)); // R2 is Smi.
- __ ldr(R8, Address(IP, target::frame_layout.param_end_from_fp *
- target::kWordSize));
- CallSwitchableCallMissRuntimeEntry(assembler, /*receiver_reg=*/R8);
- __ LeaveStubFrame();
-
- __ Branch(FieldAddress(
- CODE_REG, target::Code::entry_point_offset(CodeEntryKind::kNormal)));
-}
-
// Called from switchable IC calls.
// R0: receiver
// R9: SingleTargetCache
diff --git a/runtime/vm/compiler/stub_code_compiler_arm64.cc b/runtime/vm/compiler/stub_code_compiler_arm64.cc
index 01c8b0f..464f368 100644
--- a/runtime/vm/compiler/stub_code_compiler_arm64.cc
+++ b/runtime/vm/compiler/stub_code_compiler_arm64.cc
@@ -3557,7 +3557,7 @@
__ BranchIfSmi(R0, &smi_case);
// Loads the cid of the object.
- __ LoadClassId(R0, R0);
+ __ LoadClassId(R8, R0);
Label cid_loaded;
__ Bind(&cid_loaded);
@@ -3567,14 +3567,14 @@
// R1: mask as a smi.
// Make the cid into a smi.
- __ SmiTag(R0);
- // R0: class ID of the receiver (smi).
+ __ SmiTag(R8);
+ // R8: class ID of the receiver (smi).
// Compute the table index.
ASSERT(target::MegamorphicCache::kSpreadFactor == 7);
// Use lsl and sub to multiply with 7 == 8 - 1.
- __ LslImmediate(R3, R0, 3);
- __ sub(R3, R3, Operand(R0));
+ __ LslImmediate(R3, R8, 3);
+ __ sub(R3, R3, Operand(R8));
// R3: probe.
Label loop;
__ Bind(&loop);
@@ -3585,7 +3585,7 @@
__ add(TMP, R2, Operand(R3, LSL, 3));
__ ldr(R6, FieldAddress(TMP, base));
Label probe_failed;
- __ CompareRegisters(R6, R0);
+ __ CompareRegisters(R6, R8);
__ b(&probe_failed, NE);
Label load_target;
@@ -3614,7 +3614,8 @@
__ Bind(&probe_failed);
ASSERT(kIllegalCid == 0);
__ tst(R6, Operand(R6));
- __ b(&load_target, EQ); // branch if miss.
+ Label miss;
+ __ b(&miss, EQ); // branch if miss.
// Try next extry in the table.
__ AddImmediate(R3, target::ToRawSmi(1));
@@ -3622,8 +3623,11 @@
// Load cid for the Smi case.
__ Bind(&smi_case);
- __ LoadImmediate(R0, kSmiCid);
+ __ LoadImmediate(R8, kSmiCid);
__ b(&cid_loaded);
+
+ __ Bind(&miss);
+ GenerateSwitchableCallMissStub(assembler);
}
// Input:
@@ -3737,38 +3741,6 @@
__ br(R1);
}
-// Called from megamorphic call sites and from megamorphic miss handlers.
-// R5: ICData/MegamorphicCache
-void StubCodeCompiler::GenerateMegamorphicCallMissStub(Assembler* assembler) {
- __ ldr(CODE_REG,
- Address(THR, target::Thread::switchable_call_miss_stub_offset()));
- __ EnterStubFrame();
- __ ldr(R4,
- FieldAddress(R5, target::CallSiteData::arguments_descriptor_offset()));
-
- // Load the receiver.
- __ LoadFieldFromOffset(R2, R4, target::ArgumentsDescriptor::size_offset());
- __ add(TMP, FP, Operand(R2, LSL, 2)); // R2 is Smi.
- __ LoadFromOffset(R6, TMP,
- target::frame_layout.param_end_from_fp * target::kWordSize);
- __ Push(R6); // Preserver receiver
-
- __ Push(ZR); // Result slot.
- __ Push(ZR); // Arg0: stub out.
- __ Push(R6); // Arg1: Receiver
- __ CallRuntime(kSwitchableCallMissRuntimeEntry, 2);
- __ Drop(1);
- __ Pop(CODE_REG); // result = stub
- __ Pop(R5); // result = IC
-
- __ Pop(R0); // Restore receiver into R0
- __ LeaveStubFrame();
-
- __ ldr(R1, FieldAddress(CODE_REG, target::Code::entry_point_offset(
- CodeEntryKind::kNormal)));
- __ br(R1);
-}
-
// Called from switchable IC calls.
// R0: receiver
// R5: SingleTargetCache
diff --git a/runtime/vm/compiler/stub_code_compiler_ia32.cc b/runtime/vm/compiler/stub_code_compiler_ia32.cc
index b728979..6e9e479 100644
--- a/runtime/vm/compiler/stub_code_compiler_ia32.cc
+++ b/runtime/vm/compiler/stub_code_compiler_ia32.cc
@@ -2854,7 +2854,8 @@
// Probe failed, check if it is a miss.
__ cmpl(FieldAddress(EDI, EDX, TIMES_4, base),
Immediate(target::ToRawSmi(kIllegalCid)));
- __ j(ZERO, &load_target, Assembler::kNearJump);
+ Label miss;
+ __ j(ZERO, &miss, Assembler::kNearJump);
// Try next entry in the table.
__ AddImmediate(EDX, Immediate(target::ToRawSmi(1)));
@@ -2864,6 +2865,10 @@
__ Bind(&smi_case);
__ movl(EAX, Immediate(kSmiCid));
__ jmp(&cid_loaded);
+
+ __ Bind(&miss);
+ __ popl(EBX); // restore receiver
+ GenerateSwitchableCallMissStub(assembler);
}
void StubCodeCompiler::GenerateICCallThroughCodeStub(Assembler* assembler) {
@@ -2899,15 +2904,6 @@
__ jmp(EAX);
}
-// Called from megamorphic call sites and from megamorphic miss handlers.
-// EBX: receiver
-// EDX: arguments descriptor(or zero if invoked from unlinked/monomorphic call)
-void StubCodeCompiler::GenerateMegamorphicCallMissStub(Assembler* assembler) {
- // On ia32 there is no need to load receiver from the actual arguments using
- // arg descriptor because (unlike on arm, arm64) receiver is always available.
- GenerateSwitchableCallMissStub(assembler);
-}
-
void StubCodeCompiler::GenerateSingleTargetCallStub(Assembler* assembler) {
__ int3(); // AOT only.
}
diff --git a/runtime/vm/compiler/stub_code_compiler_x64.cc b/runtime/vm/compiler/stub_code_compiler_x64.cc
index 7e96d7c..3f37069 100644
--- a/runtime/vm/compiler/stub_code_compiler_x64.cc
+++ b/runtime/vm/compiler/stub_code_compiler_x64.cc
@@ -3531,7 +3531,8 @@
__ Bind(&probe_failed);
__ cmpq(FieldAddress(RDI, RCX, TIMES_8, base),
Immediate(target::ToRawSmi(kIllegalCid)));
- __ j(ZERO, &load_target, Assembler::kNearJump);
+ Label miss;
+ __ j(ZERO, &miss, Assembler::kNearJump);
// Try next entry in the table.
__ AddImmediate(RCX, Immediate(target::ToRawSmi(1)));
@@ -3541,6 +3542,9 @@
__ Bind(&smi_case);
__ movq(RAX, Immediate(kSmiCid));
__ jmp(&cid_loaded);
+
+ __ Bind(&miss);
+ GenerateSwitchableCallMissStub(assembler);
}
// Input:
@@ -3639,15 +3643,6 @@
__ jmp(RCX);
}
-// Called from megamorphic call sites and from megamorphic miss handlers.
-// RDX: receiver
-// R10: arguments descriptor
-void StubCodeCompiler::GenerateMegamorphicCallMissStub(Assembler* assembler) {
- // On x64 there is no need to load receiver from the actual arguments using
- // arg descriptor because (unlike on arm, arm64) receiver is always available.
- GenerateSwitchableCallMissStub(assembler);
-}
-
// Called from switchable IC calls.
// RDX: receiver
// RBX: SingleTargetCache
diff --git a/runtime/vm/constants_arm.h b/runtime/vm/constants_arm.h
index e58b312..41807f8 100644
--- a/runtime/vm/constants_arm.h
+++ b/runtime/vm/constants_arm.h
@@ -766,7 +766,10 @@
// Fields used in Branch instructions
inline int LinkField() const { return Bits(kLinkShift, kLinkBits); }
- inline int SImmed24Field() const { return ((InstructionBits() << 8) >> 8); }
+ inline int32_t SImmed24Field() const {
+ uint32_t bits = InstructionBits();
+ return static_cast<int32_t>(bits << 8) >> 8;
+ }
// Fields used in Supervisor Call instructions
inline uint32_t SvcField() const { return Bits(0, 24); }
diff --git a/runtime/vm/constants_arm64.h b/runtime/vm/constants_arm64.h
index c4f8f4b..32eed66 100644
--- a/runtime/vm/constants_arm64.h
+++ b/runtime/vm/constants_arm64.h
@@ -1017,9 +1017,9 @@
uint8_t rotate,
uint8_t width) {
ASSERT(width <= 64);
- rotate &= 63;
- return ((value & ((1ULL << rotate) - 1ULL)) << (width - rotate)) |
- (value >> rotate);
+ uint8_t right = rotate & 63;
+ uint8_t left = (width - rotate) & 63;
+ return ((value & ((1ULL << right) - 1ULL)) << left) | (value >> right);
}
static inline uint64_t RepeatBitsAcrossReg(uint8_t reg_size,
diff --git a/runtime/vm/dart.cc b/runtime/vm/dart.cc
index d7c7691..06afb21 100644
--- a/runtime/vm/dart.cc
+++ b/runtime/vm/dart.cc
@@ -437,7 +437,7 @@
ASSERT(!Isolate::creation_enabled_);
MonitorLocker ml(Isolate::isolate_creation_monitor_);
intptr_t num_attempts = 0;
- while (Isolate::application_isolates_count_ > 0) {
+ while (IsolateGroup::HasApplicationIsolateGroups()) {
Monitor::WaitResult retval = ml.Wait(1000);
if (retval == Monitor::kTimedOut) {
num_attempts += 1;
@@ -453,7 +453,7 @@
ASSERT(!Isolate::creation_enabled_);
MonitorLocker ml(Isolate::isolate_creation_monitor_);
intptr_t num_attempts = 0;
- while (Isolate::total_isolates_count_ > 1) {
+ while (!IsolateGroup::HasOnlyVMIsolateGroup()) {
Monitor::WaitResult retval = ml.Wait(1000);
if (retval == Monitor::kTimedOut) {
num_attempts += 1;
@@ -830,18 +830,11 @@
DEBUG_ONLY(I->heap()->Verify(kForbidMarked));
#if defined(DART_PRECOMPILED_RUNTIME)
- // AOT: The megamorphic miss function and code come from the snapshot.
- ASSERT(I->object_store()->megamorphic_call_miss_code() != Code::null());
ASSERT(I->object_store()->build_method_extractor_code() != Code::null());
if (FLAG_print_llvm_constant_pool) {
PrintLLVMConstantPool(T, I);
}
#else
- // JIT: The megamorphic call miss function and code come from the snapshot in
- // JIT app snapshot, otherwise create them.
- if (I->object_store()->megamorphic_call_miss_code() == Code::null()) {
- MegamorphicCacheTable::InitMissHandler(I);
- }
#if !defined(TARGET_ARCH_IA32)
if (I != Dart::vm_isolate()) {
I->object_store()->set_build_method_extractor_code(
diff --git a/runtime/vm/dart_api_impl.cc b/runtime/vm/dart_api_impl.cc
index 668fe7b..24eea81 100644
--- a/runtime/vm/dart_api_impl.cc
+++ b/runtime/vm/dart_api_impl.cc
@@ -5435,18 +5435,7 @@
if (program == nullptr) {
return Api::NewError("Can't load Kernel binary: %s.", error);
}
- if (I->is_service_isolate() || I->is_kernel_isolate()) {
- // For now the service isolate and kernel isolate will be running in
- // weak mode and we assert for that here.
- ASSERT(!I->null_safety());
- } else {
- // If null safety is not specified on the command line we use the value
- // from the dill file that the CFE has computed based on how it was invoked.
- if (FLAG_null_safety == kNullSafetyOptionUnspecified) {
- I->set_null_safety(program->compilation_mode() ==
- NNBDCompiledMode::kStrong);
- }
- }
+ program->AutoDetectNullSafety(I);
const Object& tmp = kernel::KernelLoader::LoadEntireProgram(program.get());
program.reset();
@@ -5764,18 +5753,7 @@
if (program == nullptr) {
return Api::NewError("Can't load Kernel binary: %s.", error);
}
- if (I->is_service_isolate() || I->is_kernel_isolate()) {
- // For now the service isolate and kernel isolate will be running in
- // weak mode and we assert for that here.
- ASSERT(!I->null_safety());
- } else {
- // If null safety is not specified on the command line we use the value
- // from the dill file that the CFE has computed based on how it was invoked.
- if (FLAG_null_safety == kNullSafetyOptionUnspecified) {
- I->set_null_safety(program->compilation_mode() ==
- NNBDCompiledMode::kStrong);
- }
- }
+ program->AutoDetectNullSafety(I);
const Object& result =
kernel::KernelLoader::LoadEntireProgram(program.get(), false);
program.reset();
@@ -6536,7 +6514,7 @@
StreamingWriteStream debug_stream(generate_debug ? kInitialDebugSize : 0,
callback, debug_callback_data);
- Elf* elf = new (Z) Elf(Z, &elf_stream);
+ Elf* elf = new (Z) Elf(Z, &elf_stream, strip);
Dwarf* elf_dwarf = strip ? nullptr : new (Z) Dwarf(Z, nullptr, elf);
Elf* debug_elf = generate_debug ? new (Z) Elf(Z, &debug_stream) : nullptr;
Dwarf* debug_dwarf =
@@ -6565,9 +6543,9 @@
&vm_image_writer, &isolate_image_writer);
writer.WriteFullSnapshot();
- elf->AddROData("_kDartVmSnapshotData", vm_snapshot_data_buffer,
+ elf->AddROData(kVmSnapshotDataAsmSymbol, vm_snapshot_data_buffer,
writer.VmIsolateSnapshotSize());
- elf->AddROData("_kDartIsolateSnapshotData", isolate_snapshot_data_buffer,
+ elf->AddROData(kIsolateSnapshotDataAsmSymbol, isolate_snapshot_data_buffer,
writer.IsolateSnapshotSize());
if (elf_dwarf != nullptr) {
diff --git a/runtime/vm/dart_entry.cc b/runtime/vm/dart_entry.cc
index bb992b5..6c306ac 100644
--- a/runtime/vm/dart_entry.cc
+++ b/runtime/vm/dart_entry.cc
@@ -658,7 +658,12 @@
ASSERT(!function.IsNull());
thread->isolate()->object_store()->set_lookup_port_handler(function);
}
- const Array& args = Array::Handle(zone, Array::New(kNumArguments));
+ Array& args = Array::Handle(
+ zone, thread->isolate()->isolate_object_store()->dart_args_1());
+ if (args.IsNull()) {
+ args = Array::New(kNumArguments);
+ thread->isolate()->isolate_object_store()->set_dart_args_1(args);
+ }
args.SetAt(0, Integer::Handle(zone, Integer::New(port_id)));
const Object& result =
Object::Handle(zone, DartEntry::InvokeFunction(function, args));
@@ -687,7 +692,12 @@
ASSERT(!function.IsNull());
isolate->object_store()->set_handle_message_function(function);
}
- const Array& args = Array::Handle(zone, Array::New(kNumArguments));
+ Array& args = Array::Handle(
+ zone, thread->isolate()->isolate_object_store()->dart_args_2());
+ if (args.IsNull()) {
+ args = Array::New(kNumArguments);
+ thread->isolate()->isolate_object_store()->set_dart_args_2(args);
+ }
args.SetAt(0, handler);
args.SetAt(1, message);
#if !defined(PRODUCT)
diff --git a/runtime/vm/datastream.h b/runtime/vm/datastream.h
index 89240d4..a844493 100644
--- a/runtime/vm/datastream.h
+++ b/runtime/vm/datastream.h
@@ -133,10 +133,10 @@
using Unsigned = typename std::make_unsigned<T>::type;
const uint8_t* c = current_;
ASSERT(c < end_);
- uint8_t b = *c++;
+ Unsigned b = *c++;
if (b > kMaxUnsignedDataPerByte) {
current_ = c;
- return static_cast<Unsigned>(b) - end_byte_marker;
+ return b - end_byte_marker;
}
T r = 0;
uint8_t s = 0;
@@ -147,156 +147,152 @@
b = *c++;
} while (b <= kMaxUnsignedDataPerByte);
current_ = c;
- return r | ((static_cast<Unsigned>(b) - end_byte_marker) << s);
+ return r | (static_cast<Unsigned>(b - end_byte_marker) << s);
}
uint16_t Read16(uint8_t end_byte_marker) {
const uint8_t* c = current_;
ASSERT(c < end_);
- uint8_t b = *c++;
+ uint16_t b = *c++;
if (b > kMaxUnsignedDataPerByte) {
current_ = c;
- return static_cast<uint16_t>(b) - end_byte_marker;
+ return b - end_byte_marker;
}
- uint16_t r = 0;
- r |= static_cast<uint16_t>(b);
+ uint16_t r = b;
ASSERT(c < end_);
b = *c++;
if (b > kMaxUnsignedDataPerByte) {
current_ = c;
- return r | ((static_cast<uint16_t>(b) - end_byte_marker) << 7);
+ return r | (static_cast<uint16_t>(b - end_byte_marker) << 7);
}
- r |= static_cast<uint16_t>(b) << 7;
+ r |= b << 7;
ASSERT(c < end_);
b = *c++;
ASSERT(b > kMaxUnsignedDataPerByte);
current_ = c;
- return r | ((static_cast<uint16_t>(b) - end_byte_marker) << 14);
+ return r | (static_cast<uint16_t>(b - end_byte_marker) << 14);
}
uint32_t Read32(uint8_t end_byte_marker) {
const uint8_t* c = current_;
ASSERT(c < end_);
- uint8_t b = *c++;
+ uint32_t b = *c++;
if (b > kMaxUnsignedDataPerByte) {
current_ = c;
- return static_cast<uint32_t>(b) - end_byte_marker;
+ return b - end_byte_marker;
}
- uint32_t r = 0;
- r |= static_cast<uint32_t>(b);
+ uint32_t r = b;
ASSERT(c < end_);
b = *c++;
if (b > kMaxUnsignedDataPerByte) {
current_ = c;
- return r | ((static_cast<uint32_t>(b) - end_byte_marker) << 7);
+ return r | (static_cast<uint32_t>(b - end_byte_marker) << 7);
}
- r |= static_cast<uint32_t>(b) << 7;
+ r |= b << 7;
ASSERT(c < end_);
b = *c++;
if (b > kMaxUnsignedDataPerByte) {
current_ = c;
- return r | ((static_cast<uint32_t>(b) - end_byte_marker) << 14);
+ return r | (static_cast<uint32_t>(b - end_byte_marker) << 14);
}
- r |= static_cast<uint32_t>(b) << 14;
+ r |= b << 14;
ASSERT(c < end_);
b = *c++;
if (b > kMaxUnsignedDataPerByte) {
current_ = c;
- return r | ((static_cast<uint32_t>(b) - end_byte_marker) << 21);
+ return r | (static_cast<uint32_t>(b - end_byte_marker) << 21);
}
- r |= static_cast<uint32_t>(b) << 21;
+ r |= b << 21;
ASSERT(c < end_);
b = *c++;
ASSERT(b > kMaxUnsignedDataPerByte);
current_ = c;
- return r | ((static_cast<uint32_t>(b) - end_byte_marker) << 28);
+ return r | (static_cast<uint32_t>(b - end_byte_marker) << 28);
}
uint64_t Read64(uint8_t end_byte_marker) {
const uint8_t* c = current_;
ASSERT(c < end_);
- uint8_t b = *c++;
+ uint64_t b = *c++;
if (b > kMaxUnsignedDataPerByte) {
current_ = c;
- return static_cast<uint64_t>(b) - end_byte_marker;
+ return b - end_byte_marker;
}
- uint64_t r = 0;
-
- r |= static_cast<uint64_t>(b);
+ uint64_t r = b;
ASSERT(c < end_);
b = *c++;
if (b > kMaxUnsignedDataPerByte) {
current_ = c;
- return r | ((static_cast<uint64_t>(b) - end_byte_marker) << 7);
+ return r | (static_cast<uint64_t>(b - end_byte_marker) << 7);
}
- r |= static_cast<uint64_t>(b) << 7;
+ r |= b << 7;
ASSERT(c < end_);
b = *c++;
if (b > kMaxUnsignedDataPerByte) {
current_ = c;
- return r | ((static_cast<uint64_t>(b) - end_byte_marker) << 14);
+ return r | (static_cast<uint64_t>(b - end_byte_marker) << 14);
}
- r |= static_cast<uint64_t>(b) << 14;
+ r |= b << 14;
ASSERT(c < end_);
b = *c++;
if (b > kMaxUnsignedDataPerByte) {
current_ = c;
- return r | ((static_cast<uint64_t>(b) - end_byte_marker) << 21);
+ return r | (static_cast<uint64_t>(b - end_byte_marker) << 21);
}
- r |= static_cast<uint64_t>(b) << 21;
+ r |= b << 21;
ASSERT(c < end_);
b = *c++;
if (b > kMaxUnsignedDataPerByte) {
current_ = c;
- return r | ((static_cast<uint64_t>(b) - end_byte_marker) << 28);
+ return r | (static_cast<uint64_t>(b - end_byte_marker) << 28);
}
- r |= static_cast<uint64_t>(b) << 28;
+ r |= b << 28;
ASSERT(c < end_);
b = *c++;
if (b > kMaxUnsignedDataPerByte) {
current_ = c;
- return r | ((static_cast<uint64_t>(b) - end_byte_marker) << 35);
+ return r | (static_cast<uint64_t>(b - end_byte_marker) << 35);
}
- r |= static_cast<uint64_t>(b) << 35;
+ r |= b << 35;
ASSERT(c < end_);
b = *c++;
if (b > kMaxUnsignedDataPerByte) {
current_ = c;
- return r | ((static_cast<uint64_t>(b) - end_byte_marker) << 42);
+ return r | (static_cast<uint64_t>(b - end_byte_marker) << 42);
}
- r |= static_cast<uint64_t>(b) << 42;
+ r |= b << 42;
ASSERT(c < end_);
b = *c++;
if (b > kMaxUnsignedDataPerByte) {
current_ = c;
- return r | ((static_cast<uint64_t>(b) - end_byte_marker) << 49);
+ return r | (static_cast<uint64_t>(b - end_byte_marker) << 49);
}
- r |= static_cast<uint64_t>(b) << 49;
+ r |= b << 49;
ASSERT(c < end_);
b = *c++;
if (b > kMaxUnsignedDataPerByte) {
current_ = c;
- return r | ((static_cast<uint64_t>(b) - end_byte_marker) << 56);
+ return r | (static_cast<uint64_t>(b - end_byte_marker) << 56);
}
- r |= static_cast<uint64_t>(b) << 56;
+ r |= b << 56;
ASSERT(c < end_);
b = *c++;
ASSERT(b > kMaxUnsignedDataPerByte);
current_ = c;
- return r | ((static_cast<uint64_t>(b) - end_byte_marker) << 63);
+ return r | (static_cast<uint64_t>(b - end_byte_marker) << 63);
}
uint8_t ReadByte() {
diff --git a/runtime/vm/debugger.cc b/runtime/vm/debugger.cc
index 0050f4f..ab66133 100644
--- a/runtime/vm/debugger.cc
+++ b/runtime/vm/debugger.cc
@@ -6,8 +6,6 @@
#include "include/dart_api.h"
-#include "platform/address_sanitizer.h"
-
#include "vm/code_descriptors.h"
#include "vm/code_patcher.h"
#include "vm/compiler/api/deopt_id.h"
diff --git a/runtime/vm/dwarf.cc b/runtime/vm/dwarf.cc
index c70ed6a..5d356a4 100644
--- a/runtime/vm/dwarf.cc
+++ b/runtime/vm/dwarf.cc
@@ -123,14 +123,16 @@
ASSERT(name != nullptr);
ASSERT(payload_start >= 0);
- auto const virtual_address = elf_->NextMemoryOffset() + payload_start;
- elf_->AddStaticSymbol(elf_->NextSectionIndex(), name, virtual_address,
- code.Size());
+ // Since we're in the middle of generating this section, pull the next section
+ // index and starting address for the next segment from the ELF object.
+ auto const section_index = elf_->NextSectionIndex();
+ auto const relocated_address = elf_->NextMemoryOffset() + payload_start;
+ elf_->AddCodeSymbol(name, section_index, relocated_address, code.Size());
ASSERT(!code.IsNull());
ASSERT(code_to_address_.Lookup(&code) == nullptr);
const auto& zone_code = Code::ZoneHandle(zone_, code.raw());
- code_to_address_.Insert(CodeAddressPair(&zone_code, virtual_address));
+ code_to_address_.Insert(CodeAddressPair(&zone_code, relocated_address));
AddCodeHelper(zone_code);
}
@@ -154,6 +156,14 @@
return index;
}
+intptr_t Dwarf::TokenPositionToLine(const TokenPosition& token_pos) {
+ // By the point we're creating the DWARF information, the values of
+ // non-special token positions have been converted to line numbers, so
+ // we just need to handle special (negative) token positions.
+ ASSERT(token_pos.value() > TokenPosition::kLast.value());
+ return token_pos.value() < 0 ? kNoLineInformation : token_pos.value();
+}
+
intptr_t Dwarf::AddFunction(const Function& function) {
RELEASE_ASSERT(!function.IsNull());
FunctionIndexPair* pair = function_to_index_.Lookup(&function);
@@ -362,10 +372,15 @@
// compilation unit. Dwarf consumers use this to quickly decide which
// compilation unit DIE to consult for a given pc.
if (asm_stream_ != nullptr) {
- PrintNamedAddress("_kDartIsolateSnapshotInstructions");
+ PrintNamedAddress(kIsolateSnapshotInstructionsAsmSymbol);
}
if (elf_ != nullptr) {
- addr(0);
+ intptr_t offset;
+ if (!elf_->FindDynamicSymbol(kIsolateSnapshotInstructionsAsmSymbol, &offset,
+ nullptr)) {
+ UNREACHABLE();
+ }
+ addr(offset);
}
// DW_AT_high_pc
@@ -411,12 +426,14 @@
if (elf_ != nullptr) {
abstract_origins_ = zone_->Alloc<uint32_t>(functions_.length());
}
+ // By the point we're creating DWARF information, scripts have already lost
+ // their token stream, so we can't look up their line number information.
+ auto const line = kNoLineInformation;
for (intptr_t i = 0; i < functions_.length(); i++) {
const Function& function = *(functions_[i]);
name = function.QualifiedUserVisibleName();
script = function.script();
const intptr_t file = LookupScript(script);
- const intptr_t line = 0; // Unknown, script already lost its token stream.
if (asm_stream_ != nullptr) {
Print(".Lfunc%" Pd ":\n",
@@ -585,7 +602,7 @@
SnapshotTextObjectNamer* namer) {
RELEASE_ASSERT(elf_ == nullptr || root_code_address >= 0);
intptr_t file = LookupScript(parent_script);
- intptr_t line = node->call_pos.value();
+ const auto& token_pos = node->call_pos;
intptr_t function_index = LookupFunction(node->function);
const Script& script = Script::Handle(zone_, node->function.script());
@@ -621,7 +638,7 @@
// DW_AT_call_file
uleb128(file);
// DW_AT_call_line
- uleb128(line);
+ uleb128(TokenPositionToLine(token_pos));
for (InliningNode* child = node->children_head; child != NULL;
child = child->children_next) {
@@ -799,16 +816,18 @@
}
// 2. Update LNP line.
- TokenPosition pos = token_positions.Last();
- intptr_t line = pos.value();
+ const auto line = TokenPositionToLine(token_positions.Last());
if (line != previous_line) {
u1(DW_LNS_advance_line);
sleb128(line - previous_line);
previous_line = line;
}
- // 3. Emit LNP row.
- u1(DW_LNS_copy);
+ // 3. Emit LNP row if the address register has been updated to a
+ // non-zero value (dartbug.com/41756).
+ if (previous_code_index >= 0) {
+ u1(DW_LNS_copy);
+ }
// 4. Update LNP pc.
if (previous_code_index < 0) {
diff --git a/runtime/vm/dwarf.h b/runtime/vm/dwarf.h
index c9430d1..385041b 100644
--- a/runtime/vm/dwarf.h
+++ b/runtime/vm/dwarf.h
@@ -397,6 +397,12 @@
return bin_stream_->Position();
}
+ static constexpr intptr_t kNoLineInformation = 0;
+
+ // Returns the line number or kNoLineInformation if there is no line
+ // information available for the given token position.
+ static intptr_t TokenPositionToLine(const TokenPosition& token_pos);
+
void WriteAbbreviations();
void WriteCompilationUnit();
void WriteAbstractFunctions();
diff --git a/runtime/vm/elf.cc b/runtime/vm/elf.cc
index a90dfa2..230d291 100644
--- a/runtime/vm/elf.cc
+++ b/runtime/vm/elf.cc
@@ -7,6 +7,7 @@
#include "platform/elf.h"
#include "vm/cpu.h"
#include "vm/hash_map.h"
+#include "vm/image_snapshot.h"
#include "vm/thread.h"
#include "vm/zone_text_buffer.h"
@@ -380,6 +381,10 @@
return offset;
}
+ intptr_t Lookup(const char* str) const {
+ return text_indices_.LookupValue(str) - 1;
+ }
+
const bool dynamic_;
ZoneTextBuffer text_;
// To avoid kNoValue for intptr_t (0), we store an index n as n + 1.
@@ -394,39 +399,40 @@
intptr_t section,
intptr_t offset,
intptr_t size)
- : cstr_(cstr),
- name_index_(name),
- info_(info),
- section_index_(section),
- offset_(offset),
- size_(size) {}
+ : name_index(name),
+ info(info),
+ section_index(section),
+ offset(offset),
+ size(size),
+ cstr_(cstr) {}
void Write(Elf* stream) const {
- stream->WriteWord(name_index_);
+ stream->WriteWord(name_index);
#if defined(TARGET_ARCH_IS_32_BIT)
- stream->WriteAddr(offset_);
- stream->WriteWord(size_);
- stream->WriteByte(info_);
+ stream->WriteAddr(offset);
+ stream->WriteWord(size);
+ stream->WriteByte(info);
stream->WriteByte(0);
- stream->WriteHalf(section_index_);
+ stream->WriteHalf(section_index);
#else
- stream->WriteByte(info_);
+ stream->WriteByte(info);
stream->WriteByte(0);
- stream->WriteHalf(section_index_);
- stream->WriteAddr(offset_);
- stream->WriteXWord(size_);
+ stream->WriteHalf(section_index);
+ stream->WriteAddr(offset);
+ stream->WriteXWord(size);
#endif
}
+ const intptr_t name_index;
+ const intptr_t info;
+ const intptr_t section_index;
+ const intptr_t offset;
+ const intptr_t size;
+
private:
friend class SymbolHashTable; // For cstr_ access.
- const char* cstr_;
- intptr_t name_index_;
- intptr_t info_;
- intptr_t section_index_;
- intptr_t offset_;
- intptr_t size_;
+ const char* const cstr_;
};
class SymbolTable : public Section {
@@ -462,6 +468,14 @@
intptr_t Length() const { return symbols_.length(); }
const Symbol* At(intptr_t i) const { return symbols_[i]; }
+ const Symbol* FindSymbolWithNameIndex(intptr_t name_index) const {
+ for (intptr_t i = 0; i < Length(); i++) {
+ auto const symbol = At(i);
+ if (symbol->name_index == name_index) return symbol;
+ }
+ return nullptr;
+ }
+
private:
const bool dynamic_;
const Symbol reserved_;
@@ -610,9 +624,10 @@
static const intptr_t kProgramTableSegmentSize = Elf::kPageSize;
-Elf::Elf(Zone* zone, StreamingWriteStream* stream)
+Elf::Elf(Zone* zone, StreamingWriteStream* stream, bool strip)
: zone_(zone),
stream_(stream),
+ strip_(strip),
shstrtab_(new (zone) StringTable(/*allocate=*/false)),
dynstrtab_(new (zone) StringTable(/*allocate=*/true)),
dynsym_(new (zone) SymbolTable(/*dynamic=*/true)),
@@ -627,6 +642,21 @@
AddSection(shstrtab_, ".shstrtab");
}
+// The VM segment comes after the program header segment and BSS segments,
+// both of which are a single page.
+static constexpr uword kVmSnapshotOffset = 2 * Elf::kPageSize;
+
+// Find the relocated base of the loaded ELF snapshot. Returns 0 if there is
+// no loaded ELF snapshot.
+uword Elf::SnapshotRelocatedBaseAddress(uword vm_start) {
+ ASSERT(vm_start > kVmSnapshotOffset);
+
+ const Image vm_instructions_image(reinterpret_cast<const void*>(vm_start));
+ if (!vm_instructions_image.compiled_to_elf()) return 0;
+
+ return vm_start - kVmSnapshotOffset;
+}
+
void Elf::AddSection(Section* section, const char* name) {
ASSERT(section_table_file_size_ < 0);
ASSERT(!shstrtab_->HasBeenFinalized());
@@ -643,21 +673,15 @@
}
}
-intptr_t Elf::AddSectionSymbol(const Section* section,
- const char* name,
- intptr_t size) {
- ASSERT(!dynstrtab_->HasBeenFinalized() && !dynsym_->HasBeenFinalized());
- auto const name_index = dynstrtab_->AddString(name);
+intptr_t Elf::AddSegmentSymbol(const Section* section, const char* name) {
auto const info = (elf::STB_GLOBAL << 4) | elf::STT_FUNC;
auto const section_index = section->section_index();
// For shared libraries, this is the offset from the DSO base. For static
// libraries, this is section relative.
- auto const memory_offset = section->memory_offset();
- auto const symbol = new (zone_)
- Symbol(name, name_index, info, section_index, memory_offset, size);
- dynsym_->AddSymbol(symbol);
-
- return memory_offset;
+ auto const address = section->memory_offset();
+ auto const size = section->MemorySize();
+ AddDynamicSymbol(name, info, section_index, address, size);
+ return address;
}
intptr_t Elf::AddText(const char* name, const uint8_t* bytes, intptr_t size) {
@@ -669,31 +693,32 @@
}
AddSection(image, ".text");
- return AddSectionSymbol(image, name, size);
+ return AddSegmentSymbol(image, name);
}
-void Elf::AddStaticSymbol(intptr_t section,
- const char* name,
- intptr_t address,
- intptr_t size) {
- // Lazily allocate the static string and symbol tables, as we only add static
- // symbols in unstripped ELF files.
- if (strtab_ == nullptr) {
- ASSERT(symtab_ == nullptr);
- ASSERT(section_table_file_size_ < 0);
- strtab_ = new (zone_) StringTable(/* allocate= */ false);
- AddSection(strtab_, ".strtab");
- symtab_ = new (zone_) SymbolTable(/*dynamic=*/false);
- AddSection(symtab_, ".symtab");
- symtab_->section_link = strtab_->section_index();
- }
-
- ASSERT(!strtab_->HasBeenFinalized() && !symtab_->HasBeenFinalized());
- auto const name_index = strtab_->AddString(name);
+void Elf::AddCodeSymbol(const char* name,
+ intptr_t section_index,
+ intptr_t address,
+ intptr_t size) {
+ ASSERT(!strip_);
auto const info = (elf::STB_GLOBAL << 4) | elf::STT_FUNC;
- Symbol* symbol =
- new (zone_) Symbol(name, name_index, info, section, address, size);
- symtab_->AddSymbol(symbol);
+ AddStaticSymbol(name, info, section_index, address, size);
+}
+
+bool Elf::FindDynamicSymbol(const char* name,
+ intptr_t* offset,
+ intptr_t* size) const {
+ auto const name_index = dynstrtab_->Lookup(name);
+ if (name_index < 0) return false;
+ auto const symbol = dynsym_->FindSymbolWithNameIndex(name_index);
+ if (symbol == nullptr) return false;
+ if (offset != nullptr) {
+ *offset = symbol->offset;
+ }
+ if (size != nullptr) {
+ *size = symbol->size;
+ }
+ return true;
}
intptr_t Elf::AddBSSData(const char* name, intptr_t size) {
@@ -707,9 +732,12 @@
ProgramBits* const image =
new (zone_) ProgramBits(true, false, true, bytes, size);
+ static_assert(Image::kBssAlignment <= kPageSize,
+ "ELF .bss section is not aligned as expected by Image class");
+ ASSERT_EQUAL(image->alignment, kPageSize);
AddSection(image, ".bss");
- return AddSectionSymbol(image, name, size);
+ return AddSegmentSymbol(image, name);
}
intptr_t Elf::AddROData(const char* name, const uint8_t* bytes, intptr_t size) {
@@ -717,16 +745,61 @@
ProgramBits* image = new (zone_) ProgramBits(true, false, false, bytes, size);
AddSection(image, ".rodata");
- return AddSectionSymbol(image, name, size);
+ return AddSegmentSymbol(image, name);
}
void Elf::AddDebug(const char* name, const uint8_t* bytes, intptr_t size) {
+ ASSERT(!strip_);
ASSERT(bytes != nullptr);
ProgramBits* image =
new (zone_) ProgramBits(false, false, false, bytes, size);
AddSection(image, name);
}
+void Elf::AddDynamicSymbol(const char* name,
+ intptr_t info,
+ intptr_t section_index,
+ intptr_t address,
+ intptr_t size) {
+ ASSERT(!dynstrtab_->HasBeenFinalized() && !dynsym_->HasBeenFinalized());
+ auto const name_index = dynstrtab_->AddString(name);
+ auto const symbol =
+ new (zone_) Symbol(name, name_index, info, section_index, address, size);
+ dynsym_->AddSymbol(symbol);
+
+ // Some tools assume the static symbol table is a superset of the dynamic
+ // symbol table when it exists (see dartbug.com/41783).
+ if (!strip_) {
+ AddStaticSymbol(name, info, section_index, address, size);
+ }
+}
+
+void Elf::AddStaticSymbol(const char* name,
+ intptr_t info,
+ intptr_t section_index,
+ intptr_t address,
+ intptr_t size) {
+ ASSERT(!strip_);
+
+ // Lazily allocate the static string and symbol tables, as we only add static
+ // symbols in unstripped ELF files.
+ if (strtab_ == nullptr) {
+ ASSERT(symtab_ == nullptr);
+ ASSERT(section_table_file_size_ < 0);
+ strtab_ = new (zone_) StringTable(/* allocate= */ false);
+ AddSection(strtab_, ".strtab");
+ symtab_ = new (zone_) SymbolTable(/*dynamic=*/false);
+ AddSection(symtab_, ".symtab");
+ symtab_->section_link = strtab_->section_index();
+ }
+
+ ASSERT(!symtab_->HasBeenFinalized() && !strtab_->HasBeenFinalized());
+ auto const name_index = strtab_->AddString(name);
+ auto const symbol =
+ new (zone_) Symbol(name, name_index, info, section_index, address, size);
+ symtab_->AddSymbol(symbol);
+}
+
void Elf::Finalize() {
// Unlike the static tables, we must wait until finalization to add the
// dynamic tables, as adding them marks them as finalized.
@@ -750,6 +823,8 @@
FinalizeProgramTable();
ComputeFileOffsets();
+ ASSERT(VerifySegmentOrder());
+
// Finally, write the ELF file contents.
WriteHeader();
WriteProgramTable();
@@ -815,6 +890,63 @@
file_offset += section_table_file_size_;
}
+bool Elf::VerifySegmentOrder() {
+ // We can only verify the segment order after FinalizeProgramTable(), since
+ // we assume that all segments have been added, including the two program
+ // table segments.
+ ASSERT(program_table_file_size_ > 0);
+
+ // Find the names and symbols for the .bss and .text segments.
+ auto const bss_section_name = shstrtab_->Lookup(".bss");
+ // For separate debugging information for assembly snapshots, no .bss section
+ // is added. However, we're only interested in strict segment orders when
+ // generating ELF snapshots, so only continue when there's a .bss section.
+ if (bss_section_name == -1) return true;
+ auto const text_section_name = shstrtab_->Lookup(".text");
+ ASSERT(text_section_name != -1);
+
+ auto const bss_symbol_name = dynstrtab_->Lookup("_kDartBSSData");
+ auto const vm_symbol_name =
+ dynstrtab_->Lookup(kVmSnapshotInstructionsAsmSymbol);
+ auto const isolate_symbol_name =
+ dynstrtab_->Lookup(kIsolateSnapshotInstructionsAsmSymbol);
+ ASSERT(bss_symbol_name != -1);
+ ASSERT(vm_symbol_name != -1);
+ ASSERT(isolate_symbol_name != -1);
+
+ auto const bss_symbol = dynsym_->FindSymbolWithNameIndex(bss_symbol_name);
+ auto const vm_symbol = dynsym_->FindSymbolWithNameIndex(vm_symbol_name);
+ auto const isolate_symbol =
+ dynsym_->FindSymbolWithNameIndex(isolate_symbol_name);
+ ASSERT(bss_symbol != nullptr);
+ ASSERT(vm_symbol != nullptr);
+ ASSERT(isolate_symbol != nullptr);
+
+ // Check that the first non-program table segments are in the expected order.
+ auto const bss_segment = segments_[2];
+ ASSERT_EQUAL(bss_segment->segment_type, elf::PT_LOAD);
+ ASSERT_EQUAL(bss_segment->section_name(), bss_section_name);
+ ASSERT_EQUAL(bss_segment->memory_offset(), bss_symbol->offset);
+ ASSERT_EQUAL(bss_segment->MemorySize(), bss_symbol->size);
+ auto const vm_segment = segments_[3];
+ ASSERT_EQUAL(vm_segment->segment_type, elf::PT_LOAD);
+ ASSERT_EQUAL(vm_segment->section_name(), text_section_name);
+ ASSERT_EQUAL(vm_segment->memory_offset(), vm_symbol->offset);
+ ASSERT_EQUAL(vm_segment->MemorySize(), vm_symbol->size);
+ auto const isolate_segment = segments_[4];
+ ASSERT_EQUAL(isolate_segment->segment_type, elf::PT_LOAD);
+ ASSERT_EQUAL(isolate_segment->section_name(), text_section_name);
+ ASSERT_EQUAL(isolate_segment->memory_offset(), isolate_symbol->offset);
+ ASSERT_EQUAL(isolate_segment->MemorySize(), isolate_symbol->size);
+
+ // Also make sure that the memory offset of the VM segment is as expected.
+ ASSERT_EQUAL(bss_segment->memory_offset(), kPageSize);
+ ASSERT(bss_segment->MemorySize() <= kPageSize);
+ ASSERT_EQUAL(vm_segment->memory_offset(), kVmSnapshotOffset);
+
+ return true;
+}
+
void Elf::WriteHeader() {
#if defined(TARGET_ARCH_IS_32_BIT)
uint8_t size = elf::ELFCLASS32;
diff --git a/runtime/vm/elf.h b/runtime/vm/elf.h
index 1adad3a..c204457 100644
--- a/runtime/vm/elf.h
+++ b/runtime/vm/elf.h
@@ -22,20 +22,32 @@
class Elf : public ZoneAllocated {
public:
- Elf(Zone* zone, StreamingWriteStream* stream);
+ Elf(Zone* zone, StreamingWriteStream* stream, bool strip = false);
static const intptr_t kPageSize = 4096;
+ // Used by the non-symbolic stack frame printer to calculate the relocated
+ // base address of the loaded ELF snapshot given the start of the VM
+ // instructions. Only works for ELF snapshots written by Dart, not those
+ // compiled from assembly.
+ static uword SnapshotRelocatedBaseAddress(uword vm_start);
+
intptr_t NextMemoryOffset() const { return memory_offset_; }
intptr_t NextSectionIndex() const { return sections_.length(); }
intptr_t AddText(const char* name, const uint8_t* bytes, intptr_t size);
intptr_t AddROData(const char* name, const uint8_t* bytes, intptr_t size);
intptr_t AddBSSData(const char* name, intptr_t size);
void AddDebug(const char* name, const uint8_t* bytes, intptr_t size);
- void AddStaticSymbol(intptr_t section,
- const char* name,
- intptr_t address,
- intptr_t size);
+ void AddCodeSymbol(const char* name,
+ intptr_t section,
+ intptr_t address,
+ intptr_t size);
+
+ // Returns whether the symbol was found. If found, sets the contents of
+ // offset and size appropriately if either or both are not nullptr.
+ bool FindDynamicSymbol(const char* name,
+ intptr_t* offset,
+ intptr_t* size) const;
void Finalize();
@@ -66,12 +78,22 @@
private:
void AddSection(Section* section, const char* name);
- intptr_t AddSectionSymbol(const Section* section,
- const char* name,
- intptr_t size);
+ intptr_t AddSegmentSymbol(const Section* section, const char* name);
+ void AddStaticSymbol(const char* name,
+ intptr_t info,
+ intptr_t section_index,
+ intptr_t address,
+ intptr_t size);
+ void AddDynamicSymbol(const char* name,
+ intptr_t info,
+ intptr_t section_index,
+ intptr_t address,
+ intptr_t size);
void FinalizeProgramTable();
void ComputeFileOffsets();
+ bool VerifySegmentOrder();
+
void WriteHeader();
void WriteSectionTable();
void WriteProgramTable();
@@ -79,6 +101,9 @@
Zone* const zone_;
StreamingWriteStream* const stream_;
+ // Whether the ELF file should be stripped of static information like
+ // the static symbol table (and its corresponding string table).
+ const bool strip_;
// All our strings would fit in a single page. However, we use separate
// .shstrtab and .dynstr to work around a bug in Android's strip utility.
diff --git a/runtime/vm/flag_list.h b/runtime/vm/flag_list.h
index 605385f..74b2a15 100644
--- a/runtime/vm/flag_list.h
+++ b/runtime/vm/flag_list.h
@@ -214,7 +214,8 @@
R(trace_profiler, false, bool, false, "Profiler trace") \
D(trace_profiler_verbose, bool, false, "Verbose profiler trace") \
D(trace_runtime_calls, bool, false, "Trace runtime calls.") \
- D(trace_ssa_allocator, bool, false, "Trace register allocation over SSA.") \
+ R(trace_ssa_allocator, false, bool, false, \
+ "Trace register allocation over SSA.") \
P(trace_strong_mode_types, bool, false, \
"Trace optimizations based on strong mode types.") \
D(trace_type_checks, bool, false, "Trace runtime type checks.") \
diff --git a/runtime/vm/heap/pages.cc b/runtime/vm/heap/pages.cc
index 2534628..796d64c 100644
--- a/runtime/vm/heap/pages.cc
+++ b/runtime/vm/heap/pages.cc
@@ -4,8 +4,8 @@
#include "vm/heap/pages.h"
-#include "platform/address_sanitizer.h"
#include "platform/assert.h"
+#include "platform/leak_sanitizer.h"
#include "vm/dart.h"
#include "vm/heap/become.h"
#include "vm/heap/compactor.h"
diff --git a/runtime/vm/heap/scavenger.cc b/runtime/vm/heap/scavenger.cc
index 7642a61..bcc6fc7 100644
--- a/runtime/vm/heap/scavenger.cc
+++ b/runtime/vm/heap/scavenger.cc
@@ -4,6 +4,7 @@
#include "vm/heap/scavenger.h"
+#include "platform/leak_sanitizer.h"
#include "vm/dart.h"
#include "vm/dart_api_state.h"
#include "vm/flag_list.h"
diff --git a/runtime/vm/heap/scavenger.h b/runtime/vm/heap/scavenger.h
index 2946977..20109fa 100644
--- a/runtime/vm/heap/scavenger.h
+++ b/runtime/vm/heap/scavenger.h
@@ -205,7 +205,7 @@
const intptr_t max_parallel_tlab_usage =
(FLAG_new_gen_semi_max_size * MB) / Scavenger::kTLABSize;
const intptr_t max_pool_size = max_parallel_tlab_usage / 4;
- return max_pool_size;
+ return max_pool_size > 0 ? max_pool_size : 1;
}
private:
diff --git a/runtime/vm/image_snapshot.cc b/runtime/vm/image_snapshot.cc
index e19d411..0b0b911 100644
--- a/runtime/vm/image_snapshot.cc
+++ b/runtime/vm/image_snapshot.cc
@@ -416,9 +416,8 @@
intptr_t section_start = stream->Position();
stream->WriteWord(next_data_offset_); // Data length.
- COMPILE_ASSERT(kMaxObjectAlignment >= kObjectAlignment);
+ // Zero values for other image header fields.
stream->Align(kMaxObjectAlignment);
-
ASSERT(stream->Position() - section_start == Image::kHeaderSize);
// Heap page objects start here.
@@ -640,33 +639,35 @@
// Start snapshot at page boundary.
ASSERT(VirtualMemory::PageSize() >= kMaxObjectAlignment);
+ ASSERT(VirtualMemory::PageSize() >= Image::kBssAlignment);
Align(VirtualMemory::PageSize());
assembly_stream_.Print("%s:\n", instructions_symbol);
+ intptr_t text_offset = 0;
+
// This head also provides the gap to make the instructions snapshot
// look like a OldPage.
const intptr_t image_size = Utils::RoundUp(
next_text_offset_, compiler::target::ObjectAlignment::kObjectAlignment);
- WriteWordLiteralText(image_size);
+ text_offset += WriteWordLiteralText(image_size);
#if defined(DART_PRECOMPILER)
assembly_stream_.Print("%s %s - %s\n", kLiteralPrefix, bss_symbol,
instructions_symbol);
+ text_offset += compiler::target::kWordSize;
#else
- WriteWordLiteralText(0); // No relocations.
+ text_offset += WriteWordLiteralText(0); // No relocations.
#endif
- intptr_t header_words = Image::kHeaderSize / sizeof(compiler::target::uword);
- for (intptr_t i = Image::kHeaderFields; i < header_words; i++) {
- WriteWordLiteralText(0);
- }
+ text_offset += Align(kMaxObjectAlignment, text_offset);
+ ASSERT_EQUAL(text_offset, Image::kHeaderSize);
// Only valid if bare_instruction_payloads is true.
- const V8SnapshotProfileWriter::ObjectId instructions_section_id(
- offset_space_, bare_instruction_payloads ? Image::kHeaderSize : -1);
+ V8SnapshotProfileWriter::ObjectId instructions_section_id(offset_space_, -1);
if (bare_instruction_payloads) {
- const intptr_t section_size = image_size - Image::kHeaderSize;
+ const intptr_t instructions_section_start = text_offset;
+ const intptr_t section_size = image_size - instructions_section_start;
// Add the RawInstructionsSection header.
const compiler::target::uword marked_tags =
ObjectLayout::OldBit::encode(true) |
@@ -675,15 +676,15 @@
ObjectLayout::NewBit::encode(false) |
ObjectLayout::SizeTag::encode(AdjustObjectSizeForTarget(section_size)) |
ObjectLayout::ClassIdTag::encode(kInstructionsSectionCid);
- WriteWordLiteralText(marked_tags);
+ text_offset += WriteWordLiteralText(marked_tags);
// Calculated using next_text_offset_, which doesn't include post-payload
// padding to object alignment.
const intptr_t instructions_length =
- next_text_offset_ - Image::kHeaderSize -
- compiler::target::InstructionsSection::HeaderSize();
- WriteWordLiteralText(instructions_length);
+ next_text_offset_ - (text_offset + compiler::target::kWordSize);
+ text_offset += WriteWordLiteralText(instructions_length);
if (profile_writer_ != nullptr) {
+ instructions_section_id = {offset_space_, instructions_section_start};
const intptr_t non_instruction_bytes =
compiler::target::InstructionsSection::HeaderSize();
profile_writer_->SetObjectTypeAndName(instructions_section_id,
@@ -695,23 +696,18 @@
}
}
- const intptr_t section_headers_size =
- Image::kHeaderSize +
- (bare_instruction_payloads
- ? compiler::target::InstructionsSection::HeaderSize()
- : 0);
+ const intptr_t instructions_start = text_offset;
FrameUnwindPrologue();
PcDescriptors& descriptors = PcDescriptors::Handle(zone);
SnapshotTextObjectNamer namer(zone);
- intptr_t text_offset = 0;
ASSERT(offset_space_ != V8SnapshotProfileWriter::kSnapshot);
for (intptr_t i = 0; i < instructions_.length(); i++) {
auto& data = instructions_[i];
const bool is_trampoline = data.trampoline_bytes != nullptr;
- ASSERT((data.text_offset_ - instructions_[0].text_offset_) == text_offset);
+ ASSERT_EQUAL(data.text_offset_, text_offset);
intptr_t dwarf_index = i;
#if defined(DART_PRECOMPILER)
@@ -723,21 +719,19 @@
const auto object_name = namer.SnapshotNameFor(dwarf_index, data);
if (profile_writer_ != nullptr) {
- const auto object_offset = section_headers_size + text_offset;
- const V8SnapshotProfileWriter::ObjectId object_id(offset_space_,
- object_offset);
+ const V8SnapshotProfileWriter::ObjectId id(offset_space_, text_offset);
auto const type = is_trampoline ? trampoline_type_ : instructions_type_;
const intptr_t size = is_trampoline ? data.trampoline_length
: SizeInSnapshot(data.insns_->raw());
- profile_writer_->SetObjectTypeAndName(object_id, type, object_name);
- profile_writer_->AttributeBytesTo(object_id, size);
+ profile_writer_->SetObjectTypeAndName(id, type, object_name);
+ profile_writer_->AttributeBytesTo(id, size);
// If the object is wrapped in an InstructionSection, then add an
// element reference.
if (bare_instruction_payloads) {
+ const intptr_t element_offset = text_offset - instructions_start;
profile_writer_->AttributeReferenceTo(
instructions_section_id,
- {object_id, V8SnapshotProfileWriter::Reference::kElement,
- text_offset});
+ {id, V8SnapshotProfileWriter::Reference::kElement, element_offset});
}
}
@@ -799,8 +793,7 @@
#if defined(DART_PRECOMPILER)
if (debug_dwarf_ != nullptr) {
- auto const payload_offset = section_headers_size + text_offset;
- debug_dwarf_->AddCode(code, object_name, payload_offset);
+ debug_dwarf_->AddCode(code, object_name, text_offset);
}
#endif
// 2. Write a label at the entry point.
@@ -837,14 +830,14 @@
if ((cursor - payload_start) == next_reloc_offset) {
assembly_stream_.Print("%s %s - (.) + %" Pd "\n", kLiteralPrefix,
bss_symbol, /*addend=*/data);
+ text_offset += compiler::target::kWordSize;
next_reloc_offset = iterator.MoveNext() ? iterator.PcOffset() : -1;
} else {
- WriteWordLiteralText(data);
+ text_offset += WriteWordLiteralText(data);
}
}
assert(next_reloc_offset != (possible_relocations_end - payload_start));
- WriteByteSequence(possible_relocations_end, payload_end);
- text_offset += payload_size;
+ text_offset += WriteByteSequence(possible_relocations_end, payload_end);
#else
text_offset += WriteByteSequence(payload_start, payload_end);
#endif
@@ -862,9 +855,8 @@
compiler::target::ObjectAlignment::kObjectAlignment) -
unaligned_size;
while (alignment_size > 0) {
- WriteWordLiteralText(kBreakInstructionFiller);
+ text_offset += WriteWordLiteralText(kBreakInstructionFiller);
alignment_size -= sizeof(compiler::target::uword);
- text_offset += sizeof(compiler::target::uword);
}
ASSERT(kWordSize != compiler::target::kWordSize ||
@@ -881,7 +873,7 @@
text_offset +=
Align(compiler::target::ObjectAlignment::kObjectAlignment, text_offset);
- ASSERT_EQUAL(section_headers_size + text_offset, image_size);
+ ASSERT_EQUAL(text_offset, image_size);
FrameUnwindEpilogue();
@@ -902,15 +894,16 @@
// Since we don't want to add the actual contents of the segment in the
// separate debugging information, we pass nullptr for the bytes, which
// creates an appropriate NOBITS section instead of PROGBITS.
- auto const debug_segment_base2 =
- debug_dwarf_->elf()->AddText(instructions_symbol, /*bytes=*/nullptr,
- section_headers_size + text_offset);
+ auto const debug_segment_base2 = debug_dwarf_->elf()->AddText(
+ instructions_symbol, /*bytes=*/nullptr, text_offset);
// Double-check that no other ELF sections were added in the middle of
// writing the text section.
ASSERT(debug_segment_base2 == debug_segment_base);
}
assembly_stream_.Print(".bss\n");
+ // Align the BSS contents as expected by the Image class.
+ Align(Image::kBssAlignment);
assembly_stream_.Print("%s:\n", bss_symbol);
// Currently we only put one symbol in the data section, the address of
@@ -929,7 +922,7 @@
#endif
const char* data_symbol =
- vm ? "_kDartVmSnapshotData" : "_kDartIsolateSnapshotData";
+ vm ? kVmSnapshotDataAsmSymbol : kIsolateSnapshotDataAsmSymbol;
assembly_stream_.Print(".globl %s\n", data_symbol);
Align(kMaxObjectAlignment);
assembly_stream_.Print("%s:\n", data_symbol);
@@ -1101,16 +1094,16 @@
next_text_offset_, compiler::target::ObjectAlignment::kObjectAlignment);
instructions_blob_stream_.WriteTargetWord(image_size);
#if defined(DART_PRECOMPILER)
- instructions_blob_stream_.WriteTargetWord(
- elf_ != nullptr ? bss_base_ - segment_base : 0);
+ // Store the offset of the BSS section from the instructions section here.
+ // The lowest bit is set to indicate we compiled directly to ELF.
+ const word bss_offset = bss_base_ - segment_base;
+ ASSERT_EQUAL(Utils::RoundDown(bss_offset, Image::kBssAlignment), bss_offset);
+ instructions_blob_stream_.WriteTargetWord(bss_offset | 0x1);
#else
instructions_blob_stream_.WriteTargetWord(0); // No relocations.
#endif
- const intptr_t header_words =
- Image::kHeaderSize / sizeof(compiler::target::uword);
- for (intptr_t i = Image::kHeaderFields; i < header_words; i++) {
- instructions_blob_stream_.WriteTargetWord(0);
- }
+ instructions_blob_stream_.Align(kMaxObjectAlignment);
+ ASSERT_EQUAL(instructions_blob_stream_.Position(), Image::kHeaderSize);
// Only valid when bare_instructions_payloads is true.
const V8SnapshotProfileWriter::ObjectId instructions_section_id(
diff --git a/runtime/vm/image_snapshot.h b/runtime/vm/image_snapshot.h
index 94a57ca..5899b7c 100644
--- a/runtime/vm/image_snapshot.h
+++ b/runtime/vm/image_snapshot.h
@@ -9,6 +9,7 @@
#include <utility>
#include "platform/assert.h"
+#include "platform/utils.h"
#include "vm/allocation.h"
#include "vm/compiler/runtime_api.h"
#include "vm/datastream.h"
@@ -45,17 +46,41 @@
return snapshot_size - kHeaderSize;
}
- uword bss_offset() const {
- return *(reinterpret_cast<const uword*>(raw_memory_) + 1);
+ // Returns the offset of the BSS section from this image. Only has meaning for
+ // instructions images.
+ word bss_offset() const {
+ auto const raw_value = *(reinterpret_cast<const word*>(raw_memory_) + 1);
+ return Utils::RoundDown(raw_value, kBssAlignment);
}
- static constexpr intptr_t kHeaderFields = 2;
- static constexpr intptr_t kHeaderSize = kMaxObjectAlignment;
- COMPILE_ASSERT((kHeaderFields * compiler::target::kWordSize) <= kHeaderSize);
+ // Returns true if the image was compiled directly to ELF. Only has meaning
+ // for instructions images.
+ bool compiled_to_elf() const {
+ auto const raw_value = *(reinterpret_cast<const word*>(raw_memory_) + 1);
+ return (raw_value & 0x1) == 0x1;
+ }
private:
+ static constexpr intptr_t kHeaderFields = 2;
+ static constexpr intptr_t kHeaderSize = kMaxObjectAlignment;
+ // Explicitly double-checking kHeaderSize is never changed. Increasing the
+ // Image header size would mean objects would not start at a place expected
+ // by parts of the VM (like the GC) that use Image pages as HeapPages.
+ static_assert(kHeaderSize == kMaxObjectAlignment,
+ "Image page cannot be used as HeapPage");
+
+ // Determines how many bits we have for encoding any extra information in
+ // the BSS offset.
+ static constexpr intptr_t kBssAlignment = compiler::target::kWordSize;
+
const void* raw_memory_; // The symbol kInstructionsSnapshot.
+ // For access to private constants.
+ friend class AssemblyImageWriter;
+ friend class BlobImageWriter;
+ friend class ImageWriter;
+ friend class Elf;
+
DISALLOW_COPY_AND_ASSIGN(Image);
};
@@ -375,13 +400,14 @@
const char* kLiteralPrefix = ".long";
#endif
- void WriteWordLiteralText(compiler::target::uword value) {
+ intptr_t WriteWordLiteralText(compiler::target::uword value) {
// Padding is helpful for comparing the .S with --disassemble.
#if defined(TARGET_ARCH_IS_64_BIT)
assembly_stream_.Print(".quad 0x%0.16" Px "\n", value);
#else
assembly_stream_.Print(".long 0x%0.8" Px "\n", value);
#endif
+ return compiler::target::kWordSize;
}
StreamingWriteStream assembly_stream_;
diff --git a/runtime/vm/instructions_arm.cc b/runtime/vm/instructions_arm.cc
index 465f888..0ac106e 100644
--- a/runtime/vm/instructions_arm.cc
+++ b/runtime/vm/instructions_arm.cc
@@ -228,7 +228,9 @@
} else {
ASSERT((instr & 0xffff0000) == (0xe0800000 | (PP << 16)));
// add reg, pp, reg
- end = DecodeLoadWordImmediate(end, reg, &offset);
+ intptr_t value = 0;
+ start = DecodeLoadWordImmediate(start, reg, &value);
+ offset += value;
}
}
*index = ObjectPool::IndexFromOffset(offset);
diff --git a/runtime/vm/isolate.cc b/runtime/vm/isolate.cc
index 80ed871..f0bb784 100644
--- a/runtime/vm/isolate.cc
+++ b/runtime/vm/isolate.cc
@@ -98,6 +98,12 @@
null_safety,
"Respect the nullability of types in casts and instance checks.");
+DEFINE_FLAG(bool,
+ disable_thread_pool_limit,
+ false,
+ "Disables the limit of the thread pool (simulates custom embedder "
+ "with custom message handler on unlimited number of threads).");
+
// Quick access to the locally defined thread() and isolate() methods.
#define T (thread())
#define I (isolate())
@@ -299,11 +305,15 @@
symbols_lock_(new SafepointRwLock()),
store_buffer_(new StoreBuffer()),
heap_(nullptr),
- saved_unlinked_calls_(Array::null()) {
+ saved_unlinked_calls_(Array::null()),
+ active_mutators_monitor_(new Monitor()),
+ max_active_mutators_(Scavenger::MaxMutatorThreadCount()) {
const bool is_vm_isolate = Dart::VmIsolateNameEquals(source_->name);
if (!is_vm_isolate) {
thread_pool_.reset(
- new MutatorThreadPool(this, Scavenger::MaxMutatorThreadCount()));
+ new MutatorThreadPool(this, FLAG_disable_thread_pool_limit
+ ? 0
+ : Scavenger::MaxMutatorThreadCount()));
}
{
WriteRwLocker wl(ThreadState::Current(), isolate_groups_rwlock_);
@@ -423,6 +433,16 @@
}
delete this;
+
+ // After this isolate group has died we might need to notify a pending
+ // `Dart_Cleanup()` call.
+ {
+ MonitorLocker ml(Isolate::isolate_creation_monitor_);
+ if (!Isolate::creation_enabled_ &&
+ !IsolateGroup::HasApplicationIsolateGroups()) {
+ ml.Notify();
+ }
+ }
}
void IsolateGroup::set_heap(std::unique_ptr<Heap> heap) {
@@ -585,6 +605,58 @@
UnscheduleThreadLocked(&ml, thread, is_mutator, bypass_safepoint);
}
+void IsolateGroup::IncreaseMutatorCount(Isolate* mutator) {
+ ASSERT(mutator->group() == this);
+
+ // If the mutator was temporarily blocked on a worker thread, we have to
+ // unblock the worker thread again.
+ Thread* mutator_thread = mutator->mutator_thread();
+ if (mutator_thread != nullptr && mutator_thread->top_exit_frame_info() != 0) {
+ thread_pool()->MarkCurrentWorkerAsUnBlocked();
+ }
+
+ // Prevent too many mutators from entering the isolate group to avoid
+ // pathological behavior where many threads are fighting for obtaining TLABs.
+ {
+ // NOTE: This is performance critical code, we should avoid monitors and use
+ // std::atomics in the fast case (where active_mutators <
+ // max_active_mutators) and only use montiors in the uncommon case.
+ MonitorLocker ml(active_mutators_monitor_.get());
+ ASSERT(active_mutators_ <= max_active_mutators_);
+ while (active_mutators_ == max_active_mutators_) {
+ waiting_mutators_++;
+ ml.Wait();
+ waiting_mutators_--;
+ }
+ active_mutators_++;
+ }
+}
+
+void IsolateGroup::DecreaseMutatorCount(Isolate* mutator) {
+ ASSERT(mutator->group() == this);
+
+ // If the mutator thread has an active stack and runs on our thread pool we
+ // will mark the worker as blocked, thereby possibly spawning a new worker for
+ // pending tasks (if there are any).
+ Thread* mutator_thread = mutator->mutator_thread();
+ ASSERT(mutator_thread != nullptr);
+ if (mutator_thread->top_exit_frame_info() != 0) {
+ thread_pool()->MarkCurrentWorkerAsBlocked();
+ }
+
+ {
+ // NOTE: This is performance critical code, we should avoid monitors and use
+ // std::atomics in the fast case (where active_mutators <
+ // max_active_mutators) and only use montiors in the uncommon case.
+ MonitorLocker ml(active_mutators_monitor_.get());
+ ASSERT(active_mutators_ <= max_active_mutators_);
+ active_mutators_--;
+ if (waiting_mutators_ > 0) {
+ ml.Notify();
+ }
+ }
+}
+
#ifndef PRODUCT
void IsolateGroup::PrintJSON(JSONStream* stream, bool ref) {
JSONObject jsobj(stream);
@@ -665,6 +737,26 @@
isolate_groups_->Remove(isolate_group);
}
+bool IsolateGroup::HasApplicationIsolateGroups() {
+ ReadRwLocker wl(ThreadState::Current(), isolate_groups_rwlock_);
+ for (auto group : *isolate_groups_) {
+ if (!IsolateGroup::IsVMInternalIsolate(group)) {
+ return true;
+ }
+ }
+ return false;
+}
+
+bool IsolateGroup::HasOnlyVMIsolateGroup() {
+ ReadRwLocker wl(ThreadState::Current(), isolate_groups_rwlock_);
+ for (auto group : *isolate_groups_) {
+ if (!Dart::VmIsolateNameEquals(group->source()->name)) {
+ return false;
+ }
+ }
+ return true;
+}
+
void IsolateGroup::Init() {
ASSERT(isolate_groups_rwlock_ == nullptr);
isolate_groups_rwlock_ = new RwLock();
@@ -2479,7 +2571,6 @@
}
void Isolate::LowLevelCleanup(Isolate* isolate) {
- const bool is_application_isolate = !Isolate::IsVMInternalIsolate(isolate);
#if !defined(DART_PECOMPILED_RUNTIME)
if (KernelIsolate::IsKernelIsolate(isolate)) {
KernelIsolate::SetKernelIsolate(nullptr);
@@ -2506,7 +2597,8 @@
delete isolate;
// Run isolate specific cleanup function for all non "vm-isolate's.
- if (Dart::vm_isolate() != isolate) {
+ const bool is_vm_isolate = Dart::vm_isolate() == isolate;
+ if (!is_vm_isolate) {
if (cleanup != nullptr) {
cleanup(isolate_group->embedder_data(), callback_data);
}
@@ -2515,7 +2607,10 @@
const bool shutdown_group =
isolate_group->UnregisterIsolateDecrementCount(isolate);
if (shutdown_group) {
- if (!OSThread::CurrentThreadRunsOn(isolate_group->thread_pool())) {
+ // The "vm-isolate" does not have a thread pool.
+ ASSERT(is_vm_isolate == (isolate_group->thread_pool() == nullptr));
+ if (is_vm_isolate ||
+ !isolate_group->thread_pool()->CurrentThreadIsWorker()) {
isolate_group->Shutdown();
} else {
class ShutdownGroupTask : public ThreadPool::Task {
@@ -2540,12 +2635,6 @@
// inform the GC about this situation.
}
}
-
- // After deleting the isolate we know that all it's resources have been freed.
- // We still delay the notification to a possible call to `Dart::Cleanup()` to
- // after a potential shutdown of the group, which would turn down any pending
- // GC tasks as well as the heap.
- Isolate::MarkIsolateDead(is_application_isolate);
} // namespace dart
Dart_InitializeIsolateCallback Isolate::initialize_callback_ = nullptr;
@@ -2556,8 +2645,6 @@
Random* IsolateGroup::isolate_group_random_ = nullptr;
Monitor* Isolate::isolate_creation_monitor_ = nullptr;
-intptr_t Isolate::application_isolates_count_ = 0;
-intptr_t Isolate::total_isolates_count_ = 0;
bool Isolate::creation_enabled_ = false;
RwLock* IsolateGroup::isolate_groups_rwlock_ = nullptr;
@@ -3410,8 +3497,11 @@
}
intptr_t Isolate::IsolateListLength() {
- MonitorLocker ml(isolate_creation_monitor_);
- return total_isolates_count_;
+ intptr_t count = 0;
+ IsolateGroup::ForEach([&](IsolateGroup* group) {
+ group->ForEachIsolate([&](Isolate* isolate) { count++; });
+ });
+ return count;
}
Isolate* Isolate::LookupIsolateByPort(Dart_Port port) {
@@ -3443,10 +3533,6 @@
bool Isolate::TryMarkIsolateReady(Isolate* isolate) {
MonitorLocker ml(isolate_creation_monitor_);
- total_isolates_count_++;
- if (!Isolate::IsVMInternalIsolate(isolate)) {
- application_isolates_count_++;
- }
if (!creation_enabled_) {
return false;
}
@@ -3459,19 +3545,6 @@
isolate->accepts_messages_ = false;
}
-void Isolate::MarkIsolateDead(bool is_application_isolate) {
- MonitorLocker ml(isolate_creation_monitor_);
- ASSERT(total_isolates_count_ > 0);
- total_isolates_count_--;
- if (is_application_isolate) {
- ASSERT(application_isolates_count_ > 0);
- application_isolates_count_--;
- }
- if (!creation_enabled_) {
- ml.Notify();
- }
-}
-
void Isolate::DisableIsolateCreation() {
MonitorLocker ml(isolate_creation_monitor_);
creation_enabled_ = false;
@@ -3487,14 +3560,15 @@
return creation_enabled_;
}
-bool Isolate::IsVMInternalIsolate(const Isolate* isolate) {
+bool IsolateGroup::IsVMInternalIsolate(const IsolateGroup* group) {
// We use a name comparison here because this method can be called during
// shutdown, where the actual isolate pointers might've already been cleared.
- return Dart::VmIsolateNameEquals(isolate->name()) ||
+ const char* name = group->source()->name;
+ return Dart::VmIsolateNameEquals(name) ||
#if !defined(DART_PRECOMPILED_RUNTIME)
- KernelIsolate::NameEquals(isolate->name()) ||
+ KernelIsolate::NameEquals(name) ||
#endif
- ServiceIsolate::NameEquals(isolate->name());
+ ServiceIsolate::NameEquals(name);
}
void Isolate::KillLocked(LibMsgId msg_id) {
@@ -3606,6 +3680,10 @@
}
Thread* Isolate::ScheduleThread(bool is_mutator, bool bypass_safepoint) {
+ if (is_mutator) {
+ group()->IncreaseMutatorCount(this);
+ }
+
// We are about to associate the thread with an isolate group and it would
// not be possible to correctly track no_safepoint_scope_depth for the
// thread in the constructor/destructor of MonitorLocker,
@@ -3650,31 +3728,36 @@
void Isolate::UnscheduleThread(Thread* thread,
bool is_mutator,
bool bypass_safepoint) {
- // Disassociate the 'Thread' structure and unschedule the thread
- // from this isolate.
- // We are disassociating the thread from an isolate and it would
- // not be possible to correctly track no_safepoint_scope_depth for the
- // thread in the constructor/destructor of MonitorLocker,
- // so we create a MonitorLocker object which does not do any
- // no_safepoint_scope_depth increments/decrements.
- MonitorLocker ml(group()->threads_lock(), false);
+ {
+ // Disassociate the 'Thread' structure and unschedule the thread
+ // from this isolate.
+ // We are disassociating the thread from an isolate and it would
+ // not be possible to correctly track no_safepoint_scope_depth for the
+ // thread in the constructor/destructor of MonitorLocker,
+ // so we create a MonitorLocker object which does not do any
+ // no_safepoint_scope_depth increments/decrements.
+ MonitorLocker ml(group()->threads_lock(), false);
- if (is_mutator) {
- if (thread->sticky_error() != Error::null()) {
- ASSERT(sticky_error_ == Error::null());
- sticky_error_ = thread->StealStickyError();
+ if (is_mutator) {
+ if (thread->sticky_error() != Error::null()) {
+ ASSERT(sticky_error_ == Error::null());
+ sticky_error_ = thread->StealStickyError();
+ }
+ ASSERT(mutator_thread_ == thread);
+ ASSERT(mutator_thread_ == scheduled_mutator_thread_);
+ scheduled_mutator_thread_ = nullptr;
+ } else {
+ // We only reset the isolate pointer for non-mutator threads, since
+ // mutator threads can still be visited during GC even if unscheduled.
+ // See also IsolateGroup::UnscheduleThreadLocked`
+ thread->isolate_ = nullptr;
}
- ASSERT(mutator_thread_ == thread);
- ASSERT(mutator_thread_ == scheduled_mutator_thread_);
- scheduled_mutator_thread_ = nullptr;
- } else {
- // We only reset the isolate pointer for non-mutator threads, since mutator
- // threads can still be visited during GC even if unscheduled.
- // See also IsolateGroup::UnscheduleThreadLocked`
- thread->isolate_ = nullptr;
+ thread->field_table_values_ = nullptr;
+ group()->UnscheduleThreadLocked(&ml, thread, is_mutator, bypass_safepoint);
}
- thread->field_table_values_ = nullptr;
- group()->UnscheduleThreadLocked(&ml, thread, is_mutator, bypass_safepoint);
+ if (is_mutator) {
+ group()->DecreaseMutatorCount(this);
+ }
}
static const char* NewConstChar(const char* chars) {
diff --git a/runtime/vm/isolate.h b/runtime/vm/isolate.h
index 13b2425..35d295b 100644
--- a/runtime/vm/isolate.h
+++ b/runtime/vm/isolate.h
@@ -309,6 +309,7 @@
IdleTimeHandler* idle_time_handler() { return &idle_time_handler_; }
+ // Returns true if this is the first isolate registered.
void RegisterIsolate(Isolate* isolate);
void RegisterIsolateLocked(Isolate* isolate);
void UnregisterIsolate(Isolate* isolate);
@@ -384,6 +385,9 @@
bool is_mutator,
bool bypass_safepoint = false);
+ void IncreaseMutatorCount(Isolate* mutator);
+ void DecreaseMutatorCount(Isolate* mutator);
+
Dart_LibraryTagHandler library_tag_handler() const {
return library_tag_handler_;
}
@@ -489,6 +493,10 @@
static void RegisterIsolateGroup(IsolateGroup* isolate_group);
static void UnregisterIsolateGroup(IsolateGroup* isolate_group);
+ static bool HasApplicationIsolateGroups();
+ static bool HasOnlyVMIsolateGroup();
+ static bool IsVMInternalIsolate(const IsolateGroup* group);
+
int64_t UptimeMicros() const;
ApiState* api_state() const { return api_state_.get(); }
@@ -626,8 +634,13 @@
ReversePcLookupCache* reverse_pc_lookup_cache_ = nullptr;
ArrayPtr saved_unlinked_calls_;
std::shared_ptr<FieldTable> saved_initial_field_table_;
-
uint32_t isolate_group_flags_ = 0;
+
+ // Allow us to ensure the number of active mutators is limited by a maximum.
+ std::unique_ptr<Monitor> active_mutators_monitor_;
+ intptr_t active_mutators_ = 0;
+ intptr_t waiting_mutators_ = 0;
+ intptr_t max_active_mutators_ = 0;
};
// When an isolate sends-and-exits this class represent things that it passed
@@ -1244,7 +1257,9 @@
static void DisableIsolateCreation();
static void EnableIsolateCreation();
static bool IsolateCreationEnabled();
- static bool IsVMInternalIsolate(const Isolate* isolate);
+ static bool IsVMInternalIsolate(const Isolate* isolate) {
+ return IsolateGroup::IsVMInternalIsolate(isolate->group());
+ }
#if !defined(PRODUCT)
intptr_t reload_every_n_stack_overflow_checks() const {
@@ -1522,17 +1537,14 @@
// Manage list of existing isolates.
static bool TryMarkIsolateReady(Isolate* isolate);
static void UnMarkIsolateReady(Isolate* isolate);
- static void MarkIsolateDead(bool is_application_isolate);
+ static void MaybeNotifyVMShutdown();
bool AcceptsMessagesLocked() {
ASSERT(isolate_creation_monitor_->IsOwnedByCurrentThread());
return accepts_messages_;
}
- // This monitor protects application_isolates_count_, total_isolates_count_,
- // creation_enabled_.
+ // This monitor protects [creation_enabled_].
static Monitor* isolate_creation_monitor_;
- static intptr_t application_isolates_count_;
- static intptr_t total_isolates_count_;
static bool creation_enabled_;
#define REUSABLE_FRIEND_DECLARATION(name) \
diff --git a/runtime/vm/kernel.h b/runtime/vm/kernel.h
index f612540..f4df144 100644
--- a/runtime/vm/kernel.h
+++ b/runtime/vm/kernel.h
@@ -95,6 +95,9 @@
intptr_t library_count() { return library_count_; }
NNBDCompiledMode compilation_mode() const { return compilation_mode_; }
+ // Detect null-safety mode from this program if it was not set yet.
+ void AutoDetectNullSafety(Isolate* isolate);
+
private:
Program() : typed_data_(NULL), kernel_data_(NULL), kernel_data_size_(-1) {}
diff --git a/runtime/vm/kernel_binary.cc b/runtime/vm/kernel_binary.cc
index d0431aa..e3e3b52 100644
--- a/runtime/vm/kernel_binary.cc
+++ b/runtime/vm/kernel_binary.cc
@@ -226,6 +226,20 @@
return kernel::Program::ReadFrom(&reader, error);
}
+void Program::AutoDetectNullSafety(Isolate* isolate) {
+ if (isolate->is_service_isolate() || isolate->is_kernel_isolate()) {
+ // For now the service isolate and kernel isolate will be running in
+ // weak mode and we assert for that here.
+ ASSERT(!isolate->null_safety());
+ } else {
+ // If null safety is not specified on the command line we use the value
+ // from the dill file that the CFE has computed based on how it was invoked.
+ if (FLAG_null_safety == kNullSafetyOptionUnspecified) {
+ isolate->set_null_safety(compilation_mode() == NNBDCompiledMode::kStrong);
+ }
+ }
+}
+
} // namespace kernel
} // namespace dart
#endif // !defined(DART_PRECOMPILED_RUNTIME)
diff --git a/runtime/vm/megamorphic_cache_table.cc b/runtime/vm/megamorphic_cache_table.cc
index 439cccc..04a4acd 100644
--- a/runtime/vm/megamorphic_cache_table.cc
+++ b/runtime/vm/megamorphic_cache_table.cc
@@ -44,70 +44,6 @@
return cache.raw();
}
-FunctionPtr MegamorphicCacheTable::miss_handler(Isolate* isolate) {
- ASSERT(isolate->object_store()->megamorphic_call_miss_function() !=
- Function::null());
- return isolate->object_store()->megamorphic_call_miss_function();
-}
-
-#if !defined(DART_PRECOMPILED_RUNTIME)
-void MegamorphicCacheTable::InitMissHandler(Isolate* isolate) {
- // The miss handler for a class ID not found in the table is invoked as a
- // normal Dart function.
- compiler::ObjectPoolBuilder object_pool_builder;
- const Code& code = Code::Handle(StubCode::Generate(
- "_stub_MegamorphicCallMiss", &object_pool_builder,
- compiler::StubCodeCompiler::GenerateMegamorphicCallMissStub));
-
- const auto& object_pool =
- ObjectPool::Handle(ObjectPool::NewFromBuilder(object_pool_builder));
- code.set_object_pool(object_pool.raw());
-
- // When FLAG_lazy_dispatchers=false, this stub can be on the stack during
- // exceptions, but it has a corresponding function so IsStubCode is false and
- // it is considered in the search for an exception handler.
- code.set_exception_handlers(Object::empty_exception_handlers());
- const Class& cls =
- Class::Handle(Type::Handle(Type::DartFunctionType()).type_class());
- const Function& function = Function::Handle(Function::New(
- Symbols::MegamorphicCallMiss(), FunctionLayout::kRegularFunction,
- true, // Static, but called as a method.
- false, // Not const.
- false, // Not abstract.
- false, // Not external.
- false, // Not native.
- cls, TokenPosition::kNoSource));
- function.set_result_type(Type::Handle(Type::DynamicType()));
- function.set_is_debuggable(false);
- function.set_is_visible(false);
- function.AttachCode(code); // Has a single entry point, as a static function.
- // For inclusion in Snapshot::kFullJIT.
- function.set_unoptimized_code(code);
-
- ASSERT(isolate->object_store()->megamorphic_call_miss_function() ==
- Function::null());
- isolate->object_store()->SetMegamorphicCallMissHandler(code, function);
-}
-
-void MegamorphicCacheTable::ReInitMissHandlerCode(
- Isolate* isolate,
- compiler::ObjectPoolBuilder* wrapper) {
- ASSERT(FLAG_precompiled_mode && FLAG_use_bare_instructions);
-
- const Code& code = Code::Handle(StubCode::Generate(
- "_stub_MegamorphicCallMiss", wrapper,
- compiler::StubCodeCompiler::GenerateMegamorphicCallMissStub));
- code.set_exception_handlers(Object::empty_exception_handlers());
-
- auto object_store = isolate->object_store();
- auto& function =
- Function::Handle(object_store->megamorphic_call_miss_function());
- function.AttachCode(code);
- object_store->SetMegamorphicCallMissHandler(code, function);
-}
-
-#endif // !defined(DART_PRECOMPILED_RUNTIME)
-
void MegamorphicCacheTable::PrintSizes(Isolate* isolate) {
StackZone zone(Thread::Current());
intptr_t size = 0;
diff --git a/runtime/vm/megamorphic_cache_table.h b/runtime/vm/megamorphic_cache_table.h
index fb714a3..fe1c3bd 100644
--- a/runtime/vm/megamorphic_cache_table.h
+++ b/runtime/vm/megamorphic_cache_table.h
@@ -10,31 +10,13 @@
namespace dart {
-namespace compiler {
-class ObjectPoolBuilder;
-}
-
class Array;
-class Function;
class Isolate;
-class ObjectPointerVisitor;
class String;
class Thread;
class MegamorphicCacheTable : public AllStatic {
public:
- static FunctionPtr miss_handler(Isolate* isolate);
- NOT_IN_PRECOMPILED(static void InitMissHandler(Isolate* isolate));
-
- // Re-initializes the megamorphic miss handler function in the object store.
- //
- // Normally we initialize the megamorphic miss handler during isolate startup.
- // Though if we AOT compile with bare instructions support, we need to
- // re-generate the handler to ensure it uses the common object pool.
- NOT_IN_PRECOMPILED(
- static void ReInitMissHandlerCode(Isolate* isolate,
- compiler::ObjectPoolBuilder* wrapper));
-
static MegamorphicCachePtr Lookup(Thread* thread,
const String& name,
const Array& descriptor);
diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc
index e3eaf18..daf079c 100644
--- a/runtime/vm/object.cc
+++ b/runtime/vm/object.cc
@@ -27,6 +27,7 @@
#include "vm/debugger.h"
#include "vm/deopt_instructions.h"
#include "vm/double_conversion.h"
+#include "vm/elf.h"
#include "vm/exceptions.h"
#include "vm/growable_array.h"
#include "vm/hash.h"
@@ -4266,6 +4267,9 @@
#define ADD_SET_FIELD(clazz) {"cid" #clazz "View", kTypedData##clazz##ViewCid},
CLASS_LIST_TYPED_DATA(ADD_SET_FIELD)
#undef ADD_SET_FIELD
+#define ADD_SET_FIELD(clazz) {"cid" #clazz, kTypedData##clazz##Cid},
+ CLASS_LIST_TYPED_DATA(ADD_SET_FIELD)
+#undef ADD_SET_FIELD
#undef CLASS_LIST_WITH_NULL
};
@@ -4378,7 +4382,7 @@
// Compute instance size. First word contains a pointer to a properly
// sized typed array once the first native field has been set.
const intptr_t host_instance_size = sizeof(InstanceLayout) + kWordSize;
-#if defined(PRECOMPILER)
+#if defined(DART_PRECOMPILER)
const intptr_t target_instance_size =
compiler::target::Instance::InstanceSize() +
compiler::target::kWordSize;
@@ -7243,7 +7247,8 @@
intptr_t* flag_mask) const {
ASSERT(index >= num_fixed_parameters());
index -= num_fixed_parameters();
- *flag_mask = 1 << (index % compiler::target::kNumParameterFlagsPerElement);
+ *flag_mask = 1 << (static_cast<uintptr_t>(index) %
+ compiler::target::kNumParameterFlagsPerElement);
return NumParameters() +
index / compiler::target::kNumParameterFlagsPerElement;
}
@@ -8837,10 +8842,6 @@
if (fun.IsMethodExtractor()) {
printer->AddString("[tear-off-extractor] ");
}
- if (fun.IsAsyncClosure() || fun.IsAsyncGenClosure() ||
- fun.IsGeneratorClosure()) {
- printer->AddString("[body] ");
- }
}
if (fun.IsClosureFunction()) {
@@ -8872,6 +8873,12 @@
} else {
printer->AddString(fun.NameCString(name_visibility));
}
+ // If we skipped rewritten async/async*/sync* body then append a suffix
+ // to the end of the name.
+ if (fun.raw() != raw() &&
+ name_disambiguation == NameDisambiguation::kYes) {
+ printer->AddString("{body}");
+ }
return;
}
}
@@ -8890,6 +8897,12 @@
printer->AddString(fun.NameCString(name_visibility));
+ // If we skipped rewritten async/async*/sync* body then append a suffix
+ // to the end of the name.
+ if (fun.raw() != raw() && name_disambiguation == NameDisambiguation::kYes) {
+ printer->AddString("{body}");
+ }
+
// Field dispatchers are specialized for an argument descriptor so there
// might be multiples of them with the same name but different argument
// descriptors. Add a suffix to disambiguate.
@@ -13456,6 +13469,8 @@
all_libs.Add(&Library::ZoneHandle(Library::CollectionLibrary()));
all_libs.Add(&Library::ZoneHandle(Library::InternalLibrary()));
all_libs.Add(&Library::ZoneHandle(Library::FfiLibrary()));
+ ASYNC_LIB_INTRINSIC_LIST(CHECK_FINGERPRINTS2);
+ INTERNAL_LIB_INTRINSIC_LIST(CHECK_FINGERPRINTS2);
OTHER_RECOGNIZED_LIST(CHECK_FINGERPRINTS2);
POLYMORPHIC_TARGET_LIST(CHECK_FINGERPRINTS);
@@ -16301,10 +16316,8 @@
GrowableArray<TokenPosition>* token_positions) const {
const CodeSourceMap& map = CodeSourceMap::Handle(code_source_map());
if (map.IsNull()) {
- ASSERT(!IsFunctionCode() ||
- (Isolate::Current()->object_store()->megamorphic_call_miss_code() ==
- this->raw()));
- return; // VM stub, allocation stub, or megamorphic call miss function.
+ ASSERT(!IsFunctionCode());
+ return; // VM stub, allocation stub, or type testing stub.
}
const Array& id_map = Array::Handle(inlined_id_to_function());
const Function& root = Function::Handle(function());
@@ -16871,8 +16884,7 @@
const intptr_t capacity = kInitialCapacity;
const Array& buckets =
Array::Handle(Array::New(kEntryLength * capacity, Heap::kOld));
- const Function& handler =
- Function::Handle(MegamorphicCacheTable::miss_handler(Isolate::Current()));
+ const Object& handler = Object::Handle();
for (intptr_t i = 0; i < capacity; ++i) {
SetEntry(buckets, i, smi_illegal_cid(), handler);
}
@@ -16900,8 +16912,7 @@
const Array& new_buckets =
Array::Handle(Array::New(kEntryLength * new_capacity));
- auto& target =
- Object::Handle(MegamorphicCacheTable::miss_handler(Isolate::Current()));
+ auto& target = Object::Handle();
for (intptr_t i = 0; i < new_capacity; ++i) {
SetEntry(new_buckets, i, smi_illegal_cid(), target);
}
@@ -16960,7 +16971,7 @@
CodePtr code = Function::CurrentCodeOf(Function::RawCast(*slot));
*slot = Smi::FromAlignedAddress(Code::EntryPointOf(code));
} else {
- ASSERT(cid == kSmiCid);
+ ASSERT(cid == kSmiCid || cid == kNullCid);
}
}
}
@@ -17586,6 +17597,7 @@
if (hash != 0) {
return hash;
}
+ const Class& cls = Class::Handle(clazz());
NoSafepointScope no_safepoint(thread);
const intptr_t instance_size = SizeFromClass();
ASSERT(instance_size != 0);
@@ -17597,11 +17609,18 @@
thread->isolate()->group()->shared_class_table()->GetUnboxedFieldsMapAt(
GetClassId());
- for (intptr_t offset = Instance::NextFieldOffset(); offset < instance_size;
- offset += kWordSize) {
+ for (intptr_t offset = Instance::NextFieldOffset();
+ offset < cls.host_next_field_offset(); offset += kWordSize) {
if (unboxed_fields_bitmap.Get(offset / kWordSize)) {
- hash =
- CombineHashes(hash, *reinterpret_cast<intptr_t*>(this_addr + offset));
+ if (kWordSize == 8) {
+ hash = CombineHashes(hash,
+ *reinterpret_cast<uint32_t*>(this_addr + offset));
+ hash = CombineHashes(
+ hash, *reinterpret_cast<uint32_t*>(this_addr + offset + 4));
+ } else {
+ hash = CombineHashes(hash,
+ *reinterpret_cast<uint32_t*>(this_addr + offset));
+ }
} else {
member ^= *reinterpret_cast<ObjectPtr*>(this_addr + offset);
hash = CombineHashes(hash, member.CanonicalizeHash());
@@ -23589,17 +23608,31 @@
}
#if defined(DART_PRECOMPILED_RUNTIME)
+// Prints the best representation(s) for the call address.
static void PrintNonSymbolicStackFrameBody(ZoneTextBuffer* buffer,
uword call_addr,
uword isolate_instructions,
uword vm_instructions) {
const word vm_offset = call_addr - vm_instructions;
const word isolate_offset = call_addr - isolate_instructions;
+ // If the VM instructions image was compiled directly to ELF, we can determine
+ // the base address of the snapshot shared object from the section start.
+ const uword snapshot_base =
+ Elf::SnapshotRelocatedBaseAddress(vm_instructions);
+
// Pick the closest instructions section start before the call address.
if (vm_offset > 0 && (isolate_offset < 0 || vm_offset < isolate_offset)) {
+ if (snapshot_base != 0) {
+ const uword relocated_section = vm_instructions - snapshot_base;
+ buffer->Printf(" virt %" Pp "", relocated_section + vm_offset);
+ }
buffer->Printf(" %s+0x%" Px "", kVmSnapshotInstructionsAsmSymbol,
vm_offset);
} else if (isolate_offset > 0) {
+ if (snapshot_base != 0) {
+ const uword relocated_section = isolate_instructions - snapshot_base;
+ buffer->Printf(" virt %" Pp "", relocated_section + isolate_offset);
+ }
buffer->Printf(" %s+0x%" Px "", kIsolateSnapshotInstructionsAsmSymbol,
isolate_offset);
} else {
diff --git a/runtime/vm/object.h b/runtime/vm/object.h
index 21f60df..c3d6f0b 100644
--- a/runtime/vm/object.h
+++ b/runtime/vm/object.h
@@ -661,6 +661,18 @@
value.writeTo(const_cast<FieldType*>(addr));
}
+ template <typename FieldType>
+ FieldType LoadNonPointer(const FieldType* addr) const {
+ return *const_cast<FieldType*>(addr);
+ }
+
+ template <typename FieldType, std::memory_order order>
+ FieldType LoadNonPointer(const FieldType* addr) const {
+ return reinterpret_cast<std::atomic<FieldType>*>(
+ const_cast<FieldType*>(addr))
+ ->load(order);
+ }
+
// Needs two template arguments to allow assigning enums to fixed-size ints.
template <typename FieldType, typename ValueType>
void StoreNonPointer(const FieldType* addr, ValueType value) const {
@@ -677,14 +689,6 @@
->store(value, order);
}
- template <typename FieldType,
- std::memory_order order = std::memory_order_relaxed>
- FieldType LoadNonPointer(const FieldType* addr) const {
- return reinterpret_cast<std::atomic<FieldType>*>(
- const_cast<FieldType*>(addr))
- ->load(order);
- }
-
// Provides non-const access to non-pointer fields within the object. Such
// access does not need a write barrier, but it is *not* GC-safe, since the
// object might move, hence must be fully contained within a NoSafepointScope.
@@ -3384,6 +3388,20 @@
return modifier() != FunctionLayout::kNoModifier;
}
+ // Recognise synthetic sync-yielding functions like the inner-most:
+ // user_func /* was sync* */ {
+ // :sync_op_gen() {
+ // :sync_op() yielding {
+ // // ...
+ // }
+ // }
+ // }
+ bool IsSyncYielding() const {
+ return (parent_function() != Function::null())
+ ? Function::Handle(parent_function()).IsSyncGenClosure()
+ : false;
+ }
+
bool IsTypedDataViewFactory() const {
if (is_native() && kind() == FunctionLayout::kConstructor) {
// This is a native factory constructor.
@@ -4700,18 +4718,23 @@
// Resolving native methods for script loaded in the library.
Dart_NativeEntryResolver native_entry_resolver() const {
- return LoadNonPointer(&raw_ptr()->native_entry_resolver_);
+ return LoadNonPointer<Dart_NativeEntryResolver, std::memory_order_relaxed>(
+ &raw_ptr()->native_entry_resolver_);
}
void set_native_entry_resolver(Dart_NativeEntryResolver value) const {
- StoreNonPointer(&raw_ptr()->native_entry_resolver_, value);
+ StoreNonPointer<Dart_NativeEntryResolver, Dart_NativeEntryResolver,
+ std::memory_order_relaxed>(
+ &raw_ptr()->native_entry_resolver_, value);
}
Dart_NativeEntrySymbol native_entry_symbol_resolver() const {
- return LoadNonPointer(&raw_ptr()->native_entry_symbol_resolver_);
+ return LoadNonPointer<Dart_NativeEntrySymbol, std::memory_order_relaxed>(
+ &raw_ptr()->native_entry_symbol_resolver_);
}
void set_native_entry_symbol_resolver(
Dart_NativeEntrySymbol native_symbol_resolver) const {
- StoreNonPointer(&raw_ptr()->native_entry_symbol_resolver_,
- native_symbol_resolver);
+ StoreNonPointer<Dart_NativeEntrySymbol, Dart_NativeEntrySymbol,
+ std::memory_order_relaxed>(
+ &raw_ptr()->native_entry_symbol_resolver_, native_symbol_resolver);
}
bool is_in_fullsnapshot() const {
@@ -11028,7 +11051,7 @@
intptr_t index,
const Smi& class_id,
const Object& target) {
- ASSERT(target.IsFunction() || target.IsSmi());
+ ASSERT(target.IsNull() || target.IsFunction() || target.IsSmi());
array.SetAt((index * kEntryLength) + kClassIdIndex, class_id);
#if defined(DART_PRECOMPILED_RUNTIME)
if (FLAG_precompiled_mode && FLAG_use_bare_instructions) {
diff --git a/runtime/vm/object_store.h b/runtime/vm/object_store.h
index 9fb5e5d..20d4841 100644
--- a/runtime/vm/object_store.h
+++ b/runtime/vm/object_store.h
@@ -206,8 +206,6 @@
RW(Code, top_type_tts_stub) \
RW(Code, unreachable_tts_stub) \
RW(Code, slow_tts_stub) \
- R_(Code, megamorphic_call_miss_code) \
- R_(Function, megamorphic_call_miss_function) \
RW(Array, dispatch_table_code_entries) \
RW(Array, code_order_table) \
RW(Array, obfuscation_map) \
@@ -256,6 +254,8 @@
#define ISOLATE_OBJECT_STORE_FIELD_LIST(R_, RW) \
RW(UnhandledException, preallocated_unhandled_exception) \
RW(StackTrace, preallocated_stack_trace) \
+ RW(Array, dart_args_1) \
+ RW(Array, dart_args_2) \
R_(GrowableObjectArray, resume_capabilities) \
R_(GrowableObjectArray, exit_listeners) \
R_(GrowableObjectArray, error_listeners)
@@ -378,12 +378,6 @@
}
}
- void SetMegamorphicCallMissHandler(const Code& code, const Function& func) {
- // Hold onto the code so it is traced and not detached from the function.
- megamorphic_call_miss_code_ = code.raw();
- megamorphic_call_miss_function_ = func.raw();
- }
-
// Visit all object pointers.
void VisitObjectPointers(ObjectPointerVisitor* visitor);
@@ -418,7 +412,7 @@
return reinterpret_cast<ObjectPtr*>(&global_object_pool_);
case Snapshot::kFullJIT:
case Snapshot::kFullAOT:
- return reinterpret_cast<ObjectPtr*>(&megamorphic_call_miss_function_);
+ return reinterpret_cast<ObjectPtr*>(&slow_tts_stub_);
case Snapshot::kMessage:
case Snapshot::kNone:
case Snapshot::kInvalid:
diff --git a/runtime/vm/os_thread.cc b/runtime/vm/os_thread.cc
index 3ef9f8f..61b929c 100644
--- a/runtime/vm/os_thread.cc
+++ b/runtime/vm/os_thread.cc
@@ -4,6 +4,7 @@
#include "vm/os_thread.h"
+#include "platform/address_sanitizer.h"
#include "platform/atomic.h"
#include "vm/lockers.h"
#include "vm/log.h"
diff --git a/runtime/vm/os_thread.h b/runtime/vm/os_thread.h
index 193a5f8..c35d68f 100644
--- a/runtime/vm/os_thread.h
+++ b/runtime/vm/os_thread.h
@@ -5,7 +5,6 @@
#ifndef RUNTIME_VM_OS_THREAD_H_
#define RUNTIME_VM_OS_THREAD_H_
-#include "platform/address_sanitizer.h"
#include "platform/atomic.h"
#include "platform/globals.h"
#include "platform/safe_stack.h"
@@ -39,7 +38,6 @@
class Mutex;
class ThreadState;
class TimelineEventBlock;
-class ThreadPool;
class Mutex {
public:
@@ -237,11 +235,6 @@
static void DisableOSThreadCreation();
static void EnableOSThreadCreation();
- static bool CurrentThreadRunsOn(ThreadPool* pool) {
- auto owning_pool = OSThread::Current()->owning_thread_pool_;
- return owning_pool != nullptr && owning_pool == pool;
- }
-
static const intptr_t kStackSizeBufferMax = (16 * KB * kWordSize);
static constexpr float kStackSizeBufferFraction = 0.5;
@@ -301,10 +294,10 @@
uword stack_limit_;
uword stack_headroom_;
ThreadState* thread_;
- // The ThreadPool which owns this OSThread. If this OSThread was not started
- // by a ThreadPool it will be nullptr. This TLS value is not protected and
- // should only be read/written by the OSThread itself.
- ThreadPool* owning_thread_pool_ = nullptr;
+ // The ThreadPool::Worker which owns this OSThread. If this OSThread was not
+ // started by a ThreadPool it will be nullptr. This TLS value is not
+ // protected and should only be read/written by the OSThread itself.
+ void* owning_thread_pool_worker_ = nullptr;
// thread_list_lock_ cannot have a static lifetime because the order in which
// destructors run is undefined. At the moment this lock cannot be deleted
@@ -323,7 +316,7 @@
friend class OSThreadIterator;
friend class ThreadInterrupterWin;
friend class ThreadInterrupterFuchsia;
- friend class ThreadPool; // to access owning_thread_pool_
+ friend class ThreadPool; // to access owning_thread_pool_worker_
};
// Note that this takes the thread list lock, prohibiting threads from coming
diff --git a/runtime/vm/profiler_test.cc b/runtime/vm/profiler_test.cc
index fd6751e..62167d5 100644
--- a/runtime/vm/profiler_test.cc
+++ b/runtime/vm/profiler_test.cc
@@ -1373,18 +1373,22 @@
EXPECT_EQ(1, profile.sample_count());
ProfileStackWalker walker(&profile);
- EXPECT_STREQ("OneByteString_allocate", walker.VMTagName());
+ EXPECT_STREQ("Internal_allocateOneByteString", walker.VMTagName());
if (FLAG_enable_interpreter) {
- EXPECT_STREQ("[Bytecode] _OneByteString._allocate", walker.CurrentName());
+ EXPECT_STREQ("Internal_allocateOneByteString", walker.VMTagName());
EXPECT(walker.Down());
- EXPECT_STREQ("[Bytecode] _OneByteString._concatAll",
+ EXPECT_STREQ("[Unoptimized] String._allocate", walker.CurrentName());
+ EXPECT(walker.Down());
+ EXPECT_STREQ("[Unoptimized] String._concatAll", walker.CurrentName());
+ EXPECT(walker.Down());
+ EXPECT_STREQ("[Unoptimized] _StringBase._interpolate",
walker.CurrentName());
EXPECT(walker.Down());
- EXPECT_STREQ("[Bytecode] _StringBase._interpolate", walker.CurrentName());
- EXPECT(walker.Down());
EXPECT_STREQ("[Bytecode] foo", walker.CurrentName());
EXPECT(!walker.Down());
} else {
+ EXPECT_STREQ("Internal_allocateOneByteString", walker.VMTagName());
+ EXPECT(walker.Down());
EXPECT_STREQ("[Unoptimized] String._allocate", walker.CurrentName());
EXPECT(walker.Down());
EXPECT_STREQ("[Unoptimized] String._concatAll", walker.CurrentName());
diff --git a/runtime/vm/program_visitor.cc b/runtime/vm/program_visitor.cc
index 7085853..4d467b0 100644
--- a/runtime/vm/program_visitor.cc
+++ b/runtime/vm/program_visitor.cc
@@ -425,8 +425,7 @@
const intptr_t capacity = 1;
const Array& buckets = Array::Handle(
zone, Array::New(MegamorphicCache::kEntryLength * capacity, Heap::kOld));
- const Function& handler =
- Function::Handle(zone, MegamorphicCacheTable::miss_handler(isolate));
+ const Function& handler = Function::Handle(zone);
MegamorphicCache::SetEntry(buckets, 0, Object::smi_illegal_cid(), handler);
for (intptr_t i = 0; i < table.Length(); i++) {
diff --git a/runtime/vm/runtime_entry.cc b/runtime/vm/runtime_entry.cc
index 36ec9f8..0e49850 100644
--- a/runtime/vm/runtime_entry.cc
+++ b/runtime/vm/runtime_entry.cc
@@ -446,8 +446,8 @@
AbstractType::CheckedHandle(zone, arguments.ArgAt(3));
const String& dst_name = String::CheckedHandle(zone, arguments.ArgAt(4));
- ASSERT(!subtype.IsNull());
- ASSERT(!supertype.IsNull());
+ ASSERT(!subtype.IsNull() && !subtype.IsTypeRef());
+ ASSERT(!supertype.IsNull() && !supertype.IsTypeRef());
// The supertype or subtype may not be instantiated.
if (AbstractType::InstantiateAndTestSubtype(
diff --git a/runtime/vm/service.cc b/runtime/vm/service.cc
index 62abc18..bf947f5 100644
--- a/runtime/vm/service.cc
+++ b/runtime/vm/service.cc
@@ -3647,6 +3647,12 @@
TIMELINE_STREAM_LIST(SET_ENABLE_STREAM);
#undef SET_ENABLE_STREAM
+ // Notify clients that the set of subscribed streams has been updated.
+ if (Service::timeline_stream.enabled()) {
+ ServiceEvent event(NULL, ServiceEvent::kTimelineStreamSubscriptionsUpdate);
+ Service::HandleEvent(&event);
+ }
+
PrintSuccess(js);
return true;
diff --git a/runtime/vm/service.h b/runtime/vm/service.h
index ffdc290..aee5f5c 100644
--- a/runtime/vm/service.h
+++ b/runtime/vm/service.h
@@ -15,7 +15,7 @@
namespace dart {
#define SERVICE_PROTOCOL_MAJOR_VERSION 3
-#define SERVICE_PROTOCOL_MINOR_VERSION 33
+#define SERVICE_PROTOCOL_MINOR_VERSION 35
class Array;
class EmbedderServiceHandler;
diff --git a/runtime/vm/service/service.md b/runtime/vm/service/service.md
index b957bc7..1eed739 100644
--- a/runtime/vm/service/service.md
+++ b/runtime/vm/service/service.md
@@ -1,8 +1,8 @@
-# Dart VM Service Protocol 3.33
+# Dart VM Service Protocol 3.35
> Please post feedback to the [observatory-discuss group][discuss-list]
-This document describes of _version 3.33_ of the Dart VM Service Protocol. This
+This document describes of _version 3.35_ of the Dart VM Service Protocol. This
protocol is used to communicate with a running Dart Virtual Machine.
To use the Service Protocol, start the VM with the *--observe* flag.
@@ -27,7 +27,9 @@
- [IDs and Names](#ids-and-names)
- [Versioning](#versioning)
- [Private RPCs, Types, and Properties](#private-rpcs-types-and-properties)
-- [Single Client Mode](#single-client-mode)
+- [Middleware Support](#middleware-support)
+ - [Single Client Mode](#single-client-mode)
+ - [Protocol Extensions](#protocol-extensions)
- [Public RPCs](#public-rpcs)
- [addBreakpoint](#addbreakpoint)
- [addBreakpointWithScriptUri](#addbreakpointwithscripturi)
@@ -50,6 +52,7 @@
- [getScripts](#getscripts)
- [getSourceReport](#getsourcereport)
- [getStack](#getstack)
+ - [getSupportedProtocols](#getsupportedprotocols)
- [getVersion](#getversion)
- [getVM](#getvm)
- [getVMTimeline](#getvmtimeline)
@@ -406,7 +409,9 @@
implementation state and will never be appropriate to add to
the public api.
-## Single Client Mode
+## Middleware Support
+
+### Single Client Mode
The VM service allows for an extended feature set via the Dart Development
Service (DDS) that forward all core VM service RPCs described in this
@@ -417,6 +422,15 @@
disconnects from the VM service, the VM service will once again start accepting
incoming web socket connections.
+### Protocol Extensions
+
+Middleware like the Dart Development Service have the option of providing
+functionality which builds on or extends the VM service protocol. Middleware
+which offer protocol extensions should intercept calls to
+[getSupportedProtocols](#getsupportedprotocols) and modify the resulting
+[ProtocolList](#protocolist) to include their own [Protocol](#protocol)
+information before responding to the requesting client.
+
## Public RPCs
The following is a list of all public RPCs supported by the Service Protocol.
@@ -979,6 +993,21 @@
See [Stack](#stack).
+### getSupportedProtocols
+
+```
+ProtocolList getSupportedProtocols()
+```
+
+The _getSupportedProtocols_ RPC is used to determine which protocols are
+supported by the current server.
+
+The result of this call should be intercepted by any middleware that extends
+the core VM service protocol and should add its own protocol to the list of
+protocols before forwarding the response to the client.
+
+See [ProtocolList](#protocollist).
+
### getSourceReport
```
@@ -1390,6 +1419,9 @@
to be enabled. Streams not explicitly specified will be disabled. Invalid stream
names are ignored.
+A `TimelineStreamSubscriptionsUpdate` event is sent on the `Timeline` stream as
+a result of invoking this RPC.
+
To get the list of currently enabled timeline streams, see [getVMTimelineFlags](#getvmtimelineflags).
See [Success](#success).
@@ -1428,7 +1460,7 @@
Debug | PauseStart, PauseExit, PauseBreakpoint, PauseInterrupted, PauseException, PausePostRequest, Resume, BreakpointAdded, BreakpointResolved, BreakpointRemoved, Inspect, None
GC | GC
Extension | Extension
-Timeline | TimelineEvents
+Timeline | TimelineEvents, TimelineStreamsSubscriptionUpdate
Logging | Logging
Service | ServiceRegistered, ServiceUnregistered
HeapSnapshot | HeapSnapshot
@@ -2033,6 +2065,11 @@
// This is provided for the TimelineEvents event.
TimelineEvent[] timelineEvents [optional];
+ // The new set of recorded timeline streams.
+ //
+ // This is provided for the TimelineStreamSubscriptionsUpdate event.
+ string[] updatedStreams [optional];
+
// Is the isolate paused at an await, yield, or yield* statement?
//
// This is provided for the event kinds:
@@ -2176,6 +2213,17 @@
// Event from dart:developer.log.
Logging,
+ // A block of timeline events has been completed.
+ //
+ // This service event is not sent for individual timeline events. It is
+ // subject to buffering, so the most recent timeline events may never be
+ // included in any TimelineEvents event if no timeline events occur later to
+ // complete the block.
+ TimelineEvents,
+
+ // The set of active timeline streams was changed via `setVMTimelineFlags`.
+ TimelineStreamSubscriptionsUpdate,
+
// Notification that a Service has been registered into the Service Protocol
// from another client.
ServiceRegistered,
@@ -3196,6 +3244,37 @@
See [CpuSamples](#cpusamples).
+### ProtocolList
+
+```
+class ProtocolList extends Response {
+ // A list of supported protocols provided by this service.
+ Protocol[] protocols;
+}
+```
+
+A _ProtocolList_ contains a list of all protocols supported by the service
+instance.
+
+See [Protocol](#protocol) and [getSupportedProtocols](#getsupportedprotocols).
+
+### Protocol
+
+```
+class Protocol {
+ // The name of the supported protocol.
+ string protocolName;
+
+ // The major revision of the protocol.
+ int major;
+
+ // The minor revision of the protocol.
+ int minor;
+}
+```
+
+See [getSupportedProtocols](#getsupportedprotocols).
+
### ReloadReport
```
@@ -3767,5 +3846,7 @@
the VM service.
3.32 | Added `getClassList` RPC and `ClassList` object.
3.33 | Added deprecation notice for `getClientName`, `setClientName`, `requireResumeApproval`, and `ClientName`. These RPCs are moving to the DDS protocol and will be removed in v4.0 of the VM service protocol.
+3.34 | Added `TimelineStreamSubscriptionsUpdate` event which is sent when `setVMTimelineFlags` is invoked.
+3.35 | Added `getSupportedProtocols` RPC and `ProtocolList`, `Protocol` objects.
[discuss-list]: https://groups.google.com/a/dartlang.org/forum/#!forum/observatory-discuss
diff --git a/runtime/vm/service_event.cc b/runtime/vm/service_event.cc
index a96fd6e..26cc103 100644
--- a/runtime/vm/service_event.cc
+++ b/runtime/vm/service_event.cc
@@ -7,6 +7,7 @@
#include "vm/debugger.h"
#include "vm/message_handler.h"
#include "vm/service_isolate.h"
+#include "vm/timeline.h"
namespace dart {
@@ -107,6 +108,8 @@
return "Extension";
case kTimelineEvents:
return "TimelineEvents";
+ case kTimelineStreamSubscriptionsUpdate:
+ return "TimelineStreamSubscriptionsUpdate";
default:
UNREACHABLE();
return "Unknown";
@@ -152,6 +155,7 @@
return &Service::extension_stream;
case kTimelineEvents:
+ case kTimelineStreamSubscriptionsUpdate:
return &Service::timeline_stream;
case kEmbedder:
@@ -211,6 +215,10 @@
if (kind() == kTimelineEvents) {
jsobj.AddProperty("timelineEvents", timeline_event_block_);
}
+ if (kind() == kTimelineStreamSubscriptionsUpdate) {
+ JSONArray arr(&jsobj, "updatedStreams");
+ Timeline::PrintFlagsToJSONArray(&arr);
+ }
if (kind() == kDebuggerSettingsUpdate) {
JSONObject jssettings(&jsobj, "_debuggerSettings");
isolate()->debugger()->PrintSettingsToJSONObject(&jssettings);
diff --git a/runtime/vm/service_event.h b/runtime/vm/service_event.h
index f2aedde..d02dbe2 100644
--- a/runtime/vm/service_event.h
+++ b/runtime/vm/service_event.h
@@ -55,6 +55,8 @@
kExtension,
kTimelineEvents,
+ // Sent when SetVMTimelineFlags is called.
+ kTimelineStreamSubscriptionsUpdate,
kIllegal,
};
diff --git a/runtime/vm/simulator_arm.cc b/runtime/vm/simulator_arm.cc
index ab712c9..0937ce8 100644
--- a/runtime/vm/simulator_arm.cc
+++ b/runtime/vm/simulator_arm.cc
@@ -1175,9 +1175,9 @@
if (shift_amount == 0) {
*carry_out = c_flag_;
} else {
- result <<= (shift_amount - 1);
+ result = static_cast<uint32_t>(result) << (shift_amount - 1);
*carry_out = (result < 0);
- result <<= 1;
+ result = static_cast<uint32_t>(result) << 1;
}
break;
}
@@ -1235,9 +1235,9 @@
if (shift_amount == 0) {
*carry_out = c_flag_;
} else if (shift_amount < 32) {
- result <<= (shift_amount - 1);
+ result = static_cast<uint32_t>(result) << (shift_amount - 1);
*carry_out = (result < 0);
- result <<= 1;
+ result = static_cast<uint32_t>(result) << 1;
} else if (shift_amount == 32) {
*carry_out = (result & 1) == 1;
result = 0;
@@ -1285,9 +1285,9 @@
// Addressing Mode 1 - Data-processing operands:
// Get the value based on the shifter_operand with immediate.
DART_FORCE_INLINE int32_t Simulator::GetImm(Instr* instr, bool* carry_out) {
- int rotate = instr->RotateField() * 2;
- int immed8 = instr->Immed8Field();
- int imm = (immed8 >> rotate) | (immed8 << (32 - rotate));
+ uint8_t rotate = instr->RotateField() * 2;
+ int32_t immed8 = instr->Immed8Field();
+ int32_t imm = Utils::RotateRight(immed8, rotate);
*carry_out = (rotate == 0) ? c_flag_ : (imm < 0);
return imm;
}
@@ -1368,9 +1368,34 @@
int32_t r3,
int32_t r4);
+// [target] has several different signatures that differ from
+// SimulatorLeafRuntimeCall. We can call them all from here only because in
+// IA32's calling convention a function can be called with extra arguments
+// and the callee will see the first arguments and won't unbalance the stack.
+NO_SANITIZE_UNDEFINED("function")
+static int32_t InvokeLeafRuntime(SimulatorLeafRuntimeCall target,
+ int32_t r0,
+ int32_t r1,
+ int32_t r2,
+ int32_t r3,
+ int32_t r4) {
+ return target(r0, r1, r2, r3, r4);
+}
+
// Calls to leaf float Dart runtime functions are based on this interface.
typedef double (*SimulatorLeafFloatRuntimeCall)(double d0, double d1);
+// [target] has several different signatures that differ from
+// SimulatorFloatLeafRuntimeCall. We can call them all from here only because
+// IA32's calling convention a function can be called with extra arguments
+// and the callee will see the first arguments and won't unbalance the stack.
+NO_SANITIZE_UNDEFINED("function")
+static double InvokeFloatLeafRuntime(SimulatorLeafFloatRuntimeCall target,
+ double d0,
+ double d1) {
+ return target(d0, d1);
+}
+
// Calls to native Dart functions are based on this interface.
typedef void (*SimulatorNativeCallWrapper)(Dart_NativeArguments arguments,
Dart_NativeFunction target);
@@ -1410,7 +1435,7 @@
int32_t r4 = *reinterpret_cast<int32_t*>(get_register(SP));
SimulatorLeafRuntimeCall target =
reinterpret_cast<SimulatorLeafRuntimeCall>(external);
- r0 = target(r0, r1, r2, r3, r4);
+ r0 = InvokeLeafRuntime(target, r0, r1, r2, r3, r4);
set_register(R0, r0); // Set returned result from function.
set_register(R1, icount_); // Zap unused result register.
} else if (redirection->call_kind() == kLeafFloatRuntimeCall) {
@@ -1423,7 +1448,7 @@
// floating point registers.
double d0 = get_dregister(D0);
double d1 = get_dregister(D1);
- d0 = target(d0, d1);
+ d0 = InvokeFloatLeafRuntime(target, d0, d1);
set_dregister(D0, d0);
} else {
// If we're not doing "hardfp", we must be doing "soft" or "softfp",
@@ -1436,7 +1461,7 @@
int64_t a1 = Utils::LowHighTo64Bits(r2, r3);
double d0 = bit_cast<double, int64_t>(a0);
double d1 = bit_cast<double, int64_t>(a1);
- d0 = target(d0, d1);
+ d0 = InvokeFloatLeafRuntime(target, d0, d1);
a0 = bit_cast<int64_t, double>(d0);
r0 = Utils::Low32Bits(a0);
r1 = Utils::High32Bits(a0);
@@ -1568,9 +1593,9 @@
Register rd = instr->RdField();
Register rs = instr->RsField();
Register rm = instr->RmField();
- int32_t rm_val = get_register(rm);
- int32_t rs_val = get_register(rs);
- int32_t rd_val = 0;
+ uint32_t rm_val = get_register(rm);
+ uint32_t rs_val = get_register(rs);
+ uint32_t rd_val = 0;
switch (instr->Bits(21, 3)) {
case 1:
// Registers rd, rn, rm, ra are encoded as rn, rm, rs, rd.
@@ -1584,7 +1609,7 @@
case 0: {
// Registers rd, rn, rm are encoded as rn, rm, rs.
// Format(instr, "mul'cond's 'rn, 'rm, 'rs");
- int32_t alu_out = rm_val * rs_val;
+ uint32_t alu_out = rm_val * rs_val;
if (instr->Bits(21, 3) == 3) { // mls
if (TargetCPUFeatures::arm_version() != ARMv7) {
UnimplementedInstruction(instr);
@@ -1880,8 +1905,8 @@
} else {
Register rd = instr->RdField();
Register rn = instr->RnField();
- int32_t rn_val = get_register(rn);
- int32_t shifter_operand = 0;
+ uint32_t rn_val = get_register(rn);
+ uint32_t shifter_operand = 0;
bool shifter_carry_out = 0;
if (instr->TypeField() == 0) {
shifter_operand = GetShiftRm(instr, &shifter_carry_out);
@@ -1889,8 +1914,8 @@
ASSERT(instr->TypeField() == 1);
shifter_operand = GetImm(instr, &shifter_carry_out);
}
- int32_t carry_in;
- int32_t alu_out;
+ uint32_t carry_in;
+ uint32_t alu_out;
switch (instr->OpcodeField()) {
case AND: {
@@ -2306,8 +2331,8 @@
void Simulator::DecodeType5(Instr* instr) {
// Format(instr, "b'l'cond 'target");
- int off = (instr->SImmed24Field() << 2) + 8;
- intptr_t pc = get_pc();
+ uint32_t off = (static_cast<uint32_t>(instr->SImmed24Field()) << 2) + 8;
+ uint32_t pc = get_pc();
if (instr->HasLink()) {
set_register(LR, pc + Instr::kInstrSize);
}
diff --git a/runtime/vm/simulator_arm64.cc b/runtime/vm/simulator_arm64.cc
index e044026..5b558a7 100644
--- a/runtime/vm/simulator_arm64.cc
+++ b/runtime/vm/simulator_arm64.cc
@@ -379,7 +379,7 @@
}
void SimulatorDebugger::Debug() {
- intptr_t last_pc = -1;
+ uintptr_t last_pc = -1;
bool done = false;
#define COMMAND_SIZE 63
@@ -973,18 +973,18 @@
}
// Raw access to the PC register.
-void Simulator::set_pc(int64_t value) {
+void Simulator::set_pc(uint64_t value) {
pc_modified_ = true;
last_pc_ = pc_;
pc_ = value;
}
// Raw access to the pc.
-int64_t Simulator::get_pc() const {
+uint64_t Simulator::get_pc() const {
return pc_;
}
-int64_t Simulator::get_last_pc() const {
+uint64_t Simulator::get_last_pc() const {
return last_pc_;
}
@@ -1299,8 +1299,8 @@
: (instr->Imm12Field());
if (instr->SFField()) {
// 64-bit add.
- const int64_t rn_val = get_register(rn, instr->RnMode());
- const int64_t alu_out = addition ? (rn_val + imm) : (rn_val - imm);
+ const uint64_t rn_val = get_register(rn, instr->RnMode());
+ const uint64_t alu_out = addition ? (rn_val + imm) : (rn_val - imm);
set_register(instr, rd, alu_out, instr->RdMode());
if (instr->HasS()) {
SetNZFlagsX(alu_out);
@@ -1309,13 +1309,13 @@
}
} else {
// 32-bit add.
- const int32_t rn_val = get_wregister(rn, instr->RnMode());
- int32_t carry_in = 0;
+ const uint32_t rn_val = get_wregister(rn, instr->RnMode());
+ uint32_t carry_in = 0;
if (!addition) {
carry_in = 1;
imm = ~imm;
}
- const int32_t alu_out = rn_val + imm + carry_in;
+ const uint32_t alu_out = rn_val + imm + carry_in;
set_wregister(rd, alu_out, instr->RdMode());
if (instr->HasS()) {
SetNZFlagsW(alu_out);
@@ -1347,7 +1347,7 @@
mask >>= r_bit;
result >>= r_bit;
} else {
- result <<= bitwidth - r_bit;
+ result = static_cast<uint64_t>(result) << (bitwidth - r_bit);
mask <<= bitwidth - r_bit;
}
result &= mask;
@@ -1422,10 +1422,10 @@
if (op == 0) {
// Format(instr, "adr 'rd, 'pcrel")
const Register rd = instr->RdField();
- const int64_t immhi = instr->SImm19Field();
- const int64_t immlo = instr->Bits(29, 2);
- const int64_t off = (immhi << 2) | immlo;
- const int64_t dest = get_pc() + off;
+ const uint64_t immhi = instr->SImm19Field();
+ const uint64_t immlo = instr->Bits(29, 2);
+ const uint64_t off = (immhi << 2) | immlo;
+ const uint64_t dest = get_pc() + off;
set_register(instr, rd, dest, instr->RdMode());
} else {
UnimplementedInstruction(instr);
@@ -1451,10 +1451,10 @@
void Simulator::DecodeCompareAndBranch(Instr* instr) {
const int op = instr->Bit(24);
const Register rt = instr->RtField();
- const int64_t imm19 = instr->SImm19Field();
- const int64_t dest = get_pc() + (imm19 << 2);
- const int64_t mask = instr->SFField() == 1 ? kXRegMask : kWRegMask;
- const int64_t rt_val = get_register(rt, R31IsZR) & mask;
+ const uint64_t imm19 = instr->SImm19Field();
+ const uint64_t dest = get_pc() + (imm19 << 2);
+ const uint64_t mask = instr->SFField() == 1 ? kXRegMask : kWRegMask;
+ const uint64_t rt_val = get_register(rt, R31IsZR) & mask;
if (op == 0) {
// Format(instr, "cbz'sf 'rt, 'dest19");
if (rt_val == 0) {
@@ -1517,8 +1517,8 @@
if ((instr->Bit(24) != 0) || (instr->Bit(4) != 0)) {
UnimplementedInstruction(instr);
}
- const int64_t imm19 = instr->SImm19Field();
- const int64_t dest = get_pc() + (imm19 << 2);
+ const uint64_t imm19 = instr->SImm19Field();
+ const uint64_t dest = get_pc() + (imm19 << 2);
if (ConditionallyExecute(instr)) {
set_pc(dest);
}
@@ -1537,6 +1537,23 @@
int64_t r6,
int64_t r7);
+// [target] has several different signatures that differ from
+// SimulatorLeafRuntimeCall. We can call them all from here only because in
+// X64's calling conventions a function can be called with extra arguments
+// and the callee will see the first arguments and won't unbalance the stack.
+NO_SANITIZE_UNDEFINED("function")
+static int64_t InvokeLeafRuntime(SimulatorLeafRuntimeCall target,
+ int64_t r0,
+ int64_t r1,
+ int64_t r2,
+ int64_t r3,
+ int64_t r4,
+ int64_t r5,
+ int64_t r6,
+ int64_t r7) {
+ return target(r0, r1, r2, r3, r4, r5, r6, r7);
+}
+
// Calls to leaf float Dart runtime functions are based on this interface.
typedef double (*SimulatorLeafFloatRuntimeCall)(double d0,
double d1,
@@ -1547,6 +1564,23 @@
double d6,
double d7);
+// [target] has several different signatures that differ from
+// SimulatorFloatLeafRuntimeCall. We can call them all from here only because in
+// X64's calling conventions a function can be called with extra arguments
+// and the callee will see the first arguments and won't unbalance the stack.
+NO_SANITIZE_UNDEFINED("function")
+static double InvokeFloatLeafRuntime(SimulatorLeafFloatRuntimeCall target,
+ double d0,
+ double d1,
+ double d2,
+ double d3,
+ double d4,
+ double d5,
+ double d6,
+ double d7) {
+ return target(d0, d1, d2, d3, d4, d5, d6, d7);
+}
+
// Calls to native Dart functions are based on this interface.
typedef void (*SimulatorNativeCallWrapper)(Dart_NativeArguments arguments,
Dart_NativeFunction target);
@@ -1583,7 +1617,8 @@
const int64_t r5 = get_register(R5);
const int64_t r6 = get_register(R6);
const int64_t r7 = get_register(R7);
- const int64_t res = target(r0, r1, r2, r3, r4, r5, r6, r7);
+ const int64_t res =
+ InvokeLeafRuntime(target, r0, r1, r2, r3, r4, r5, r6, r7);
set_register(instr, R0, res); // Set returned result from function.
set_register(instr, R1, icount_); // Zap unused result register.
} else if (redirection->call_kind() == kLeafFloatRuntimeCall) {
@@ -1599,7 +1634,8 @@
const double d5 = bit_cast<double, int64_t>(get_vregisterd(V5, 0));
const double d6 = bit_cast<double, int64_t>(get_vregisterd(V6, 0));
const double d7 = bit_cast<double, int64_t>(get_vregisterd(V7, 0));
- const double res = target(d0, d1, d2, d3, d4, d5, d6, d7);
+ const double res =
+ InvokeFloatLeafRuntime(target, d0, d1, d2, d3, d4, d5, d6, d7);
set_vregisterd(V0, 0, bit_cast<int64_t, double>(res));
set_vregisterd(V0, 1, 0);
} else {
@@ -1700,18 +1736,18 @@
void Simulator::DecodeTestAndBranch(Instr* instr) {
const int op = instr->Bit(24);
const int bitpos = instr->Bits(19, 5) | (instr->Bit(31) << 5);
- const int64_t imm14 = instr->SImm14Field();
- const int64_t dest = get_pc() + (imm14 << 2);
+ const uint64_t imm14 = instr->SImm14Field();
+ const uint64_t dest = get_pc() + (imm14 << 2);
const Register rt = instr->RtField();
- const int64_t rt_val = get_register(rt, R31IsZR);
+ const uint64_t rt_val = get_register(rt, R31IsZR);
if (op == 0) {
// Format(instr, "tbz'sf 'rt, 'bitpos, 'dest14");
- if ((rt_val & (1ll << bitpos)) == 0) {
+ if ((rt_val & (1ull << bitpos)) == 0) {
set_pc(dest);
}
} else {
// Format(instr, "tbnz'sf 'rt, 'bitpos, 'dest14");
- if ((rt_val & (1ll << bitpos)) != 0) {
+ if ((rt_val & (1ull << bitpos)) != 0) {
set_pc(dest);
}
}
@@ -1719,9 +1755,9 @@
void Simulator::DecodeUnconditionalBranch(Instr* instr) {
const bool link = instr->Bit(31) == 1;
- const int64_t imm26 = instr->SImm26Field();
- const int64_t dest = get_pc() + (imm26 << 2);
- const int64_t ret = get_pc() + Instr::kInstrSize;
+ const uint64_t imm26 = instr->SImm26Field();
+ const uint64_t dest = get_pc() + (imm26 << 2);
+ const uint64_t ret = get_pc() + Instr::kInstrSize;
set_pc(dest);
if (link) {
set_register(instr, LR, ret);
@@ -1985,7 +2021,7 @@
const int64_t rn_val = get_register(rn, R31IsSP);
const intptr_t shift = 2 + instr->SFField();
const intptr_t size = 1 << shift;
- const int32_t offset = (instr->SImm7Field() << shift);
+ const int32_t offset = (static_cast<uint32_t>(instr->SImm7Field()) << shift);
uword address = 0;
uword wb_address = 0;
bool wb = false;
@@ -2155,7 +2191,7 @@
int64_t mask = reg_size == kXRegSizeInBits ? kXRegMask : kWRegMask;
switch (shift_type) {
case LSL:
- return (value << amount) & mask;
+ return (static_cast<uint64_t>(value) << amount) & mask;
case LSR:
return static_cast<uint64_t>(value) >> amount;
case ASR: {
@@ -2194,13 +2230,13 @@
value &= 0xffffffff;
break;
case SXTB:
- value = (value << 56) >> 56;
+ value = static_cast<int64_t>(static_cast<uint64_t>(value) << 56) >> 56;
break;
case SXTH:
- value = (value << 48) >> 48;
+ value = static_cast<int64_t>(static_cast<uint64_t>(value) << 48) >> 48;
break;
case SXTW:
- value = (value << 32) >> 32;
+ value = static_cast<int64_t>(static_cast<uint64_t>(value) << 32) >> 32;
break;
case UXTX:
case SXTX:
@@ -2210,7 +2246,7 @@
break;
}
int64_t mask = (reg_size == kXRegSizeInBits) ? kXRegMask : kWRegMask;
- return (value << amount) & mask;
+ return (static_cast<uint64_t>(value) << amount) & mask;
}
int64_t Simulator::DecodeShiftExtendOperand(Instr* instr) {
@@ -2237,11 +2273,11 @@
const bool addition = (instr->Bit(30) == 0);
const Register rd = instr->RdField();
const Register rn = instr->RnField();
- const int64_t rm_val = DecodeShiftExtendOperand(instr);
+ const uint64_t rm_val = DecodeShiftExtendOperand(instr);
if (instr->SFField()) {
// 64-bit add.
- const int64_t rn_val = get_register(rn, instr->RnMode());
- const int64_t alu_out = rn_val + (addition ? rm_val : -rm_val);
+ const uint64_t rn_val = get_register(rn, instr->RnMode());
+ const uint64_t alu_out = rn_val + (addition ? rm_val : -rm_val);
set_register(instr, rd, alu_out, instr->RdMode());
if (instr->HasS()) {
SetNZFlagsX(alu_out);
@@ -2250,14 +2286,14 @@
}
} else {
// 32-bit add.
- const int32_t rn_val = get_wregister(rn, instr->RnMode());
- int32_t rm_val32 = static_cast<int32_t>(rm_val & kWRegMask);
- int32_t carry_in = 0;
+ const uint32_t rn_val = get_wregister(rn, instr->RnMode());
+ uint32_t rm_val32 = static_cast<uint32_t>(rm_val & kWRegMask);
+ uint32_t carry_in = 0;
if (!addition) {
carry_in = 1;
rm_val32 = ~rm_val32;
}
- const int32_t alu_out = rn_val + rm_val32 + carry_in;
+ const uint32_t alu_out = rn_val + rm_val32 + carry_in;
set_wregister(rd, alu_out, instr->RdMode());
if (instr->HasS()) {
SetNZFlagsW(alu_out);
@@ -2274,14 +2310,14 @@
const Register rd = instr->RdField();
const Register rn = instr->RnField();
const Register rm = instr->RmField();
- const int64_t rn_val64 = get_register(rn, R31IsZR);
- const int32_t rn_val32 = get_wregister(rn, R31IsZR);
- const int64_t rm_val64 = get_register(rm, R31IsZR);
- int32_t rm_val32 = get_wregister(rm, R31IsZR);
- const int32_t carry_in = c_flag_ ? 1 : 0;
+ const uint64_t rn_val64 = get_register(rn, R31IsZR);
+ const uint32_t rn_val32 = get_wregister(rn, R31IsZR);
+ const uint64_t rm_val64 = get_register(rm, R31IsZR);
+ uint32_t rm_val32 = get_wregister(rm, R31IsZR);
+ const uint32_t carry_in = c_flag_ ? 1 : 0;
if (instr->SFField()) {
// 64-bit add.
- const int64_t alu_out =
+ const uint64_t alu_out =
rn_val64 + (addition ? rm_val64 : ~rm_val64) + carry_in;
set_register(instr, rd, alu_out, R31IsZR);
if (instr->HasS()) {
@@ -2294,7 +2330,7 @@
if (!addition) {
rm_val32 = ~rm_val32;
}
- const int32_t alu_out = rn_val32 + rm_val32 + carry_in;
+ const uint32_t alu_out = rn_val32 + rm_val32 + carry_in;
set_wregister(rd, alu_out, R31IsZR);
if (instr->HasS()) {
SetNZFlagsW(alu_out);
@@ -2487,10 +2523,12 @@
case 8: {
// Format(instr, "lsl'sf 'rd, 'rn, 'rm");
if (instr->SFField() == 1) {
- const int64_t alu_out = rn_val64 << (rm_val64 & (kXRegSizeInBits - 1));
+ const uint64_t rn_u64 = static_cast<uint64_t>(rn_val64);
+ const int64_t alu_out = rn_u64 << (rm_val64 & (kXRegSizeInBits - 1));
set_register(instr, rd, alu_out, R31IsZR);
} else {
- const int32_t alu_out = rn_val32 << (rm_val32 & (kXRegSizeInBits - 1));
+ const uint32_t rn_u32 = static_cast<uint32_t>(rn_val32);
+ const int32_t alu_out = rn_u32 << (rm_val32 & (kXRegSizeInBits - 1));
set_wregister(rd, alu_out, R31IsZR);
}
break;
@@ -2534,32 +2572,32 @@
(instr->Bit(15) == 0)) {
// Format(instr, "madd'sf 'rd, 'rn, 'rm, 'ra");
if (instr->SFField() == 1) {
- const int64_t rn_val = get_register(rn, R31IsZR);
- const int64_t rm_val = get_register(rm, R31IsZR);
- const int64_t ra_val = get_register(ra, R31IsZR);
- const int64_t alu_out = ra_val + (rn_val * rm_val);
+ const uint64_t rn_val = get_register(rn, R31IsZR);
+ const uint64_t rm_val = get_register(rm, R31IsZR);
+ const uint64_t ra_val = get_register(ra, R31IsZR);
+ const uint64_t alu_out = ra_val + (rn_val * rm_val);
set_register(instr, rd, alu_out, R31IsZR);
} else {
- const int32_t rn_val = get_wregister(rn, R31IsZR);
- const int32_t rm_val = get_wregister(rm, R31IsZR);
- const int32_t ra_val = get_wregister(ra, R31IsZR);
- const int32_t alu_out = ra_val + (rn_val * rm_val);
+ const uint32_t rn_val = get_wregister(rn, R31IsZR);
+ const uint32_t rm_val = get_wregister(rm, R31IsZR);
+ const uint32_t ra_val = get_wregister(ra, R31IsZR);
+ const uint32_t alu_out = ra_val + (rn_val * rm_val);
set_wregister(rd, alu_out, R31IsZR);
}
} else if ((instr->Bits(29, 2) == 0) && (instr->Bits(21, 3) == 0) &&
(instr->Bit(15) == 1)) {
// Format(instr, "msub'sf 'rd, 'rn, 'rm, 'ra");
if (instr->SFField() == 1) {
- const int64_t rn_val = get_register(rn, R31IsZR);
- const int64_t rm_val = get_register(rm, R31IsZR);
- const int64_t ra_val = get_register(ra, R31IsZR);
- const int64_t alu_out = ra_val - (rn_val * rm_val);
+ const uint64_t rn_val = get_register(rn, R31IsZR);
+ const uint64_t rm_val = get_register(rm, R31IsZR);
+ const uint64_t ra_val = get_register(ra, R31IsZR);
+ const uint64_t alu_out = ra_val - (rn_val * rm_val);
set_register(instr, rd, alu_out, R31IsZR);
} else {
- const int32_t rn_val = get_wregister(rn, R31IsZR);
- const int32_t rm_val = get_wregister(rm, R31IsZR);
- const int32_t ra_val = get_wregister(ra, R31IsZR);
- const int32_t alu_out = ra_val - (rn_val * rm_val);
+ const uint32_t rn_val = get_wregister(rn, R31IsZR);
+ const uint32_t rm_val = get_wregister(rm, R31IsZR);
+ const uint32_t ra_val = get_wregister(ra, R31IsZR);
+ const uint32_t alu_out = ra_val - (rn_val * rm_val);
set_wregister(rd, alu_out, R31IsZR);
}
} else if ((instr->Bits(29, 3) == 4) && (instr->Bits(21, 3) == 2) &&
diff --git a/runtime/vm/simulator_arm64.h b/runtime/vm/simulator_arm64.h
index 5d82fb8..9482751 100644
--- a/runtime/vm/simulator_arm64.h
+++ b/runtime/vm/simulator_arm64.h
@@ -68,9 +68,9 @@
int64_t get_sp() const { return get_register(SPREG); }
- int64_t get_pc() const;
- int64_t get_last_pc() const;
- void set_pc(int64_t pc);
+ uint64_t get_pc() const;
+ uint64_t get_last_pc() const;
+ void set_pc(uint64_t pc);
// High address.
uword stack_base() const { return stack_base_; }
diff --git a/runtime/vm/snapshot.cc b/runtime/vm/snapshot.cc
index 1faa561..dc77907 100644
--- a/runtime/vm/snapshot.cc
+++ b/runtime/vm/snapshot.cc
@@ -313,9 +313,6 @@
// Setup for long jump in case there is an exception while reading.
LongJumpScope jump;
if (setjmp(*jump.Set()) == 0) {
- objects_to_rehash_ = GrowableObjectArray::New();
- types_to_postprocess_ = GrowableObjectArray::New();
-
PassiveObject& obj =
PassiveObject::Handle(zone(), ReadObjectImpl(kAsInlinedObject));
for (intptr_t i = 0; i < backward_references_->length(); i++) {
@@ -344,11 +341,14 @@
}
void SnapshotReader::EnqueueTypePostprocessing(const AbstractType& type) {
+ if (types_to_postprocess_.IsNull()) {
+ types_to_postprocess_ = GrowableObjectArray::New();
+ }
types_to_postprocess_.Add(type);
}
void SnapshotReader::RunDelayedTypePostprocessing() {
- if (types_to_postprocess_.Length() == 0) {
+ if (types_to_postprocess_.IsNull()) {
return;
}
@@ -362,11 +362,14 @@
}
void SnapshotReader::EnqueueRehashingOfMap(const LinkedHashMap& map) {
+ if (objects_to_rehash_.IsNull()) {
+ objects_to_rehash_ = GrowableObjectArray::New();
+ }
objects_to_rehash_.Add(map);
}
ObjectPtr SnapshotReader::RunDelayedRehashingOfMaps() {
- if (objects_to_rehash_.Length() > 0) {
+ if (!objects_to_rehash_.IsNull()) {
const Library& collections_lib =
Library::Handle(zone_, Library::CollectionLibrary());
const Function& rehashing_function = Function::Handle(
@@ -575,6 +578,9 @@
}
void SnapshotReader::EnqueueRehashingOfSet(const Object& set) {
+ if (objects_to_rehash_.IsNull()) {
+ objects_to_rehash_ = GrowableObjectArray::New();
+ }
objects_to_rehash_.Add(set);
}
diff --git a/runtime/vm/snapshot_test.cc b/runtime/vm/snapshot_test.cc
index b0d9974..4be78c66 100644
--- a/runtime/vm/snapshot_test.cc
+++ b/runtime/vm/snapshot_test.cc
@@ -1078,16 +1078,16 @@
" return ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];\n"
"}\n"
"getListList() {\n"
- " return [[],"
- " [0],"
- " [0, 1],"
- " [0, 1, 2],"
- " [0, 1, 2, 3],"
- " [0, 1, 2, 3, 4],"
- " [0, 1, 2, 3, 4, 5],"
- " [0, 1, 2, 3, 4, 5, 6],"
- " [0, 1, 2, 3, 4, 5, 6, 7],"
- " [0, 1, 2, 3, 4, 5, 6, 7, 8]];\n"
+ " return <dynamic>[[],"
+ " [0],"
+ " [0, 1],"
+ " [0, 1, 2],"
+ " [0, 1, 2, 3],"
+ " [0, 1, 2, 3, 4],"
+ " [0, 1, 2, 3, 4, 5],"
+ " [0, 1, 2, 3, 4, 5, 6],"
+ " [0, 1, 2, 3, 4, 5, 6, 7],"
+ " [0, 1, 2, 3, 4, 5, 6, 7, 8]];\n"
"}\n"
"getMixedList() {\n"
" var list = [];\n"
@@ -1096,10 +1096,10 @@
" list.add(2.2);\n"
" list.add(true);\n"
" list.add([]);\n"
- " list.add([[]]);\n"
- " list.add([[[]]]);\n"
- " list.add([1, [2, [3]]]);\n"
- " list.add([1, [1, 2, [1, 2, 3]]]);\n"
+ " list.add(<dynamic>[[]]);\n"
+ " list.add(<dynamic>[<dynamic>[[]]]);\n"
+ " list.add(<dynamic>[1, <dynamic>[2, [3]]]);\n"
+ " list.add(<dynamic>[1, <dynamic>[1, 2, [1, 2, 3]]]);\n"
" list.add([1, 2, 3]);\n"
" return list;\n"
"}\n";
diff --git a/runtime/vm/symbols.h b/runtime/vm/symbols.h
index df9470a..338b6b3 100644
--- a/runtime/vm/symbols.h
+++ b/runtime/vm/symbols.h
@@ -208,7 +208,6 @@
V(Map, "Map") \
V(MapLiteralFactory, "Map._fromLiteral") \
V(MegamorphicCache, "MegamorphicCache") \
- V(MegamorphicCallMiss, "megamorphic_call_miss") \
V(MonomorphicSmiableCall, "MonomorphicSmiableCall") \
V(MoveNext, "moveNext") \
V(Namespace, "Namespace") \
diff --git a/runtime/vm/thread_pool.cc b/runtime/vm/thread_pool.cc
index 0199a1b..93df2ff 100644
--- a/runtime/vm/thread_pool.cc
+++ b/runtime/vm/thread_pool.cc
@@ -96,6 +96,53 @@
return true;
}
+bool ThreadPool::CurrentThreadIsWorker() {
+ auto worker =
+ static_cast<Worker*>(OSThread::Current()->owning_thread_pool_worker_);
+ return worker != nullptr && worker->pool_ == this;
+}
+
+void ThreadPool::MarkCurrentWorkerAsBlocked() {
+ auto worker =
+ static_cast<Worker*>(OSThread::Current()->owning_thread_pool_worker_);
+ Worker* new_worker = nullptr;
+ if (worker != nullptr) {
+ MonitorLocker ml(&pool_monitor_);
+ ASSERT(!worker->is_blocked_);
+ worker->is_blocked_ = true;
+ if (max_pool_size_ > 0) {
+ ++max_pool_size_;
+ // This thread is blocked and therefore no longer usable as a worker.
+ // If we have pending tasks and there are no idle workers, we will spawn a
+ // new thread (temporarily allow exceeding the maximum pool size) to
+ // handle the pending tasks.
+ if (idle_workers_.IsEmpty() && pending_tasks_ > 0) {
+ new_worker = new Worker(this);
+ idle_workers_.Append(new_worker);
+ count_idle_++;
+ }
+ }
+ }
+ if (new_worker != nullptr) {
+ new_worker->StartThread();
+ }
+}
+
+void ThreadPool::MarkCurrentWorkerAsUnBlocked() {
+ auto worker =
+ static_cast<Worker*>(OSThread::Current()->owning_thread_pool_worker_);
+ if (worker != nullptr) {
+ MonitorLocker ml(&pool_monitor_);
+ if (worker->is_blocked_) {
+ worker->is_blocked_ = false;
+ if (max_pool_size_ > 0) {
+ --max_pool_size_;
+ ASSERT(max_pool_size_ > 0);
+ }
+ }
+ }
+}
+
void ThreadPool::WorkerLoop(Worker* worker) {
WorkerList dead_workers_to_join;
@@ -260,7 +307,8 @@
Worker* worker = reinterpret_cast<Worker*>(args);
ThreadPool* pool = worker->pool_;
- os_thread->owning_thread_pool_ = pool;
+ os_thread->owning_thread_pool_worker_ = worker;
+ worker->os_thread_ = os_thread;
// Once the worker quits it needs to be joined.
worker->join_id_ = OSThread::GetCurrentThreadJoinId(os_thread);
@@ -274,7 +322,8 @@
pool->WorkerLoop(worker);
- os_thread->owning_thread_pool_ = nullptr;
+ worker->os_thread_ = nullptr;
+ os_thread->owning_thread_pool_worker_ = nullptr;
// Call the thread exit hook here to notify the embedder that the
// thread pool thread is exiting.
diff --git a/runtime/vm/thread_pool.h b/runtime/vm/thread_pool.h
index c0c532c..750973a 100644
--- a/runtime/vm/thread_pool.h
+++ b/runtime/vm/thread_pool.h
@@ -46,6 +46,18 @@
return RunImpl(std::unique_ptr<Task>(new T(std::forward<Args>(args)...)));
}
+ // Returns `true` if the current thread is runing on the [this] thread pool.
+ bool CurrentThreadIsWorker();
+
+ // Mark the current thread as being blocked (e.g. in native code). This might
+ // temporarily increase the max thread pool size.
+ void MarkCurrentWorkerAsBlocked();
+
+ // Mark the current thread as being unblocked. Must be called iff
+ // [MarkCurrentWorkerAsBlocked] was called before and the thread is now ready
+ // to coninue executing.
+ void MarkCurrentWorkerAsUnBlocked();
+
// Triggers shutdown, prevents scheduling of new tasks.
void Shutdown();
@@ -73,6 +85,8 @@
// thread.
ThreadPool* pool_;
ThreadJoinId join_id_;
+ OSThread* os_thread_ = nullptr;
+ bool is_blocked_ = false;
DISALLOW_COPY_AND_ASSIGN(Worker);
};
diff --git a/runtime/vm/timeline.cc b/runtime/vm/timeline.cc
index afbd027..2fe569c 100644
--- a/runtime/vm/timeline.cc
+++ b/runtime/vm/timeline.cc
@@ -9,6 +9,7 @@
#include <errno.h>
#include <fcntl.h>
+
#include <cstdlib>
#include "platform/atomic.h"
@@ -263,6 +264,15 @@
}
#ifndef PRODUCT
+void Timeline::PrintFlagsToJSONArray(JSONArray* arr) {
+#define ADD_RECORDED_STREAM_NAME(name, fuchsia_name) \
+ if (stream_##name##_.enabled()) { \
+ arr->AddValue(#name); \
+ }
+ TIMELINE_STREAM_LIST(ADD_RECORDED_STREAM_NAME);
+#undef ADD_RECORDED_STREAM_NAME
+}
+
void Timeline::PrintFlagsToJSON(JSONStream* js) {
JSONObject obj(js);
obj.AddProperty("type", "TimelineFlags");
diff --git a/runtime/vm/timeline.h b/runtime/vm/timeline.h
index 8841258..57f0dc7 100644
--- a/runtime/vm/timeline.h
+++ b/runtime/vm/timeline.h
@@ -132,6 +132,9 @@
#ifndef PRODUCT
// Print information about streams to JSON.
static void PrintFlagsToJSON(JSONStream* json);
+
+ // Output the recorded streams to a JSONS array.
+ static void PrintFlagsToJSONArray(JSONArray* arr);
#endif
#define TIMELINE_STREAM_ACCESSOR(name, fuchsia_name) \
diff --git a/runtime/vm/zone.cc b/runtime/vm/zone.cc
index 7859112..3b457a2 100644
--- a/runtime/vm/zone.cc
+++ b/runtime/vm/zone.cc
@@ -5,6 +5,7 @@
#include "vm/zone.h"
#include "platform/assert.h"
+#include "platform/leak_sanitizer.h"
#include "platform/utils.h"
#include "vm/dart_api_state.h"
#include "vm/flags.h"
diff --git a/sdk/BUILD.gn b/sdk/BUILD.gn
index 8579a96..1c60679 100644
--- a/sdk/BUILD.gn
+++ b/sdk/BUILD.gn
@@ -511,7 +511,7 @@
# This is the main target for copying scripts in _platform_sdk_scripts to bin/
group("copy_platform_sdk_scripts") {
- visibility = [ ":create_platform_sdk" ]
+ visibility = [ ":_create_platform_sdk" ]
public_deps = []
foreach(sdk_script, _platform_sdk_scripts) {
public_deps += [ ":copy_${sdk_script}_script" ]
@@ -556,7 +556,7 @@
# This is the main rule for copying snapshots from _platform_sdk_snapshots to
# bin/snapshots
group("copy_platform_sdk_snapshots") {
- visibility = [ ":create_platform_sdk" ]
+ visibility = [ ":_create_platform_sdk" ]
public_deps = []
foreach(snapshot, _platform_sdk_snapshots) {
public_deps += [ ":copy_${snapshot[0]}_snapshot" ]
@@ -743,7 +743,7 @@
# This is the main rule to copy libraries in _platform_sdk_libraries to lib/
group("copy_platform_sdk_libraries") {
visibility = [
- ":create_platform_sdk",
+ ":_create_platform_sdk",
":copy_libraries",
]
public_deps = []
@@ -851,7 +851,10 @@
# Parts common to both platform and full SDKs.
group("create_common_sdk") {
- visibility = [ ":create_sdk" ]
+ visibility = [
+ ":create_sdk",
+ ":create_platform_sdk",
+ ]
public_deps = [
":copy_analysis_summaries",
":copy_api_readme",
@@ -886,8 +889,11 @@
}
# Parts specific to the platform SDK.
-group("create_platform_sdk") {
- visibility = [ ":create_sdk" ]
+group("_create_platform_sdk") {
+ visibility = [
+ ":create_sdk",
+ ":create_platform_sdk",
+ ]
public_deps = [
":copy_platform_sdk_libraries",
":copy_platform_sdk_scripts",
@@ -908,11 +914,19 @@
]
}
+# Build a SDK with less stuff. It excludes dart2js, ddc, and web libraries.
+group("create_platform_sdk") {
+ public_deps = [
+ ":_create_platform_sdk",
+ ":create_common_sdk",
+ ]
+}
+
# The main target to depend on from ../BUILD.gn
group("create_sdk") {
public_deps = [ ":create_common_sdk" ]
if (dart_platform_sdk) {
- public_deps += [ ":create_platform_sdk" ]
+ public_deps += [ ":_create_platform_sdk" ]
} else {
public_deps += [ ":create_full_sdk" ]
}
diff --git a/sdk/lib/_internal/js_dev_runtime/patch/convert_patch.dart b/sdk/lib/_internal/js_dev_runtime/patch/convert_patch.dart
index cdc7370..ad45663 100644
--- a/sdk/lib/_internal/js_dev_runtime/patch/convert_patch.dart
+++ b/sdk/lib/_internal/js_dev_runtime/patch/convert_patch.dart
@@ -394,6 +394,10 @@
@patch
class Utf8Decoder {
+ // Always fall back to the Dart implementation for strings shorter than this
+ // threshold, as there is a large, constant overhead for using TextDecoder.
+ static const int _shortInputThreshold = 15;
+
@patch
Converter<List<int>, T> fuse<T>(Converter<String, T> next) {
return super.fuse(next);
@@ -408,48 +412,43 @@
if (JS<bool>('!', '# instanceof Uint8Array', codeUnits)) {
// JS 'cast' to avoid a downcast equivalent to the is-check we hand-coded.
NativeUint8List casted = JS<NativeUint8List>('!', '#', codeUnits);
- return _convertInterceptedUint8List(allowMalformed, casted, start, end);
+ // Always use Dart implementation for short strings.
+ end ??= casted.length;
+ if (end - start < _shortInputThreshold) {
+ return null;
+ }
+ String result =
+ _convertInterceptedUint8List(allowMalformed, casted, start, end);
+ if (result != null && allowMalformed) {
+ // In principle, TextDecoder should have provided the correct result
+ // here, but some browsers deviate from the standard as to how many
+ // replacement characters they produce. Thus, we fall back to the Dart
+ // implementation if the result contains any replacement characters.
+ if (JS<int>('int', r'#.indexOf(#)', result, '\uFFFD') >= 0) {
+ return null;
+ }
+ }
+ return result;
}
+ return null; // This call was not intercepted.
}
static String _convertInterceptedUint8List(
bool allowMalformed, NativeUint8List codeUnits, int start, int end) {
- if (allowMalformed) {
- // TextDecoder with option {fatal: false} does not produce the same result
- // as [Utf8Decoder]. It disagrees on the number of `U+FFFD` (REPLACEMENT
- // CHARACTER) generated for some malformed sequences. We could use
- // TextDecoder with option {fatal: true}, catch the error, and re-try
- // without acceleration. That turns out to be extremely slow (the Error
- // captures a stack trace).
- // TODO(31370): Bring Utf8Decoder into alignment with TextDecoder.
- // TODO(sra): If we can't do that, can we detect valid input fast enough
- // to use a check like the [_unsafe] check below?
- return null;
- }
-
- var decoder = _decoder;
+ final decoder = allowMalformed ? _decoderNonfatal : _decoder;
if (decoder == null) return null;
- if (0 == start && end == null) {
- return _useTextDecoderChecked(decoder, codeUnits);
+ if (0 == start && end == codeUnits.length) {
+ return _useTextDecoder(decoder, codeUnits);
}
int length = codeUnits.length;
end = RangeError.checkValidRange(start, end, length);
- if (0 == start && end == codeUnits.length) {
- return _useTextDecoderChecked(decoder, codeUnits);
- }
-
- return _useTextDecoderChecked(decoder,
+ return _useTextDecoder(decoder,
JS<NativeUint8List>('!', '#.subarray(#, #)', codeUnits, start, end));
}
- static String _useTextDecoderChecked(decoder, NativeUint8List codeUnits) {
- if (_unsafe(codeUnits)) return null;
- return _useTextDecoderUnchecked(decoder, codeUnits);
- }
-
- static String _useTextDecoderUnchecked(decoder, NativeUint8List codeUnits) {
+ static String _useTextDecoder(decoder, NativeUint8List codeUnits) {
// If the input is malformed, catch the exception and return `null` to fall
// back on unintercepted decoder. The fallback will either succeed in
// decoding, or report the problem better than TextDecoder.
@@ -459,44 +458,20 @@
return null;
}
- /// Returns `true` if [codeUnits] contains problematic encodings.
- ///
- /// TextDecoder behaves differently to [Utf8Encoder] when the input encodes a
- /// surrogate (U+D800 through U+DFFF). TextDecoder considers the surrogate to
- /// be an encoding error and, depending on the `fatal` option, either throws
- /// and Error or encodes the surrogate as U+FFFD. [Utf8Decoder] does not
- /// consider the surrogate to be an error and returns the code unit encoded by
- /// the surrogate.
- ///
- /// Throwing an `Error` captures the stack, whoch makes it so expensive that
- /// it is worth checking the input for surrogates and avoiding TextDecoder in
- /// this case.
- static bool _unsafe(NativeUint8List codeUnits) {
- // Surrogates encode as (hex) ED Ax xx or ED Bx xx.
- int limit = codeUnits.length - 2;
- for (int i = 0; i < limit; i++) {
- int unit1 = codeUnits[i];
- if (unit1 == 0xED) {
- int unit2 = JS('!', '#', codeUnits[i + 1]);
- if ((unit2 & 0xE0) == 0xA0) return true;
- }
- }
- return false;
- }
-
- //// TextDecoder is not defined on some browsers and on the stand-alone d8 and
- /// jsshell engines. Use a lazy initializer to do feature detection once.
+ // TextDecoder is not defined on some browsers and on the stand-alone d8 and
+ // jsshell engines. Use a lazy initializer to do feature detection once.
static final _decoder = () {
try {
- // Use `{fatal: true}`. 'fatal' does not correspond exactly to
- // `!allowMalformed`: TextDecoder rejects unpaired surrogates which
- // [Utf8Decoder] accepts. In non-fatal mode, TextDecoder translates
- // unpaired surrogates to REPLACEMENT CHARACTER (U+FFFD) whereas
- // [Utf8Decoder] leaves the surrogate intact.
return JS('', 'new TextDecoder("utf-8", {fatal: true})');
} catch (e) {}
return null;
}();
+ static final _decoderNonfatal = () {
+ try {
+ return JS('', 'new TextDecoder("utf-8", {fatal: false})');
+ } catch (e) {}
+ return null;
+ }();
}
@patch
diff --git a/sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart b/sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart
index 7c14c7a..1cd70d4 100644
--- a/sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart
+++ b/sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart
@@ -217,6 +217,11 @@
}
@patch
+bool _isDirectIOCapableTypedList(List<int> buffer) {
+ return buffer is Uint8List || buffer is Int8List;
+}
+
+@patch
class _IOCrypto {
@patch
static Uint8List getRandomBytes(int count) {
diff --git a/sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart b/sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart
index 443711a..313bdc3 100644
--- a/sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart
+++ b/sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart
@@ -783,6 +783,7 @@
$_resetFields.push(() => {
init = initializer;
value = null;
+ executed = false;
});
executed = true;
}
@@ -795,6 +796,7 @@
$desc.set = function(x) {
init = null;
value = x;
+ // executed is dead since init is set to null
};
}
return ${defineProperty(to, name, desc)};
diff --git a/sdk/lib/_internal/js_runtime/lib/convert_patch.dart b/sdk/lib/_internal/js_runtime/lib/convert_patch.dart
index c2dc264..bcd9ef6 100644
--- a/sdk/lib/_internal/js_runtime/lib/convert_patch.dart
+++ b/sdk/lib/_internal/js_runtime/lib/convert_patch.dart
@@ -387,6 +387,10 @@
@patch
class Utf8Decoder {
+ // Always fall back to the Dart implementation for strings shorter than this
+ // threshold, as there is a large, constant overhead for using TextDecoder.
+ static const int _shortInputThreshold = 15;
+
@patch
Converter<List<int>, T> fuse<T>(Converter<String, T> next) {
return super.fuse(next);
@@ -400,49 +404,43 @@
if (JS('bool', '# instanceof Uint8Array', codeUnits)) {
// JS 'cast' to avoid a downcast equivalent to the is-check we hand-coded.
NativeUint8List casted = JS('NativeUint8List', '#', codeUnits);
- return _convertInterceptedUint8List(allowMalformed, casted, start, end);
+ // Always use Dart implementation for short strings.
+ end ??= casted.length;
+ if (end - start < _shortInputThreshold) {
+ return null;
+ }
+ String result =
+ _convertInterceptedUint8List(allowMalformed, casted, start, end);
+ if (result != null && allowMalformed) {
+ // In principle, TextDecoder should have provided the correct result
+ // here, but some browsers deviate from the standard as to how many
+ // replacement characters they produce. Thus, we fall back to the Dart
+ // implementation if the result contains any replacement characters.
+ if (JS<int>('int', r'#.indexOf(#)', result, '\uFFFD') >= 0) {
+ return null;
+ }
+ }
+ return result;
}
return null; // This call was not intercepted.
}
static String _convertInterceptedUint8List(
bool allowMalformed, NativeUint8List codeUnits, int start, int end) {
- if (allowMalformed) {
- // TextDecoder with option {fatal: false} does not produce the same result
- // as [Utf8Decoder]. It disagrees on the number of `U+FFFD` (REPLACEMENT
- // CHARACTER) generated for some malformed sequences. We could use
- // TextDecoder with option {fatal: true}, catch the error, and re-try
- // without acceleration. That turns out to be extremely slow (the Error
- // captures a stack trace).
- // TODO(31370): Bring Utf8Decoder into alignment with TextDecoder.
- // TODO(sra): If we can't do that, can we detect valid input fast enough
- // to use a check like the [_unsafe] check below?
- return null;
- }
-
- var decoder = _decoder;
+ final decoder = allowMalformed ? _decoderNonfatal : _decoder;
if (decoder == null) return null;
- if (0 == start && end == null) {
- return _useTextDecoderChecked(decoder, codeUnits);
+ if (0 == start && end == codeUnits.length) {
+ return _useTextDecoder(decoder, codeUnits);
}
int length = codeUnits.length;
end = RangeError.checkValidRange(start, end, length);
- if (0 == start && end == codeUnits.length) {
- return _useTextDecoderChecked(decoder, codeUnits);
- }
-
- return _useTextDecoderChecked(decoder,
+ return _useTextDecoder(decoder,
JS('NativeUint8List', '#.subarray(#, #)', codeUnits, start, end));
}
- static String _useTextDecoderChecked(decoder, NativeUint8List codeUnits) {
- if (_unsafe(codeUnits)) return null;
- return _useTextDecoderUnchecked(decoder, codeUnits);
- }
-
- static String _useTextDecoderUnchecked(decoder, NativeUint8List codeUnits) {
+ static String _useTextDecoder(decoder, NativeUint8List codeUnits) {
// If the input is malformed, catch the exception and return `null` to fall
// back on unintercepted decoder. The fallback will either succeed in
// decoding, or report the problem better than TextDecoder.
@@ -452,45 +450,20 @@
return null;
}
- /// Returns `true` if [codeUnits] contains problematic encodings.
- ///
- /// TextDecoder behaves differently to [Utf8Encoder] when the input encodes a
- /// surrogate (U+D800 through U+DFFF). TextDecoder considers the surrogate to
- /// be an encoding error and, depending on the `fatal` option, either throws
- /// and Error or encodes the surrogate as U+FFFD. [Utf8Decoder] does not
- /// consider the surrogate to be an error and returns the code unit encoded by
- /// the surrogate.
- ///
- /// Throwing an `Error` captures the stack, whoch makes it so expensive that
- /// it is worth checking the input for surrogates and avoiding TextDecoder in
- /// this case.
- static bool _unsafe(NativeUint8List codeUnits) {
- // Surrogates encode as (hex) ED Ax xx or ED Bx xx.
- int limit = codeUnits.length - 2;
- for (int i = 0; i < limit; i++) {
- int unit1 = codeUnits[i];
- if (unit1 == 0xED) {
- int unit2 = codeUnits[i + 1];
- if ((unit2 & 0xE0) == 0xA0) return true;
- }
- }
- return false;
- }
-
// TextDecoder is not defined on some browsers and on the stand-alone d8 and
// jsshell engines. Use a lazy initializer to do feature detection once.
- static final _decoder = _makeDecoder();
- static _makeDecoder() {
+ static final _decoder = () {
try {
- // Use `{fatal: true}`. 'fatal' does not correspond exactly to
- // `!allowMalformed`: TextDecoder rejects unpaired surrogates which
- // [Utf8Decoder] accepts. In non-fatal mode, TextDecoder translates
- // unpaired surrogates to REPLACEMENT CHARACTER (U+FFFD) whereas
- // [Utf8Decoder] leaves the surrogate intact.
return JS('', 'new TextDecoder("utf-8", {fatal: true})');
} catch (e) {}
return null;
- }
+ }();
+ static final _decoderNonfatal = () {
+ try {
+ return JS('', 'new TextDecoder("utf-8", {fatal: false})');
+ } catch (e) {}
+ return null;
+ }();
}
@patch
diff --git a/sdk/lib/_internal/js_runtime/lib/io_patch.dart b/sdk/lib/_internal/js_runtime/lib/io_patch.dart
index 08405ab..ad5c3ac 100644
--- a/sdk/lib/_internal/js_runtime/lib/io_patch.dart
+++ b/sdk/lib/_internal/js_runtime/lib/io_patch.dart
@@ -217,6 +217,11 @@
}
@patch
+bool _isDirectIOCapableTypedList(List<int> buffer) {
+ return buffer is Uint8List || buffer is Int8List;
+}
+
+@patch
class _IOCrypto {
@patch
static Uint8List getRandomBytes(int count) {
diff --git a/sdk/lib/_internal/vm/bin/builtin.dart b/sdk/lib/_internal/vm/bin/builtin.dart
index 129d1fc..e54b92b 100644
--- a/sdk/lib/_internal/vm/bin/builtin.dart
+++ b/sdk/lib/_internal/vm/bin/builtin.dart
@@ -338,33 +338,13 @@
while (true) {
final dirUri = currentDir.uri;
- // We prefer using `.packages` over `.dart_tool/package_config.json` so
- // old users of `Isolate.packageConfig` which cannot handle the new format
- // will continue to work (see https://github.com/dart-lang/sdk/issues/41748).
- final packagesFile = dirUri.resolve(".packages");
- if (traceLoading) {
- _log("Checking for $packagesFile file.");
- }
- File file = File.fromUri(packagesFile);
- bool exists = file.existsSync();
- if (traceLoading) {
- _log("$packagesFile exists: $exists");
- }
- if (exists) {
- final String data = utf8.decode(file.readAsBytesSync());
- if (traceLoading) {
- _log("Loaded packages file from $packagesFile:\n$data");
- }
- return _parsePackagesFile(traceLoading, packagesFile, data);
- }
-
- // We fallback to using `.dart_tool/package_config.json` if it exists.
+ // We prefer using `.dart_tool/package_config.json` over `.packages`.
final packageConfig = dirUri.resolve(".dart_tool/package_config.json");
if (traceLoading) {
_log("Checking for $packageConfig file.");
}
- file = File.fromUri(packageConfig);
- exists = file.existsSync();
+ File file = File.fromUri(packageConfig);
+ bool exists = file.existsSync();
if (traceLoading) {
_log("$packageConfig exists: $exists");
}
@@ -376,6 +356,24 @@
return _parsePackageConfig(traceLoading, packageConfig, data);
}
+ // We fallback to using `.packages` if it exists.
+ final packagesFile = dirUri.resolve(".packages");
+ if (traceLoading) {
+ _log("Checking for $packagesFile file.");
+ }
+ file = File.fromUri(packagesFile);
+ exists = file.existsSync();
+ if (traceLoading) {
+ _log("$packagesFile exists: $exists");
+ }
+ if (exists) {
+ final String data = utf8.decode(file.readAsBytesSync());
+ if (traceLoading) {
+ _log("Loaded packages file from $packagesFile:\n$data");
+ }
+ return _parsePackagesFile(traceLoading, packagesFile, data);
+ }
+
final parentDir = currentDir.parent;
if (dirUri == parentDir.uri) break;
currentDir = parentDir;
diff --git a/sdk/lib/_internal/vm/bin/common_patch.dart b/sdk/lib/_internal/vm/bin/common_patch.dart
index 1b69371..1cd7847 100644
--- a/sdk/lib/_internal/vm/bin/common_patch.dart
+++ b/sdk/lib/_internal/vm/bin/common_patch.dart
@@ -9,7 +9,7 @@
/// patches of that library. We plan to change this when we have a shared front
/// end and simply use parts.
-import "dart:_internal" show VMLibraryHooks, patch;
+import "dart:_internal" show VMLibraryHooks, patch, ClassID;
import "dart:async"
show
@@ -52,6 +52,12 @@
// part "sync_socket_patch.dart";
@patch
+bool _isDirectIOCapableTypedList(List<int> buffer) {
+ int classID = ClassID.getID(buffer);
+ return classID == ClassID.cidUint8Array || classID == ClassID.cidInt8Array;
+}
+
+@patch
class _IOCrypto {
@patch
static Uint8List getRandomBytes(int count) native "Crypto_GetRandomBytes";
diff --git a/sdk/lib/_internal/vm/lib/class_id_fasta.dart b/sdk/lib/_internal/vm/lib/class_id_fasta.dart
index 8732d2e..e7e94ad 100644
--- a/sdk/lib/_internal/vm/lib/class_id_fasta.dart
+++ b/sdk/lib/_internal/vm/lib/class_id_fasta.dart
@@ -26,4 +26,8 @@
static final int cidTwoByteString = 0;
@pragma("vm:entry-point")
static final int cidUint8ArrayView = 0;
+ @pragma("vm:entry-point")
+ static final int cidUint8Array = 0;
+ @pragma("vm:entry-point")
+ static final int cidInt8Array = 0;
}
diff --git a/sdk/lib/_internal/vm/lib/convert_patch.dart b/sdk/lib/_internal/vm/lib/convert_patch.dart
index 33215c7..9191e40 100644
--- a/sdk/lib/_internal/vm/lib/convert_patch.dart
+++ b/sdk/lib/_internal/vm/lib/convert_patch.dart
@@ -9,7 +9,15 @@
/// used by patches of that library. We plan to change this when we have a
/// shared front end and simply use parts.
-import "dart:_internal" show POWERS_OF_TEN, patch, ClassID;
+import "dart:_internal"
+ show
+ allocateOneByteString,
+ allocateTwoByteString,
+ ClassID,
+ patch,
+ POWERS_OF_TEN,
+ writeIntoOneByteString,
+ writeIntoTwoByteString;
import "dart:typed_data" show Uint8List, Uint16List;
@@ -1909,7 +1917,7 @@
assert(start < end);
// TODO(dartbug.com/41704): Allocate an uninitialized _OneByteString and
// write characters to it using _setAt.
- Uint8List chars = Uint8List(size);
+ final String result = allocateOneByteString(size);
int i = start;
int j = 0;
if (_state == X1) {
@@ -1921,7 +1929,7 @@
_charOrIndex = i - 1;
return "";
}
- chars[j++] = (_charOrIndex << 6) | e;
+ writeIntoOneByteString(result, j++, (_charOrIndex << 6) | e);
_state = accept;
}
assert(_state == accept);
@@ -1947,14 +1955,14 @@
}
byte = (byte << 6) | e;
}
- chars[j++] = byte;
+ writeIntoOneByteString(result, j++, byte);
}
// Output size must match, unless we are doing single conversion and are
// inside an unfinished sequence (which will trigger an error later).
assert(_bomIndex == 0 && _state != accept
? (j == size - 1 || j == size - 2)
: (j == size));
- return String.fromCharCodes(chars);
+ return result;
}
String decode16(Uint8List bytes, int start, int end, int size) {
@@ -1963,7 +1971,7 @@
final String transitionTable = _Utf8Decoder.transitionTable;
// TODO(dartbug.com/41704): Allocate an uninitialized _TwoByteString and
// write characters to it using _setAt.
- Uint16List chars = Uint16List(size);
+ final String result = allocateTwoByteString(size);
int i = start;
int j = 0;
int state = _state;
@@ -1987,10 +1995,10 @@
if (state == accept) {
if (char >= 0x10000) {
assert(char < 0x110000);
- chars[j++] = 0xD7C0 + (char >> 10);
- chars[j++] = 0xDC00 + (char & 0x3FF);
+ writeIntoTwoByteString(result, j++, 0xD7C0 + (char >> 10));
+ writeIntoTwoByteString(result, j++, 0xDC00 + (char & 0x3FF));
} else {
- chars[j++] = char;
+ writeIntoTwoByteString(result, j++, char);
}
char = byte & (shiftedByteMask >> type);
state = transitionTable.codeUnitAt(type);
@@ -2008,10 +2016,10 @@
if (state == accept) {
if (char >= 0x10000) {
assert(char < 0x110000);
- chars[j++] = 0xD7C0 + (char >> 10);
- chars[j++] = 0xDC00 + (char & 0x3FF);
+ writeIntoTwoByteString(result, j++, 0xD7C0 + (char >> 10));
+ writeIntoTwoByteString(result, j++, 0xDC00 + (char & 0x3FF));
} else {
- chars[j++] = char;
+ writeIntoTwoByteString(result, j++, char);
}
} else if (isErrorState(state)) {
_state = state;
@@ -2026,6 +2034,6 @@
assert(_bomIndex == 0 && _state != accept
? (j == size - 1 || j == size - 2)
: (j == size));
- return String.fromCharCodes(chars);
+ return result;
}
}
diff --git a/sdk/lib/_internal/vm/lib/core_patch.dart b/sdk/lib/_internal/vm/lib/core_patch.dart
index 81bb93d..65d9845 100644
--- a/sdk/lib/_internal/vm/lib/core_patch.dart
+++ b/sdk/lib/_internal/vm/lib/core_patch.dart
@@ -13,6 +13,8 @@
import "dart:_internal"
show
+ allocateOneByteString,
+ allocateTwoByteString,
ClassID,
CodeUnits,
EfficientLengthIterable,
@@ -27,7 +29,9 @@
makeFixedListUnmodifiable,
makeListFixedLength,
patch,
- unsafeCast;
+ unsafeCast,
+ writeIntoOneByteString,
+ writeIntoTwoByteString;
import "dart:async" show Completer, Future, Timer;
diff --git a/sdk/lib/_internal/vm/lib/internal_patch.dart b/sdk/lib/_internal/vm/lib/internal_patch.dart
index 0aa7290..074cb11 100644
--- a/sdk/lib/_internal/vm/lib/internal_patch.dart
+++ b/sdk/lib/_internal/vm/lib/internal_patch.dart
@@ -31,6 +31,26 @@
Object extractTypeArguments<T>(T instance, Function extract)
native "Internal_extractTypeArguments";
+/// The returned string is a [_OneByteString] with uninitialized content.
+@pragma("vm:entry-point", "call")
+String allocateOneByteString(int length)
+ native "Internal_allocateOneByteString";
+
+/// The [string] must be a [_OneByteString]. The [index] must be valid.
+@pragma("vm:entry-point", "call")
+void writeIntoOneByteString(String string, int index, int codePoint)
+ native "Internal_writeIntoOneByteString";
+
+/// The returned string is a [_TwoByteString] with uninitialized content.
+@pragma("vm:entry-point", "call")
+String allocateTwoByteString(int length)
+ native "Internal_allocateTwoByteString";
+
+/// The [string] must be a [_TwoByteString]. The [index] must be valid.
+@pragma("vm:entry-point", "call")
+void writeIntoTwoByteString(String string, int index, int codePoint)
+ native "Internal_writeIntoTwoByteString";
+
class VMLibraryHooks {
// Example: "dart:isolate _Timer._factory"
static var timerFactory;
diff --git a/sdk/lib/_internal/vm/lib/string_patch.dart b/sdk/lib/_internal/vm/lib/string_patch.dart
index 34c5bac..c5d4ff49 100644
--- a/sdk/lib/_internal/vm/lib/string_patch.dart
+++ b/sdk/lib/_internal/vm/lib/string_patch.dart
@@ -1224,14 +1224,20 @@
// Allocates a string of given length, expecting its content to be
// set using _setAt.
@pragma("vm:exact-result-type", _OneByteString)
- static _OneByteString _allocate(int length) native "OneByteString_allocate";
+ @pragma("vm:prefer-inline")
+ static _OneByteString _allocate(int length) {
+ return unsafeCast<_OneByteString>(allocateOneByteString(length));
+ }
static _OneByteString _allocateFromOneByteList(List<int> list, int start,
int end) native "OneByteString_allocateFromOneByteList";
// This is internal helper method. Code point value must be a valid
// Latin1 value (0..0xFF), index must be valid.
- void _setAt(int index, int codePoint) native "OneByteString_setAt";
+ @pragma("vm:prefer-inline")
+ void _setAt(int index, int codePoint) {
+ writeIntoOneByteString(this, index, codePoint);
+ }
// Should be optimizable to a memory move.
// Accepts both _OneByteString and _ExternalOneByteString as argument.
@@ -1257,9 +1263,24 @@
throw "Unreachable";
}
+ // Allocates a string of given length, expecting its content to be
+ // set using _setAt.
+ @pragma("vm:exact-result-type", _TwoByteString)
+ @pragma("vm:prefer-inline")
+ static _TwoByteString _allocate(int length) {
+ return unsafeCast<_TwoByteString>(allocateTwoByteString(length));
+ }
+
static String _allocateFromTwoByteList(List<int> list, int start, int end)
native "TwoByteString_allocateFromTwoByteList";
+ // This is internal helper method. Code point value must be a valid
+ // UTF-16 value (0..0xFFFF), index must be valid.
+ @pragma("vm:prefer-inline")
+ void _setAt(int index, int codePoint) {
+ writeIntoTwoByteString(this, index, codePoint);
+ }
+
bool _isWhitespace(int codeUnit) {
return _StringBase._isTwoByteWhitespace(codeUnit);
}
diff --git a/sdk/lib/convert/utf.dart b/sdk/lib/convert/utf.dart
index 3d08ad7..2a1e198 100644
--- a/sdk/lib/convert/utf.dart
+++ b/sdk/lib/convert/utf.dart
@@ -542,7 +542,7 @@
start = 0;
}
- String result = decodeGeneral(bytes, start, end, single);
+ String result = _convertRecursive(bytes, start, end, single);
if (isErrorState(_state)) {
String message = errorDescription(_state);
_state = initial; // Ready for more input.
@@ -551,6 +551,19 @@
return result;
}
+ String _convertRecursive(Uint8List bytes, int start, int end, bool single) {
+ // Chunk long strings to avoid a pathological case of JS repeated string
+ // concatenation.
+ if (end - start > 1000) {
+ int mid = (start + end) ~/ 2;
+ String s1 = _convertRecursive(bytes, start, mid, false);
+ if (isErrorState(_state)) return s1;
+ String s2 = _convertRecursive(bytes, mid, end, single);
+ return s1 + s2;
+ }
+ return decodeGeneral(bytes, start, end, single);
+ }
+
/// Flushes this decoder as if closed.
///
/// This method throws if the input was partial and the decoder was
diff --git a/sdk/lib/html/dart2js/html_dart2js.dart b/sdk/lib/html/dart2js/html_dart2js.dart
index 9be8e79..02c46ab 100644
--- a/sdk/lib/html/dart2js/html_dart2js.dart
+++ b/sdk/lib/html/dart2js/html_dart2js.dart
@@ -3387,7 +3387,7 @@
throw new UnsupportedError("Not supported");
}
- _Worklet get paintWorklet native;
+ static _Worklet get paintWorklet native;
static CssUnitValue Hz(num value) native;
@@ -20445,6 +20445,15 @@
@JSName('getSupportedConstraints')
_getSupportedConstraints_1() native;
+
+ Future<MediaStream> getUserMedia([Map constraints]) {
+ var constraints_dict = null;
+ if (constraints != null) {
+ constraints_dict = convertDartToNative_Dictionary(constraints);
+ }
+ return promiseToFuture<MediaStream>(
+ JS("", "#.getUserMedia(#)", this, constraints_dict));
+ }
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
@@ -23666,9 +23675,9 @@
String get lang native;
- int get maxActions native;
+ static int get maxActions native;
- String get permission native;
+ static String get permission native;
bool get renotify native;
@@ -25995,7 +26004,7 @@
throw new UnsupportedError("Not supported");
}
- List<String> get supportedContentEncodings native;
+ static List<String> get supportedContentEncodings native;
Future<PushSubscription> getSubscription() =>
promiseToFuture<PushSubscription>(JS("", "#.getSubscription()", this));
diff --git a/sdk/lib/io/common.dart b/sdk/lib/io/common.dart
index dd45dbd..cccb927 100644
--- a/sdk/lib/io/common.dart
+++ b/sdk/lib/io/common.dart
@@ -99,19 +99,18 @@
// benefit that it is faster to access from the C code as well.
_BufferAndStart _ensureFastAndSerializableByteData(
List<int> buffer, int start, int end) {
- if (buffer is Uint8List || buffer is Int8List) {
+ if (_isDirectIOCapableTypedList(buffer)) {
return new _BufferAndStart(buffer, start);
}
int length = end - start;
var newBuffer = new Uint8List(length);
- int j = start;
- for (int i = 0; i < length; i++) {
- newBuffer[i] = buffer[j];
- j++;
- }
+ newBuffer.setRange(0, length, buffer, start);
return new _BufferAndStart(newBuffer, 0);
}
+// VM will use ClassID to check whether buffer is Uint8List or Int8List.
+external bool _isDirectIOCapableTypedList(List<int> buffer);
+
class _IOCrypto {
external static Uint8List getRandomBytes(int count);
}
diff --git a/sdk/lib/vmservice/vmservice.dart b/sdk/lib/vmservice/vmservice.dart
index bfbdaf8..0cd0eeb 100644
--- a/sdk/lib/vmservice/vmservice.dart
+++ b/sdk/lib/vmservice/vmservice.dart
@@ -714,6 +714,25 @@
details: "Unknown service: ${message.method}");
}
+ Future<String> _getSupportedProtocols(Message message) async {
+ final version = json.decode(
+ utf8.decode(
+ (await Message.forMethod('getVersion').sendToVM()).payload,
+ ),
+ )['result'];
+ final protocols = {
+ 'type': 'ProtocolList',
+ 'protocols': [
+ {
+ 'protocolName': 'VM Service',
+ 'major': version['major'],
+ 'minor': version['minor'],
+ },
+ ],
+ };
+ return encodeResult(message, protocols);
+ }
+
Future<Response> routeRequest(VMService _, Message message) async {
final response = await _routeRequestImpl(message);
if (response == null) {
@@ -750,6 +769,9 @@
if (message.method == 'requirePermissionToResume') {
return _requirePermissionToResume(message);
}
+ if (message.method == 'getSupportedProtocols') {
+ return await _getSupportedProtocols(message);
+ }
if (devfs.shouldHandleMessage(message)) {
return await devfs.handleMessage(message);
}
diff --git a/sdk_nnbd/BUILD.gn b/sdk_nnbd/BUILD.gn
index 8579a96..7ddc49d 100644
--- a/sdk_nnbd/BUILD.gn
+++ b/sdk_nnbd/BUILD.gn
@@ -511,7 +511,7 @@
# This is the main target for copying scripts in _platform_sdk_scripts to bin/
group("copy_platform_sdk_scripts") {
- visibility = [ ":create_platform_sdk" ]
+ visibility = [ ":_create_platform_sdk" ]
public_deps = []
foreach(sdk_script, _platform_sdk_scripts) {
public_deps += [ ":copy_${sdk_script}_script" ]
@@ -556,7 +556,7 @@
# This is the main rule for copying snapshots from _platform_sdk_snapshots to
# bin/snapshots
group("copy_platform_sdk_snapshots") {
- visibility = [ ":create_platform_sdk" ]
+ visibility = [ ":_create_platform_sdk" ]
public_deps = []
foreach(snapshot, _platform_sdk_snapshots) {
public_deps += [ ":copy_${snapshot[0]}_snapshot" ]
@@ -619,11 +619,15 @@
deps = [
":copy_libraries",
"../utils/compiler:compile_dart2js_platform",
+ "../utils/compiler:compile_dart2js_nnbd_strong_platform",
"../utils/compiler:compile_dart2js_server_platform",
+ "../utils/compiler:compile_dart2js_server_nnbd_strong_platform",
]
sources = [
"$root_out_dir/dart2js_platform.dill",
+ "$root_out_dir/dart2js_nnbd_strong_platform.dill",
"$root_out_dir/dart2js_server_platform.dill",
+ "$root_out_dir/dart2js_server_nnbd_strong_platform.dill",
]
outputs = [ "$root_out_dir/dart-sdk/lib/_internal/{{source_file_part}}" ]
}
@@ -743,7 +747,7 @@
# This is the main rule to copy libraries in _platform_sdk_libraries to lib/
group("copy_platform_sdk_libraries") {
visibility = [
- ":create_platform_sdk",
+ ":_create_platform_sdk",
":copy_libraries",
]
public_deps = []
@@ -851,7 +855,10 @@
# Parts common to both platform and full SDKs.
group("create_common_sdk") {
- visibility = [ ":create_sdk" ]
+ visibility = [
+ ":create_sdk",
+ ":create_platform_sdk",
+ ]
public_deps = [
":copy_analysis_summaries",
":copy_api_readme",
@@ -886,8 +893,11 @@
}
# Parts specific to the platform SDK.
-group("create_platform_sdk") {
- visibility = [ ":create_sdk" ]
+group("_create_platform_sdk") {
+ visibility = [
+ ":create_sdk",
+ ":create_platform_sdk",
+ ]
public_deps = [
":copy_platform_sdk_libraries",
":copy_platform_sdk_scripts",
@@ -908,11 +918,19 @@
]
}
+# Build a SDK with less stuff. It excludes dart2js, ddc, and web libraries.
+group("create_platform_sdk") {
+ public_deps = [
+ ":_create_platform_sdk",
+ ":create_common_sdk",
+ ]
+}
+
# The main target to depend on from ../BUILD.gn
group("create_sdk") {
public_deps = [ ":create_common_sdk" ]
if (dart_platform_sdk) {
- public_deps += [ ":create_platform_sdk" ]
+ public_deps += [ ":_create_platform_sdk" ]
} else {
public_deps += [ ":create_full_sdk" ]
}
diff --git a/sdk_nnbd/lib/_internal/js_dev_runtime/patch/convert_patch.dart b/sdk_nnbd/lib/_internal/js_dev_runtime/patch/convert_patch.dart
index a7f5e19..c86dab0 100644
--- a/sdk_nnbd/lib/_internal/js_dev_runtime/patch/convert_patch.dart
+++ b/sdk_nnbd/lib/_internal/js_dev_runtime/patch/convert_patch.dart
@@ -390,6 +390,10 @@
@patch
class Utf8Decoder {
+ // Always fall back to the Dart implementation for strings shorter than this
+ // threshold, as there is a large, constant overhead for using TextDecoder.
+ static const int _shortInputThreshold = 15;
+
@patch
Converter<List<int>, T> fuse<T>(Converter<String, T> next) {
return super.fuse(next);
@@ -404,48 +408,43 @@
if (JS<bool>('!', '# instanceof Uint8Array', codeUnits)) {
// JS 'cast' to avoid a downcast equivalent to the is-check we hand-coded.
NativeUint8List casted = JS<NativeUint8List>('!', '#', codeUnits);
- return _convertInterceptedUint8List(allowMalformed, casted, start, end);
+ // Always use Dart implementation for short strings.
+ end ??= casted.length;
+ if (end - start < _shortInputThreshold) {
+ return null;
+ }
+ String? result =
+ _convertInterceptedUint8List(allowMalformed, casted, start, end);
+ if (result != null && allowMalformed) {
+ // In principle, TextDecoder should have provided the correct result
+ // here, but some browsers deviate from the standard as to how many
+ // replacement characters they produce. Thus, we fall back to the Dart
+ // implementation if the result contains any replacement characters.
+ if (JS<int>('int', r'#.indexOf(#)', result, '\uFFFD') >= 0) {
+ return null;
+ }
+ }
+ return result;
}
+ return null; // This call was not intercepted.
}
static String? _convertInterceptedUint8List(
- bool allowMalformed, NativeUint8List codeUnits, int start, int? end) {
- if (allowMalformed) {
- // TextDecoder with option {fatal: false} does not produce the same result
- // as [Utf8Decoder]. It disagrees on the number of `U+FFFD` (REPLACEMENT
- // CHARACTER) generated for some malformed sequences. We could use
- // TextDecoder with option {fatal: true}, catch the error, and re-try
- // without acceleration. That turns out to be extremely slow (the Error
- // captures a stack trace).
- // TODO(31370): Bring Utf8Decoder into alignment with TextDecoder.
- // TODO(sra): If we can't do that, can we detect valid input fast enough
- // to use a check like the [_unsafe] check below?
- return null;
- }
-
- var decoder = _decoder;
+ bool allowMalformed, NativeUint8List codeUnits, int start, int end) {
+ final decoder = allowMalformed ? _decoderNonfatal : _decoder;
if (decoder == null) return null;
- if (0 == start && end == null) {
- return _useTextDecoderChecked(decoder, codeUnits);
+ if (0 == start && end == codeUnits.length) {
+ return _useTextDecoder(decoder, codeUnits);
}
int length = codeUnits.length;
end = RangeError.checkValidRange(start, end, length);
- if (0 == start && end == codeUnits.length) {
- return _useTextDecoderChecked(decoder, codeUnits);
- }
-
- return _useTextDecoderChecked(decoder,
+ return _useTextDecoder(decoder,
JS<NativeUint8List>('!', '#.subarray(#, #)', codeUnits, start, end));
}
- static String? _useTextDecoderChecked(decoder, NativeUint8List codeUnits) {
- if (_unsafe(codeUnits)) return null;
- return _useTextDecoderUnchecked(decoder, codeUnits);
- }
-
- static String? _useTextDecoderUnchecked(decoder, NativeUint8List codeUnits) {
+ static String? _useTextDecoder(decoder, NativeUint8List codeUnits) {
// If the input is malformed, catch the exception and return `null` to fall
// back on unintercepted decoder. The fallback will either succeed in
// decoding, or report the problem better than TextDecoder.
@@ -455,44 +454,20 @@
return null;
}
- /// Returns `true` if [codeUnits] contains problematic encodings.
- ///
- /// TextDecoder behaves differently to [Utf8Encoder] when the input encodes a
- /// surrogate (U+D800 through U+DFFF). TextDecoder considers the surrogate to
- /// be an encoding error and, depending on the `fatal` option, either throws
- /// and Error or encodes the surrogate as U+FFFD. [Utf8Decoder] does not
- /// consider the surrogate to be an error and returns the code unit encoded by
- /// the surrogate.
- ///
- /// Throwing an `Error` captures the stack, whoch makes it so expensive that
- /// it is worth checking the input for surrogates and avoiding TextDecoder in
- /// this case.
- static bool _unsafe(NativeUint8List codeUnits) {
- // Surrogates encode as (hex) ED Ax xx or ED Bx xx.
- int limit = codeUnits.length - 2;
- for (int i = 0; i < limit; i++) {
- int unit1 = codeUnits[i];
- if (unit1 == 0xED) {
- int unit2 = JS('!', '#', codeUnits[i + 1]);
- if ((unit2 & 0xE0) == 0xA0) return true;
- }
- }
- return false;
- }
-
- //// TextDecoder is not defined on some browsers and on the stand-alone d8 and
- /// jsshell engines. Use a lazy initializer to do feature detection once.
+ // TextDecoder is not defined on some browsers and on the stand-alone d8 and
+ // jsshell engines. Use a lazy initializer to do feature detection once.
static final _decoder = () {
try {
- // Use `{fatal: true}`. 'fatal' does not correspond exactly to
- // `!allowMalformed`: TextDecoder rejects unpaired surrogates which
- // [Utf8Decoder] accepts. In non-fatal mode, TextDecoder translates
- // unpaired surrogates to REPLACEMENT CHARACTER (U+FFFD) whereas
- // [Utf8Decoder] leaves the surrogate intact.
return JS('', 'new TextDecoder("utf-8", {fatal: true})');
} catch (e) {}
return null;
}();
+ static final _decoderNonfatal = () {
+ try {
+ return JS('', 'new TextDecoder("utf-8", {fatal: false})');
+ } catch (e) {}
+ return null;
+ }();
}
@patch
diff --git a/sdk_nnbd/lib/_internal/js_dev_runtime/patch/io_patch.dart b/sdk_nnbd/lib/_internal/js_dev_runtime/patch/io_patch.dart
index 980adde..0504204 100644
--- a/sdk_nnbd/lib/_internal/js_dev_runtime/patch/io_patch.dart
+++ b/sdk_nnbd/lib/_internal/js_dev_runtime/patch/io_patch.dart
@@ -215,6 +215,11 @@
}
@patch
+bool _isDirectIOCapableTypedList(List<int> buffer) {
+ return buffer is Uint8List || buffer is Int8List;
+}
+
+@patch
class _IOCrypto {
@patch
static Uint8List getRandomBytes(int count) {
diff --git a/sdk_nnbd/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart b/sdk_nnbd/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart
index 43697c9..fd9a7d4 100644
--- a/sdk_nnbd/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart
+++ b/sdk_nnbd/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart
@@ -781,6 +781,7 @@
$_resetFields.push(() => {
init = initializer;
value = null;
+ executed = false;
});
executed = true;
}
@@ -793,6 +794,7 @@
$desc.set = function(x) {
init = null;
value = x;
+ // executed is dead since init is set to null
};
}
return ${defineProperty(to, name, desc)};
diff --git a/sdk_nnbd/lib/_internal/js_runtime/lib/convert_patch.dart b/sdk_nnbd/lib/_internal/js_runtime/lib/convert_patch.dart
index f4e8f2b..d7dfb5f 100644
--- a/sdk_nnbd/lib/_internal/js_runtime/lib/convert_patch.dart
+++ b/sdk_nnbd/lib/_internal/js_runtime/lib/convert_patch.dart
@@ -385,6 +385,10 @@
@patch
class Utf8Decoder {
+ // Always fall back to the Dart implementation for strings shorter than this
+ // threshold, as there is a large, constant overhead for using TextDecoder.
+ static const int _shortInputThreshold = 15;
+
@patch
Converter<List<int>, T> fuse<T>(Converter<String, T> next) {
return super.fuse(next);
@@ -399,51 +403,45 @@
// JS 'cast' to avoid a downcast equivalent to the is-check we hand-coded.
NativeUint8List casted =
JS<NativeUint8List>('NativeUint8List', '#', codeUnits);
- return _convertInterceptedUint8List(allowMalformed, casted, start, end);
+ // Always use Dart implementation for short strings.
+ end ??= casted.length;
+ if (end - start < _shortInputThreshold) {
+ return null;
+ }
+ String? result =
+ _convertInterceptedUint8List(allowMalformed, casted, start, end);
+ if (result != null && allowMalformed) {
+ // In principle, TextDecoder should have provided the correct result
+ // here, but some browsers deviate from the standard as to how many
+ // replacement characters they produce. Thus, we fall back to the Dart
+ // implementation if the result contains any replacement characters.
+ if (JS<int>('int', r'#.indexOf(#)', result, '\uFFFD') >= 0) {
+ return null;
+ }
+ }
+ return result;
}
return null; // This call was not intercepted.
}
static String? _convertInterceptedUint8List(
- bool allowMalformed, NativeUint8List codeUnits, int start, int? end) {
- if (allowMalformed) {
- // TextDecoder with option {fatal: false} does not produce the same result
- // as [Utf8Decoder]. It disagrees on the number of `U+FFFD` (REPLACEMENT
- // CHARACTER) generated for some malformed sequences. We could use
- // TextDecoder with option {fatal: true}, catch the error, and re-try
- // without acceleration. That turns out to be extremely slow (the Error
- // captures a stack trace).
- // TODO(31370): Bring Utf8Decoder into alignment with TextDecoder.
- // TODO(sra): If we can't do that, can we detect valid input fast enough
- // to use a check like the [_unsafe] check below?
- return null;
- }
-
- var decoder = _decoder;
+ bool allowMalformed, NativeUint8List codeUnits, int start, int end) {
+ final decoder = allowMalformed ? _decoderNonfatal : _decoder;
if (decoder == null) return null;
- if (0 == start && end == null) {
- return _useTextDecoderChecked(decoder, codeUnits);
+ if (0 == start && end == codeUnits.length) {
+ return _useTextDecoder(decoder, codeUnits);
}
int length = codeUnits.length;
end = RangeError.checkValidRange(start, end, length);
- if (0 == start && end == codeUnits.length) {
- return _useTextDecoderChecked(decoder, codeUnits);
- }
-
- return _useTextDecoderChecked(
+ return _useTextDecoder(
decoder,
JS<NativeUint8List>(
'NativeUint8List', '#.subarray(#, #)', codeUnits, start, end));
}
- static String? _useTextDecoderChecked(decoder, NativeUint8List codeUnits) {
- if (_unsafe(codeUnits)) return null;
- return _useTextDecoderUnchecked(decoder, codeUnits);
- }
-
- static String? _useTextDecoderUnchecked(decoder, NativeUint8List codeUnits) {
+ static String? _useTextDecoder(decoder, NativeUint8List codeUnits) {
// If the input is malformed, catch the exception and return `null` to fall
// back on unintercepted decoder. The fallback will either succeed in
// decoding, or report the problem better than TextDecoder.
@@ -453,44 +451,20 @@
return null;
}
- /// Returns `true` if [codeUnits] contains problematic encodings.
- ///
- /// TextDecoder behaves differently to [Utf8Encoder] when the input encodes a
- /// surrogate (U+D800 through U+DFFF). TextDecoder considers the surrogate to
- /// be an encoding error and, depending on the `fatal` option, either throws
- /// and Error or encodes the surrogate as U+FFFD. [Utf8Decoder] does not
- /// consider the surrogate to be an error and returns the code unit encoded by
- /// the surrogate.
- ///
- /// Throwing an `Error` captures the stack, whoch makes it so expensive that
- /// it is worth checking the input for surrogates and avoiding TextDecoder in
- /// this case.
- static bool _unsafe(NativeUint8List codeUnits) {
- // Surrogates encode as (hex) ED Ax xx or ED Bx xx.
- int limit = codeUnits.length - 2;
- for (int i = 0; i < limit; i++) {
- int unit1 = codeUnits[i];
- if (unit1 == 0xED) {
- int unit2 = codeUnits[i + 1];
- if ((unit2 & 0xE0) == 0xA0) return true;
- }
- }
- return false;
- }
-
- /// TextDecoder is not defined on some browsers and on the stand-alone d8 and
- /// jsshell engines. Use a lazy initializer to do feature detection once.
+ // TextDecoder is not defined on some browsers and on the stand-alone d8 and
+ // jsshell engines. Use a lazy initializer to do feature detection once.
static final _decoder = () {
try {
- // Use `{fatal: true}`. 'fatal' does not correspond exactly to
- // `!allowMalformed`: TextDecoder rejects unpaired surrogates which
- // [Utf8Decoder] accepts. In non-fatal mode, TextDecoder translates
- // unpaired surrogates to REPLACEMENT CHARACTER (U+FFFD) whereas
- // [Utf8Decoder] leaves the surrogate intact.
return JS('', 'new TextDecoder("utf-8", {fatal: true})');
} catch (e) {}
return null;
}();
+ static final _decoderNonfatal = () {
+ try {
+ return JS('', 'new TextDecoder("utf-8", {fatal: false})');
+ } catch (e) {}
+ return null;
+ }();
}
@patch
diff --git a/sdk_nnbd/lib/_internal/js_runtime/lib/io_patch.dart b/sdk_nnbd/lib/_internal/js_runtime/lib/io_patch.dart
index ab539ed..ff04937 100644
--- a/sdk_nnbd/lib/_internal/js_runtime/lib/io_patch.dart
+++ b/sdk_nnbd/lib/_internal/js_runtime/lib/io_patch.dart
@@ -215,6 +215,11 @@
}
@patch
+bool _isDirectIOCapableTypedList(List<int> buffer) {
+ return buffer is Uint8List || buffer is Int8List;
+}
+
+@patch
class _IOCrypto {
@patch
static Uint8List getRandomBytes(int count) {
diff --git a/sdk_nnbd/lib/_internal/js_runtime/lib/js_helper.dart b/sdk_nnbd/lib/_internal/js_runtime/lib/js_helper.dart
index aeca848..d8c2bc0 100644
--- a/sdk_nnbd/lib/_internal/js_runtime/lib/js_helper.dart
+++ b/sdk_nnbd/lib/_internal/js_runtime/lib/js_helper.dart
@@ -1786,6 +1786,18 @@
String toString() => _message.isEmpty ? 'Error' : 'Error: $_message';
}
+class NullThrownFromJavaScriptException implements Exception {
+ final dynamic _irritant;
+ NullThrownFromJavaScriptException(this._irritant);
+
+ @override
+ String toString() {
+ String description =
+ JS('bool', '# === null', _irritant) ? 'null' : 'undefined';
+ return "Throw of null ('$description' from JavaScript)";
+ }
+}
+
/// A wrapper around an exception, much like the one created by [wrapException]
/// but with a pre-given stack-trace.
class ExceptionAndStackTrace {
@@ -1795,40 +1807,49 @@
ExceptionAndStackTrace(this.dartException, this.stackTrace);
}
-/// Called from catch blocks in generated code to extract the Dart
-/// exception from the thrown value. The thrown value may have been
-/// created by [wrapException] or it may be a 'native' JS exception.
+/// Called from catch blocks in generated code to extract the Dart exception
+/// from the thrown value. The thrown value may have been created by
+/// [wrapException] or it may be a 'native' JavaScript exception.
///
/// Some native exceptions are mapped to new Dart instances, others are
/// returned unmodified.
-unwrapException(ex) {
- /// If error implements Error, save [ex] in [error.$thrownJsError].
- /// Otherwise, do nothing. Later, the stack trace can then be extracted from
- /// [ex].
- saveStackTrace(error) {
- if (error is Error) {
- var thrownStackTrace = JS('', r'#.$thrownJsError', error);
- if (thrownStackTrace == null) {
- JS('void', r'#.$thrownJsError = #', error, ex);
- }
- }
- return error;
+Object unwrapException(Object? ex) {
+ // Dart converts `null` to `NullThrownError()`. JavaScript can still throw a
+ // nullish value.
+ if (ex == null) {
+ return NullThrownFromJavaScriptException(ex);
}
- // Note that we are checking if the object has the property. If it
- // has, it could be set to null if the thrown value is null.
- if (ex == null) return null;
if (ex is ExceptionAndStackTrace) {
- return saveStackTrace(ex.dartException);
+ return saveStackTrace(ex, ex.dartException);
}
+
+ // e.g. a primitive value thrown by JavaScript.
if (JS('bool', 'typeof # !== "object"', ex)) return ex;
if (JS('bool', r'"dartException" in #', ex)) {
- return saveStackTrace(JS('', r'#.dartException', ex));
- } else if (!JS('bool', r'"message" in #', ex)) {
+ return saveStackTrace(ex, JS('', r'#.dartException', ex));
+ }
+ return _unwrapNonDartException(ex);
+}
+
+/// If error implements Dart [Error], save [ex] in [error.$thrownJsError].
+/// Otherwise, do nothing. Later, the stack trace can then be extracted from
+/// [ex].
+Object saveStackTrace(Object ex, Object error) {
+ if (error is Error) {
+ var thrownStackTrace = JS('', r'#.$thrownJsError', error);
+ if (thrownStackTrace == null) {
+ JS('void', r'#.$thrownJsError = #', error, ex);
+ }
+ }
+ return error;
+}
+
+Object _unwrapNonDartException(Object ex) {
+ if (!JS('bool', r'"message" in #', ex)) {
return ex;
}
-
// Grab hold of the exception message. This field is available on
// all supported browsers.
var message = JS('var', r'#.message', ex);
@@ -1851,19 +1872,17 @@
switch (ieErrorCode) {
case 438:
return saveStackTrace(
- new JsNoSuchMethodError('$message (Error $ieErrorCode)', null));
+ ex, JsNoSuchMethodError('$message (Error $ieErrorCode)', null));
case 445:
case 5007:
return saveStackTrace(
- new NullError('$message (Error $ieErrorCode)', null));
+ ex, NullError('$message (Error $ieErrorCode)', null));
}
}
}
if (JS('bool', r'# instanceof TypeError', ex)) {
var match;
- // Using JS to give type hints to the compiler to help tree-shaking.
- // TODO(ahe): That should be unnecessary due to type inference.
var nsme = TypeErrorDecoder.noSuchMethodPattern;
var notClosure = TypeErrorDecoder.notClosurePattern;
var nullCall = TypeErrorDecoder.nullCallPattern;
@@ -1875,14 +1894,14 @@
var undefProperty = TypeErrorDecoder.undefinedPropertyPattern;
var undefLiteralProperty = TypeErrorDecoder.undefinedLiteralPropertyPattern;
if ((match = nsme.matchTypeError(message)) != null) {
- return saveStackTrace(new JsNoSuchMethodError(message, match));
+ return saveStackTrace(ex, JsNoSuchMethodError(message, match));
} else if ((match = notClosure.matchTypeError(message)) != null) {
// notClosure may match "({c:null}).c()" or "({c:1}).c()", so we
// cannot tell if this an attempt to invoke call on null or a
// non-function object.
// But we do know the method name is "call".
JS('', '#.method = "call"', match);
- return saveStackTrace(new JsNoSuchMethodError(message, match));
+ return saveStackTrace(ex, JsNoSuchMethodError(message, match));
} else if ((match = nullCall.matchTypeError(message)) != null ||
(match = nullLiteralCall.matchTypeError(message)) != null ||
(match = undefCall.matchTypeError(message)) != null ||
@@ -1891,19 +1910,19 @@
(match = nullLiteralCall.matchTypeError(message)) != null ||
(match = undefProperty.matchTypeError(message)) != null ||
(match = undefLiteralProperty.matchTypeError(message)) != null) {
- return saveStackTrace(new NullError(message, match));
+ return saveStackTrace(ex, NullError(message, match));
}
// If we cannot determine what kind of error this is, we fall back
// to reporting this as a generic error. It's probably better than
// nothing.
return saveStackTrace(
- new UnknownJsTypeError(message is String ? message : ''));
+ ex, UnknownJsTypeError(message is String ? message : ''));
}
if (JS('bool', r'# instanceof RangeError', ex)) {
if (message is String && contains(message, 'call stack')) {
- return new StackOverflowError();
+ return StackOverflowError();
}
// In general, a RangeError is thrown when trying to pass a number as an
@@ -1914,7 +1933,7 @@
if (message is String) {
message = JS('String', r'#.replace(/^RangeError:\s*/, "")', message);
}
- return saveStackTrace(new ArgumentError(message));
+ return saveStackTrace(ex, ArgumentError(message));
}
// Check for the Firefox specific stack overflow signal.
@@ -1923,13 +1942,13 @@
r'typeof InternalError == "function" && # instanceof InternalError',
ex)) {
if (message is String && message == 'too much recursion') {
- return new StackOverflowError();
+ return StackOverflowError();
}
}
- // Just return the exception. We should not wrap it because in case
- // the exception comes from the DOM, it is a JavaScript
- // object backed by a native Dart class.
+ // Just return the exception. We should not wrap it because in case the
+ // exception comes from the DOM, it is a JavaScript object that has a Dart
+ // interceptor.
return ex;
}
diff --git a/sdk_nnbd/lib/_internal/js_runtime/lib/rti.dart b/sdk_nnbd/lib/_internal/js_runtime/lib/rti.dart
index b29e59c..9d0eef4 100644
--- a/sdk_nnbd/lib/_internal/js_runtime/lib/rti.dart
+++ b/sdk_nnbd/lib/_internal/js_runtime/lib/rti.dart
@@ -14,6 +14,7 @@
JS_EMBEDDED_GLOBAL,
JS_GET_FLAG,
JS_GET_NAME,
+ JS_STRING_CONCAT,
RAW_DART_FUNCTION_REF,
TYPE_REF,
LEGACY_TYPE_REF;
@@ -571,7 +572,7 @@
Object? universe, Object? namedArray, Object? typeArguments, int depth) {
bool changed = false;
int length = _Utils.arrayLength(namedArray);
- assert(length % 3 == 0);
+ assert(_Utils.isMultipleOf(length, 3));
Object? result = JS('', '[]');
for (int i = 0; i < length; i += 3) {
String name = _Utils.asString(_Utils.arrayAt(namedArray, i));
@@ -1696,6 +1697,27 @@
return rti;
}
+ // These helpers are used for creating canonical recipes. The key feature of
+ // the generated code is that it makes no reference to the constant pool,
+ // which does not exist when the type$ pool is created.
+ //
+ // The strange association is so that usage like
+ //
+ // s = _recipeJoin3(s, a, b);
+ //
+ // associates as `s+=(a+b)` rather than `s=s+a+b`. As recipe fragments are
+ // small, this tends to create smaller cons-string trees.
+
+ static String _recipeJoin(String s1, String s2) => JS_STRING_CONCAT(s1, s2);
+ static String _recipeJoin3(String s1, String s2, String s3) =>
+ JS_STRING_CONCAT(s1, JS_STRING_CONCAT(s2, s3));
+ static String _recipeJoin4(String s1, String s2, String s3, String s4) =>
+ JS_STRING_CONCAT(s1, JS_STRING_CONCAT(JS_STRING_CONCAT(s2, s3), s4));
+ static String _recipeJoin5(
+ String s1, String s2, String s3, String s4, String s5) =>
+ JS_STRING_CONCAT(s1,
+ JS_STRING_CONCAT(JS_STRING_CONCAT(JS_STRING_CONCAT(s2, s3), s4), s5));
+
// For each kind of Rti there are three methods:
//
// * `lookupXXX` which takes the component parts and returns an existing Rti
@@ -1714,19 +1736,19 @@
static String _canonicalRecipeOfDynamic() => Recipe.pushDynamicString;
static String _canonicalRecipeOfVoid() => Recipe.pushVoidString;
static String _canonicalRecipeOfNever() =>
- Recipe.pushNeverExtensionString + Recipe.extensionOpString;
+ _recipeJoin(Recipe.pushNeverExtensionString, Recipe.extensionOpString);
static String _canonicalRecipeOfAny() =>
- Recipe.pushAnyExtensionString + Recipe.extensionOpString;
+ _recipeJoin(Recipe.pushAnyExtensionString, Recipe.extensionOpString);
static String _canonicalRecipeOfStar(Rti baseType) =>
- Rti._getCanonicalRecipe(baseType) + Recipe.wrapStarString;
+ _recipeJoin(Rti._getCanonicalRecipe(baseType), Recipe.wrapStarString);
static String _canonicalRecipeOfQuestion(Rti baseType) =>
- Rti._getCanonicalRecipe(baseType) + Recipe.wrapQuestionString;
+ _recipeJoin(Rti._getCanonicalRecipe(baseType), Recipe.wrapQuestionString);
static String _canonicalRecipeOfFutureOr(Rti baseType) =>
- Rti._getCanonicalRecipe(baseType) + Recipe.wrapFutureOrString;
+ _recipeJoin(Rti._getCanonicalRecipe(baseType), Recipe.wrapFutureOrString);
static String _canonicalRecipeOfGenericFunctionParameter(int index) =>
- '$index' + Recipe.genericFunctionTypeParameterIndexString;
+ _recipeJoin('$index', Recipe.genericFunctionTypeParameterIndexString);
static Rti _lookupErasedRti(Object? universe) {
return _lookupTerminalRti(
@@ -1888,7 +1910,7 @@
for (int i = 0; i < length; i++) {
Rti argument = _Utils.asRti(_Utils.arrayAt(arguments, i));
String subrecipe = Rti._getCanonicalRecipe(argument);
- s += sep + subrecipe;
+ s = _recipeJoin3(s, sep, subrecipe);
sep = Recipe.separatorString;
}
return s;
@@ -1897,9 +1919,8 @@
static String _canonicalRecipeJoinNamed(Object? arguments) {
String s = '', sep = '';
int length = _Utils.arrayLength(arguments);
- assert(length % 3 == 0);
+ assert(_Utils.isMultipleOf(length, 3));
for (int i = 0; i < length; i += 3) {
- s += sep;
String name = _Utils.asString(_Utils.arrayAt(arguments, i));
bool isRequired = _Utils.asBool(_Utils.arrayAt(arguments, i + 1));
String nameSep = isRequired
@@ -1907,7 +1928,7 @@
: Recipe.nameSeparatorString;
Rti type = _Utils.asRti(_Utils.arrayAt(arguments, i + 2));
String subrecipe = Rti._getCanonicalRecipe(type);
- s += name + nameSep + subrecipe;
+ s = _recipeJoin5(s, sep, name, nameSep, subrecipe);
sep = Recipe.separatorString;
}
return s;
@@ -1918,9 +1939,8 @@
String s = _Utils.asString(name);
int length = _Utils.arrayLength(arguments);
if (length != 0) {
- s += Recipe.startTypeArgumentsString +
- _canonicalRecipeJoin(arguments) +
- Recipe.endTypeArgumentsString;
+ s = _recipeJoin4(s, Recipe.startTypeArgumentsString,
+ _canonicalRecipeJoin(arguments), Recipe.endTypeArgumentsString);
}
return s;
}
@@ -1954,13 +1974,13 @@
JS_GET_NAME(JsGetName.FUTURE_CLASS_TYPE_NAME), JS('', '[#]', base));
static String _canonicalRecipeOfBinding(Rti base, Object? arguments) {
- String s = Rti._getCanonicalRecipe(base);
- s += Recipe
- .toTypeString; // TODO(sra): Omit when base encoding is Rti without ToType.
- s += Recipe.startTypeArgumentsString +
- _canonicalRecipeJoin(arguments) +
- Recipe.endTypeArgumentsString;
- return s;
+ return _recipeJoin5(
+ Rti._getCanonicalRecipe(base),
+ // TODO(sra): Omit when base encoding is Rti without ToType:
+ Recipe.toTypeString,
+ Recipe.startTypeArgumentsString,
+ _canonicalRecipeJoin(arguments),
+ Recipe.endTypeArgumentsString);
}
/// [arguments] becomes owned by the created Rti.
@@ -1992,8 +2012,8 @@
static String _canonicalRecipeOfFunction(
Rti returnType, _FunctionParameters parameters) =>
- Rti._getCanonicalRecipe(returnType) +
- _canonicalRecipeOfFunctionParameters(parameters);
+ _recipeJoin(Rti._getCanonicalRecipe(returnType),
+ _canonicalRecipeOfFunctionParameters(parameters));
static String _canonicalRecipeOfFunctionParameters(
_FunctionParameters parameters) {
@@ -2007,26 +2027,26 @@
int namedLength = _Utils.arrayLength(named);
assert(optionalPositionalLength == 0 || namedLength == 0);
- String recipe = Recipe.startFunctionArgumentsString +
- _canonicalRecipeJoin(requiredPositional);
+ String recipe = _recipeJoin(Recipe.startFunctionArgumentsString,
+ _canonicalRecipeJoin(requiredPositional));
if (optionalPositionalLength > 0) {
String sep = requiredPositionalLength > 0 ? Recipe.separatorString : '';
- recipe += sep +
- Recipe.startOptionalGroupString +
- _canonicalRecipeJoin(optionalPositional) +
- Recipe.endOptionalGroupString;
+ recipe = _recipeJoin5(
+ recipe,
+ sep,
+ Recipe.startOptionalGroupString,
+ _canonicalRecipeJoin(optionalPositional),
+ Recipe.endOptionalGroupString);
}
if (namedLength > 0) {
String sep = requiredPositionalLength > 0 ? Recipe.separatorString : '';
- recipe += sep +
- Recipe.startNamedGroupString +
- _canonicalRecipeJoinNamed(named) +
- Recipe.endNamedGroupString;
+ recipe = _recipeJoin5(recipe, sep, Recipe.startNamedGroupString,
+ _canonicalRecipeJoinNamed(named), Recipe.endNamedGroupString);
}
- return recipe + Recipe.endFunctionArgumentsString;
+ return _recipeJoin(recipe, Recipe.endFunctionArgumentsString);
}
static Rti _lookupFunctionRti(
@@ -2051,10 +2071,11 @@
static String _canonicalRecipeOfGenericFunction(
Rti baseFunctionType, Object? bounds) =>
- Rti._getCanonicalRecipe(baseFunctionType) +
- Recipe.startTypeArgumentsString +
- _canonicalRecipeJoin(bounds) +
- Recipe.endTypeArgumentsString;
+ _recipeJoin4(
+ Rti._getCanonicalRecipe(baseFunctionType),
+ Recipe.startTypeArgumentsString,
+ _canonicalRecipeJoin(bounds),
+ Recipe.endTypeArgumentsString);
static Rti _lookupGenericFunctionRti(
Object? universe, Rti baseFunctionType, Object? bounds, bool normalize) {
@@ -2552,7 +2573,7 @@
static void toTypesNamed(Object? universe, Rti environment, Object? items) {
int length = _Utils.arrayLength(items);
- assert(length % 3 == 0);
+ assert(_Utils.isMultipleOf(length, 3));
for (int i = 2; i < length; i += 3) {
var item = _Utils.arrayAt(items, i);
Rti type = toType(universe, environment, item);
@@ -2995,6 +3016,7 @@
kind == Rti.kindFutureOr && isNullable(Rti._getFutureOrArgument(t));
}
+@pragma('dart2js:parameter:trust')
bool isTopType(Rti t) =>
isStrongTopType(t) ||
isLegacyObjectType(t) ||
@@ -3040,6 +3062,8 @@
static bool isNotIdentical(Object? s, Object? t) =>
JS('bool', '# !== #', s, t);
+ static bool isMultipleOf(int n, int d) => JS('bool', '# % # === 0', n, d);
+
static JSArray objectKeys(Object? o) =>
JS('returns:JSArray;new:true;', 'Object.keys(#)', o);
@@ -3089,6 +3113,7 @@
JS('', '#.set(#, #)', cache, key, value);
}
}
+
// -------- Entry points for testing -------------------------------------------
String testingCanonicalRecipe(Rti rti) {
diff --git a/sdk_nnbd/lib/_internal/vm/bin/builtin.dart b/sdk_nnbd/lib/_internal/vm/bin/builtin.dart
index bc8f8e5..59f9392 100644
--- a/sdk_nnbd/lib/_internal/vm/bin/builtin.dart
+++ b/sdk_nnbd/lib/_internal/vm/bin/builtin.dart
@@ -337,33 +337,13 @@
while (true) {
final dirUri = currentDir.uri;
- // We prefer using `.packages` over `.dart_tool/package_config.json` so
- // old users of `Isolate.packageConfig` which cannot handle the new format
- // will continue to work (see https://github.com/dart-lang/sdk/issues/41748).
- final packagesFile = dirUri.resolve(".packages");
- if (traceLoading) {
- _log("Checking for $packagesFile file.");
- }
- File file = File.fromUri(packagesFile);
- bool exists = file.existsSync();
- if (traceLoading) {
- _log("$packagesFile exists: $exists");
- }
- if (exists) {
- final String data = utf8.decode(file.readAsBytesSync());
- if (traceLoading) {
- _log("Loaded packages file from $packagesFile:\n$data");
- }
- return _parsePackagesFile(traceLoading, packagesFile, data);
- }
-
- // We fallback to using `.dart_tool/package_config.json` if it exists.
+ // We prefer using `.dart_tool/package_config.json` over `.packages`.
final packageConfig = dirUri.resolve(".dart_tool/package_config.json");
if (traceLoading) {
_log("Checking for $packageConfig file.");
}
- file = File.fromUri(packageConfig);
- exists = file.existsSync();
+ File file = File.fromUri(packageConfig);
+ bool exists = file.existsSync();
if (traceLoading) {
_log("$packageConfig exists: $exists");
}
@@ -375,6 +355,24 @@
return _parsePackageConfig(traceLoading, packageConfig, data);
}
+ // We fallback to using `.packages` if it exists.
+ final packagesFile = dirUri.resolve(".packages");
+ if (traceLoading) {
+ _log("Checking for $packagesFile file.");
+ }
+ file = File.fromUri(packagesFile);
+ exists = file.existsSync();
+ if (traceLoading) {
+ _log("$packagesFile exists: $exists");
+ }
+ if (exists) {
+ final String data = utf8.decode(file.readAsBytesSync());
+ if (traceLoading) {
+ _log("Loaded packages file from $packagesFile:\n$data");
+ }
+ return _parsePackagesFile(traceLoading, packagesFile, data);
+ }
+
final parentDir = currentDir.parent;
if (dirUri == parentDir.uri) break;
currentDir = parentDir;
diff --git a/sdk_nnbd/lib/_internal/vm/bin/common_patch.dart b/sdk_nnbd/lib/_internal/vm/bin/common_patch.dart
index 02a9df7..948350a 100644
--- a/sdk_nnbd/lib/_internal/vm/bin/common_patch.dart
+++ b/sdk_nnbd/lib/_internal/vm/bin/common_patch.dart
@@ -7,7 +7,7 @@
/// patches of that library. We plan to change this when we have a shared front
/// end and simply use parts.
-import "dart:_internal" show VMLibraryHooks, patch, checkNotNullable;
+import "dart:_internal" show VMLibraryHooks, patch, checkNotNullable, ClassID;
import "dart:async"
show
@@ -50,6 +50,12 @@
// part "sync_socket_patch.dart";
@patch
+bool _isDirectIOCapableTypedList(List<int> buffer) {
+ int classID = ClassID.getID(buffer);
+ return classID == ClassID.cidUint8Array || classID == ClassID.cidInt8Array;
+}
+
+@patch
class _IOCrypto {
@patch
static Uint8List getRandomBytes(int count) native "Crypto_GetRandomBytes";
diff --git a/sdk_nnbd/lib/_internal/vm/bin/socket_patch.dart b/sdk_nnbd/lib/_internal/vm/bin/socket_patch.dart
index 0aae529..e2bff2f 100644
--- a/sdk_nnbd/lib/_internal/vm/bin/socket_patch.dart
+++ b/sdk_nnbd/lib/_internal/vm/bin/socket_patch.dart
@@ -585,8 +585,7 @@
return;
}
final _InternetAddress address = it.current as _InternetAddress;
- var socket = new _NativeSocket.normal();
- socket.localAddress = address;
+ var socket = new _NativeSocket.normal(address);
var result;
if (sourceAddress == null) {
if (address.type == InternetAddressType.unix) {
@@ -734,8 +733,7 @@
}
final address = await _resolveHost(host);
- var socket = new _NativeSocket.listen();
- socket.localAddress = address;
+ var socket = new _NativeSocket.listen(address);
var result;
if (address.type == InternetAddressType.unix) {
var path = address.address;
@@ -784,9 +782,11 @@
_NativeSocket.datagram(this.localAddress)
: typeFlags = typeNormalSocket | typeUdpSocket;
- _NativeSocket.normal() : typeFlags = typeNormalSocket | typeTcpSocket;
+ _NativeSocket.normal(this.localAddress)
+ : typeFlags = typeNormalSocket | typeTcpSocket;
- _NativeSocket.listen() : typeFlags = typeListeningSocket | typeTcpSocket {
+ _NativeSocket.listen(this.localAddress)
+ : typeFlags = typeListeningSocket | typeTcpSocket {
isClosedWrite = true;
}
@@ -985,10 +985,9 @@
connections--;
tokens++;
returnTokens(listeningTokenBatchSize);
- var socket = new _NativeSocket.normal();
+ var socket = new _NativeSocket.normal(address);
if (nativeAccept(socket) != true) return null;
socket.localPort = localPort;
- socket.localAddress = address;
setupResourceInfo(socket);
final resourceInformation = resourceInfo;
assert(resourceInformation != null ||
@@ -1301,7 +1300,8 @@
}
void reportError(error, StackTrace? st, String message) {
- var e = createError(error, message, address, localPort);
+ var e =
+ createError(error, message, isUdp || isTcp ? address : null, localPort);
// Invoke the error handler if any.
if (eventHandlers[errorEvent] != null) {
eventHandlers[errorEvent](e, st);
diff --git a/sdk_nnbd/lib/_internal/vm/lib/class_id_fasta.dart b/sdk_nnbd/lib/_internal/vm/lib/class_id_fasta.dart
index c95930f..9ca88ec 100644
--- a/sdk_nnbd/lib/_internal/vm/lib/class_id_fasta.dart
+++ b/sdk_nnbd/lib/_internal/vm/lib/class_id_fasta.dart
@@ -24,4 +24,8 @@
static final int cidTwoByteString = 0;
@pragma("vm:entry-point")
static final int cidUint8ArrayView = 0;
+ @pragma("vm:entry-point")
+ static final int cidUint8Array = 0;
+ @pragma("vm:entry-point")
+ static final int cidInt8Array = 0;
}
diff --git a/sdk_nnbd/lib/_internal/vm/lib/convert_patch.dart b/sdk_nnbd/lib/_internal/vm/lib/convert_patch.dart
index e4302cc..3044e01 100644
--- a/sdk_nnbd/lib/_internal/vm/lib/convert_patch.dart
+++ b/sdk_nnbd/lib/_internal/vm/lib/convert_patch.dart
@@ -7,7 +7,15 @@
/// used by patches of that library. We plan to change this when we have a
/// shared front end and simply use parts.
-import "dart:_internal" show POWERS_OF_TEN, patch, ClassID;
+import "dart:_internal"
+ show
+ allocateOneByteString,
+ allocateTwoByteString,
+ ClassID,
+ patch,
+ POWERS_OF_TEN,
+ writeIntoOneByteString,
+ writeIntoTwoByteString;
import "dart:typed_data" show Uint8List, Uint16List;
@@ -1913,7 +1921,7 @@
assert(start < end);
// TODO(dartbug.com/41704): Allocate an uninitialized _OneByteString and
// write characters to it using _setAt.
- Uint8List chars = Uint8List(size);
+ String result = allocateOneByteString(size);
int i = start;
int j = 0;
if (_state == X1) {
@@ -1925,7 +1933,7 @@
_charOrIndex = i - 1;
return "";
}
- chars[j++] = (_charOrIndex << 6) | e;
+ writeIntoOneByteString(result, j++, (_charOrIndex << 6) | e);
_state = accept;
}
assert(_state == accept);
@@ -1951,14 +1959,14 @@
}
byte = (byte << 6) | e;
}
- chars[j++] = byte;
+ writeIntoOneByteString(result, j++, byte);
}
// Output size must match, unless we are doing single conversion and are
// inside an unfinished sequence (which will trigger an error later).
assert(_bomIndex == 0 && _state != accept
? (j == size - 1 || j == size - 2)
: (j == size));
- return String.fromCharCodes(chars);
+ return result;
}
String decode16(Uint8List bytes, int start, int end, int size) {
@@ -1967,7 +1975,7 @@
final String transitionTable = _Utf8Decoder.transitionTable;
// TODO(dartbug.com/41704): Allocate an uninitialized _TwoByteString and
// write characters to it using _setAt.
- Uint16List chars = Uint16List(size);
+ String result = allocateTwoByteString(size);
int i = start;
int j = 0;
int state = _state;
@@ -1991,10 +1999,10 @@
if (state == accept) {
if (char >= 0x10000) {
assert(char < 0x110000);
- chars[j++] = 0xD7C0 + (char >> 10);
- chars[j++] = 0xDC00 + (char & 0x3FF);
+ writeIntoTwoByteString(result, j++, 0xD7C0 + (char >> 10));
+ writeIntoTwoByteString(result, j++, 0xDC00 + (char & 0x3FF));
} else {
- chars[j++] = char;
+ writeIntoTwoByteString(result, j++, char);
}
char = byte & (shiftedByteMask >> type);
state = transitionTable.codeUnitAt(type);
@@ -2012,10 +2020,10 @@
if (state == accept) {
if (char >= 0x10000) {
assert(char < 0x110000);
- chars[j++] = 0xD7C0 + (char >> 10);
- chars[j++] = 0xDC00 + (char & 0x3FF);
+ writeIntoTwoByteString(result, j++, 0xD7C0 + (char >> 10));
+ writeIntoTwoByteString(result, j++, 0xDC00 + (char & 0x3FF));
} else {
- chars[j++] = char;
+ writeIntoTwoByteString(result, j++, char);
}
} else if (isErrorState(state)) {
_state = state;
@@ -2030,6 +2038,6 @@
assert(_bomIndex == 0 && _state != accept
? (j == size - 1 || j == size - 2)
: (j == size));
- return String.fromCharCodes(chars);
+ return result;
}
}
diff --git a/sdk_nnbd/lib/_internal/vm/lib/core_patch.dart b/sdk_nnbd/lib/_internal/vm/lib/core_patch.dart
index c4a0ba0..4db4231 100644
--- a/sdk_nnbd/lib/_internal/vm/lib/core_patch.dart
+++ b/sdk_nnbd/lib/_internal/vm/lib/core_patch.dart
@@ -11,6 +11,8 @@
import "dart:_internal"
show
+ allocateOneByteString,
+ allocateTwoByteString,
ClassID,
CodeUnits,
EfficientLengthIterable,
@@ -25,7 +27,9 @@
makeFixedListUnmodifiable,
makeListFixedLength,
patch,
- unsafeCast;
+ unsafeCast,
+ writeIntoOneByteString,
+ writeIntoTwoByteString;
import "dart:async" show Completer, Future, Timer;
diff --git a/sdk_nnbd/lib/_internal/vm/lib/internal_patch.dart b/sdk_nnbd/lib/_internal/vm/lib/internal_patch.dart
index b7997c6..a4cc093 100644
--- a/sdk_nnbd/lib/_internal/vm/lib/internal_patch.dart
+++ b/sdk_nnbd/lib/_internal/vm/lib/internal_patch.dart
@@ -35,6 +35,26 @@
Object extractTypeArguments<T>(T instance, Function extract)
native "Internal_extractTypeArguments";
+/// The returned string is a [_OneByteString] with uninitialized content.
+@pragma("vm:entry-point", "call")
+String allocateOneByteString(int length)
+ native "Internal_allocateOneByteString";
+
+/// The [string] must be a [_OneByteString]. The [index] must be valid.
+@pragma("vm:entry-point", "call")
+void writeIntoOneByteString(String string, int index, int codePoint)
+ native "Internal_writeIntoOneByteString";
+
+/// The returned string is a [_TwoByteString] with uninitialized content.
+@pragma("vm:entry-point", "call")
+String allocateTwoByteString(int length)
+ native "Internal_allocateTwoByteString";
+
+/// The [string] must be a [_TwoByteString]. The [index] must be valid.
+@pragma("vm:entry-point", "call")
+void writeIntoTwoByteString(String string, int index, int codePoint)
+ native "Internal_writeIntoTwoByteString";
+
class VMLibraryHooks {
// Example: "dart:isolate _Timer._factory"
static var timerFactory;
diff --git a/sdk_nnbd/lib/_internal/vm/lib/string_patch.dart b/sdk_nnbd/lib/_internal/vm/lib/string_patch.dart
index 1d896ba..f4c3a22 100644
--- a/sdk_nnbd/lib/_internal/vm/lib/string_patch.dart
+++ b/sdk_nnbd/lib/_internal/vm/lib/string_patch.dart
@@ -1230,14 +1230,20 @@
// Allocates a string of given length, expecting its content to be
// set using _setAt.
@pragma("vm:exact-result-type", _OneByteString)
- static _OneByteString _allocate(int length) native "OneByteString_allocate";
+ @pragma("vm:prefer-inline")
+ static _OneByteString _allocate(int length) {
+ return unsafeCast<_OneByteString>(allocateOneByteString(length));
+ }
static _OneByteString _allocateFromOneByteList(List<int> list, int start,
int end) native "OneByteString_allocateFromOneByteList";
// This is internal helper method. Code point value must be a valid
// Latin1 value (0..0xFF), index must be valid.
- void _setAt(int index, int codePoint) native "OneByteString_setAt";
+ @pragma("vm:prefer-inline")
+ void _setAt(int index, int codePoint) {
+ writeIntoOneByteString(this, index, codePoint);
+ }
// Should be optimizable to a memory move.
// Accepts both _OneByteString and _ExternalOneByteString as argument.
@@ -1263,9 +1269,24 @@
throw "Unreachable";
}
+ // Allocates a string of given length, expecting its content to be
+ // set using _setAt.
+ @pragma("vm:exact-result-type", _TwoByteString)
+ @pragma("vm:prefer-inline")
+ static _TwoByteString _allocate(int length) {
+ return unsafeCast<_TwoByteString>(allocateTwoByteString(length));
+ }
+
static String _allocateFromTwoByteList(List<int> list, int start, int end)
native "TwoByteString_allocateFromTwoByteList";
+ // This is internal helper method. Code point value must be a valid
+ // UTF-16 value (0..0xFFFF), index must be valid.
+ @pragma("vm:prefer-inline")
+ void _setAt(int index, int codePoint) {
+ writeIntoTwoByteString(this, index, codePoint);
+ }
+
bool _isWhitespace(int codeUnit) {
return _StringBase._isTwoByteWhitespace(codeUnit);
}
diff --git a/sdk_nnbd/lib/convert/utf.dart b/sdk_nnbd/lib/convert/utf.dart
index f495ac0..1743510 100644
--- a/sdk_nnbd/lib/convert/utf.dart
+++ b/sdk_nnbd/lib/convert/utf.dart
@@ -543,7 +543,7 @@
start = 0;
}
- String result = decodeGeneral(bytes, start, end, single);
+ String result = _convertRecursive(bytes, start, end, single);
if (isErrorState(_state)) {
String message = errorDescription(_state);
_state = initial; // Ready for more input.
@@ -552,6 +552,19 @@
return result;
}
+ String _convertRecursive(Uint8List bytes, int start, int end, bool single) {
+ // Chunk long strings to avoid a pathological case of JS repeated string
+ // concatenation.
+ if (end - start > 1000) {
+ int mid = (start + end) ~/ 2;
+ String s1 = _convertRecursive(bytes, start, mid, false);
+ if (isErrorState(_state)) return s1;
+ String s2 = _convertRecursive(bytes, mid, end, single);
+ return s1 + s2;
+ }
+ return decodeGeneral(bytes, start, end, single);
+ }
+
/// Flushes this decoder as if closed.
///
/// This method throws if the input was partial and the decoder was
diff --git a/sdk_nnbd/lib/html/dart2js/html_dart2js.dart b/sdk_nnbd/lib/html/dart2js/html_dart2js.dart
index 2fb33d3..3f9da79 100644
--- a/sdk_nnbd/lib/html/dart2js/html_dart2js.dart
+++ b/sdk_nnbd/lib/html/dart2js/html_dart2js.dart
@@ -115,8 +115,8 @@
HtmlElement.created() : super.created();
// From NoncedElement
- String get nonce native;
- set nonce(String value) native;
+ String? get nonce native;
+ set nonce(String? value) native;
}
/**
@@ -3396,7 +3396,7 @@
throw new UnsupportedError("Not supported");
}
- _Worklet get paintWorklet native;
+ static _Worklet get paintWorklet native;
static CssUnitValue Hz(num value) native;
@@ -20484,6 +20484,15 @@
@JSName('getSupportedConstraints')
_getSupportedConstraints_1() native;
+
+ Future<MediaStream> getUserMedia([Map? constraints]) {
+ var constraints_dict = null;
+ if (constraints != null) {
+ constraints_dict = convertDartToNative_Dictionary(constraints);
+ }
+ return promiseToFuture<MediaStream>(
+ JS("", "#.getUserMedia(#)", this, constraints_dict));
+ }
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
@@ -22620,11 +22629,11 @@
_Clipboard get clipboard native;
- NetworkInformation get connection native;
+ NetworkInformation? get connection native;
CredentialsContainer get credentials native;
- num get deviceMemory native;
+ num? get deviceMemory native;
String? get doNotTrack native;
@@ -22899,7 +22908,7 @@
static const EventStreamProvider<Event> changeEvent =
const EventStreamProvider<Event>('change');
- num get downlink native;
+ num? get downlink native;
num get downlinkMax native;
@@ -23610,9 +23619,9 @@
throw new UnsupportedError("Not supported");
}
- String get nonce native;
+ String? get nonce native;
- set nonce(String value) native;
+ set nonce(String? value) native;
}
// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
@@ -23705,9 +23714,9 @@
String get lang native;
- int get maxActions native;
+ static int get maxActions native;
- String get permission native;
+ static String get permission native;
bool get renotify native;
@@ -25050,7 +25059,7 @@
/// Checks if this type is supported on the current platform.
static bool get supported => JS('bool', '!!(window.performance)');
- MemoryInfo get memory native;
+ MemoryInfo? get memory native;
PerformanceNavigation get navigation native;
@@ -26040,7 +26049,7 @@
throw new UnsupportedError("Not supported");
}
- List<String> get supportedContentEncodings native;
+ static List<String> get supportedContentEncodings native;
Future<PushSubscription> getSubscription() =>
promiseToFuture<PushSubscription>(JS("", "#.getSubscription()", this));
diff --git a/sdk_nnbd/lib/io/common.dart b/sdk_nnbd/lib/io/common.dart
index dd4e46f..fe72acc 100644
--- a/sdk_nnbd/lib/io/common.dart
+++ b/sdk_nnbd/lib/io/common.dart
@@ -97,22 +97,18 @@
// benefit that it is faster to access from the C code as well.
_BufferAndStart _ensureFastAndSerializableByteData(
List<int> buffer, int start, int end) {
- if (buffer is Uint8List || buffer is Int8List) {
+ if (_isDirectIOCapableTypedList(buffer)) {
return new _BufferAndStart(buffer, start);
}
int length = end - start;
var newBuffer = new Uint8List(length);
- int j = start;
- for (int i = 0; i < length; i++) {
- int value = buffer[j];
- // TODO(40614): Remove once non-nullability is sound.
- ArgumentError.checkNotNull(value, "buffer[]");
- newBuffer[i] = value;
- j++;
- }
+ newBuffer.setRange(0, length, buffer, start);
return new _BufferAndStart(newBuffer, 0);
}
+// VM will use ClassID to check whether buffer is Uint8List or Int8List.
+external bool _isDirectIOCapableTypedList(List<int> buffer);
+
class _IOCrypto {
external static Uint8List getRandomBytes(int count);
}
diff --git a/sdk_nnbd/lib/svg/dart2js/svg_dart2js.dart b/sdk_nnbd/lib/svg/dart2js/svg_dart2js.dart
index 0ca84b9..eea4d49 100644
--- a/sdk_nnbd/lib/svg/dart2js/svg_dart2js.dart
+++ b/sdk_nnbd/lib/svg/dart2js/svg_dart2js.dart
@@ -3304,9 +3304,9 @@
// From NoncedElement
- String get nonce native;
+ String? get nonce native;
- set nonce(String value) native;
+ set nonce(String? value) native;
ElementStream<Event> get onAbort => abortEvent.forElement(this);
diff --git a/sdk_nnbd/lib/vmservice/vmservice.dart b/sdk_nnbd/lib/vmservice/vmservice.dart
index 01847bb..4f3c12d 100644
--- a/sdk_nnbd/lib/vmservice/vmservice.dart
+++ b/sdk_nnbd/lib/vmservice/vmservice.dart
@@ -706,6 +706,25 @@
details: 'Unknown service: ${message.method}');
}
+ Future<String> _getSupportedProtocols(Message message) async {
+ final version = json.decode(
+ utf8.decode(
+ (await Message.forMethod('getVersion').sendToVM()).payload,
+ ),
+ )['result'];
+ final protocols = {
+ 'type': 'ProtocolList',
+ 'protocols': [
+ {
+ 'protocolName': 'VM Service',
+ 'major': version['major'],
+ 'minor': version['minor'],
+ },
+ ],
+ };
+ return encodeResult(message, protocols);
+ }
+
Future<Response?> routeRequest(VMService _, Message message) async {
final response = await _routeRequestImpl(message);
if (response == null) {
@@ -742,6 +761,9 @@
if (message.method == 'requirePermissionToResume') {
return _requirePermissionToResume(message);
}
+ if (message.method == 'getSupportedProtocols') {
+ return await _getSupportedProtocols(message);
+ }
if (devfs.shouldHandleMessage(message)) {
return await devfs.handleMessage(message);
}
diff --git a/tests/co19/co19-co19.status b/tests/co19/co19-co19.status
index 14f2c45..78c548d 100644
--- a/tests/co19/co19-co19.status
+++ b/tests/co19/co19-co19.status
@@ -625,18 +625,3 @@
LanguageFeatures/regression/32903_t02: Skip # github.com/dart-lang/language/issues/115
LanguageFeatures/regression/34560_t02: Skip # github.com/dart-lang/language/issues/115
-[ $runtime != none ]
-LibTest/async/Completer/completeError_A02_t01: Skip # See breaking change #40674
-LibTest/async/Future/Future.error_A01_t01: Skip # See breaking change #40674
-LibTest/async/StreamController/addError_A02_t01: Skip # See breaking change #40674
-LibTest/collection/HashSet/HashSet.from_A02_t01: Skip # See breaking change #40674
-LibTest/collection/ListQueue/ListQueue.from_A03_t01: Skip # See breaking change #40674
-LibTest/core/RuneIterator/RuneIterator.at_A01_t01: Skip # See breaking change #40674
-LibTest/core/RuneIterator/RuneIterator.at_A02_t01: Skip # See breaking change #40674
-LibTest/core/RuneIterator/RuneIterator.at_A03_t01: Skip # See breaking change #40674
-LibTest/core/RuneIterator/RuneIterator_A01_t01: Skip # See breaking change #40674
-LibTest/core/RuneIterator/currentAsString_A03_t01: Skip # See breaking change #40674
-LibTest/core/RuneIterator/movePrevious_A02_t02: Skip # See breaking change #40674
-LibTest/core/RuneIterator/rawIndex_A02_t01: Skip # See breaking change #40674
-LibTest/core/RuneIterator/reset_A01_t01: Skip # See breaking change #40674
-LibTest/core/RuneIterator/reset_A01_t02: Skip # See breaking change #40674
diff --git a/tests/co19_2/co19_2-co19.status b/tests/co19_2/co19_2-co19.status
index 4beff01..484a90b 100644
--- a/tests/co19_2/co19_2-co19.status
+++ b/tests/co19_2/co19_2-co19.status
@@ -264,18 +264,3 @@
LanguageFeatures/regression/32903_t02: Skip # github.com/dart-lang/language/issues/115
LanguageFeatures/regression/34560_t02: Skip # github.com/dart-lang/language/issues/115
-[ $runtime != none ]
-LibTest/async/Completer/completeError_A02_t01: Skip # See breaking change #40674
-LibTest/async/Future/Future.error_A01_t01: Skip # See breaking change #40674
-LibTest/async/StreamController/addError_A02_t01: Skip # See breaking change #40674
-LibTest/collection/HashSet/HashSet.from_A02_t01: Skip # See breaking change #40674
-LibTest/collection/ListQueue/ListQueue.from_A03_t01: Skip # See breaking change #40674
-LibTest/core/RuneIterator/RuneIterator.at_A01_t01: Skip # See breaking change #40674
-LibTest/core/RuneIterator/RuneIterator.at_A02_t01: Skip # See breaking change #40674
-LibTest/core/RuneIterator/RuneIterator.at_A03_t01: Skip # See breaking change #40674
-LibTest/core/RuneIterator/RuneIterator_A01_t01: Skip # See breaking change #40674
-LibTest/core/RuneIterator/currentAsString_A03_t01: Skip # See breaking change #40674
-LibTest/core/RuneIterator/movePrevious_A02_t02: Skip # See breaking change #40674
-LibTest/core/RuneIterator/rawIndex_A02_t01: Skip # See breaking change #40674
-LibTest/core/RuneIterator/reset_A01_t01: Skip # See breaking change #40674
-LibTest/core/RuneIterator/reset_A01_t02: Skip # See breaking change #40674
diff --git a/tests/compiler/dart2js/codegen/logical_expression_test.dart b/tests/compiler/dart2js/codegen/logical_expression_test.dart
index 90dba52..bf1162a 100644
--- a/tests/compiler/dart2js/codegen/logical_expression_test.dart
+++ b/tests/compiler/dart2js/codegen/logical_expression_test.dart
@@ -5,6 +5,7 @@
// @dart = 2.7
// Test that logical or-expressions don't introduce unnecessary nots.
+// See http://dartbug.com/17027
import 'package:async_helper/async_helper.dart';
import '../helpers/compiler_helper.dart';
@@ -14,6 +15,14 @@
bool cond1 = bar();
if (cond1 || gee()) gee();
if (cond1 || gee()) gee();
+
+ // We want something like:
+ // var t1 = bar.call$0();
+ // if (t1 || gee.call$0()) gee.call$0();
+ // if (t1 || gee.call$0()) gee.call$0();
+
+ // absent: 'if (!'
+ // present: /if \(\w+ \|\|/
}
""";
@@ -22,29 +31,26 @@
if (list == null) bar();
if (list == null || bar()) bar();
if (list == null || bar()) bar();
+
+ // We want something like:
+ // var t1 = list == null;
+ // if (t1) bar.call$0();
+ // if (t1 || bar.call$0()) bar.call$0();
+ // if (t1 || bar.call$0()) bar.call$0();
+
+ // absent: 'if (!'
+ // present: /if \(\w+ \|\|/
}
""";
main() {
runTests() async {
- // We want something like:
- // var t1 = bar.call$0() === true;
- // if (t1 || gee.call$0() === true) gee.call$0();
- // if (t1 || gee.call$0() === true) gee.call$0();
- await compileAndDoNotMatchFuzzy(
- TEST_ONE, 'foo', r"""var x = [a-zA-Z0-9$.]+\(\) == true;
- if \(x \|\| [a-zA-Z0-9$.]+\(\) === true\) [^;]+;
- if \(x \|\| [a-zA-Z0-9$.]+\(\) === true\) [^;]+;""");
+ Future check(String test) {
+ return compile(test, entry: 'foo', check: checkerForAbsentPresent(test));
+ }
- // We want something like:
- // var t1 = list == null;
- // if (t1) bar.call$0();
- // if (t1 || bar.call$0() === true) bar.call$0();
- // if (t1 || bar.call$0() === true) bar.call$0();
- await compileAndMatchFuzzy(TEST_TWO, 'foo', r"""var x = x == null;
- if \(x\) [^;]+;
- if \(x \|\| [a-zA-Z0-9$.]+\(\) === true\) [^;]+;
- if \(x \|\| [a-zA-Z0-9$.]+\(\) === true\) [^;]+;""");
+ await check(TEST_ONE);
+ await check(TEST_TWO);
}
asyncTest(() async {
diff --git a/tests/compiler/dart2js/dart2js.status b/tests/compiler/dart2js/dart2js.status
index c5b7400..eef4d21 100644
--- a/tests/compiler/dart2js/dart2js.status
+++ b/tests/compiler/dart2js/dart2js.status
@@ -39,7 +39,6 @@
end_to_end/dart2js_batch_test: Slow, Pass
end_to_end/exit_code_test: Slow, Pass
end_to_end/in_user_code_test: Slow, Pass
-end_to_end/show_package_warnings_test: Slow, Pass
[ $checked ]
codegen/value_range_kernel_test: Slow, Pass
diff --git a/tests/compiler/dart2js/end_to_end/show_package_warnings_test.dart b/tests/compiler/dart2js/end_to_end/show_package_warnings_test.dart
deleted file mode 100644
index dd7c73b..0000000
--- a/tests/compiler/dart2js/end_to_end/show_package_warnings_test.dart
+++ /dev/null
@@ -1,183 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// @dart = 2.7
-
-// Test that the '--show-package-warnings' option works as intended.
-
-import 'dart:async';
-import 'package:async_helper/async_helper.dart';
-import 'package:expect/expect.dart';
-import 'package:compiler/src/commandline_options.dart';
-import '../helpers/memory_compiler.dart';
-
-/// Error code that creates 1 warning, 1 hint, and 1 info.
-const ERROR_CODE = """
-m(Object o) {
- if (o is String) {
- o = o.length;
- }
-}""";
-
-const SOURCE = const {
- 'main.dart': """
-import 'package:pkg_error1/pkg_error1.dart' as pkg1;
-import 'package:pkg_error2/pkg_error2.dart' as pkg2;
-import 'package:pkg_noerror/pkg_noerror.dart' as pkg3;
-import 'error.dart' as error;
-
-main() {
- pkg1.m(null);
- pkg2.m(null);
- pkg3.m(null);
- error.m(null);
-}
-""",
- 'error.dart': ERROR_CODE,
- 'pkg/pkg_error1/pkg_error1.dart': """
-import 'package:pkg_error2/pkg_error2.dart' as pkg2;
-import 'package:pkg_noerror/pkg_noerror.dart' as pkg3;
-$ERROR_CODE
-
-main() {
- m(null);
- pkg2.m(null);
- pkg3.m(null);
-}
-""",
- 'pkg/pkg_error2/pkg_error2.dart': """
-import 'package:pkg_error1/pkg_error1.dart' as pkg1;
-import 'package:pkg_noerror/pkg_noerror.dart' as pkg3;
-$ERROR_CODE
-
-main() {
- pkg1.m(null);
- m(null);
- pkg3.m(null);
-}
-""",
- 'pkg/pkg_noerror/pkg_noerror.dart': """
-import 'package:pkg_error1/pkg_error1.dart' as pkg1;
-import 'package:pkg_error2/pkg_error2.dart' as pkg2;
-m(o) {}
-
-main() {
- pkg1.m(null);
- m(null);
- pkg2.m(null);
-}
-""",
- '.packages': """
-pkg_error1:pkg/pkg_error1/
-pkg_error2:pkg/pkg_error2/
-pkg_noerror:pkg/pkg_noerror/
-"""
-};
-
-Future test(Uri entryPoint,
- {List<String> showPackageWarnings: null,
- int warnings: 0,
- int hints: 0,
- int infos: 0}) async {
- List<String> options = <String>[];
- if (showPackageWarnings != null) {
- if (showPackageWarnings.isEmpty) {
- options.add(Flags.showPackageWarnings);
- } else {
- options
- .add('${Flags.showPackageWarnings}=${showPackageWarnings.join(',')}');
- }
- }
- var collector = new DiagnosticCollector();
- print('==================================================================');
- print('test: $entryPoint showPackageWarnings=$showPackageWarnings');
- print('------------------------------------------------------------------');
- await runCompiler(
- entryPoint: entryPoint,
- memorySourceFiles: SOURCE,
- options: options,
- packageConfig: Uri.parse('memory:.packages'),
- diagnosticHandler: collector);
- Expect.equals(
- 0, collector.errors.length, 'Unexpected errors: ${collector.errors}');
- Expect.equals(warnings, collector.warnings.length,
- 'Unexpected warnings: ${collector.warnings}');
- checkUriSchemes(collector.warnings);
- Expect.equals(
- hints, collector.hints.length, 'Unexpected hints: ${collector.hints}');
- checkUriSchemes(collector.hints);
- Expect.equals(
- infos, collector.infos.length, 'Unexpected infos: ${collector.infos}');
- checkUriSchemes(collector.infos);
-}
-
-void checkUriSchemes(Iterable<CollectedMessage> messages) {
- for (CollectedMessage message in messages) {
- if (message.uri != null) {
- Expect.notEquals('package', message.uri.scheme,
- "Unexpected package uri `${message.uri}` in message: $message");
- }
- }
-}
-
-void main() {
- asyncTest(() async {
- await test(Uri.parse('memory:main.dart'),
- showPackageWarnings: [],
- // From error.dart, package:pkg_error1 and package:pkg_error2:
- warnings: 3,
- hints: 3,
- infos: 3);
- await test(Uri.parse('memory:main.dart'),
- showPackageWarnings: ['pkg_error1'],
- // From error.dart and package:pkg_error1:
- warnings: 2,
- hints: 2 + 1 /* from summary */,
- infos: 2);
- await test(Uri.parse('memory:main.dart'),
- showPackageWarnings: ['pkg_error1', 'pkg_error2'],
- // From error.dart, package:pkg_error1 and package:pkg_error2:
- warnings: 3,
- hints: 3,
- infos: 3);
- await test(Uri.parse('memory:main.dart'),
- showPackageWarnings: [],
- // From error.dart, package:pkg_error1 and package:pkg_error2:
- warnings: 3,
- hints: 3,
- infos: 3);
- await test(Uri.parse('memory:main.dart'),
- showPackageWarnings: null,
- // From error.dart only:
- warnings: 1,
- hints: 1 + 2 /* from summary */,
- infos: 1);
- await test(Uri.parse('package:pkg_error1/pkg_error1.dart'),
- showPackageWarnings: [],
- // From package:pkg_error1 and package:pkg_error2:
- warnings: 2,
- hints: 2,
- infos: 2);
- await test(Uri.parse('package:pkg_error1/pkg_error1.dart'),
- showPackageWarnings: null,
- // From package:pkg_error1/pkg_error1.dart only:
- warnings: 1,
- hints: 1 + 1 /* from summary */,
- infos: 1);
- await test(Uri.parse('package:pkg_noerror/pkg_noerror.dart'),
- showPackageWarnings: [],
- // From package:pkg_error1 and package:pkg_error2:
- warnings: 2,
- hints: 2,
- infos: 2);
- await test(Uri.parse('package:pkg_noerror/pkg_noerror.dart'),
- showPackageWarnings: ['pkg_error1'],
- // From package:pkg_error1:
- warnings: 1,
- hints: 1 + 1 /* from summary */,
- infos: 1);
- await test(Uri.parse('package:pkg_noerror/pkg_noerror.dart'),
- showPackageWarnings: null, hints: 2 /* from summary */);
- });
-}
diff --git a/tests/compiler/dart2js/generic_methods/function_type_variable_test.dart b/tests/compiler/dart2js/generic_methods/function_type_variable_test.dart
index 56b387d..7269570 100644
--- a/tests/compiler/dart2js/generic_methods/function_type_variable_test.dart
+++ b/tests/compiler/dart2js/generic_methods/function_type_variable_test.dart
@@ -5,9 +5,11 @@
// @dart = 2.7
import 'package:async_helper/async_helper.dart';
+import 'package:compiler/src/commandline_options.dart';
import 'package:compiler/src/elements/entities.dart';
import 'package:compiler/src/elements/types.dart';
import 'package:expect/expect.dart';
+import '../helpers/memory_compiler.dart';
import '../helpers/type_test_helper.dart';
const List<FunctionTypeData> existentialTypeData = const <FunctionTypeData>[
@@ -23,6 +25,31 @@
const FunctionTypeData('S', 'F14', '<S>(S s1, S s2)'),
];
+class ToStringTestData {
+ final DartType type;
+ final String expected;
+
+ const ToStringTestData(this.type, this.expected);
+}
+
+class InstantiateTestData {
+ final DartType type;
+ final List<DartType> instantiation;
+ final String expected;
+
+ const InstantiateTestData(this.type, this.instantiation, this.expected);
+}
+
+class SubstTestData {
+ final List<DartType> arguments;
+ final List<DartType> parameters;
+ final DartType type;
+ final String expected;
+
+ const SubstTestData(
+ this.arguments, this.parameters, this.type, this.expected);
+}
+
main() {
asyncTest(() async {
var env = await TypeEnvironment.create(
@@ -51,12 +78,12 @@
main() {
${createUses(existentialTypeData)}
-
+
new C1();
new C2();
new C3.fact();
new C4();
-
+
F9(null, null);
F10();
F11(null);
@@ -66,47 +93,44 @@
new C5<num>().F17(null, null, null);
new C5<num>().F18();
}
- """));
+ """),
+ options: [Flags.printLegacyStars]);
var types = env.types;
- var options = env.compiler.options;
- String printType(DartType type) => type.toStructuredText(
- printLegacyStars: options.printLegacyStars,
- useLegacySubtyping: options.useLegacySubtyping);
-
- List<String> printTypes(List<DartType> types) =>
- types.map(printType).toList();
-
- testToString(FunctionType type, String expectedToString) {
- Expect.equals(expectedToString, printType(type));
+ testToString(DartType type, String expected) {
+ Expect.equals(expected, env.printType(type));
}
- testBounds(FunctionType type, List<DartType> expectedBounds) {
- Expect.equals(expectedBounds.length, type.typeVariables.length,
- "Unexpected type variable count in ${printType(type)}.");
+ testBounds(DartType type, List<DartType> expectedBounds) {
+ FunctionType functionType = type.withoutNullabilityAs<FunctionType>();
+ Expect.equals(expectedBounds.length, functionType.typeVariables.length,
+ "Unexpected type variable count in ${env.printType(type)}.");
for (int i = 0; i < expectedBounds.length; i++) {
- Expect.equals(expectedBounds[i], type.typeVariables[i].bound,
- "Unexpected ${i}th bound in ${printType(type)}.");
+ Expect.equals(
+ env.legacyWrap(expectedBounds[i]),
+ functionType.typeVariables[i].bound,
+ "Unexpected ${i}th bound in ${env.printType(type)}.");
}
}
- testInstantiate(FunctionType type, List<DartType> instantiation,
- String expectedToString) {
- DartType result = types.instantiate(type, instantiation);
- String resultString = printType(result);
+ testInstantiate(
+ DartType type, List<DartType> instantiation, String expectedToString) {
+ DartType result = types.instantiate(
+ type.withoutNullabilityAs<FunctionType>(), instantiation);
+ String resultString = env.printType(result);
Expect.equals(
expectedToString,
resultString,
- "Unexpected instantiation of ${printType(type)} with $instantiation: "
+ "Unexpected instantiation of ${env.printType(type)} with $instantiation: "
"$resultString");
}
void testSubst(List<DartType> arguments, List<DartType> parameters,
DartType type1, String expectedToString) {
DartType subst = types.subst(arguments, parameters, type1);
- Expect.equals(expectedToString, printType(subst),
- "${printType(type1)}.subst(${printTypes(arguments)},${printTypes(parameters)})");
+ Expect.equals(expectedToString, env.printType(subst),
+ "${env.printType(type1)}.subst(${env.printTypes(arguments)},${env.printTypes(parameters)})");
}
testRelations(DartType a, DartType b,
@@ -114,8 +138,8 @@
if (areEqual) {
isSubtype = true;
}
- String aString = printType(a);
- String bString = printType(b);
+ String aString = env.printType(a);
+ String bString = env.printType(b);
Expect.equals(
areEqual,
a == b,
@@ -135,24 +159,24 @@
InterfaceType Object_ = env['Object'];
InterfaceType num_ = env['num'];
InterfaceType int_ = env['int'];
- InterfaceType C1 = instantiate(types, env.getClass('C1'), []);
- InterfaceType C2 = instantiate(types, env.getClass('C2'), []);
+ InterfaceType C1 = env.instantiate(env.getClass('C1'), []);
+ InterfaceType C2 = env.instantiate(env.getClass('C2'), []);
ClassEntity C3 = env.getClass('C3');
- InterfaceType C4 = instantiate(types, env.getClass('C4'), []);
- FunctionType F1 = env.getFieldType('F1');
- FunctionType F2 = env.getFieldType('F2');
- FunctionType F3 = env.getFieldType('F3');
- FunctionType F4 = env.getFieldType('F4');
- FunctionType F5 = env.getFieldType('F5');
- FunctionType F6 = env.getFieldType('F6');
- FunctionType F7 = env.getFieldType('F7');
- FunctionType F8 = env.getFieldType('F8');
+ InterfaceType C4 = env.instantiate(env.getClass('C4'), []);
+ DartType F1 = env.getFieldType('F1');
+ DartType F2 = env.getFieldType('F2');
+ DartType F3 = env.getFieldType('F3');
+ DartType F4 = env.getFieldType('F4');
+ DartType F5 = env.getFieldType('F5');
+ DartType F6 = env.getFieldType('F6');
+ DartType F7 = env.getFieldType('F7');
+ DartType F8 = env.getFieldType('F8');
FunctionType F9 = env.getMemberType('F9');
FunctionType F10 = env.getClosureType('F10');
FunctionType F11 = env.getMemberType('F11');
FunctionType F12 = env.getMemberType('F12');
- FunctionType F13 = env.getFieldType('F13');
- FunctionType F14 = env.getFieldType('F14');
+ DartType F13 = env.getFieldType('F13');
+ DartType F14 = env.getFieldType('F14');
ClassEntity C5 = env.getClass('C5');
TypeVariableType C5_T =
(env.getElementType('C5') as InterfaceType).typeArguments.single;
@@ -161,7 +185,7 @@
FunctionType F17 = env.getMemberType('F17', C5);
FunctionType F18 = env.getMemberType('F18', C5);
- List<FunctionType> all = <FunctionType>[
+ List<DartType> all = [
F1,
F2,
F3,
@@ -184,31 +208,69 @@
all.forEach(print);
- testToString(F1, 'void Function<#A>(#A)');
- testToString(F2, 'void Function<#A>(#A)');
- testToString(F3, 'void Function<#A,#B>(#A,#B)');
- testToString(F4, 'void Function<#A,#B>(#B,#A)');
- testToString(F5, 'void Function<#A extends num>(#A)');
- testToString(F6, 'void Function<#A extends int>(#A)');
- testToString(F7, 'void Function<#A extends num>(#A,[int])');
- testToString(F8, '#A Function<#A extends num>(#A)');
- testToString(F9, 'void Function<#A extends #B,#B>(#A,#B)');
- testToString(F10, 'void Function<#A extends #B,#B>(#A,#B)');
- testToString(F11, 'void Function<#A extends C3<#A>>(#A)');
- testToString(F12, 'void Function<#A extends C3<#A>>(#A)');
- testToString(F13, '#A Function<#A>(#A,#A)');
- testToString(F14, '#A Function<#A>(#A,#A)');
- testToString(
- F15, 'Map<C5.T,#A> Function<#A extends #B,#B extends C5.T>(#A,#B)');
- testToString(
- F16, 'Map<C5.T,#A> Function<#A extends C5.T,#B extends #A>(#A,#B)');
- testToString(F17,
- 'C5.T Function<#A extends List<#B>,#B extends Map<C5.T,#A>>(#A,#B,Object)');
- testToString(
- F18,
- 'C5.T Function<#A extends C5.T>(['
- '#A2 Function<#A2 extends #A>(#A,#A2,C5.T),'
- '#A3 Function<#A3 extends #A>(#A,#A3,C5.T)])');
+ List<ToStringTestData> toStringExpectedPreNnbd = [
+ ToStringTestData(F1, 'void Function<#A>(#A)'),
+ ToStringTestData(F2, 'void Function<#A>(#A)'),
+ ToStringTestData(F3, 'void Function<#A,#B>(#A,#B)'),
+ ToStringTestData(F4, 'void Function<#A,#B>(#B,#A)'),
+ ToStringTestData(F5, 'void Function<#A extends num>(#A)'),
+ ToStringTestData(F6, 'void Function<#A extends int>(#A)'),
+ ToStringTestData(F7, 'void Function<#A extends num>(#A,[int])'),
+ ToStringTestData(F8, '#A Function<#A extends num>(#A)'),
+ ToStringTestData(F9, 'void Function<#A extends #B,#B>(#A,#B)'),
+ ToStringTestData(F10, 'void Function<#A extends #B,#B>(#A,#B)'),
+ ToStringTestData(F11, 'void Function<#A extends C3<#A>>(#A)'),
+ ToStringTestData(F12, 'void Function<#A extends C3<#A>>(#A)'),
+ ToStringTestData(F13, '#A Function<#A>(#A,#A)'),
+ ToStringTestData(F14, '#A Function<#A>(#A,#A)'),
+ ToStringTestData(
+ F15, 'Map<C5.T,#A> Function<#A extends #B,#B extends C5.T>(#A,#B)'),
+ ToStringTestData(
+ F16, 'Map<C5.T,#A> Function<#A extends C5.T,#B extends #A>(#A,#B)'),
+ ToStringTestData(F17,
+ 'C5.T Function<#A extends List<#B>,#B extends Map<C5.T,#A>>(#A,#B,Object)'),
+ ToStringTestData(
+ F18,
+ 'C5.T Function<#A extends C5.T>(['
+ '#A2 Function<#A2 extends #A>(#A,#A2,C5.T),'
+ '#A3 Function<#A3 extends #A>(#A,#A3,C5.T)])'),
+ ];
+
+ List<ToStringTestData> toStringExpectedNnbdWeak = [
+ ToStringTestData(F1, 'void Function<#A>(#A*)*'),
+ ToStringTestData(F2, 'void Function<#A>(#A*)*'),
+ ToStringTestData(F3, 'void Function<#A,#B>(#A*,#B*)*'),
+ ToStringTestData(F4, 'void Function<#A,#B>(#B*,#A*)*'),
+ ToStringTestData(F5, 'void Function<#A extends num*>(#A*)*'),
+ ToStringTestData(F6, 'void Function<#A extends int*>(#A*)*'),
+ ToStringTestData(F7, 'void Function<#A extends num*>(#A*,[int*])*'),
+ ToStringTestData(F8, '#A* Function<#A extends num*>(#A*)*'),
+ ToStringTestData(F9, 'void Function<#A extends #B*,#B>(#A*,#B*)'),
+ ToStringTestData(F10, 'void Function<#A extends #B*,#B>(#A*,#B*)'),
+ ToStringTestData(F11, 'void Function<#A extends C3<#A*>*>(#A*)'),
+ ToStringTestData(F12, 'void Function<#A extends C3<#A*>*>(#A*)'),
+ ToStringTestData(F13, '#A* Function<#A>(#A*,#A*)*'),
+ ToStringTestData(F14, '#A* Function<#A>(#A*,#A*)*'),
+ ToStringTestData(F15,
+ 'Map<C5.T*,#A*>* Function<#A extends #B*,#B extends C5.T*>(#A*,#B*)'),
+ ToStringTestData(F16,
+ 'Map<C5.T*,#A*>* Function<#A extends C5.T*,#B extends #A*>(#A*,#B*)'),
+ ToStringTestData(
+ F17,
+ 'C5.T* Function<#A extends List<#B*>*,'
+ '#B extends Map<C5.T*,#A*>*>(#A*,#B*,Object*)'),
+ ToStringTestData(
+ F18,
+ 'C5.T* Function<#A extends C5.T*>(['
+ '#A2* Function<#A2 extends #A*>(#A*,#A2*,C5.T*)*,'
+ '#A3* Function<#A3 extends #A*>(#A*,#A3*,C5.T*)*])'),
+ ];
+
+ List<ToStringTestData> toStringExpected =
+ isDart2jsNnbd ? toStringExpectedNnbdWeak : toStringExpectedPreNnbd;
+ for (var test in toStringExpected) {
+ testToString(test.type, test.expected);
+ }
testBounds(F1, [Object_]);
testBounds(F2, [Object_]);
@@ -221,47 +283,104 @@
testBounds(F9, [F9.typeVariables.last, Object_]);
testBounds(F10, [F10.typeVariables.last, Object_]);
testBounds(F11, [
- instantiate(types, C3, [F11.typeVariables.last])
+ env.instantiate(C3, [F11.typeVariables.last])
]);
testBounds(F12, [
- instantiate(types, C3, [F12.typeVariables.last])
+ env.instantiate(C3, [F12.typeVariables.last])
]);
testBounds(F13, [Object_]);
testBounds(F14, [Object_]);
- testInstantiate(F1, [C1], 'void Function(C1)');
- testInstantiate(F2, [C2], 'void Function(C2)');
- testInstantiate(F3, [C1, C2], 'void Function(C1,C2)');
- testInstantiate(F4, [C1, C2], 'void Function(C2,C1)');
- testInstantiate(F5, [num_], 'void Function(num)');
- testInstantiate(F6, [int_], 'void Function(int)');
- testInstantiate(F7, [int_], 'void Function(int,[int])');
- testInstantiate(F8, [int_], 'int Function(int)');
- testInstantiate(F9, [int_, num_], 'void Function(int,num)');
- testInstantiate(F10, [int_, num_], 'void Function(int,num)');
- testInstantiate(F11, [C4], 'void Function(C4)');
- testInstantiate(F12, [C4], 'void Function(C4)');
- testInstantiate(F13, [C1], 'C1 Function(C1,C1)');
- testInstantiate(F14, [C2], 'C2 Function(C2,C2)');
- testInstantiate(F15, [int_, num_], 'Map<C5.T,int> Function(int,num)');
- testInstantiate(F16, [num_, int_], 'Map<C5.T,num> Function(num,int)');
+ List<InstantiateTestData> instantiateExpectedPreNnbd = [
+ InstantiateTestData(F1, [C1], 'void Function(C1)'),
+ InstantiateTestData(F2, [C2], 'void Function(C2)'),
+ InstantiateTestData(F3, [C1, C2], 'void Function(C1,C2)'),
+ InstantiateTestData(F4, [C1, C2], 'void Function(C2,C1)'),
+ InstantiateTestData(F5, [num_], 'void Function(num)'),
+ InstantiateTestData(F6, [int_], 'void Function(int)'),
+ InstantiateTestData(F7, [int_], 'void Function(int,[int])'),
+ InstantiateTestData(F8, [int_], 'int Function(int)'),
+ InstantiateTestData(F9, [int_, num_], 'void Function(int,num)'),
+ InstantiateTestData(F10, [int_, num_], 'void Function(int,num)'),
+ InstantiateTestData(F11, [C4], 'void Function(C4)'),
+ InstantiateTestData(F12, [C4], 'void Function(C4)'),
+ InstantiateTestData(F13, [C1], 'C1 Function(C1,C1)'),
+ InstantiateTestData(F14, [C2], 'C2 Function(C2,C2)'),
+ InstantiateTestData(F15, [int_, num_], 'Map<C5.T,int> Function(int,num)'),
+ InstantiateTestData(F16, [num_, int_], 'Map<C5.T,num> Function(num,int)'),
+ ];
- testSubst([num_], [C5_T], F15,
- 'Map<num,#A> Function<#A extends #B,#B extends num>(#A,#B)');
- testSubst([num_], [C5_T], F16,
- 'Map<num,#A> Function<#A extends num,#B extends #A>(#A,#B)');
- testSubst([num_], [C5_T], F17,
- 'num Function<#A extends List<#B>,#B extends Map<num,#A>>(#A,#B,Object)');
+ List<InstantiateTestData> instantiateExpectedNnbdWeak = [
+ InstantiateTestData(F1, [C1], 'void Function(C1*)'),
+ InstantiateTestData(F2, [C2], 'void Function(C2*)'),
+ InstantiateTestData(F3, [C1, C2], 'void Function(C1*,C2*)'),
+ InstantiateTestData(F4, [C1, C2], 'void Function(C2*,C1*)'),
+ InstantiateTestData(F5, [num_], 'void Function(num*)'),
+ InstantiateTestData(F6, [int_], 'void Function(int*)'),
+ InstantiateTestData(F7, [int_], 'void Function(int*,[int*])'),
+ InstantiateTestData(F8, [int_], 'int* Function(int*)'),
+ InstantiateTestData(F9, [int_, num_], 'void Function(int*,num*)'),
+ InstantiateTestData(F10, [int_, num_], 'void Function(int*,num*)'),
+ InstantiateTestData(F11, [C4], 'void Function(C4*)'),
+ InstantiateTestData(F12, [C4], 'void Function(C4*)'),
+ InstantiateTestData(F13, [C1], 'C1* Function(C1*,C1*)'),
+ InstantiateTestData(F14, [C2], 'C2* Function(C2*,C2*)'),
+ InstantiateTestData(
+ F15, [int_, num_], 'Map<C5.T*,int*>* Function(int*,num*)'),
+ InstantiateTestData(
+ F16, [num_, int_], 'Map<C5.T*,num*>* Function(num*,int*)'),
+ ];
- testSubst(
- [num_],
- [C5_T],
- F18,
- 'num Function<#A extends num>(['
- '#A2 Function<#A2 extends #A>(#A,#A2,num),'
- '#A3 Function<#A3 extends #A>(#A,#A3,num)])');
- Map<FunctionType, List<FunctionType>> expectedEquals =
- <FunctionType, List<FunctionType>>{
+ List<InstantiateTestData> instantiateExpected = isDart2jsNnbd
+ ? instantiateExpectedNnbdWeak
+ : instantiateExpectedPreNnbd;
+ for (var test in instantiateExpected) {
+ testInstantiate(test.type, test.instantiation, test.expected);
+ }
+
+ List<SubstTestData> substExpectedPreNnbd = [
+ SubstTestData([num_], [C5_T], F15,
+ 'Map<num,#A> Function<#A extends #B,#B extends num>(#A,#B)'),
+ SubstTestData([num_], [C5_T], F16,
+ 'Map<num,#A> Function<#A extends num,#B extends #A>(#A,#B)'),
+ SubstTestData([num_], [C5_T], F17,
+ 'num Function<#A extends List<#B>,#B extends Map<num,#A>>(#A,#B,Object)'),
+ SubstTestData(
+ [num_],
+ [C5_T],
+ F18,
+ 'num Function<#A extends num>(['
+ '#A2 Function<#A2 extends #A>(#A,#A2,num),'
+ '#A3 Function<#A3 extends #A>(#A,#A3,num)])'),
+ ];
+
+ List<SubstTestData> substExpectedNnbdWeak = [
+ SubstTestData([num_], [C5_T], F15,
+ 'Map<num*,#A*>* Function<#A extends #B*,#B extends num*>(#A*,#B*)'),
+ SubstTestData([num_], [C5_T], F16,
+ 'Map<num*,#A*>* Function<#A extends num*,#B extends #A*>(#A*,#B*)'),
+ SubstTestData(
+ [num_],
+ [C5_T],
+ F17,
+ 'num* Function<#A extends List<#B*>*,'
+ '#B extends Map<num*,#A*>*>(#A*,#B*,Object*)'),
+ SubstTestData(
+ [num_],
+ [C5_T],
+ F18,
+ 'num* Function<#A extends num*>(['
+ '#A2* Function<#A2 extends #A*>(#A*,#A2*,num*)*,'
+ '#A3* Function<#A3 extends #A*>(#A*,#A3*,num*)*])'),
+ ];
+
+ List<SubstTestData> substExpected =
+ isDart2jsNnbd ? substExpectedNnbdWeak : substExpectedPreNnbd;
+ for (var test in substExpected) {
+ testSubst(test.arguments, test.parameters, test.type, test.expected);
+ }
+
+ Map<DartType, List<DartType>> expectedEquals = {
F1: [F2],
F2: [F1],
F9: [F10],
@@ -272,14 +391,13 @@
F14: [F13],
};
- Map<FunctionType, List<FunctionType>> expectedSubtype =
- <FunctionType, List<FunctionType>>{
+ Map<DartType, List<DartType>> expectedSubtype = {
F7: [F5],
F8: [F5],
};
- for (FunctionType f1 in all) {
- for (FunctionType f2 in all) {
+ for (DartType f1 in all) {
+ for (DartType f2 in all) {
testRelations(f1, f2,
areEqual: identical(f1, f2) ||
(expectedEquals[f1]?.contains(f2) ?? false),
@@ -287,9 +405,13 @@
}
}
- testRelations(F1.typeVariables.first, F1.typeVariables.first,
+ var functionF1 = F1.withoutNullabilityAs<FunctionType>();
+ var functionF2 = F2.withoutNullabilityAs<FunctionType>();
+ testRelations(
+ functionF1.typeVariables.first, functionF1.typeVariables.first,
areEqual: true);
- testRelations(F1.typeVariables.first, F2.typeVariables.first);
+ testRelations(
+ functionF1.typeVariables.first, functionF2.typeVariables.first);
env.elementEnvironment.forEachConstructor(C3,
(ConstructorEntity constructor) {
@@ -303,7 +425,7 @@
Expect.isTrue(
functionTypeVariables.isEmpty,
"Function type variables found on constructor $constructor: "
- "${printTypes(functionTypeVariables)}");
+ "${env.printTypes(functionTypeVariables)}");
});
});
}
diff --git a/tests/compiler/dart2js/generic_methods/generic_method_type_test.dart b/tests/compiler/dart2js/generic_methods/generic_method_type_test.dart
index a6a17a0..3584feb 100644
--- a/tests/compiler/dart2js/generic_methods/generic_method_type_test.dart
+++ b/tests/compiler/dart2js/generic_methods/generic_method_type_test.dart
@@ -9,6 +9,7 @@
import 'package:compiler/src/elements/types.dart';
import 'package:compiler/src/universe/call_structure.dart';
import 'package:expect/expect.dart';
+import '../helpers/memory_compiler.dart';
import '../helpers/type_test_helper.dart';
List<FunctionTypeData> signatures = const <FunctionTypeData>[
@@ -34,11 +35,12 @@
""");
for (FunctionTypeData data in signatures) {
- FunctionType functionType =
- env.getElementType('t${data.name}').withoutNullability;
+ DartType functionType = env.getElementType('t${data.name}');
+ Expect.isTrue(functionType is! LegacyType ||
+ (env.options.useLegacySubtyping && isDart2jsNnbd));
+ functionType = functionType.withoutNullability;
FunctionEntity method = env.getElement('m${data.name}');
- FunctionType methodType =
- env.getElementType('m${data.name}').withoutNullability;
+ FunctionType methodType = env.getElementType('m${data.name}');
ParameterStructure parameterStructure = method.parameterStructure;
Expect.equals(functionType, methodType, "Type mismatch on $data");
Expect.equals(
diff --git a/tests/compiler/dart2js/helpers/type_test_helper.dart b/tests/compiler/dart2js/helpers/type_test_helper.dart
index 92ce751..a6e089c 100644
--- a/tests/compiler/dart2js/helpers/type_test_helper.dart
+++ b/tests/compiler/dart2js/helpers/type_test_helper.dart
@@ -10,15 +10,19 @@
import 'package:expect/expect.dart';
import 'package:compiler/src/common_elements.dart';
import 'package:compiler/src/commandline_options.dart';
-import 'package:compiler/src/compiler.dart';
-import 'package:compiler/src/elements/types.dart';
import 'package:compiler/src/compiler.dart' show Compiler;
+import 'package:compiler/src/elements/types.dart';
import 'package:compiler/src/elements/entities.dart';
import 'package:compiler/src/kernel/kelements.dart';
import 'package:compiler/src/kernel/kernel_strategy.dart';
+import 'package:compiler/src/options.dart';
import 'package:compiler/src/world.dart' show JClosedWorld, KClosedWorld;
import 'memory_compiler.dart' as memory;
+extension DartTypeHelpers on DartType {
+ T withoutNullabilityAs<T extends DartType>() => withoutNullability as T;
+}
+
DartType instantiate(
DartTypes dartTypes, ClassEntity element, List<DartType> arguments) {
return dartTypes.interfaceType(element, arguments);
@@ -58,6 +62,12 @@
TypeEnvironment._(Compiler this.compiler, {this.testBackendWorld: false});
+ DartType legacyWrap(DartType type) {
+ return memory.isDart2jsNnbd && options.useLegacySubtyping
+ ? types.legacyType(type)
+ : type;
+ }
+
ElementEnvironment get elementEnvironment {
if (testBackendWorld) {
return compiler.backendClosedWorldForTesting.elementEnvironment;
@@ -74,6 +84,8 @@
}
}
+ CompilerOptions get options => compiler.options;
+
DartTypes get types {
if (testBackendWorld) {
return compiler.backendClosedWorldForTesting.dartTypes;
@@ -184,6 +196,16 @@
assert(!testBackendWorld);
return compiler.frontendClosedWorldForTesting;
}
+
+ String printType(DartType type) => type.toStructuredText(
+ printLegacyStars: options.printLegacyStars,
+ useLegacySubtyping: options.useLegacySubtyping);
+
+ List<String> printTypes(List<DartType> types) =>
+ types.map(printType).toList();
+
+ DartType instantiate(ClassEntity element, List<DartType> arguments) =>
+ types.interfaceType(element, arguments.map(legacyWrap).toList());
}
/// Data used to create a function type either as method declaration or a
diff --git a/tests/compiler/dart2js/inference/null_flat_type_mask_test.dart b/tests/compiler/dart2js/inference/null_flat_type_mask_test.dart
new file mode 100644
index 0000000..01e0041
--- /dev/null
+++ b/tests/compiler/dart2js/inference/null_flat_type_mask_test.dart
@@ -0,0 +1,34 @@
+// Copyright (c) 2020, 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.
+
+// @dart = 2.7
+
+import 'package:async_helper/async_helper.dart';
+import 'package:compiler/src/elements/entities.dart';
+import 'package:compiler/src/inferrer/typemasks/masks.dart';
+import 'package:compiler/src/world.dart';
+import 'package:expect/expect.dart';
+import '../helpers/type_test_helper.dart';
+
+main() {
+ runTest() async {
+ TypeEnvironment env = await TypeEnvironment.create(r"""
+ main() {}
+ """, testBackendWorld: true);
+ JClosedWorld world = env.jClosedWorld;
+ ClassEntity nullClass = env.commonElements.nullClass;
+ FlatTypeMask empty = FlatTypeMask.empty();
+ Expect.equals(empty, FlatTypeMask.exact(nullClass, world));
+ Expect.equals(empty, FlatTypeMask.subclass(nullClass, world));
+ Expect.equals(empty, FlatTypeMask.subtype(nullClass, world));
+ Expect.equals(empty, FlatTypeMask.nonNullExact(nullClass, world));
+ Expect.equals(empty, FlatTypeMask.nonNullSubclass(nullClass, world));
+ Expect.equals(empty, FlatTypeMask.nonNullSubtype(nullClass, world));
+ }
+
+ asyncTest(() async {
+ print('--test from kernel------------------------------------------------');
+ await runTest();
+ });
+}
diff --git a/tests/compiler/dart2js/inference/union_type_test.dart b/tests/compiler/dart2js/inference/union_type_test.dart
index 83e86fd..710264a 100644
--- a/tests/compiler/dart2js/inference/union_type_test.dart
+++ b/tests/compiler/dart2js/inference/union_type_test.dart
@@ -22,8 +22,8 @@
}
""", testBackendWorld: true);
JClosedWorld world = env.jClosedWorld;
- FlatTypeMask mask1 = new FlatTypeMask.exact(env.getClass('A'));
- FlatTypeMask mask2 = new FlatTypeMask.exact(env.getClass('B'));
+ FlatTypeMask mask1 = new FlatTypeMask.exact(env.getClass('A'), world);
+ FlatTypeMask mask2 = new FlatTypeMask.exact(env.getClass('B'), world);
UnionTypeMask union1 = mask1.nonNullable().union(mask2, world);
UnionTypeMask union2 = mask2.nonNullable().union(mask1, world);
Expect.equals(union1, union2);
diff --git a/tests/compiler/dart2js/model/cfe_constant_evaluation_test.dart b/tests/compiler/dart2js/model/cfe_constant_evaluation_test.dart
index a3c182f..da4b870 100644
--- a/tests/compiler/dart2js/model/cfe_constant_evaluation_test.dart
+++ b/tests/compiler/dart2js/model/cfe_constant_evaluation_test.dart
@@ -32,9 +32,19 @@
final String declarations;
/// Tested constants.
- final List<ConstantData> constants;
+ final List<ConstantData> constantsCommon;
+ final List<ConstantData> constantsPreNnbd;
+ final List<ConstantData> constantsNnbdWeak;
+ List<ConstantData> get constants =>
+ constantsCommon +
+ (isDart2jsNnbd && constantsNnbdWeak.isNotEmpty
+ ? constantsNnbdWeak
+ : constantsPreNnbd);
- const TestData(this.name, this.declarations, this.constants);
+ const TestData(this.name, this.declarations,
+ {this.constantsCommon: const [],
+ this.constantsPreNnbd: const [],
+ this.constantsNnbdWeak: const []});
}
class ConstantData {
@@ -55,7 +65,7 @@
}
const List<TestData> DATA = const [
- const TestData('simple', '', const [
+ const TestData('simple', '', constantsCommon: const [
const ConstantData('null', 'NullConstant'),
const ConstantData('false', 'BoolConstant(false)'),
const ConstantData('true', 'BoolConstant(true)'),
@@ -92,22 +102,6 @@
const ConstantData('"" != proxy', 'BoolConstant(true)'),
const ConstantData('Object', 'TypeConstant(Object)'),
const ConstantData('null ?? 0', 'IntConstant(0)'),
- const ConstantData(
- 'const [0, 1]', 'ListConstant(<int>[IntConstant(0), IntConstant(1)])'),
- const ConstantData('const <int>[0, 1]',
- 'ListConstant(<int>[IntConstant(0), IntConstant(1)])'),
- const ConstantData(
- 'const {0, 1}', 'SetConstant(<int>{IntConstant(0), IntConstant(1)})'),
- const ConstantData('const <int>{0, 1}',
- 'SetConstant(<int>{IntConstant(0), IntConstant(1)})'),
- const ConstantData(
- 'const {0: 1, 2: 3}',
- 'MapConstant(<int, int>{IntConstant(0): IntConstant(1), '
- 'IntConstant(2): IntConstant(3)})'),
- const ConstantData(
- 'const <int, int>{0: 1, 2: 3}',
- 'MapConstant(<int, int>{IntConstant(0): IntConstant(1), '
- 'IntConstant(2): IntConstant(3)})'),
const ConstantData('const <int, int>{0: 1, 0: 2}', 'NonConstant',
expectedErrors: 'ConstEvalDuplicateKey'),
const ConstantData(
@@ -128,6 +122,40 @@
const {}: 'StringConstant("bar")',
const {'foo': 'foo'}: 'StringConstant("foo")'
}),
+ ], constantsPreNnbd: const [
+ const ConstantData(
+ 'const [0, 1]', 'ListConstant(<int>[IntConstant(0), IntConstant(1)])'),
+ const ConstantData('const <int>[0, 1]',
+ 'ListConstant(<int>[IntConstant(0), IntConstant(1)])'),
+ const ConstantData(
+ 'const {0, 1}', 'SetConstant(<int>{IntConstant(0), IntConstant(1)})'),
+ const ConstantData('const <int>{0, 1}',
+ 'SetConstant(<int>{IntConstant(0), IntConstant(1)})'),
+ const ConstantData(
+ 'const {0: 1, 2: 3}',
+ 'MapConstant(<int, int>{IntConstant(0): IntConstant(1), '
+ 'IntConstant(2): IntConstant(3)})'),
+ const ConstantData(
+ 'const <int, int>{0: 1, 2: 3}',
+ 'MapConstant(<int, int>{IntConstant(0): IntConstant(1), '
+ 'IntConstant(2): IntConstant(3)})'),
+ ], constantsNnbdWeak: const [
+ const ConstantData(
+ 'const [0, 1]', 'ListConstant(<int*>[IntConstant(0), IntConstant(1)])'),
+ const ConstantData('const <int>[0, 1]',
+ 'ListConstant(<int*>[IntConstant(0), IntConstant(1)])'),
+ const ConstantData(
+ 'const {0, 1}', 'SetConstant(<int*>{IntConstant(0), IntConstant(1)})'),
+ const ConstantData('const <int>{0, 1}',
+ 'SetConstant(<int*>{IntConstant(0), IntConstant(1)})'),
+ const ConstantData(
+ 'const {0: 1, 2: 3}',
+ 'MapConstant(<int*, int*>{IntConstant(0): IntConstant(1), '
+ 'IntConstant(2): IntConstant(3)})'),
+ const ConstantData(
+ 'const <int, int>{0: 1, 2: 3}',
+ 'MapConstant(<int*, int*>{IntConstant(0): IntConstant(1), '
+ 'IntConstant(2): IntConstant(3)})'),
]),
const TestData('env', '''
const a = const bool.fromEnvironment("foo", defaultValue: true);
@@ -149,7 +177,7 @@
final field3 = 99;
const D(a, b) : super(field2: a, field1: b);
}
-''', const [
+''', constantsCommon: const [
const ConstantData('const Object()', 'ConstructedConstant(Object())'),
const ConstantData('const A()', 'ConstructedConstant(A())'),
const ConstantData(
@@ -202,9 +230,10 @@
class C<U> {
const factory C({field1}) = A<B<double>>;
}
-''', const [
+''', constantsCommon: const [
const ConstantData(
'const A()', 'ConstructedConstant(A<dynamic>(field1=IntConstant(42)))'),
+ ], constantsPreNnbd: const [
const ConstantData('const A<int>(field1: 87)',
'ConstructedConstant(A<int>(field1=IntConstant(87)))'),
const ConstantData('const B()',
@@ -217,6 +246,19 @@
'ConstructedConstant(A<B<double>>(field1=IntConstant(87)))'),
const ConstantData('const B<int>.named()',
'ConstructedConstant(A<int>(field1=IntConstant(42)))'),
+ ], constantsNnbdWeak: const [
+ const ConstantData('const A<int>(field1: 87)',
+ 'ConstructedConstant(A<int*>(field1=IntConstant(87)))'),
+ const ConstantData('const B()',
+ 'ConstructedConstant(A<B<dynamic>*>(field1=IntConstant(42)))'),
+ const ConstantData('const B<int>()',
+ 'ConstructedConstant(A<B<int*>*>(field1=IntConstant(42)))'),
+ const ConstantData('const B<int>(field1: 87)',
+ 'ConstructedConstant(A<B<int*>*>(field1=IntConstant(87)))'),
+ const ConstantData('const C<int>(field1: 87)',
+ 'ConstructedConstant(A<B<double*>*>(field1=IntConstant(87)))'),
+ const ConstantData('const B<int>.named()',
+ 'ConstructedConstant(A<int*>(field1=IntConstant(42)))'),
]),
const TestData('env2', '''
const c = const int.fromEnvironment("foo", defaultValue: 5);
@@ -230,7 +272,7 @@
class B extends A {
const B(a) : super(a, a * 2);
}
-''', const [
+''', constantsCommon: const [
const ConstantData('const A(c, d)', const <Map<String, String>, String>{
const {}: 'ConstructedConstant(A(field=IntConstant(15)))',
const {'foo': '7', 'bar': '11'}:
@@ -252,7 +294,7 @@
const A.named(z, this.t) : y = 400 + z, this.z = z, x = 3;
const A.named2(t, z, y, x) : x = t, y = z, z = y, t = x;
}
- ''', const [
+ ''', constantsCommon: const [
const ConstantData(
'const A.named(99, 100)',
'ConstructedConstant(A('
@@ -316,7 +358,7 @@
final int field = string;
const Class10();
}
- ''', const [
+ ''', constantsCommon: const [
const ConstantData(
r'"$integer $string $boolean"', 'StringConstant("5 baz false")'),
const ConstantData('integer ? true : false', 'NonConstant',
@@ -425,7 +467,7 @@
class E {
const E() : assert(true_);
}
- ''', const [
+ ''', constantsCommon: const [
const ConstantData(r'const A()', 'ConstructedConstant(A())'),
const ConstantData(r'const B()', 'ConstructedConstant(B())'),
const ConstantData(r'const D(0)',
@@ -440,8 +482,9 @@
const C(this.defaultValue, this.identityFunction);
}
- ''', const <ConstantData>[
+ ''', constantsCommon: [
const ConstantData('identity', 'FunctionConstant(identity)'),
+ ], constantsPreNnbd: const <ConstantData>[
const ConstantData(
'const C<int>(0, identity)',
'ConstructedConstant(C<int>(defaultValue=IntConstant(0),'
@@ -452,17 +495,33 @@
'ConstructedConstant(C<double>(defaultValue=DoubleConstant(0.5),'
'identityFunction=InstantiationConstant([double],'
'FunctionConstant(identity))))'),
+ ], constantsNnbdWeak: const <ConstantData>[
+ const ConstantData(
+ 'const C<int>(0, identity)',
+ 'ConstructedConstant(C<int*>(defaultValue=IntConstant(0),'
+ 'identityFunction=InstantiationConstant([int*],'
+ 'FunctionConstant(identity))))'),
+ const ConstantData(
+ 'const C<double>(0.5, identity)',
+ 'ConstructedConstant(C<double*>(defaultValue=DoubleConstant(0.5),'
+ 'identityFunction=InstantiationConstant([double*],'
+ 'FunctionConstant(identity))))'),
]),
const TestData('generic class', '''
class C<T> {
const C.generative();
const C.redirect() : this.generative();
}
- ''', const <ConstantData>[
+ ''', constantsPreNnbd: const <ConstantData>[
const ConstantData(
'const C<int>.generative()', 'ConstructedConstant(C<int>())'),
const ConstantData(
'const C<int>.redirect()', 'ConstructedConstant(C<int>())'),
+ ], constantsNnbdWeak: const <ConstantData>[
+ const ConstantData(
+ 'const C<int>.generative()', 'ConstructedConstant(C<int*>())'),
+ const ConstantData(
+ 'const C<int>.redirect()', 'ConstructedConstant(C<int*>())'),
]),
const TestData('instance', '''
const dynamic zero_ = const bool.fromEnvironment("x") ? null : 0;
@@ -470,7 +529,7 @@
final field = zero_;
const Class9();
}
-''', const <ConstantData>[
+''', constantsCommon: const <ConstantData>[
const ConstantData(
'const Class9()', 'ConstructedConstant(Class9(field=IntConstant(0)))'),
]),
@@ -490,13 +549,20 @@
final T Function(T) a;
const C2(dynamic t) : a = id; // implicit partial instantiation
}
-''', const <ConstantData>[
+''', constantsPreNnbd: const <ConstantData>[
const ConstantData('const C1<A>(const A())',
'ConstructedConstant(C1<A>(a=ConstructedConstant(A())))'),
const ConstantData(
'const C2<A>(id)',
'ConstructedConstant(C2<A>(a='
'InstantiationConstant([A],FunctionConstant(id))))'),
+ ], constantsNnbdWeak: const <ConstantData>[
+ const ConstantData('const C1<A>(const A())',
+ 'ConstructedConstant(C1<A*>(a=ConstructedConstant(A())))'),
+ const ConstantData(
+ 'const C2<A>(id)',
+ 'ConstructedConstant(C2<A*>(a='
+ 'InstantiationConstant([A*],FunctionConstant(id))))'),
]),
const TestData('unused-arguments', '''
class A {
@@ -522,21 +588,31 @@
class Subclass<T extends A> extends Class<T> {
const Subclass(dynamic t) : super(t);
}
-''', const <ConstantData>[
- const ConstantData(
- 'const Class<A>(const A())', 'ConstructedConstant(Class<A>())'),
- const ConstantData('const Class<B>.redirect(const B())',
- 'ConstructedConstant(Class<B>())'),
+''', constantsCommon: [
const ConstantData('const Class<B>.redirect(const C())', 'NonConstant',
expectedErrors: 'ConstEvalInvalidType'),
const ConstantData('const Class<A>.method(const A())', 'NonConstant',
expectedErrors: 'ConstEvalInvalidMethodInvocation'),
+ const ConstantData('const Subclass<B>(const C())', 'NonConstant',
+ expectedErrors: 'ConstEvalInvalidType'),
+ ], constantsPreNnbd: const <ConstantData>[
+ const ConstantData(
+ 'const Class<A>(const A())', 'ConstructedConstant(Class<A>())'),
+ const ConstantData('const Class<B>.redirect(const B())',
+ 'ConstructedConstant(Class<B>())'),
const ConstantData(
'const Subclass<A>(const A())', 'ConstructedConstant(Subclass<A>())'),
const ConstantData(
'const Subclass<B>(const B())', 'ConstructedConstant(Subclass<B>())'),
- const ConstantData('const Subclass<B>(const C())', 'NonConstant',
- expectedErrors: 'ConstEvalInvalidType'),
+ ], constantsNnbdWeak: const <ConstantData>[
+ const ConstantData(
+ 'const Class<A>(const A())', 'ConstructedConstant(Class<A*>())'),
+ const ConstantData('const Class<B>.redirect(const B())',
+ 'ConstructedConstant(Class<B*>())'),
+ const ConstantData(
+ 'const Subclass<A>(const A())', 'ConstructedConstant(Subclass<A*>())'),
+ const ConstantData(
+ 'const Subclass<B>(const B())', 'ConstructedConstant(Subclass<B*>())'),
]),
];
diff --git a/tests/compiler/dart2js/model/future_or_test.dart b/tests/compiler/dart2js/model/future_or_test.dart
index feb5e2e..30e126a 100644
--- a/tests/compiler/dart2js/model/future_or_test.dart
+++ b/tests/compiler/dart2js/model/future_or_test.dart
@@ -53,14 +53,6 @@
new C().futureOrT();
}
""");
- var options = env.compiler.options;
-
- String typeToString(DartType type) {
- return type.toStructuredText(
- printLegacyStars: options.printLegacyStars,
- useLegacySubtyping: options.useLegacySubtyping);
- }
-
FunctionType getFunctionType(String name, String expectedType,
[ClassEntity cls]) {
FunctionType type = env.getMemberType(name, cls);
@@ -68,7 +60,7 @@
"Member $name not found${cls != null ? ' in class $cls' : ''}.");
Expect.equals(
expectedType,
- typeToString(type),
+ env.printType(type),
"Unexpected type for $name"
"${cls != null ? ' in class $cls' : ''}.");
return type;
@@ -82,7 +74,7 @@
DartType returnType = type.returnType.withoutNullability;
Expect.equals(
expectedType,
- typeToString(returnType),
+ env.printType(returnType),
"Unexpected return type for $name"
"${cls != null ? ' in class $cls' : ''}.");
return returnType;
diff --git a/tests/compiler/dart2js/model/mixin_typevariable_test.dart b/tests/compiler/dart2js/model/mixin_typevariable_test.dart
index c2d4e4d..b5625b9 100644
--- a/tests/compiler/dart2js/model/mixin_typevariable_test.dart
+++ b/tests/compiler/dart2js/model/mixin_typevariable_test.dart
@@ -58,7 +58,9 @@
}
env.elementEnvironment.forEachSupertype(element, (InterfaceType supertype) {
if (!supertype.typeArguments.isEmpty) {
- Expect.listEquals(typeVariables, supertype.typeArguments,
+ Expect.listEquals(
+ env.printTypes(typeVariables),
+ env.printTypes(supertype.typeArguments),
"Type argument mismatch on supertype $supertype of $element.");
} else {
Expect.equals(Object, supertype.element);
@@ -144,11 +146,13 @@
env.elementEnvironment.forEachSupertype(element, (InterfaceType supertype) {
if (typeArguments.containsKey(supertype.element)) {
Expect.listEquals(
- typeArguments[supertype.element],
- supertype.typeArguments,
+ env.printTypes(typeArguments[supertype.element]),
+ env.printTypes(supertype.typeArguments),
"Type argument mismatch on supertype $supertype of $element.");
} else if (!supertype.typeArguments.isEmpty) {
- Expect.listEquals(typeVariables, supertype.typeArguments,
+ Expect.listEquals(
+ env.printTypes(typeVariables),
+ env.printTypes(supertype.typeArguments),
"Type argument mismatch on supertype $supertype of $element.");
} else if (env.elementEnvironment
.isUnnamedMixinApplication(supertype.element)) {
diff --git a/tests/compiler/dart2js/model/type_substitution_test.dart b/tests/compiler/dart2js/model/type_substitution_test.dart
index 64e3702..9072baa 100644
--- a/tests/compiler/dart2js/model/type_substitution_test.dart
+++ b/tests/compiler/dart2js/model/type_substitution_test.dart
@@ -71,30 +71,30 @@
DartType intType = env['int'];
DartType stringType = env['String'];
- InterfaceType C_int = instantiate(types, C, [intType]);
- Expect.equals(instantiate(types, C, [intType]), C_int);
- Expect.equals(instantiate(types, A, [intType]), types.asInstanceOf(C_int, A));
+ InterfaceType C_int = env.instantiate(C, [intType]);
+ Expect.equals(env.instantiate(C, [intType]), C_int);
+ Expect.equals(env.instantiate(A, [intType]), types.asInstanceOf(C_int, A));
- InterfaceType D_int = instantiate(types, D, [stringType]);
- Expect.equals(instantiate(types, A, [intType]), types.asInstanceOf(D_int, A));
+ InterfaceType D_int = env.instantiate(D, [stringType]);
+ Expect.equals(env.instantiate(A, [intType]), types.asInstanceOf(D_int, A));
- InterfaceType E_int = instantiate(types, E, [intType]);
+ InterfaceType E_int = env.instantiate(E, [intType]);
Expect.equals(
- instantiate(types, A, [
- instantiate(types, A, [intType])
+ env.instantiate(A, [
+ env.instantiate(A, [intType])
]),
types.asInstanceOf(E_int, A));
- InterfaceType F_int_string = instantiate(types, F, [intType, stringType]);
+ InterfaceType F_int_string = env.instantiate(F, [intType, stringType]);
Expect.equals(
- instantiate(types, B, [
- instantiate(types, F, [intType, stringType])
+ env.instantiate(B, [
+ env.instantiate(F, [intType, stringType])
]),
types.asInstanceOf(F_int_string, B));
Expect.equals(
- instantiate(types, A, [
- instantiate(types, F, [
- instantiate(types, B, [stringType]),
+ env.instantiate(A, [
+ env.instantiate(F, [
+ env.instantiate(B, [stringType]),
intType
])
]),
@@ -164,61 +164,56 @@
env.elementEnvironment,
arguments,
parameters,
- instantiate(types, ListClass, [intType]),
- instantiate(types, ListClass, [intType]));
+ env.instantiate(ListClass, [intType]),
+ env.instantiate(ListClass, [intType]));
+ testSubstitution(types, env.elementEnvironment, arguments, parameters,
+ env.instantiate(ListClass, [T]), env.instantiate(ListClass, [intType]));
testSubstitution(
types,
env.elementEnvironment,
arguments,
parameters,
- instantiate(types, ListClass, [T]),
- instantiate(types, ListClass, [intType]));
+ env.instantiate(ListClass, [S]),
+ env.instantiate(ListClass, [StringType]));
testSubstitution(
types,
env.elementEnvironment,
arguments,
parameters,
- instantiate(types, ListClass, [S]),
- instantiate(types, ListClass, [StringType]));
- testSubstitution(
- types,
- env.elementEnvironment,
- arguments,
- parameters,
- instantiate(types, ListClass, [
- instantiate(types, ListClass, [T])
+ env.instantiate(ListClass, [
+ env.instantiate(ListClass, [T])
]),
- instantiate(types, ListClass, [
- instantiate(types, ListClass, [intType])
+ env.instantiate(ListClass, [
+ env.instantiate(ListClass, [intType])
]));
testSubstitution(
types,
env.elementEnvironment,
arguments,
parameters,
- instantiate(types, ListClass, [types.dynamicType()]),
- instantiate(types, ListClass, [types.dynamicType()]));
+ env.instantiate(ListClass, [types.dynamicType()]),
+ env.instantiate(ListClass, [types.dynamicType()]));
testSubstitution(
types,
env.elementEnvironment,
arguments,
parameters,
- instantiate(types, MapClass, [intType, StringType]),
- instantiate(types, MapClass, [intType, StringType]));
+ env.instantiate(MapClass, [intType, StringType]),
+ env.instantiate(MapClass, [intType, StringType]));
testSubstitution(
types,
env.elementEnvironment,
arguments,
parameters,
- instantiate(types, MapClass, [T, StringType]),
- instantiate(types, MapClass, [intType, StringType]));
+ env.instantiate(MapClass, [T, StringType]),
+ env.instantiate(MapClass, [intType, StringType]));
testSubstitution(
types,
env.elementEnvironment,
arguments,
parameters,
- instantiate(types, MapClass, [types.dynamicType(), StringType]),
- instantiate(types, MapClass, [types.dynamicType(), StringType]));
+ env.instantiate(MapClass, [types.dynamicType(), StringType]),
+ env.instantiate(MapClass, [types.dynamicType(), StringType]));
testSubstitution(
types, env.elementEnvironment, arguments, parameters, T, intType);
testSubstitution(
diff --git a/tests/compiler/dart2js/rti/type_representation_test.dart b/tests/compiler/dart2js/rti/type_representation_test.dart
deleted file mode 100644
index 5258d04..0000000
--- a/tests/compiler/dart2js/rti/type_representation_test.dart
+++ /dev/null
@@ -1,318 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// @dart = 2.7
-
-// TODO(johnniwinther): Port this test to be frontend agnostic.
-
-library type_representation_test;
-
-import 'package:async_helper/async_helper.dart';
-import 'package:compiler/src/common_elements.dart';
-import 'package:compiler/src/compiler.dart';
-import 'package:compiler/src/elements/types.dart';
-import 'package:compiler/src/js/js.dart';
-import 'package:compiler/src/elements/entities.dart';
-import 'package:compiler/src/js_backend/runtime_types.dart'
- show RuntimeTypeTags, TypeRepresentationGenerator;
-import 'package:compiler/src/js_model/js_strategy.dart';
-import 'package:compiler/src/world.dart';
-import 'package:expect/expect.dart';
-import '../helpers/element_lookup.dart';
-import '../helpers/memory_compiler.dart';
-import '../helpers/type_test_helper.dart';
-
-void main() {
- asyncTest(() async {
- await testAll();
- });
-}
-
-testAll() async {
- await testTypeRepresentations();
-}
-
-List<FunctionTypeData> signatures = const <FunctionTypeData>[
- const FunctionTypeData("void", "1", "()"),
- const FunctionTypeData("int", "2", "()"),
- const FunctionTypeData("List<int>", "3", "()"),
- const FunctionTypeData("dynamic", "4", "()"),
- const FunctionTypeData("dynamic", "5", "(int a, String b)"),
- const FunctionTypeData("dynamic", "6", "(int a, [String b])"),
- const FunctionTypeData(
- "dynamic", "7", "(int a, String b, [List<int> c, dynamic d])"),
- const FunctionTypeData("dynamic", "8", "(int a, {String b})"),
- const FunctionTypeData(
- "dynamic", "9", "(int a, String b, {List<int> c, dynamic d})"),
- const FunctionTypeData(
- "dynamic", "10", "(void Function(int a, [dynamic b]) f)"),
- const FunctionTypeData("FutureOr<int>", "11",
- "<T extends num, S>(FutureOr<T> a, S b, List<void> c)"),
-];
-
-testTypeRepresentations() async {
- String source = '''
-import 'dart:async';
-
-${createTypedefs(signatures, prefix: 'Typedef')}
-${createMethods(signatures, prefix: 'm')}
-
-main() {
- ${createUses(signatures, prefix: 'Typedef')}
- ${createUses(signatures, prefix: 'm')}
-}
-''';
- CompilationResult result =
- await runCompiler(memorySourceFiles: {'main.dart': source});
- Expect.isTrue(result.isSuccess);
- Compiler compiler = result.compiler;
- JsBackendStrategy backendStrategy = compiler.backendStrategy;
-
- RuntimeTypeTags rtiTags = const RuntimeTypeTags();
- TypeRepresentationGenerator typeRepresentation =
- new TypeRepresentationGenerator(
- rtiTags, compiler.backendClosedWorldForTesting.nativeData);
-
- Expression onVariable(TypeVariableType _variable) {
- TypeVariableType variable = _variable;
- return new VariableUse(variable.element.name);
- }
-
- String stringify(Expression expression) {
- return prettyPrint(expression,
- enableMinification: compiler.options.enableMinification);
- }
-
- void expect(DartType type, String expectedRepresentation,
- [String expectedTypedefRepresentation]) {
- Expression expression = typeRepresentation.getTypeRepresentation(
- backendStrategy.emitterTask.emitter, type, onVariable);
- Expect.stringEquals(expectedRepresentation, stringify(expression));
-
- expression = typeRepresentation.getTypeRepresentation(
- backendStrategy.emitterTask.emitter, type, onVariable);
- if (expectedTypedefRepresentation == null) {
- expectedTypedefRepresentation = expectedRepresentation;
- }
- Expect.stringEquals(expectedTypedefRepresentation, stringify(expression));
- }
-
- String getJsName(Entity cls) {
- Expression name = typeRepresentation.getJavaScriptClassName(
- cls, backendStrategy.emitterTask.emitter);
- return stringify(name);
- }
-
- JClosedWorld closedWorld = compiler.backendClosedWorldForTesting;
- DartTypes dartTypes = closedWorld.dartTypes;
- ElementEnvironment elementEnvironment = closedWorld.elementEnvironment;
- String func = rtiTags.functionTypeTag;
- String ret = rtiTags.functionTypeReturnTypeTag;
- String retvoid = '$ret: -1';
- String args = rtiTags.functionTypeRequiredParametersTag;
- String opt = rtiTags.functionTypeOptionalParametersTag;
- String named = rtiTags.functionTypeNamedParametersTag;
- String bounds = rtiTags.functionTypeGenericBoundsTag;
- String futureOr = rtiTags.futureOrTag;
- String futureOrType = rtiTags.futureOrTypeTag;
-
- ClassEntity List_ = findClass(closedWorld, 'List');
- TypeVariableType List_E =
- elementEnvironment.getThisType(List_).typeArguments[0];
- ClassEntity Map_ = findClass(closedWorld, 'Map');
- TypeVariableType Map_K =
- elementEnvironment.getThisType(Map_).typeArguments[0];
- TypeVariableType Map_V =
- elementEnvironment.getThisType(Map_).typeArguments[1];
-
- InterfaceType Object_ = closedWorld.commonElements.objectType;
- InterfaceType num_ = closedWorld.commonElements.numType;
- InterfaceType int_ = closedWorld.commonElements.intType;
- InterfaceType String_ = closedWorld.commonElements.stringType;
- DartType dynamic_ = closedWorld.commonElements.dynamicType;
- DartType Typedef1_ = findFieldType(closedWorld, 'Typedef1');
- DartType Typedef2_ = findFieldType(closedWorld, 'Typedef2');
- DartType Typedef3_ = findFieldType(closedWorld, 'Typedef3');
- DartType Typedef4_ = findFieldType(closedWorld, 'Typedef4');
- DartType Typedef5_ = findFieldType(closedWorld, 'Typedef5');
- DartType Typedef6_ = findFieldType(closedWorld, 'Typedef6');
- DartType Typedef7_ = findFieldType(closedWorld, 'Typedef7');
- DartType Typedef8_ = findFieldType(closedWorld, 'Typedef8');
- DartType Typedef9_ = findFieldType(closedWorld, 'Typedef9');
- DartType Typedef10_ = findFieldType(closedWorld, 'Typedef10');
- DartType Typedef11_ = findFieldType(closedWorld, 'Typedef11');
-
- String List_rep = getJsName(List_);
- String List_E_rep = stringify(onVariable(List_E));
- String Map_rep = getJsName(Map_);
- String Map_K_rep = stringify(onVariable(Map_K));
- String Map_V_rep = stringify(onVariable(Map_V));
-
- String Object_rep = getJsName(Object_.element);
- String num_rep = getJsName(num_.element);
- String int_rep = getJsName(int_.element);
- String String_rep = getJsName(String_.element);
-
- String getTypedefTag(DartType type) {
- // TODO(johnniwinther): Should/can we preserve typedef names from kernel?
- //String typedefTag = backend.namer.typedefTag;
- //TypedefType typedef = type;
- //return ', $typedefTag: ${getJsName(typedef.element)}';
- return '';
- }
-
- String Typedef1_tag = getTypedefTag(Typedef1_);
- String Typedef2_tag = getTypedefTag(Typedef2_);
- String Typedef3_tag = getTypedefTag(Typedef3_);
- String Typedef4_tag = getTypedefTag(Typedef4_);
- String Typedef5_tag = getTypedefTag(Typedef5_);
- String Typedef6_tag = getTypedefTag(Typedef6_);
- String Typedef7_tag = getTypedefTag(Typedef7_);
- String Typedef8_tag = getTypedefTag(Typedef8_);
- String Typedef9_tag = getTypedefTag(Typedef9_);
- String Typedef10_tag = getTypedefTag(Typedef10_);
-
- expect(int_, '$int_rep');
- expect(String_, '$String_rep');
- expect(dynamic_, 'null');
-
- // List<E>
- expect(elementEnvironment.getThisType(List_), '[$List_rep, $List_E_rep]');
- // List
- expect(elementEnvironment.getRawType(List_), '[$List_rep,,]');
- // List<dynamic>
- expect(instantiate(dartTypes, List_, [dynamic_]), '[$List_rep,,]');
- // List<int>
- expect(instantiate(dartTypes, List_, [int_]), '[$List_rep, $int_rep]');
- // List<Typedef1>
- expect(
- instantiate(dartTypes, List_, [Typedef1_]),
- '[$List_rep, {$func: 1, $retvoid}]',
- '[$List_rep, {$func: 1, $retvoid$Typedef1_tag}]');
- expect(
- instantiate(dartTypes, List_, [Typedef2_]),
- '[$List_rep, {$func: 1, $ret: $int_rep}]',
- '[$List_rep, {$func: 1, $ret: $int_rep$Typedef2_tag}]');
- expect(
- instantiate(dartTypes, List_, [Typedef3_]),
- '[$List_rep, {$func: 1, $ret: [$List_rep, $int_rep]}]',
- '[$List_rep, {$func: 1, $ret: [$List_rep, $int_rep]$Typedef3_tag}]');
- expect(instantiate(dartTypes, List_, [Typedef4_]), '[$List_rep, {$func: 1}]',
- '[$List_rep, {$func: 1$Typedef4_tag}]');
- expect(
- instantiate(dartTypes, List_, [Typedef5_]),
- '[$List_rep, {$func: 1,'
- ' $args: [$int_rep, $String_rep]}]',
- '[$List_rep, {$func: 1,'
- ' $args: [$int_rep, $String_rep]$Typedef5_tag}]');
- expect(
- instantiate(dartTypes, List_, [Typedef6_]),
- '[$List_rep, {$func: 1,'
- ' $args: [$int_rep], $opt: [$String_rep]}]',
- '[$List_rep, {$func: 1,'
- ' $args: [$int_rep], $opt: [$String_rep]$Typedef6_tag}]');
- expect(
- instantiate(dartTypes, List_, [Typedef7_]),
- '[$List_rep, {$func: 1, $args: '
- '[$int_rep, $String_rep], $opt: [[$List_rep, $int_rep],,]}]',
- '[$List_rep, {$func: 1, $args: '
- '[$int_rep, $String_rep], $opt: [[$List_rep, $int_rep],,]'
- '$Typedef7_tag}]');
- expect(
- instantiate(dartTypes, List_, [Typedef8_]),
- '[$List_rep, {$func: 1, $args: [$int_rep],'
- ' $named: {b: $String_rep}}]',
- '[$List_rep, {$func: 1, $args: [$int_rep],'
- ' $named: {b: $String_rep}$Typedef8_tag}]');
- expect(
- instantiate(dartTypes, List_, [Typedef9_]),
- '[$List_rep, {$func: 1, '
- '$args: [$int_rep, $String_rep], $named: '
- '{c: [$List_rep, $int_rep], d: null}}]',
- '[$List_rep, {$func: 1, '
- '$args: [$int_rep, $String_rep], $named: {c: [$List_rep, $int_rep],'
- ' d: null}$Typedef9_tag}]');
- expect(
- instantiate(dartTypes, List_, [Typedef10_]),
- '[$List_rep, {$func: 1, '
- '$args: [{$func: 1, $retvoid, '
- '$args: [$int_rep], $opt: [,]}]}]',
- '[$List_rep, {$func: 1, '
- '$args: [{$func: 1, $retvoid, '
- '$args: [$int_rep], $opt: [,]}]$Typedef10_tag}]');
-
- expect(
- instantiate(dartTypes, List_, [Typedef11_]),
- '[$List_rep, {$func: 1, $bounds: [$num_rep, $Object_rep], '
- '$ret: {$futureOr: 1, $futureOrType: $int_rep}, '
- '$args: [{$futureOr: 1, $futureOrType: 0}, 1, [$List_rep, -1]]}]');
-
- // Map<K,V>
- expect(elementEnvironment.getThisType(Map_),
- '[$Map_rep, $Map_K_rep, $Map_V_rep]');
- // Map
- expect(elementEnvironment.getRawType(Map_), '[$Map_rep,,,]');
- // Map<dynamic,dynamic>
- expect(instantiate(dartTypes, Map_, [dynamic_, dynamic_]), '[$Map_rep,,,]');
- // Map<int,String>
- expect(instantiate(dartTypes, Map_, [int_, String_]),
- '[$Map_rep, $int_rep, $String_rep]');
-
- // void m1() {}
- expect(findFunctionType(closedWorld, 'm1'), '{$func: 1, $retvoid}');
-
- // int m2() => 0;
- expect(findFunctionType(closedWorld, 'm2'), '{$func: 1, $ret: $int_rep}');
-
- // List<int> m3() => null;
- expect(findFunctionType(closedWorld, 'm3'),
- '{$func: 1, $ret: [$List_rep, $int_rep]}');
-
- // m4() {}
- expect(findFunctionType(closedWorld, 'm4'), '{$func: 1}');
-
- // m5(int a, String b) {}
- expect(findFunctionType(closedWorld, 'm5'),
- '{$func: 1, $args: [$int_rep, $String_rep]}');
-
- // m6(int a, [String b]) {}
- expect(
- findFunctionType(closedWorld, 'm6'),
- '{$func: 1, $args: [$int_rep],'
- ' $opt: [$String_rep]}');
-
- // m7(int a, String b, [List<int> c, d]) {}
- expect(
- findFunctionType(closedWorld, 'm7'),
- '{$func: 1,'
- ' $args: [$int_rep, $String_rep],'
- ' $opt: [[$List_rep, $int_rep],,]}');
-
- // m8(int a, {String b}) {}
- expect(
- findFunctionType(closedWorld, 'm8'),
- '{$func: 1,'
- ' $args: [$int_rep], $named: {b: $String_rep}}');
-
- // m9(int a, String b, {List<int> c, d}) {}
- expect(
- findFunctionType(closedWorld, 'm9'),
- '{$func: 1,'
- ' $args: [$int_rep, $String_rep],'
- ' $named: {c: [$List_rep, $int_rep], d: null}}');
-
- // m10(void f(int a, [b])) {}
- expect(
- findFunctionType(closedWorld, 'm10'),
- '{$func: 1, $args:'
- ' [{$func: 1,'
- ' $retvoid, $args: [$int_rep], $opt: [,]}]}');
-
- // FutureOr<int> m11<T, S>(FutureOr<T> a, S b, List<void> c) {}
- expect(
- findFunctionType(closedWorld, 'm11'),
- '{$func: 1, $bounds: [$num_rep, $Object_rep], '
- '$ret: {$futureOr: 1, $futureOrType: $int_rep}, '
- '$args: [{$futureOr: 1, $futureOrType: 0}, 1, [$List_rep, -1]]}');
-}
diff --git a/tests/compiler/dart2js/sourcemaps/d2js_validity_test.dart b/tests/compiler/dart2js/sourcemaps/d2js_validity_test.dart
deleted file mode 100644
index 7fea711..0000000
--- a/tests/compiler/dart2js/sourcemaps/d2js_validity_test.dart
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// @dart = 2.7
-
-import 'dart:async';
-import 'dart:io';
-
-import 'package:async_helper/async_helper.dart';
-import 'package:compiler/src/dart2js.dart' as entry;
-import 'package:compiler/src/apiimpl.dart';
-import 'package:compiler/compiler_new.dart';
-
-import 'helpers/source_map_validator_helper.dart';
-
-import '../helpers/memory_compiler.dart';
-
-void main() {
- String mainFile =
- 'tests/compiler/dart2js/sourcemaps/test_files/validator_test_file.dart';
- asyncTest(() => createTempDir().then((Directory tmpDir) {
- print('Compiling $mainFile');
- Future<CompilationResult> result = entry.internalMain([
- mainFile,
- '-o${tmpDir.path}/out.js',
- '--platform-binaries=$sdkPlatformBinariesPath',
- '--libraries-spec=$sdkLibrariesSpecificationPath',
- ]);
- return result.then((CompilationResult result) {
- CompilerImpl compiler = result.compiler;
- Uri uri = new Uri.file('${tmpDir.path}/out.js',
- windows: Platform.isWindows);
- validateSourceMap(uri,
- mainUri: Uri.base.resolve(mainFile),
- mainPosition: const Position(13, 1),
- compiler: compiler);
-
- print("Deleting '${tmpDir.path}'.");
- tmpDir.deleteSync(recursive: true);
- });
- }));
-}
diff --git a/tests/compiler/dart2js/sourcemaps/deferred_d2js_validity_test.dart b/tests/compiler/dart2js/sourcemaps/deferred_d2js_validity_test.dart
deleted file mode 100644
index 4b9229e..0000000
--- a/tests/compiler/dart2js/sourcemaps/deferred_d2js_validity_test.dart
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// @dart = 2.7
-
-import 'dart:io';
-
-import 'package:async_helper/async_helper.dart';
-import 'package:compiler/src/dart2js.dart' as entry;
-import 'package:compiler/src/apiimpl.dart';
-import 'package:compiler/compiler_new.dart';
-
-import 'helpers/source_map_validator_helper.dart';
-
-import '../helpers/memory_compiler.dart';
-
-void main() {
- asyncTest(() => createTempDir().then((Directory tmpDir) {
- String file = 'tests/compiler/dart2js/sourcemaps/test_files/'
- 'deferred_validator_test_file.dart';
- print("Compiling $file");
- var result = entry.internalMain([
- file,
- '-o${tmpDir.path}/out.js',
- '--platform-binaries=$sdkPlatformBinariesPath',
- '--libraries-spec=$sdkLibrariesSpecificationPath',
- ]);
- return result.then((CompilationResult result) {
- CompilerImpl compiler = result.compiler;
- Uri mainUri = new Uri.file('${tmpDir.path}/out.js',
- windows: Platform.isWindows);
- Uri deferredUri = new Uri.file('${tmpDir.path}/out.js_1.part.js',
- windows: Platform.isWindows);
- validateSourceMap(mainUri,
- mainUri: Uri.base.resolve(file),
- mainPosition: const Position(7, 1),
- compiler: compiler);
- validateSourceMap(deferredUri, compiler: compiler);
-
- print("Deleting '${tmpDir.path}'.");
- tmpDir.deleteSync(recursive: true);
- });
- }));
-}
diff --git a/tests/compiler/dart2js/sourcemaps/helpers/source_map_validator_helper.dart b/tests/compiler/dart2js/sourcemaps/helpers/source_map_validator_helper.dart
deleted file mode 100644
index 158276b..0000000
--- a/tests/compiler/dart2js/sourcemaps/helpers/source_map_validator_helper.dart
+++ /dev/null
@@ -1,325 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// @dart = 2.7
-
-import 'dart:io';
-import 'dart:convert';
-import 'dart:async';
-
-import 'package:path/path.dart' as path;
-import 'package:expect/expect.dart';
-import 'package:source_maps/source_maps.dart';
-import 'package:compiler/src/apiimpl.dart';
-
-validateSourceMap(Uri targetUri,
- {Uri mainUri, Position mainPosition, CompilerImpl compiler}) {
- Uri mapUri = getMapUri(targetUri);
- List<String> targetLines = new File.fromUri(targetUri).readAsLinesSync();
- SingleMapping sourceMap = getSourceMap(mapUri);
- checkFileReferences(targetUri, mapUri, sourceMap);
- checkIndexReferences(targetLines, mapUri, sourceMap);
- checkRedundancy(sourceMap);
- if (compiler != null) {
- checkNames(targetUri, mapUri, sourceMap, compiler);
- }
- if (mainUri != null && mainPosition != null) {
- checkMainPosition(targetUri, targetLines, sourceMap, mainUri, mainPosition);
- }
-}
-
-checkIndexReferences(
- List<String> targetLines, Uri mapUri, SingleMapping sourceMap) {
- int urlsLength = sourceMap.urls.length;
- List<List<String>> sources = new List(urlsLength);
- print('Reading sources');
- for (int i = 0; i < urlsLength; i++) {
- sources[i] = new File.fromUri(mapUri.resolve(sourceMap.urls[i]))
- .readAsStringSync()
- .split('\n');
- }
-
- sourceMap.lines.forEach((TargetLineEntry line) {
- Expect.isTrue(line.line >= 0);
- Expect.isTrue(line.line < targetLines.length);
- for (TargetEntry entry in line.entries) {
- int urlIndex = entry.sourceUrlId;
-
- // TODO(zarah): Entry columns sometimes point one or more characters too
- // far. Incomment this check when this is fixed.
- //
- // Expect.isTrue(entry.column < target[line.line].length);
- Expect.isTrue(entry.column >= 0);
- Expect.isTrue(
- urlIndex == null || (urlIndex >= 0 && urlIndex < urlsLength));
- Expect.isTrue(entry.sourceLine == null ||
- (entry.sourceLine >= 0 &&
- entry.sourceLine < sources[urlIndex].length));
- Expect.isTrue(entry.sourceColumn == null ||
- (entry.sourceColumn >= 0 &&
- entry.sourceColumn < sources[urlIndex][entry.sourceLine].length));
- Expect.isTrue(entry.sourceNameId == null ||
- (entry.sourceNameId >= 0 &&
- entry.sourceNameId < sourceMap.names.length));
- }
- });
-}
-
-checkFileReferences(Uri targetUri, Uri mapUri, SingleMapping sourceMap) {
- Expect.equals(targetUri, mapUri.resolve(sourceMap.targetUrl));
- print('Checking sources');
- sourceMap.urls.forEach((String url) {
- Expect.isTrue(new File.fromUri(mapUri.resolve(url)).existsSync());
- });
-}
-
-checkRedundancy(SingleMapping sourceMap) {
- sourceMap.lines.forEach((TargetLineEntry line) {
- TargetEntry previous = null;
- for (TargetEntry next in line.entries) {
- if (previous != null) {
- Expect.isFalse(
- sameSourcePoint(previous, next),
- '$previous and $next are consecutive entries on line $line in the '
- 'source map but point to same source locations');
- }
- previous = next;
- }
- });
-}
-
-checkNames(
- Uri targetUri, Uri mapUri, SingleMapping sourceMap, CompilerImpl compiler) {
- // TODO(johnniwinther): Port this to work on kernel based elements.
- /*
- Map<Uri, CompilationUnitElement> compilationUnitMap = {};
-
- void mapCompilationUnits(LibraryElement library) {
- library.compilationUnits.forEach((CompilationUnitElement compilationUnit) {
- compilationUnitMap[compilationUnit.script.readableUri] = compilationUnit;
- });
- }
-
- compiler.libraryLoader.libraries.forEach((_library) {
- LibraryElement library = _library;
- mapCompilationUnits(library);
- if (library.patch != null) {
- mapCompilationUnits(library.patch);
- }
- });
-
- sourceMap.lines.forEach((TargetLineEntry line) {
- for (TargetEntry entry in line.entries) {
- if (entry.sourceNameId != null) {
- Uri uri = mapUri.resolve(sourceMap.urls[entry.sourceUrlId]);
- Position sourcePosition =
- new Position(entry.sourceLine, entry.sourceColumn);
- String name = sourceMap.names[entry.sourceNameId];
-
- CompilationUnitElement compilationUnit = compilationUnitMap[uri];
- Expect.isNotNull(
- compilationUnit, "No compilation unit found for $uri.");
-
- SourceFile sourceFile = compilationUnit.script.file;
-
- Position positionFromOffset(int offset) {
- Location location = sourceFile.getLocation(offset);
- int line = location.line - 1;
- int column = location.column - 1;
- return new Position(line, column);
- }
-
- Interval intervalFromElement(AstElement element) {
- if (!element.hasNode) return null;
-
- var begin = 0;
- int end = 0;
- return new Interval(
- positionFromOffset(begin), positionFromOffset(end));
- }
-
- AstElement findInnermost(AstElement element) {
- bool isInsideElement(FunctionElement closure) {
- Element enclosing = closure;
- while (enclosing != null) {
- if (enclosing == element) return true;
- enclosing = enclosing.enclosingElement;
- }
- return false;
- }
-
- if (element is MemberElement) {
- MemberElement member = element;
- member.nestedClosures.forEach((dynamic closure) {
- var localFunction = closure.expression;
- Interval interval = intervalFromElement(localFunction);
- if (interval != null &&
- interval.contains(sourcePosition) &&
- isInsideElement(localFunction)) {
- element = localFunction;
- }
- });
- }
- return element;
- }
-
- void match(Element _element) {
- AstElement element = _element;
- Interval interval = intervalFromElement(element);
- if (interval != null && interval.contains(sourcePosition)) {
- AstElement innerElement = findInnermost(element);
- String expectedName = computeElementNameForSourceMaps(innerElement);
- int stubIndex = name.indexOf('[function-entry');
- if (stubIndex != -1) {
- Expect.isTrue(innerElement is FunctionElement,
- "Unexpected element $innerElement for stub '$name'.");
- name = name.substring(0, stubIndex);
- }
- if (name != expectedName) {
- // For the code
- // (){}();
- // ^
- // the indicated position is within the scope of the local
- // function but it is also the position for the invocation of it.
- // Allow name to be either from the local or from its calling
- // context.
- if (innerElement.isLocal && innerElement.isFunction) {
- var enclosingElement = innerElement.enclosingElement;
- String expectedName2 =
- computeElementNameForSourceMaps(enclosingElement);
- Expect.isTrue(
- name == expectedName2,
- "Unexpected name '${name}', "
- "expected '${expectedName}' for $innerElement "
- "or '${expectedName2}' for $enclosingElement.");
- } else {
- Expect.equals(
- expectedName,
- name,
- "Unexpected name '${name}', "
- "expected '${expectedName}' or for $innerElement.");
- }
- }
- }
- }
-
- compilationUnit.forEachLocalMember((Element element) {
- if (element.isClass) {
- ClassElement classElement = element;
- classElement.forEachLocalMember(match);
- } else {
- match(element);
- }
- });
- }
- }
- });*/
-}
-
-RegExp mainSignaturePrefix = new RegExp(r'main: \[?function\(');
-
-// Check that the line pointing to by [mainPosition] in [mainUri] contains
-// the main function signature.
-checkMainPosition(Uri targetUri, List<String> targetLines,
- SingleMapping sourceMap, Uri mainUri, Position mainPosition) {
- bool mainPositionFound = false;
- sourceMap.lines.forEach((TargetLineEntry lineEntry) {
- lineEntry.entries.forEach((TargetEntry entry) {
- if (entry.sourceLine == null || entry.sourceUrlId == null) return;
- Uri sourceUri = targetUri.resolve(sourceMap.urls[entry.sourceUrlId]);
- if (sourceUri != mainUri) return;
- if (entry.sourceLine + 1 == mainPosition.line &&
- entry.sourceColumn + 1 == mainPosition.column) {
- Expect.isNotNull(entry.sourceNameId, "Main position has no name.");
- String name = sourceMap.names[entry.sourceNameId];
- Expect.equals(
- 'main', name, "Main position name is not '$name', not 'main'.");
- String line = targetLines[lineEntry.line];
- Expect.isTrue(
- line.contains(mainSignaturePrefix),
- "Line mapped to main position "
- "([${lineEntry.line + 1},${entry.column + 1}]) "
- "expected to contain '${mainSignaturePrefix.pattern}':\n$line\n");
- mainPositionFound = true;
- }
- });
- });
- Expect.isTrue(
- mainPositionFound, 'No main position $mainPosition found in $mainUri');
-}
-
-sameSourcePoint(TargetEntry entry, TargetEntry otherEntry) {
- return (entry.sourceUrlId == otherEntry.sourceUrlId) &&
- (entry.sourceLine == otherEntry.sourceLine) &&
- (entry.sourceColumn == otherEntry.sourceColumn) &&
- (entry.sourceNameId == otherEntry.sourceNameId);
-}
-
-Uri getMapUri(Uri targetUri) {
- print('Accessing $targetUri');
- File targetFile = new File.fromUri(targetUri);
- Expect.isTrue(targetFile.existsSync(), "File '$targetUri' doesn't exist.");
- List<String> target = targetFile.readAsStringSync().split('\n');
- String mapReference = target[target.length - 2]; // #sourceMappingURL=<url>
- Expect.isTrue(mapReference.startsWith('//# sourceMappingURL='));
- String mapName = mapReference.substring(mapReference.indexOf('=') + 1);
- return targetUri.resolve(mapName);
-}
-
-SingleMapping getSourceMap(Uri mapUri) {
- print('Accessing $mapUri');
- File mapFile = new File.fromUri(mapUri);
- Expect.isTrue(mapFile.existsSync());
- return new SingleMapping.fromJson(json.decode(mapFile.readAsStringSync()));
-}
-
-copyDirectory(Directory sourceDir, Directory destinationDir) {
- sourceDir.listSync().forEach((FileSystemEntity element) {
- String newPath =
- path.join(destinationDir.path, path.basename(element.path));
- if (element is File) {
- element.copySync(newPath);
- } else if (element is Directory) {
- Directory newDestinationDir = new Directory(newPath);
- newDestinationDir.createSync();
- copyDirectory(element, newDestinationDir);
- }
- });
-}
-
-Future<Directory> createTempDir() {
- return Directory.systemTemp
- .createTemp('sourceMap_test-')
- .then((Directory dir) {
- return dir;
- });
-}
-
-class Position {
- final int line;
- final int column;
-
- const Position(this.line, this.column);
-
- bool operator <=(Position other) {
- return line < other.line || line == other.line && column <= other.column;
- }
-
- @override
- String toString() => '[${line + 1},${column + 1}]';
-}
-
-class Interval {
- final Position begin;
- final Position end;
-
- Interval(this.begin, this.end);
-
- bool contains(Position other) {
- return begin <= other && other <= end;
- }
-
- @override
- String toString() => '$begin-$end';
-}
diff --git a/tests/compiler/dartdevc_native/hot_restart_late_test.dart b/tests/compiler/dartdevc_native/hot_restart_late_test.dart
new file mode 100644
index 0000000..1908f6d
--- /dev/null
+++ b/tests/compiler/dartdevc_native/hot_restart_late_test.dart
@@ -0,0 +1,33 @@
+// Copyright (c) 2020, 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.
+
+// Tests that late fields are properly reset after hot restarts.
+
+// Requirements=nnbd
+
+import 'package:expect/expect.dart';
+import 'dart:_runtime' as dart;
+
+class Lates {
+ late String s;
+}
+
+main() {
+ var l = Lates();
+
+ Expect.throws(() => l.s);
+ l.s = "set";
+ Expect.equals(l.s, "set");
+
+ dart.hotRestart();
+
+ Expect.throws(() => l.s);
+ l.s = "set";
+ Expect.equals(l.s, "set");
+
+ dart.hotRestart();
+ dart.hotRestart();
+
+ Expect.throws(() => l.s);
+}
diff --git a/tests/compiler/dartdevc_native/hot_restart_lazy_test.dart b/tests/compiler/dartdevc_native/hot_restart_lazy_test.dart
new file mode 100644
index 0000000..8e95fa7
--- /dev/null
+++ b/tests/compiler/dartdevc_native/hot_restart_lazy_test.dart
@@ -0,0 +1,38 @@
+// Copyright (c) 2020, 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.
+
+// Tests that lazily-loaded fields are properly reset after hot restarts.
+
+import 'package:expect/expect.dart';
+import 'dart:_runtime' as dart;
+
+double lazy = 3.14;
+
+class Lazies {
+ static String s = "default";
+}
+
+main() {
+ Expect.equals(Lazies.s, "default");
+ Lazies.s = "set";
+ Expect.equals(Lazies.s, "set");
+ Expect.equals(lazy, 3.14);
+ lazy = 2.72;
+ Expect.equals(lazy, 2.72);
+
+ dart.hotRestart();
+
+ Expect.equals(Lazies.s, "default");
+ Lazies.s = "set";
+ Expect.equals(Lazies.s, "set");
+ Expect.equals(lazy, 3.14);
+ lazy = 2.72;
+ Expect.equals(lazy, 2.72);
+
+ dart.hotRestart();
+ dart.hotRestart();
+
+ Expect.equals(Lazies.s, "default");
+ Expect.equals(lazy, 3.14);
+}
diff --git a/tests/language/async/await_test.dart b/tests/language/async/await_test.dart
index de063c9..eca75a8 100644
--- a/tests/language/async/await_test.dart
+++ b/tests/language/async/await_test.dart
@@ -813,7 +813,7 @@
f() async {
try {
await new Future.error(42);
- } catch (e) {
+ } on dynamic catch (e) {
return e;
}
}
diff --git a/tests/language/generic/async_star_test.dart b/tests/language/generic/async_star_test.dart
new file mode 100644
index 0000000..da88b9a
--- /dev/null
+++ b/tests/language/generic/async_star_test.dart
@@ -0,0 +1,19 @@
+// Copyright (c) 2016, 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 "package:expect/expect.dart";
+
+import 'dart:async';
+
+Stream<T> foo<T>(T x) async* {
+ for (int i = 0; i < 3; i++) {
+ yield x;
+ }
+}
+
+main() async {
+ await for (var x in foo<int>(1)) {
+ Expect.equals(1, x);
+ }
+}
diff --git a/tests/language/generic/async_test.dart b/tests/language/generic/async_test.dart
new file mode 100644
index 0000000..8f86031
--- /dev/null
+++ b/tests/language/generic/async_test.dart
@@ -0,0 +1,13 @@
+// Copyright (c) 2016, 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 "package:expect/expect.dart";
+
+import 'dart:async';
+
+Future<T> foo<T>(T x) async => x;
+
+main() async {
+ Expect.equals(1, await foo<int>(1));
+}
diff --git a/tests/language/generic/cascaded_forwarding_stubs_generic_test.dart b/tests/language/generic/cascaded_forwarding_stubs_generic_test.dart
new file mode 100644
index 0000000..9408e78
--- /dev/null
+++ b/tests/language/generic/cascaded_forwarding_stubs_generic_test.dart
@@ -0,0 +1,57 @@
+// Copyright (c) 2017, 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 "package:expect/expect.dart";
+
+class A {}
+
+class B extends A {}
+
+class C {
+ void f(B x, B y) {}
+}
+
+abstract class I1<T> {
+ void f(T x, B y);
+}
+
+// D contains a forwarding stub for f which ensures that `x` is type checked.
+class D extends C implements I1<B> {}
+
+abstract class I2<T> {
+ void f(B x, T y);
+}
+
+// E contains a forwarding stub for f which ensures that `y` is type checked.
+class E extends D implements I2<B> {}
+
+main() {
+ E e = new E();
+ C c = e;
+ I1<A> i1 = e;
+ D d = e;
+ I2<A> i2 = e;
+ dynamic a = new A();
+ dynamic b = new B();
+ c.f(b, b); // No error
+ i1.f(b, b); // No error
+ d.f(b, b); // No error
+ i2.f(b, b); // No error
+ e.f(b, b); // No error
+ Expect.throwsTypeError(() {
+ i1.f(a, b);
+ });
+ Expect.throwsTypeError(() {
+ d.f(a, b);
+ });
+ Expect.throwsTypeError(() {
+ i2.f(b, a);
+ });
+ Expect.throwsTypeError(() {
+ e.f(a, b);
+ });
+ Expect.throwsTypeError(() {
+ e.f(b, a);
+ });
+}
diff --git a/tests/language/generic/closure_test.dart b/tests/language/generic/closure_test.dart
new file mode 100644
index 0000000..3946c10
--- /dev/null
+++ b/tests/language/generic/closure_test.dart
@@ -0,0 +1,70 @@
+// Copyright (c) 2014, 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.
+// Dart test program for constructors and initializers.
+
+// Check that generic closures are properly instantiated.
+
+import 'package:expect/expect.dart';
+
+typedef T F<T>(T x);
+typedef R G<T, R>(T x);
+
+class C<T> {
+ get f => (T x) => x;
+ T g(T x) => x;
+}
+
+main() {
+ {
+ var c = new C<int>();
+ var f = c.f;
+ var g = c.g;
+ Expect.equals("(int) => int", f.runtimeType.toString()); //# 01: ok
+ Expect.equals("(Object?) => int", g.runtimeType.toString()); //# 01: ok
+ Expect.equals(21, f(21));
+ Expect.equals(14, g(14));
+ Expect.isTrue(f is Function);
+ Expect.isTrue(g is Function);
+ Expect.isTrue(f is! F);
+ Expect.isTrue(g is F);
+ Expect.isTrue(f is F<int>);
+ Expect.isTrue(g is F<int>);
+ Expect.isTrue(f is! F<bool>);
+ Expect.isTrue(g is! F<bool>);
+ Expect.isTrue(f is G<int, int>);
+ Expect.isTrue(g is G<int, int>);
+ Expect.isTrue(f is! G<int, bool>);
+ Expect.isTrue(g is! G<int, bool>);
+ Expect.isTrue(f is! G<Object,int>);
+ Expect.isTrue(g is G<Object, int>);
+ }
+
+ {
+ var c = new C<bool>();
+ var f = c.f;
+ var g = c.g;
+ Expect.equals("(bool) => bool", f.runtimeType.toString()); //# 01: ok
+ Expect.equals("(Object?) => bool", g.runtimeType.toString()); //# 01: ok
+ Expect.isTrue(f is! F);
+ Expect.isTrue(g is F);
+ Expect.isTrue(f is! F<int>);
+ Expect.isTrue(g is! F<int>);
+ Expect.isTrue(f is F<bool>);
+ Expect.isTrue(g is F<bool>);
+ }
+
+ {
+ var c = new C();
+ var f = c.f;
+ var g = c.g;
+ Expect.equals("(dynamic) => dynamic", f.runtimeType.toString()); //# 01: ok
+ Expect.equals("(Object?) => dynamic", g.runtimeType.toString()); //# 01: ok
+ Expect.isTrue(f is F);
+ Expect.isTrue(g is F);
+ Expect.isTrue(f is! F<int>);
+ Expect.isTrue(g is! F<int>);
+ Expect.isTrue(f is! F<bool>);
+ Expect.isTrue(g is! F<bool>);
+ }
+}
diff --git a/tests/language/generic/conflicting_generic_interfaces_hierarchy_loop_infinite_test.dart b/tests/language/generic/conflicting_generic_interfaces_hierarchy_loop_infinite_test.dart
new file mode 100644
index 0000000..f3f4473
--- /dev/null
+++ b/tests/language/generic/conflicting_generic_interfaces_hierarchy_loop_infinite_test.dart
@@ -0,0 +1,16 @@
+// 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.
+// Dart test program to test arithmetic operations.
+
+// There is an interface conflict here due to a loop in the class
+// hierarchy leading to an infinite set of implemented types; this loop
+// shouldn't cause non-termination.
+/*@compile-error=unspecified*/ class A<T> implements B<List<T>> {}
+
+/*@compile-error=unspecified*/ class B<T> implements A<List<T>> {}
+
+main() {
+ new A();
+ new B();
+}
diff --git a/tests/language/generic/conflicting_generic_interfaces_hierarchy_loop_test.dart b/tests/language/generic/conflicting_generic_interfaces_hierarchy_loop_test.dart
new file mode 100644
index 0000000..e24aaa8
--- /dev/null
+++ b/tests/language/generic/conflicting_generic_interfaces_hierarchy_loop_test.dart
@@ -0,0 +1,16 @@
+// 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.
+// Dart test program to test arithmetic operations.
+
+// There is no interface conflict here, but there is a loop in the class
+// hierarchy leading to a finite set of implemented types; this loop
+// shouldn't cause non-termination.
+/*@compile-error=unspecified*/ class A<T> implements B<T> {}
+
+/*@compile-error=unspecified*/ class B<T> implements A<T> {}
+
+main() {
+ new A();
+ new B();
+}
diff --git a/tests/language/generic/conflicting_generic_interfaces_no_conflict_test.dart b/tests/language/generic/conflicting_generic_interfaces_no_conflict_test.dart
new file mode 100644
index 0000000..f52d32b
--- /dev/null
+++ b/tests/language/generic/conflicting_generic_interfaces_no_conflict_test.dart
@@ -0,0 +1,16 @@
+// 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.
+// Dart test program to test arithmetic operations.
+
+class I<T> {}
+
+class A implements I<int> {}
+
+class B implements I<int> {}
+
+class C extends A implements B {}
+
+main() {
+ new C();
+}
diff --git a/tests/language/generic/conflicting_generic_interfaces_simple_test.dart b/tests/language/generic/conflicting_generic_interfaces_simple_test.dart
new file mode 100644
index 0000000..fe319b2
--- /dev/null
+++ b/tests/language/generic/conflicting_generic_interfaces_simple_test.dart
@@ -0,0 +1,16 @@
+// 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.
+// Dart test program to test arithmetic operations.
+
+class I<T> {}
+
+class A implements I<int> {}
+
+class B implements I<String> {}
+
+/*@compile-error=unspecified*/ class C extends A implements B {}
+
+main() {
+ new C();
+}
diff --git a/tests/language/generic/constructor_mixin2_runtime_test.dart b/tests/language/generic/constructor_mixin2_runtime_test.dart
new file mode 100644
index 0000000..969c893
--- /dev/null
+++ b/tests/language/generic/constructor_mixin2_runtime_test.dart
@@ -0,0 +1,27 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// Copyright (c) 2014, 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 parameter types types are checked correctly in the face of
+// mixin application upon a generic constructor.
+
+import '../dynamic_type_helper.dart';
+
+class A<X> {
+ A(X x);
+}
+
+class B {}
+
+class C {}
+
+class D<Y> = A<Y> with B, C;
+
+void main() {
+ var v = 0;
+ checkNoDynamicTypeError(() => new D<int>(v));
+
+}
diff --git a/tests/language/generic/constructor_mixin2_test.dart b/tests/language/generic/constructor_mixin2_test.dart
new file mode 100644
index 0000000..6630e4e
--- /dev/null
+++ b/tests/language/generic/constructor_mixin2_test.dart
@@ -0,0 +1,27 @@
+// Copyright (c) 2014, 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 parameter types types are checked correctly in the face of
+// mixin application upon a generic constructor.
+
+import '../dynamic_type_helper.dart';
+
+class A<X> {
+ A(X x);
+}
+
+class B {}
+
+class C {}
+
+class D<Y> = A<Y> with B, C;
+
+void main() {
+ var v = 0;
+ checkNoDynamicTypeError(() => new D<int>(v));
+ checkDynamicTypeError(() => new D<String>(v));
+ // ^
+ // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+ // [cfe] The argument type 'int' can't be assigned to the parameter type 'String'.
+}
diff --git a/tests/language/generic/constructor_mixin3_runtime_test.dart b/tests/language/generic/constructor_mixin3_runtime_test.dart
new file mode 100644
index 0000000..dfdd2bf
--- /dev/null
+++ b/tests/language/generic/constructor_mixin3_runtime_test.dart
@@ -0,0 +1,26 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// Copyright (c) 2014, 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 parameter types types are checked correctly in the face of
+// mixin application upon a generic constructor.
+
+import '../dynamic_type_helper.dart';
+
+class A<X> {
+ A(X x);
+}
+
+class B {}
+
+class C1 = A<int> with B;
+class C2 = A<String> with B;
+
+void main() {
+ var v = 0;
+ checkNoDynamicTypeError(() => new C1(v));
+
+}
diff --git a/tests/language/generic/constructor_mixin3_test.dart b/tests/language/generic/constructor_mixin3_test.dart
new file mode 100644
index 0000000..7a1a21a
--- /dev/null
+++ b/tests/language/generic/constructor_mixin3_test.dart
@@ -0,0 +1,26 @@
+// Copyright (c) 2014, 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 parameter types types are checked correctly in the face of
+// mixin application upon a generic constructor.
+
+import '../dynamic_type_helper.dart';
+
+class A<X> {
+ A(X x);
+}
+
+class B {}
+
+class C1 = A<int> with B;
+class C2 = A<String> with B;
+
+void main() {
+ var v = 0;
+ checkNoDynamicTypeError(() => new C1(v));
+ checkDynamicTypeError(() => new C2(v));
+ // ^
+ // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+ // [cfe] The argument type 'int' can't be assigned to the parameter type 'String'.
+}
diff --git a/tests/language/generic/constructor_mixin_runtime_test.dart b/tests/language/generic/constructor_mixin_runtime_test.dart
new file mode 100644
index 0000000..31d7fd2
--- /dev/null
+++ b/tests/language/generic/constructor_mixin_runtime_test.dart
@@ -0,0 +1,25 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// Copyright (c) 2014, 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 parameter types types are checked correctly in the face of
+// mixin application upon a generic constructor.
+
+import '../dynamic_type_helper.dart';
+
+class A<X> {
+ A(X x);
+}
+
+class B {}
+
+class C<Y> = A<Y> with B;
+
+void main() {
+ var v = 0;
+ checkNoDynamicTypeError(() => new C<int>(v));
+
+}
diff --git a/tests/language/generic/constructor_mixin_test.dart b/tests/language/generic/constructor_mixin_test.dart
new file mode 100644
index 0000000..a2b828e
--- /dev/null
+++ b/tests/language/generic/constructor_mixin_test.dart
@@ -0,0 +1,25 @@
+// Copyright (c) 2014, 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 parameter types types are checked correctly in the face of
+// mixin application upon a generic constructor.
+
+import '../dynamic_type_helper.dart';
+
+class A<X> {
+ A(X x);
+}
+
+class B {}
+
+class C<Y> = A<Y> with B;
+
+void main() {
+ var v = 0;
+ checkNoDynamicTypeError(() => new C<int>(v));
+ checkDynamicTypeError(() => new C<String>(v));
+ // ^
+ // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+ // [cfe] The argument type 'int' can't be assigned to the parameter type 'String'.
+}
diff --git a/tests/language/generic/creation_test.dart b/tests/language/generic/creation_test.dart
new file mode 100644
index 0000000..eb3c4ef
--- /dev/null
+++ b/tests/language/generic/creation_test.dart
@@ -0,0 +1,42 @@
+// Copyright (c) 2012, 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 "package:expect/expect.dart";
+
+class A<X, Y, Z> {
+ shift() => new A<Z, X, Y>();
+ swap() => new A<Z, Y, X>();
+ first() => new A<X, X, X>();
+ last() => new A<Z, Z, Z>();
+ wrap() => new A<A<X, X, X>, A<Y, Y, Y>, A<Z, Z, Z>>();
+}
+
+class B extends A<U, V, W> {}
+
+class C<T> extends A<U, T, W> {}
+
+class D<X, Y, Z> extends A<Y, Z, X> {}
+
+class U {}
+
+class V {}
+
+class W {}
+
+sameType(a, b) => Expect.equals(a.runtimeType, b.runtimeType);
+
+main() {
+ A a = new A<U, V, W>();
+ sameType(new A<W, U, V>(), a.shift());
+ sameType(new A<W, V, U>(), a.swap());
+ sameType(new A<U, U, U>(), a.first());
+ sameType(new A<W, W, W>(), a.last());
+ sameType(new A<A<U, U, U>, A<V, V, V>, A<W, W, W>>(), a.wrap());
+ B b = new B();
+ sameType(new A<A<U, U, U>, A<V, V, V>, A<W, W, W>>(), b.wrap());
+ C c = new C<V>();
+ sameType(new A<A<U, U, U>, A<V, V, V>, A<W, W, W>>(), c.wrap());
+ D d = new D<U, V, W>();
+ sameType(new A<A<V, V, V>, A<W, W, W>, A<U, U, U>>(), d.wrap());
+}
diff --git a/tests/language/generic/deep_test.dart b/tests/language/generic/deep_test.dart
new file mode 100644
index 0000000..f907cea
--- /dev/null
+++ b/tests/language/generic/deep_test.dart
@@ -0,0 +1,92 @@
+// Copyright (c) 2012, 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 "package:expect/expect.dart";
+
+// Dart test for deeply nested generic types.
+
+/** A natural number aka Peano number. */
+abstract class N {
+ N add1();
+ N sub1();
+}
+
+/** Zero element. */
+class Z implements N {
+ Z();
+ N add1() {
+ return new S<Z>(this);
+ }
+
+ N sub1() {
+ throw "Error: sub1(0)";
+ }
+}
+
+/** Successor element. */
+class S<K> implements N {
+ N before;
+ S(this.before);
+ N add1() {
+ return new S<S<K>>(this);
+ }
+
+ N sub1() {
+ // It would be super cool if this could be "new K()".
+ return before;
+ }
+}
+
+N NFromInt(int x) {
+ if (x == 0)
+ return new Z();
+ else
+ return NFromInt(x - 1).add1();
+}
+
+int IntFromN(N x) {
+ if (x is Z) return 0;
+ if (x is S) return IntFromN(x.sub1()) + 1;
+ throw "Error";
+}
+
+bool IsEven(N x) {
+ if (x is Z) return true;
+ if (x is S<Z>) return false;
+ if (x is S<S>) return IsEven(x.sub1().sub1());
+ throw "Error in IsEven";
+}
+
+main() {
+ Expect.isTrue(NFromInt(0) is Z);
+ Expect.isTrue(NFromInt(1) is S<Z>);
+ Expect.isTrue(NFromInt(2) is S<S<Z>>);
+ Expect.isTrue(NFromInt(3) is S<S<S<Z>>>);
+ Expect.isTrue(NFromInt(10) is S<S<S<S<S<S<S<S<S<S<Z>>>>>>>>>>);
+
+ // Negative tests.
+ Expect.isTrue(NFromInt(0) is! S);
+ Expect.isTrue(NFromInt(1) is! Z);
+ Expect.isTrue(NFromInt(1) is! S<S>);
+ Expect.isTrue(NFromInt(2) is! Z);
+ Expect.isTrue(NFromInt(2) is! S<Z>);
+ Expect.isTrue(NFromInt(2) is! S<S<S>>);
+
+ // Greater-than tests
+ Expect.isTrue(NFromInt(4) is S<S>); // 4 >= 2
+ Expect.isTrue(NFromInt(4) is S<S<S>>); // 4 >= 3
+ Expect.isTrue(NFromInt(4) is S<S<S<S>>>); // 4 >= 4
+ Expect.isTrue(NFromInt(4) is! S<S<S<S<S>>>>); // 4 < 5
+
+ Expect.isTrue(IsEven(NFromInt(0)));
+ Expect.isFalse(IsEven(NFromInt(1)));
+ Expect.isTrue(IsEven(NFromInt(2)));
+ Expect.isFalse(IsEven(NFromInt(3)));
+ Expect.isTrue(IsEven(NFromInt(4)));
+
+ Expect.equals(0, IntFromN(NFromInt(0)));
+ Expect.equals(1, IntFromN(NFromInt(1)));
+ Expect.equals(2, IntFromN(NFromInt(2)));
+ Expect.equals(50, IntFromN(NFromInt(50)));
+}
diff --git a/tests/language/generic/f_bounded_equality_test.dart b/tests/language/generic/f_bounded_equality_test.dart
new file mode 100644
index 0000000..43fadfc
--- /dev/null
+++ b/tests/language/generic/f_bounded_equality_test.dart
@@ -0,0 +1,29 @@
+// Copyright (c) 2013, 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 "package:expect/expect.dart";
+
+class Magnitude<T> {
+ get t => T;
+}
+
+class Real extends Magnitude<Real> {}
+
+class FBound<F extends FBound<F>> {
+ get f => F;
+}
+
+class Bar extends FBound<Bar> {}
+
+main() {
+ var r = new Real();
+ Expect.equals(r.runtimeType, Real);
+ Expect.equals(r.t, Real);
+ Expect.equals(r.runtimeType, r.t);
+
+ var b = new Bar();
+ Expect.equals(b.runtimeType, Bar);
+ Expect.equals(b.f, Bar);
+ Expect.equals(b.runtimeType, b.f);
+}
diff --git a/tests/language/generic/f_bounded_quantification2_test.dart b/tests/language/generic/f_bounded_quantification2_test.dart
new file mode 100644
index 0000000..b55977b
--- /dev/null
+++ b/tests/language/generic/f_bounded_quantification2_test.dart
@@ -0,0 +1,19 @@
+// Copyright (c) 2013, 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 for F-Bounded Quantification. Regression test for issue 9291.
+
+class Entities<T extends ConceptEntity<T>> implements EntitiesApi<T> {}
+
+class ConceptEntity<T extends ConceptEntity<T>> implements EntityApi<T> {}
+
+abstract class EntityApi<T extends EntityApi<T>> {}
+
+abstract class EntitiesApi<T extends EntityApi<T>> {}
+
+class Concept extends ConceptEntity<Concept> {}
+
+main() {
+ new ConceptEntity<Concept>();
+}
diff --git a/tests/language/generic/f_bounded_quantification3_test.dart b/tests/language/generic/f_bounded_quantification3_test.dart
new file mode 100644
index 0000000..6c6f81c
--- /dev/null
+++ b/tests/language/generic/f_bounded_quantification3_test.dart
@@ -0,0 +1,28 @@
+// Copyright (c) 2013, 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 for F-Bounded Quantification.
+
+class FBound1<F1 extends FBound1<F1, F2>, F2 extends FBound2<F1, F2>> {
+ Test() {
+ new FBound1<F1, F2>();
+ new FBound2<F1, F2>();
+ }
+}
+
+class FBound2<F1 extends FBound1<F1, F2>, F2 extends FBound2<F1, F2>> {
+ Test() {
+ new FBound1<F1, F2>();
+ new FBound2<F1, F2>();
+ }
+}
+
+class Bar extends FBound1<Bar, Baz> {}
+
+class Baz extends FBound2<Bar, Baz> {}
+
+main() {
+ new FBound1<Bar, Baz>().Test();
+ new FBound2<Bar, Baz>().Test();
+}
diff --git a/tests/language/generic/f_bounded_quantification4_test.dart b/tests/language/generic/f_bounded_quantification4_test.dart
new file mode 100644
index 0000000..c3f7dec
--- /dev/null
+++ b/tests/language/generic/f_bounded_quantification4_test.dart
@@ -0,0 +1,17 @@
+// Copyright (c) 2013, 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 for F-Bounded Quantification.
+
+import "package:expect/expect.dart";
+
+class A<T extends B<T>> {}
+
+class B<T extends B<T>> extends A<T> {}
+
+class Foo<T extends B<T>> extends B<Foo<T>> {}
+
+main() {
+ Expect.equals("Foo<Foo<B<dynamic>>>", new Foo<Foo>().runtimeType.toString());
+}
diff --git a/tests/language/generic/f_bounded_quantification5_test.dart b/tests/language/generic/f_bounded_quantification5_test.dart
new file mode 100644
index 0000000..412cc95
--- /dev/null
+++ b/tests/language/generic/f_bounded_quantification5_test.dart
@@ -0,0 +1,20 @@
+// Copyright (c) 2013, 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 for F-Bounded Quantification.
+
+import "package:expect/expect.dart";
+
+@pragma("vm:entry-point")
+class A<T extends B<dynamic>> {}
+
+@pragma("vm:entry-point")
+class B<T extends Object> {}
+
+main() {
+ // Getting "int" when calling toString() on the int type is not required.
+ // However, we want to keep the original names for the most common core
+ // types so we make sure to handle these specifically in the compiler.
+ Expect.equals("A<B<int>>", new A<B<int>>().runtimeType.toString());
+}
diff --git a/tests/language/generic/f_bounded_quantification_runtime_test.dart b/tests/language/generic/f_bounded_quantification_runtime_test.dart
new file mode 100644
index 0000000..77a3466
--- /dev/null
+++ b/tests/language/generic/f_bounded_quantification_runtime_test.dart
@@ -0,0 +1,26 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// Copyright (c) 2011, 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 for F-Bounded Quantification.
+
+class FBound<F extends FBound<F>> {}
+
+class Bar extends FBound<Bar> {}
+
+class SubBar extends Bar {}
+
+class Baz<T> extends FBound<Baz<T>> {}
+
+class SubBaz<T> extends Baz<T> {}
+
+main() {
+ FBound<Bar> fb = new FBound<Bar>();
+
+
+ FBound<Baz<Bar>> fbb = new FBound<Baz<Bar>>();
+
+}
diff --git a/tests/language/generic/f_bounded_quantification_test.dart b/tests/language/generic/f_bounded_quantification_test.dart
new file mode 100644
index 0000000..4247e7d
--- /dev/null
+++ b/tests/language/generic/f_bounded_quantification_test.dart
@@ -0,0 +1,39 @@
+// Copyright (c) 2011, 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 for F-Bounded Quantification.
+
+class FBound<F extends FBound<F>> {}
+
+class Bar extends FBound<Bar> {}
+
+class SubBar extends Bar {}
+
+class Baz<T> extends FBound<Baz<T>> {}
+
+class SubBaz<T> extends Baz<T> {}
+
+main() {
+ FBound<Bar> fb = new FBound<Bar>();
+ FBound<SubBar> fsb = new FBound<SubBar>();
+ // ^^^^^^
+ // [analyzer] COMPILE_TIME_ERROR.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS
+ // ^
+ // [cfe] Type argument 'SubBar' doesn't conform to the bound 'FBound<F>' of the type variable 'F' on 'FBound'.
+ // ^
+ // [cfe] Type argument 'SubBar' doesn't conform to the bound 'FBound<F>' of the type variable 'F' on 'FBound'.
+ // ^^^^^^
+ // [analyzer] COMPILE_TIME_ERROR.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS
+
+ FBound<Baz<Bar>> fbb = new FBound<Baz<Bar>>();
+ FBound<SubBaz<Bar>> fsbb = new FBound<SubBaz<Bar>>();
+ // ^^^^^^^^^^^
+ // [analyzer] COMPILE_TIME_ERROR.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS
+ // ^
+ // [cfe] Type argument 'SubBaz<Bar>' doesn't conform to the bound 'FBound<F>' of the type variable 'F' on 'FBound'.
+ // ^
+ // [cfe] Type argument 'SubBaz<Bar>' doesn't conform to the bound 'FBound<F>' of the type variable 'F' on 'FBound'.
+ // ^^^^^^^^^^^
+ // [analyzer] COMPILE_TIME_ERROR.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS
+}
diff --git a/tests/language/generic/field_mixin2_test.dart b/tests/language/generic/field_mixin2_test.dart
new file mode 100644
index 0000000..99e2d92
--- /dev/null
+++ b/tests/language/generic/field_mixin2_test.dart
@@ -0,0 +1,26 @@
+// Copyright (c) 2014, 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 generic types in mixins are handled.
+
+import 'package:expect/expect.dart';
+
+class M<T> {
+ var field = T;
+}
+
+class A<U> {}
+
+class C1<V> = Object with M<V>;
+class C2 = Object with M<int>;
+class C3 = Object with M<String>;
+
+main() {
+ Expect.equals(int, new C1<int>().field);
+ Expect.equals(String, new C1<String>().field);
+
+ Expect.equals(int, new C2().field);
+
+ Expect.equals(String, new C3().field);
+}
diff --git a/tests/language/generic/field_mixin3_test.dart b/tests/language/generic/field_mixin3_test.dart
new file mode 100644
index 0000000..d8e78f3
--- /dev/null
+++ b/tests/language/generic/field_mixin3_test.dart
@@ -0,0 +1,26 @@
+// Copyright (c) 2014, 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 generic types in mixins are handled.
+
+import 'package:expect/expect.dart';
+
+class M<T> {
+ var field = new A<int>() is A<T>;
+}
+
+class A<U> {}
+
+class C1<V> = Object with M<V>;
+class C2 = Object with M<int>;
+class C3 = Object with M<String>;
+
+main() {
+ Expect.isTrue(new C1<int>().field);
+ Expect.isFalse(new C1<String>().field);
+
+ Expect.isTrue(new C2().field);
+
+ Expect.isFalse(new C3().field);
+}
diff --git a/tests/language/generic/field_mixin4_test.dart b/tests/language/generic/field_mixin4_test.dart
new file mode 100644
index 0000000..137fa1b
--- /dev/null
+++ b/tests/language/generic/field_mixin4_test.dart
@@ -0,0 +1,33 @@
+// Copyright (c) 2014, 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 generic types in mixins are handled.
+
+import 'package:expect/expect.dart';
+
+class M<T> {
+ bool field = () {
+ try {
+ throw 0;
+ } on T catch (e) {
+ return true;
+ } catch (e) {}
+ return false;
+ }();
+}
+
+class A<U> {}
+
+class C1<V> = Object with M<V>;
+class C2 = Object with M<int>;
+class C3 = Object with M<String>;
+
+main() {
+ Expect.isTrue(new C1<int>().field);
+ Expect.isFalse(new C1<String>().field);
+
+ Expect.isTrue(new C2().field);
+
+ Expect.isFalse(new C3().field);
+}
diff --git a/tests/language/generic/field_mixin5_test.dart b/tests/language/generic/field_mixin5_test.dart
new file mode 100644
index 0000000..a684903b
--- /dev/null
+++ b/tests/language/generic/field_mixin5_test.dart
@@ -0,0 +1,28 @@
+// Copyright (c) 2014, 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 generic types in mixins are handled.
+
+import 'package:expect/expect.dart';
+
+class M<T> {
+ Type field = () {
+ return T;
+ }();
+}
+
+class A<U> {}
+
+class C1<V> = Object with M<V>;
+class C2 = Object with M<int>;
+class C3 = Object with M<String>;
+
+main() {
+ Expect.equals(int, new C1<int>().field);
+ Expect.equals(String, new C1<String>().field);
+
+ Expect.equals(int, new C2().field);
+
+ Expect.equals(String, new C3().field);
+}
diff --git a/tests/language/generic/field_mixin6_runtime_test.dart b/tests/language/generic/field_mixin6_runtime_test.dart
new file mode 100644
index 0000000..7fa746b
--- /dev/null
+++ b/tests/language/generic/field_mixin6_runtime_test.dart
@@ -0,0 +1,31 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// Copyright (c) 2014, 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 generic types in mixins are handled.
+
+import 'package:expect/expect.dart';
+
+class M<T> {
+
+ T field2 = 0 as dynamic;
+}
+
+class A<U> {}
+
+class C1<V> = Object with M<V>;
+class C2 = Object with M<int>;
+class C3 = Object with M<String>;
+
+main() {
+ // no error: 0 is an int
+ new C1<int>();
+ new C2();
+
+ // type error: 0 is not a string
+ Expect.throwsTypeError(() => new C1<String>());
+ Expect.throws(() => new C3());
+}
diff --git a/tests/language/generic/field_mixin6_test.dart b/tests/language/generic/field_mixin6_test.dart
new file mode 100644
index 0000000..47a3678
--- /dev/null
+++ b/tests/language/generic/field_mixin6_test.dart
@@ -0,0 +1,31 @@
+// Copyright (c) 2014, 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 generic types in mixins are handled.
+
+import 'package:expect/expect.dart';
+
+class M<T> {
+ T field1 = 0;
+ // ^
+ // [analyzer] STATIC_TYPE_WARNING.INVALID_ASSIGNMENT
+ // [cfe] A value of type 'int' can't be assigned to a variable of type 'T'.
+ T field2 = 0 as dynamic;
+}
+
+class A<U> {}
+
+class C1<V> = Object with M<V>;
+class C2 = Object with M<int>;
+class C3 = Object with M<String>;
+
+main() {
+ // no error: 0 is an int
+ new C1<int>();
+ new C2();
+
+ // type error: 0 is not a string
+ Expect.throwsTypeError(() => new C1<String>());
+ Expect.throws(() => new C3());
+}
diff --git a/tests/language/generic/field_mixin_test.dart b/tests/language/generic/field_mixin_test.dart
new file mode 100644
index 0000000..ea34a9e
--- /dev/null
+++ b/tests/language/generic/field_mixin_test.dart
@@ -0,0 +1,30 @@
+// Copyright (c) 2014, 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 generic types in mixins are handled.
+
+import 'package:expect/expect.dart';
+
+class M<T> {
+ var field = new A<T>();
+}
+
+class A<U> {}
+
+class C1<V> = Object with M<V>;
+class C2 = Object with M<int>;
+class C3 = Object with M<String>;
+
+main() {
+ Expect.isTrue(new C1<int>().field is A<int>);
+ Expect.isFalse(new C1<int>().field is A<String>);
+ Expect.isFalse(new C1<String>().field is A<int>);
+ Expect.isTrue(new C1<String>().field is A<String>);
+
+ Expect.isTrue(new C2().field is A<int>);
+ Expect.isFalse(new C2().field is A<String>);
+
+ Expect.isFalse(new C3().field is A<int>);
+ Expect.isTrue(new C3().field is A<String>);
+}
diff --git a/tests/language/generic/function_bounds_test.dart b/tests/language/generic/function_bounds_test.dart
new file mode 100644
index 0000000..4ab11d3
--- /dev/null
+++ b/tests/language/generic/function_bounds_test.dart
@@ -0,0 +1,117 @@
+// Copyright (c) 2017, 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:math';
+import 'package:expect/expect.dart';
+
+Type getType<T>() => T;
+
+void testInstantiateToBounds() {
+ f<T extends num, U extends T>() => [T, U];
+ g<T extends List<U>, U extends int>() => [T, U];
+ h<T extends U, U extends num>(T x, U y) => [T, U];
+
+ // Check that instantiate to bounds creates the correct type arguments
+ // during dynamic calls.
+ Expect.listEquals([num, num], (f as dynamic)());
+ Expect.listEquals([getType<List<int>>(), int], (g as dynamic)());
+ Expect.listEquals([num, num], (h as dynamic)(-1, -1));
+
+ // Check that when instantiate to bounds creates a super-bounded type argument
+ // during a dynamic call, an error is thrown.
+ i<T extends Iterable<T>>() => null;
+ j<T extends Iterable<S>, S extends T>() => null;
+ Expect.throwsTypeError(() => (i as dynamic)(), "Super bounded type argument");
+ Expect.throwsTypeError(() => (j as dynamic)(), "Super bounded type argument");
+}
+
+void testChecksBound() {
+ f<T extends num>(T x) => x;
+ g<T extends U, U extends num>(T x, U y) => x;
+
+ // Check that arguments are checked against the correct types when instantiate
+ // to bounds produces a type argument during a dynamic call.
+ Expect.equals((f as dynamic)(42), 42);
+ Expect.equals((g as dynamic)(42.0, 100), 42.0);
+ Expect.throwsTypeError(() => (f as dynamic)('42'), "Argument check");
+ Expect.throwsTypeError(() => (g as dynamic)('hi', 100), "Argument check");
+
+ // Check that an actual type argument is checked against the bound during a
+ // dynamic call.
+ Expect.equals((f as dynamic)<int>(42), 42);
+ Expect.equals((g as dynamic)<double, num>(42.0, 100), 42.0);
+ Expect.throwsTypeError(() => (g as dynamic)<double, int>(42.0, 100),
+ "Type argument bounds check");
+ Expect.throwsTypeError(
+ () => (f as dynamic)<Object>(42), "Type argument bounds check");
+ Expect.throwsTypeError(() => (g as dynamic)<double, int>(42.0, 100),
+ "Type argument bounds check");
+ Expect.throwsTypeError(() => (g as dynamic)<num, Object>(42.0, 100),
+ "Type argument bounds check");
+}
+
+typedef G<U> = num Function<T extends U>(T x);
+
+typedef F<U> = Object Function<T extends U>(T x);
+
+void testSubtype() {
+ num f<T extends num>(T x) => x + 2;
+ dynamic d = f;
+
+ // Check that casting to an equal generic function type works
+ Expect.equals((f as G<num>)(40), 42);
+ Expect.equals((d as G<num>)(40), 42);
+
+ // Check that casting to a more general generic function type works
+ Expect.equals((f as F<num>)(40), 42);
+ Expect.equals((d as F<num>)(40), 42);
+
+ // Check that casting to a generic function with more specific bounds fails
+ Expect.throwsTypeError(
+ () => (f as G<int>), "Generic functions are invariant");
+ Expect.throwsTypeError(
+ () => (d as G<int>), "Generic functions are invariant");
+ Expect.throwsTypeError(
+ () => (f as G<double>), "Generic functions are invariant");
+ Expect.throwsTypeError(
+ () => (d as G<double>), "Generic functions are invariant");
+ Expect.throwsTypeError(
+ () => (f as G<Null>), "Generic functions are invariant");
+ Expect.throwsTypeError(
+ () => (d as G<Null>), "Generic functions are invariant");
+
+ // Check that casting to a generic function with a more general bound fails
+ Expect.throwsTypeError(
+ () => (f as G<Object>), "Generic functions are invariant");
+ Expect.throwsTypeError(
+ () => (d as G<Object>), "Generic functions are invariant");
+
+ // Check that casting to a generic function with an unrelated bound fails
+ Expect.throwsTypeError(
+ () => (f as G<String>), "Generic functions are invariant");
+ Expect.throwsTypeError(
+ () => (d as G<String>), "Generic functions are invariant");
+}
+
+void testToString() {
+ num f<T extends num, U extends T>(T x, U y) => min(x, y);
+ num g<T, U>(T x, U y) => max(x as num, y as num);
+ String h<T, U>(T x, U y) => h.runtimeType.toString();
+
+ // Check that generic method types are printed in a reasonable way
+ Expect.isTrue(
+ new RegExp(r'<(\w+) extends num, (\w+) extends \1>\(\1, \2\) => num')
+ .hasMatch(f.runtimeType.toString()));
+ Expect.isTrue(new RegExp(r'<(\w+), (\w+)>\(\1, \2\) => num')
+ .hasMatch(g.runtimeType.toString()));
+ Expect.isTrue(
+ new RegExp(r'<(\w+), (\w+)>\(\1, \2\) => String').hasMatch(h(42, 123.0)));
+}
+
+main() {
+ testInstantiateToBounds(); //# 01: ok
+ testToString(); //# 02: ok
+ testChecksBound(); //# 03: ok
+ testSubtype(); //# 04: ok
+}
diff --git a/tests/language/generic/function_dcall_test.dart b/tests/language/generic/function_dcall_test.dart
new file mode 100644
index 0000000..28fa0dc
--- /dev/null
+++ b/tests/language/generic/function_dcall_test.dart
@@ -0,0 +1,58 @@
+// Copyright (c) 2017, 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 'package:expect/expect.dart';
+
+void testCallsToGenericFn() {
+ T f<T>(T a, T b) => ((a as dynamic) + b) as T;
+
+ var x = (f as dynamic)<int>(40, 2);
+ Expect.equals(x, 42);
+
+ var y = (f as dynamic)<String>('hi', '!');
+ Expect.equals(y, 'hi!');
+
+ var dd2d = (x, y) => x;
+ dd2d = f; // implicit <dynamic>
+ x = (dd2d as dynamic)(40, 2);
+ Expect.equals(x, 42);
+ y = (dd2d as dynamic)('hi', '!');
+ Expect.equals(y, 'hi!');
+}
+
+void testGenericFnAsArg() {
+ h<T>(a) => a as T;
+ Object foo(f(Object a), Object a) => f(a);
+ Expect.throws(() => foo(h as dynamic, 42));
+
+ var int2int = (int x) => x;
+ T bar<T>(x) => x as T;
+ dynamic list = <Object>[1, 2, 3];
+ Expect.throws(() => list.map(bar));
+ int2int = bar;
+ Expect.listEquals([1, 2, 3], list.map(int2int).toList());
+}
+
+typedef T2T = T Function<T>(T t);
+void testGenericFnAsGenericFnArg() {
+ h<T>(a) => a as T;
+ S foo<S>(T2T f, S a) => f<S>(a);
+ Expect.equals(foo<int>(h, 42), 42);
+ Expect.equals(foo<dynamic>(h, 42), 42);
+ Expect.equals(foo<int>(h as dynamic, 42), 42);
+ Expect.equals(foo<dynamic>(h as dynamic, 42), 42);
+}
+
+void testGenericFnTypeToString() {
+ T f<T>(T a) => a;
+ Expect.isTrue(
+ f.runtimeType.toString().contains(RegExp(r'<(\w+)>\(\1\) => \1')));
+}
+
+main() {
+ testCallsToGenericFn();
+ testGenericFnAsArg();
+ testGenericFnAsGenericFnArg();
+ testGenericFnTypeToString(); //# 01: ok
+}
diff --git a/tests/language/generic/function_subtype_parametrized_typedef_runtime_1_test.dart b/tests/language/generic/function_subtype_parametrized_typedef_runtime_1_test.dart
new file mode 100644
index 0000000..568b6c7
--- /dev/null
+++ b/tests/language/generic/function_subtype_parametrized_typedef_runtime_1_test.dart
@@ -0,0 +1,33 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// 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 of the subtype relationship that includes parametrized typedefs and
+// invariant occurrences of types.
+
+typedef H<X> = void Function<Y extends X>();
+
+class A {}
+
+class B extends A {}
+
+class C extends B {}
+
+void foo(H<A> ha, H<B> hb, H<C> hc) {
+ H<A> haa = ha;
+
+
+
+
+
+
+
+
+
+
+}
+
+main() {}
diff --git a/tests/language/generic/function_subtype_parametrized_typedef_runtime_2_test.dart b/tests/language/generic/function_subtype_parametrized_typedef_runtime_2_test.dart
new file mode 100644
index 0000000..c3226fb
--- /dev/null
+++ b/tests/language/generic/function_subtype_parametrized_typedef_runtime_2_test.dart
@@ -0,0 +1,33 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// 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 of the subtype relationship that includes parametrized typedefs and
+// invariant occurrences of types.
+
+typedef H<X> = void Function<Y extends X>();
+
+class A {}
+
+class B extends A {}
+
+class C extends B {}
+
+void foo(H<A> ha, H<B> hb, H<C> hc) {
+
+
+
+
+
+ H<B> hbb = hb;
+
+
+
+
+
+}
+
+main() {}
diff --git a/tests/language/generic/function_subtype_parametrized_typedef_runtime_3_test.dart b/tests/language/generic/function_subtype_parametrized_typedef_runtime_3_test.dart
new file mode 100644
index 0000000..fbdd29a
--- /dev/null
+++ b/tests/language/generic/function_subtype_parametrized_typedef_runtime_3_test.dart
@@ -0,0 +1,33 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// 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 of the subtype relationship that includes parametrized typedefs and
+// invariant occurrences of types.
+
+typedef H<X> = void Function<Y extends X>();
+
+class A {}
+
+class B extends A {}
+
+class C extends B {}
+
+void foo(H<A> ha, H<B> hb, H<C> hc) {
+
+
+
+
+
+
+
+
+
+
+ H<C> hcc = hc;
+}
+
+main() {}
diff --git a/tests/language/generic/function_subtype_parametrized_typedef_runtime_test.dart b/tests/language/generic/function_subtype_parametrized_typedef_runtime_test.dart
new file mode 100644
index 0000000..9749428
--- /dev/null
+++ b/tests/language/generic/function_subtype_parametrized_typedef_runtime_test.dart
@@ -0,0 +1,33 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// 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 of the subtype relationship that includes parametrized typedefs and
+// invariant occurrences of types.
+
+typedef H<X> = void Function<Y extends X>();
+
+class A {}
+
+class B extends A {}
+
+class C extends B {}
+
+void foo(H<A> ha, H<B> hb, H<C> hc) {
+
+
+
+
+
+
+
+
+
+
+
+}
+
+main() {}
diff --git a/tests/language/generic/function_subtype_parametrized_typedef_test.dart b/tests/language/generic/function_subtype_parametrized_typedef_test.dart
new file mode 100644
index 0000000..a1dd791
--- /dev/null
+++ b/tests/language/generic/function_subtype_parametrized_typedef_test.dart
@@ -0,0 +1,48 @@
+// 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 of the subtype relationship that includes parametrized typedefs and
+// invariant occurrences of types.
+
+typedef H<X> = void Function<Y extends X>();
+
+class A {}
+
+class B extends A {}
+
+class C extends B {}
+
+void foo(H<A> ha, H<B> hb, H<C> hc) {
+ H<A> haa = ha;
+ H<A> hab = hb;
+ // ^^
+ // [analyzer] STATIC_TYPE_WARNING.INVALID_ASSIGNMENT
+ // [cfe] A value of type 'void Function<Y extends B>()' can't be assigned to a variable of type 'void Function<Y extends A>()'.
+ H<A> hac = hc;
+ // ^^
+ // [analyzer] STATIC_TYPE_WARNING.INVALID_ASSIGNMENT
+ // [cfe] A value of type 'void Function<Y extends C>()' can't be assigned to a variable of type 'void Function<Y extends A>()'.
+
+ H<B> hba = ha;
+ // ^^
+ // [analyzer] STATIC_TYPE_WARNING.INVALID_ASSIGNMENT
+ // [cfe] A value of type 'void Function<Y extends A>()' can't be assigned to a variable of type 'void Function<Y extends B>()'.
+ H<B> hbb = hb;
+ H<B> hbc = hc;
+ // ^^
+ // [analyzer] STATIC_TYPE_WARNING.INVALID_ASSIGNMENT
+ // [cfe] A value of type 'void Function<Y extends C>()' can't be assigned to a variable of type 'void Function<Y extends B>()'.
+
+ H<C> hca = ha;
+ // ^^
+ // [analyzer] STATIC_TYPE_WARNING.INVALID_ASSIGNMENT
+ // [cfe] A value of type 'void Function<Y extends A>()' can't be assigned to a variable of type 'void Function<Y extends C>()'.
+ H<C> hcb = hb;
+ // ^^
+ // [analyzer] STATIC_TYPE_WARNING.INVALID_ASSIGNMENT
+ // [cfe] A value of type 'void Function<Y extends B>()' can't be assigned to a variable of type 'void Function<Y extends C>()'.
+ H<C> hcc = hc;
+}
+
+main() {}
diff --git a/tests/language/generic/function_subtype_runtime_1_test.dart b/tests/language/generic/function_subtype_runtime_1_test.dart
new file mode 100644
index 0000000..1153373
--- /dev/null
+++ b/tests/language/generic/function_subtype_runtime_1_test.dart
@@ -0,0 +1,24 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// 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.
+
+// Simple test of the subtype relationship on generic function types.
+
+typedef F1 = void Function<X1 extends num>();
+typedef F2 = void Function<X2 extends String>();
+
+void f1<Y1 extends num>() {}
+void f2<Y2 extends String>() {}
+
+void foo() {
+ F1 f11 = f1;
+
+
+
+
+}
+
+main() {}
diff --git a/tests/language/generic/function_subtype_runtime_2_test.dart b/tests/language/generic/function_subtype_runtime_2_test.dart
new file mode 100644
index 0000000..44aeb53
--- /dev/null
+++ b/tests/language/generic/function_subtype_runtime_2_test.dart
@@ -0,0 +1,24 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// 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.
+
+// Simple test of the subtype relationship on generic function types.
+
+typedef F1 = void Function<X1 extends num>();
+typedef F2 = void Function<X2 extends String>();
+
+void f1<Y1 extends num>() {}
+void f2<Y2 extends String>() {}
+
+void foo() {
+
+
+
+
+ F2 f22 = f2;
+}
+
+main() {}
diff --git a/tests/language/generic/function_subtype_runtime_test.dart b/tests/language/generic/function_subtype_runtime_test.dart
new file mode 100644
index 0000000..eb7163a
--- /dev/null
+++ b/tests/language/generic/function_subtype_runtime_test.dart
@@ -0,0 +1,24 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// 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.
+
+// Simple test of the subtype relationship on generic function types.
+
+typedef F1 = void Function<X1 extends num>();
+typedef F2 = void Function<X2 extends String>();
+
+void f1<Y1 extends num>() {}
+void f2<Y2 extends String>() {}
+
+void foo() {
+
+
+
+
+
+}
+
+main() {}
diff --git a/tests/language/generic/function_subtype_test.dart b/tests/language/generic/function_subtype_test.dart
new file mode 100644
index 0000000..28cb90a
--- /dev/null
+++ b/tests/language/generic/function_subtype_test.dart
@@ -0,0 +1,27 @@
+// 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.
+
+// Simple test of the subtype relationship on generic function types.
+
+typedef F1 = void Function<X1 extends num>();
+typedef F2 = void Function<X2 extends String>();
+
+void f1<Y1 extends num>() {}
+void f2<Y2 extends String>() {}
+
+void foo() {
+ F1 f11 = f1;
+ F1 f12 = f2;
+ // ^^
+ // [analyzer] STATIC_TYPE_WARNING.INVALID_ASSIGNMENT
+ // [cfe] A value of type 'void Function<Y2 extends String>()' can't be assigned to a variable of type 'void Function<X1 extends num>()'.
+
+ F2 f21 = f1;
+ // ^^
+ // [analyzer] STATIC_TYPE_WARNING.INVALID_ASSIGNMENT
+ // [cfe] A value of type 'void Function<Y1 extends num>()' can't be assigned to a variable of type 'void Function<X2 extends String>()'.
+ F2 f22 = f2;
+}
+
+main() {}
diff --git a/tests/language/generic/function_type_as_type_argument_runtime_1_test.dart b/tests/language/generic/function_type_as_type_argument_runtime_1_test.dart
new file mode 100644
index 0000000..e0074f5
--- /dev/null
+++ b/tests/language/generic/function_type_as_type_argument_runtime_1_test.dart
@@ -0,0 +1,29 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// Copyright (c) 2017, 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.
+//
+// VMOptions=--reify-generic-functions
+
+import "package:expect/expect.dart";
+
+T foo<T>(T i) => i;
+
+void main() {
+ Expect.equals(42, foo<int>(42));
+
+ var bar = foo;
+ Expect.equals(42, bar<int>(42));
+
+ // Generic function types are not allowed as type arguments.
+
+
+ // Type inference must also give an error.
+
+
+ // No error if illegal type cannot be inferred.
+ var dynamicList = <dynamic>[foo];
+ Expect.equals(42, (dynamicList[0] as T Function<T>(T))<int>(42));
+}
diff --git a/tests/language/generic/function_type_as_type_argument_runtime_test.dart b/tests/language/generic/function_type_as_type_argument_runtime_test.dart
new file mode 100644
index 0000000..0ad5dad
--- /dev/null
+++ b/tests/language/generic/function_type_as_type_argument_runtime_test.dart
@@ -0,0 +1,29 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// Copyright (c) 2017, 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.
+//
+// VMOptions=--reify-generic-functions
+
+import "package:expect/expect.dart";
+
+T foo<T>(T i) => i;
+
+void main() {
+ Expect.equals(42, foo<int>(42));
+
+ var bar = foo;
+ Expect.equals(42, bar<int>(42));
+
+ // Generic function types are not allowed as type arguments.
+
+
+ // Type inference must also give an error.
+
+
+ // No error if illegal type cannot be inferred.
+
+
+}
diff --git a/tests/language/generic/function_type_as_type_argument_test.dart b/tests/language/generic/function_type_as_type_argument_test.dart
new file mode 100644
index 0000000..c59dce7
--- /dev/null
+++ b/tests/language/generic/function_type_as_type_argument_test.dart
@@ -0,0 +1,34 @@
+// Copyright (c) 2017, 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.
+//
+// VMOptions=--reify-generic-functions
+
+import "package:expect/expect.dart";
+
+T foo<T>(T i) => i;
+
+void main() {
+ Expect.equals(42, foo<int>(42));
+
+ var bar = foo;
+ Expect.equals(42, bar<int>(42));
+
+ // Generic function types are not allowed as type arguments.
+ List<T Function<T>(T)> typedList = <T Function<T>(T)>[foo];
+ // ^^^^^^^^^^^^^^^^
+ // [analyzer] COMPILE_TIME_ERROR.GENERIC_FUNCTION_TYPE_CANNOT_BE_TYPE_ARGUMENT
+ // ^
+ // [cfe] A generic function type can't be used as a type argument.
+
+ // Type inference must also give an error.
+ var inferredList = [foo];
+ // ^
+ // [cfe] Generic function type 'T Function<T>(T)' inferred as a type argument.
+ // ^^^^^
+ // [analyzer] COMPILE_TIME_ERROR.COULD_NOT_INFER
+
+ // No error if illegal type cannot be inferred.
+ var dynamicList = <dynamic>[foo];
+ Expect.equals(42, (dynamicList[0] as T Function<T>(T))<int>(42));
+}
diff --git a/tests/language/generic/function_typedef2_runtime_test.dart b/tests/language/generic/function_typedef2_runtime_test.dart
new file mode 100644
index 0000000..9961805
--- /dev/null
+++ b/tests/language/generic/function_typedef2_runtime_test.dart
@@ -0,0 +1,43 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// Copyright (c) 2017, 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.
+// Dart test for a function type test that cannot be eliminated at compile time.
+
+import "package:expect/expect.dart";
+
+class A {}
+
+typedef int F();
+
+
+
+
+
+typedef K = Function(
+ Function<A>(A
+
+ ));
+typedef L = Function(
+ {
+
+ bool
+
+ x});
+
+typedef M = Function(
+ {
+
+ bool
+
+ int});
+
+foo({bool int = false}) {}
+main() {
+ bool b = true;
+ Expect.isFalse(b is L);
+ Expect.isFalse(b is M);
+ Expect.isTrue(foo is M);
+}
diff --git a/tests/language/generic/function_typedef2_test.dart b/tests/language/generic/function_typedef2_test.dart
new file mode 100644
index 0000000..6532988
--- /dev/null
+++ b/tests/language/generic/function_typedef2_test.dart
@@ -0,0 +1,51 @@
+// Copyright (c) 2017, 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.
+// Dart test for a function type test that cannot be eliminated at compile time.
+
+import "package:expect/expect.dart";
+
+class A {}
+
+typedef int F();
+
+typedef G = F;
+// ^
+// [analyzer] SYNTACTIC_ERROR.INVALID_GENERIC_FUNCTION_TYPE
+// [cfe] Can't create typedef from non-function type.
+typedef H = int;
+// ^
+// [analyzer] SYNTACTIC_ERROR.INVALID_GENERIC_FUNCTION_TYPE
+// [cfe] Can't create typedef from non-function type.
+typedef I = A;
+// ^
+// [analyzer] SYNTACTIC_ERROR.INVALID_GENERIC_FUNCTION_TYPE
+// [cfe] Can't create typedef from non-function type.
+typedef J = List<int>;
+// ^
+// [analyzer] SYNTACTIC_ERROR.INVALID_GENERIC_FUNCTION_TYPE
+// [cfe] Can't create typedef from non-function type.
+typedef K = Function(Function<A>(A<int>));
+// ^^^^^^
+// [analyzer] STATIC_TYPE_WARNING.WRONG_NUMBER_OF_TYPE_ARGUMENTS
+// [cfe] Can't use type arguments with type variable 'A'.
+typedef L = Function({x});
+// ^
+// [analyzer] COMPILE_TIME_ERROR.UNDEFINED_CLASS
+// [cfe] Type 'x' not found.
+// ^
+// [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
+// [cfe] Expected an identifier, but got '}'.
+
+typedef M = Function({int});
+ // ^
+ // [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
+ // [cfe] Expected an identifier, but got '}'.
+
+foo({bool int = false}) {}
+main() {
+ bool b = true;
+ Expect.isFalse(b is L);
+ Expect.isFalse(b is M);
+ Expect.isTrue(foo is M);
+}
diff --git a/tests/language/generic/function_typedef_test.dart b/tests/language/generic/function_typedef_test.dart
new file mode 100644
index 0000000..a61b0b6
--- /dev/null
+++ b/tests/language/generic/function_typedef_test.dart
@@ -0,0 +1,43 @@
+// Copyright (c) 2017, 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.
+// Dart test for a function type test that cannot be eliminated at compile time.
+
+import "package:expect/expect.dart";
+
+class A {}
+
+typedef F<S> = Function(List<S>, Function(String), num);
+typedef G<T> = Function<S>(List<S>, Function<A>(A), T);
+
+foo(List<dynamic> x, bar(String y), num z) {}
+foo2(List<int> x, bar(String y), num z) {}
+foo3<T>(List<T> x, Function<S>(S) y, num z) {}
+
+main() {
+ Expect.isTrue(foo is F);
+ Expect.isTrue(foo is F<int>);
+ Expect.isTrue(foo is F<bool>);
+
+ Expect.isFalse(foo2 is F, //# 01: ok
+ "sound function types: cannot allow passing List to List<int>"); //# 01: ok
+ Expect.isTrue(foo2 is F<int>);
+ Expect.isFalse(foo2 is F<bool>);
+
+ Expect.isFalse(foo3 is F); //# 01: ok
+ Expect.isFalse(foo3 is F<int>); //# 01: ok
+ Expect.isFalse(foo3 is F<bool>); //# 01: ok
+
+ Expect.isFalse(foo is G); //# 01: ok
+ Expect.isFalse(foo is G<int>); //# 01: ok
+ Expect.isFalse(foo is G<bool>);
+
+ Expect.isFalse(foo2 is G); //# 01: ok
+ Expect.isFalse(foo2 is G<int>); //# 01: ok
+ Expect.isFalse(foo2 is G<bool>);
+
+ Expect.isFalse(foo3 is G<Object>, //# 01: ok
+ "sound function types: cannot allow passing any Object to num"); //# 01: ok
+ Expect.isTrue(foo3 is G<int>);
+ Expect.isFalse(foo3 is G<bool>);
+}
diff --git a/tests/language/generic/functions_test.dart b/tests/language/generic/functions_test.dart
new file mode 100644
index 0000000..880fa62
--- /dev/null
+++ b/tests/language/generic/functions_test.dart
@@ -0,0 +1,103 @@
+// Copyright (c) 2016, 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.
+
+/// Dart test verifying that the parser can handle type parameterization of
+/// function declarations and function invocations. Variant of code from
+/// DEP #22, adjusted to use generic top level functions.
+
+library generic_functions_test;
+
+import "package:expect/expect.dart";
+
+class BinaryTreeNode<K extends Comparable<K>, V> {
+ final K _key;
+ final V _value;
+ final BinaryTreeNode<K, V>? _left;
+ final BinaryTreeNode<K, V>? _right;
+
+ BinaryTreeNode(this._key, this._value,
+ {BinaryTreeNode<K, V>? left: null, BinaryTreeNode<K, V>? right: null})
+ : _left = left,
+ _right = right;
+
+ BinaryTreeNode<K, V> insert(K key, V value) {
+ int c = key.compareTo(_key);
+ if (c == 0) return this;
+ var _insert = (BinaryTreeNode<K, V>? t, K key, V value) =>
+ insertOpt<K, V>(t, key, value);
+ BinaryTreeNode<K, V>? left = _left;
+ BinaryTreeNode<K, V>? right = _right;
+ if (c < 0) {
+ left = _insert(_left, key, value);
+ } else {
+ right = _insert(_right, key, value);
+ }
+ return new BinaryTreeNode<K, V>(_key, _value, left: left, right: right);
+ }
+
+ BinaryTreeNode<K, U> map<U>(U f(V x)) {
+ var _map = (BinaryTreeNode<K, V>? t, U f(V x)) => mapOpt<K, V, U>(t, f);
+ return new BinaryTreeNode<K, U>(_key, f(_value),
+ left: _map(_left, f), right: _map(_right, f));
+ }
+
+ S foldPre<S>(S init, S f(V t, S s)) {
+ var _fold = (BinaryTreeNode<K, V>? t, S s, S f(V t, S s)) =>
+ foldPreOpt<K, V, S>(t, s, f);
+ S s = init;
+ s = f(_value, s);
+ s = _fold(_left, s, f);
+ s = _fold(_right, s, f);
+ return s;
+ }
+}
+
+BinaryTreeNode<K2, V2>? insertOpt<K2 extends Comparable<K2>, V2>(
+ BinaryTreeNode<K2, V2>? t, K2 key, V2 value) {
+ return (t == null) ? new BinaryTreeNode(key, value) : t.insert(key, value);
+}
+
+BinaryTreeNode<K, U>? mapOpt<K extends Comparable<K>, V, U>(
+ BinaryTreeNode<K, V>? t, U f(V x)) {
+ return (t == null) ? null : t.map<U>(f);
+}
+
+S foldPreOpt<K2 extends Comparable<K2>, V, S>(
+ BinaryTreeNode<K2, V>? t, S init, S f(V t, S s)) {
+ return (t == null) ? init : t.foldPre<S>(init, f);
+}
+
+class BinaryTree<K extends Comparable<K>, V> {
+ final BinaryTreeNode<K, V>? _root;
+
+ BinaryTree._internal(this._root);
+ BinaryTree.empty() : this._internal(null);
+
+ BinaryTree<K, V> insert(K key, V value) {
+ BinaryTreeNode<K, V>? root = insertOpt<K, V>(_root, key, value);
+ return new BinaryTree<K, V>._internal(root);
+ }
+
+ BinaryTree<K, U> map<U>(U f(V x)) {
+ BinaryTreeNode<K, U>? root = mapOpt<K, V, U>(_root, f);
+ return new BinaryTree<K, U>._internal(root);
+ }
+
+ S foldPre<S>(S init, S f(V t, S s)) {
+ return foldPreOpt<K, V, S>(_root, init, f);
+ }
+}
+
+main() {
+ BinaryTree<num, String> sT = new BinaryTree<num, String>.empty();
+
+ sT = sT.insert(0, "");
+ sT = sT.insert(1, " ");
+ sT = sT.insert(2, " ");
+ sT = sT.insert(3, " ");
+
+ BinaryTree<num, num> iT = sT.map<num>((String s) => s.length);
+
+ Expect.equals(iT.foldPre<num>(0, (num i, num s) => i + s), 6);
+}
diff --git a/tests/language/generic/generic2_test.dart b/tests/language/generic/generic2_test.dart
new file mode 100644
index 0000000..36aaa46
--- /dev/null
+++ b/tests/language/generic/generic2_test.dart
@@ -0,0 +1,30 @@
+// Copyright (c) 2013, 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 is-tests with type variables.
+
+import "package:expect/expect.dart";
+
+class A<T> {
+ foo(o) => o is T;
+}
+
+class B {}
+
+class C extends A<int> {}
+
+main() {
+ Expect.isTrue(new A<Object>().foo(new B()));
+ Expect.isTrue(new A<Object>().foo(1));
+ Expect.isFalse(new A<int>().foo(new Object()));
+ Expect.isFalse(new A<int>().foo('hest'));
+ Expect.isTrue(new A<B>().foo(new B()));
+ Expect.isFalse(new A<B>().foo(new Object()));
+ Expect.isFalse(new A<B>().foo(1));
+ Expect.isTrue(new C().foo(1));
+ Expect.isFalse(new C().foo(new Object()));
+ Expect.isFalse(new C().foo('hest'));
+ Expect.isTrue(new A<List<int>>().foo(<int>[]));
+ Expect.isFalse(new A<List<int>>().foo(<String>[]));
+}
diff --git a/tests/language/generic/generic_test.dart b/tests/language/generic/generic_test.dart
new file mode 100644
index 0000000..16742d5
--- /dev/null
+++ b/tests/language/generic/generic_test.dart
@@ -0,0 +1,57 @@
+// Copyright (c) 2011, 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.
+
+/// Dart test program testing generic type allocations and generic type tests.
+import "package:expect/expect.dart";
+
+class A {
+ const A();
+}
+
+class AA extends A {
+ const AA();
+}
+
+class AX {
+ const AX();
+}
+
+class B<T extends A> {
+ final A a_;
+ final T t_;
+ const B(T t)
+ : a_ = t,
+ t_ = t;
+ isT(x) {
+ return x is T;
+ }
+}
+
+class C<T extends A> {
+ B<T> b_;
+ C(T t) : b_ = new B<T>(t) {}
+}
+
+class D {
+ C<AA> caa_;
+ D() : caa_ = new C<AA>(const AA()) {}
+}
+
+class E {
+ C<AX> cax_ = new C<AX>(const AX()); //# 01: compile-time error
+}
+
+main() {
+ D d = new D();
+ Expect.equals(true, d.caa_.b_ is B<AA>);
+ Expect.equals(true, d.caa_.b_.isT(const AA()));
+ C c = new C(const AA()); // inferred as `C<A>` because of the `extends A`.
+ Expect.equals(true, c is C<A>);
+ Expect.equals(false, c is C<AA>, 'C<A> is not a subtype of C<AA>');
+ Expect.equals(true, c.b_ is B);
+ Expect.equals(false, c.b_ is B<AA>);
+ Expect.equals(true, c.b_.isT(const AA()), 'AA is a subtype of A');
+ Expect.equals(false, c.b_.isT(const AX()), 'AX is not a subtype of A');
+ new E();
+}
diff --git a/tests/language/generic/generics2_test.dart b/tests/language/generic/generics2_test.dart
new file mode 100644
index 0000000..a492e55
--- /dev/null
+++ b/tests/language/generic/generics2_test.dart
@@ -0,0 +1,19 @@
+// Copyright (c) 2011, 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.
+// VMOptions=--enable_type_checks
+//
+// Dart test program testing generic type allocations and generic type tests.
+
+class A<E> {}
+
+class Pair<P, Q> extends A /* i.e. extends A<dynamic> */ {
+ final P fst;
+ final Q snd;
+ Pair(this.fst, this.snd);
+}
+
+main() {
+ print(new Pair<int, int>(1, 2));
+ print(new Pair<String, int>("1", 2));
+}
diff --git a/tests/language/generic/generics3_test.dart b/tests/language/generic/generics3_test.dart
new file mode 100644
index 0000000..0a25732
--- /dev/null
+++ b/tests/language/generic/generics3_test.dart
@@ -0,0 +1,24 @@
+// Copyright (c) 2013, 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.
+//
+// Dart test program testing generic type allocations and generic type tests.
+// Regression test for issue 8710.
+
+class C1<T> {}
+
+class C2<T> {}
+
+class C3<T> extends C2<C1<T>> {}
+
+class C4<T> extends C3<T> {
+ f() => new C5<C1<T>>(new C1<T>());
+}
+
+class C5<T> {
+ C5(T x);
+} // Checked mode: x must be of type C1<String>.
+
+main() {
+ new C4<String>().f();
+}
diff --git a/tests/language/generic/generics_test.dart b/tests/language/generic/generics_test.dart
new file mode 100644
index 0000000..f8dd972
--- /dev/null
+++ b/tests/language/generic/generics_test.dart
@@ -0,0 +1,53 @@
+// Copyright (c) 2011, 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.
+// Dart test for generic types.
+
+import "package:expect/expect.dart";
+
+abstract class GenericsTest<T, V> implements Map<int, int> {
+ static int myFunc(bool a, bool b) {
+ Expect.equals(true, a);
+ Expect.equals(false, b);
+ return 42;
+ }
+
+ static void testMain() {
+ int a = 1;
+ int b = 2;
+ int c = 3;
+ int d = 4;
+ Expect.equals(true, a < b);
+ Expect.equals(42, myFunc(a < b, c > d));
+ Map<int, int> e;
+ GenericsTest<int, GenericsTest<int, int>> f;
+
+ e = new Map();
+ takesMapMethod(e);
+ Expect.equals(2, e[0]);
+ Map h = new Map<int, int>();
+ }
+
+ static void takesMapMethod(Map<int, int> m) {
+ m[0] = 2;
+ }
+
+ Map<int, int> returnMap() {
+ return {};
+ }
+}
+
+class LongGeneric<A, B, C> {}
+
+class LongerGeneric<A, B, C, D, E, F, G, H, I, J> {
+ void func() {
+ LongGeneric<String, A, LongGeneric<C, List<E>, Map<G, Map<I, J>>>> id;
+
+ LongGeneric<num, Map<int, int>,
+ LongGeneric<C, List<E>, Map<G, LongGeneric<I, J, List<A>>>>> id2;
+ }
+}
+
+main() {
+ GenericsTest.testMain();
+}
diff --git a/tests/language/generic/inheritance_test.dart b/tests/language/generic/inheritance_test.dart
new file mode 100644
index 0000000..404723a
--- /dev/null
+++ b/tests/language/generic/inheritance_test.dart
@@ -0,0 +1,38 @@
+// Copyright (c) 2011, 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 verifying that the type argument vector of subclasses are properly
+// initialized by the class finalizer.
+
+import "package:expect/expect.dart";
+
+class A<T> {
+ A();
+}
+
+class B extends A<Object> {
+ B();
+}
+
+class C extends B {
+ C();
+}
+
+main() {
+ var a = new A<String>();
+ var b = new B();
+ var c = new C();
+ Expect.isTrue(a is Object);
+ Expect.isTrue(a is A<Object>);
+ Expect.isTrue(a is A<String>);
+ Expect.isTrue(a is! A<int>);
+ Expect.isTrue(b is Object);
+ Expect.isTrue(b is A<Object>);
+ Expect.isTrue(b is! A<String>);
+ Expect.isTrue(b is Object);
+ Expect.isTrue(c is Object);
+ Expect.isTrue(c is A<Object>);
+ Expect.isTrue(c is! A<String>);
+ Expect.isTrue(c is B);
+}
diff --git a/tests/language/generic/instanceof.dart b/tests/language/generic/instanceof.dart
new file mode 100644
index 0000000..547239c
--- /dev/null
+++ b/tests/language/generic/instanceof.dart
@@ -0,0 +1,130 @@
+// Copyright (c) 2011, 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 instanceof works correctly with type variables.
+
+part of GenericInstanceofTest.dart;
+
+class Foo<T> {
+ Foo() {}
+
+ bool isT(x) {
+ // Untyped parameter to ensure that the static type
+ // does not affect the result.
+ return x is T;
+ }
+
+ bool isListT(x) {
+ return x is List<T>;
+ }
+}
+
+class GenericInstanceof {
+ static void testMain() {
+ // Using Object instead of String to ensure that the static type
+ // does not affect the result.
+ Foo<Object> fooObject = new Foo<String>();
+ Expect.equals(true, fooObject.isT("string"));
+ Expect.equals(false, fooObject.isT(1));
+
+ Foo<String> fooString = new Foo<String>();
+ Expect.equals(true, fooString.isT("string"));
+ Expect.equals(false, fooString.isT(1));
+
+ // Not providing a type argument to ensure that the static type
+ // does not affect the result.
+ {
+ Foo foo = new Foo<String>();
+ Expect.equals(true, foo.isT("string"));
+ Expect.equals(false, foo.isT(1));
+ }
+ {
+ Foo foo = new Foo();
+ Expect.equals(true, foo.isT(new List.filled(5, null)));
+ Expect.equals(true, foo.isT(new List<Object>.filled(5, "o")));
+ Expect.equals(true, foo.isT(new List<int>.filled(5, 0)));
+ Expect.equals(true, foo.isT(new List<num>.filled(5, 0)));
+ Expect.equals(true, foo.isT(new List<String>.filled(5, "s")));
+ }
+ {
+ Foo foo = new Foo<List>();
+ Expect.equals(true, foo.isT(new List.filled(5, null)));
+ Expect.equals(true, foo.isT(new List<Object>.filled(5, "o")));
+ Expect.equals(true, foo.isT(new List<int>.filled(5, 0)));
+ Expect.equals(true, foo.isT(new List<num>.filled(5, 0)));
+ Expect.equals(true, foo.isT(new List<String>.filled(5, "s")));
+ }
+ {
+ Foo foo = new Foo<List<Object>>();
+ Expect.equals(isWeakMode, foo.isT(new List.filled(5, null)));
+ Expect.equals(true, foo.isT(new List<Object>.filled(5, "o")));
+ Expect.equals(true, foo.isT(new List<int>.filled(5, 0)));
+ Expect.equals(true, foo.isT(new List<num>.filled(5, 0)));
+ Expect.equals(true, foo.isT(new List<String>.filled(5, "s")));
+ }
+ {
+ Foo foo = new Foo<List<int>>();
+ Expect.equals(isWeakMode, foo.isT(new List.filled(5, null)));
+ Expect.equals(false, foo.isT(new List<Object>.filled(5, "o")));
+ Expect.equals(true, foo.isT(new List<int>.filled(5, 0)));
+ Expect.equals(false, foo.isT(new List<num>.filled(5, 0)));
+ Expect.equals(false, foo.isT(new List<String>.filled(5, "s")));
+ }
+ {
+ Foo foo = new Foo<List<num>>();
+ Expect.equals(isWeakMode, foo.isT(new List.filled(5, null)));
+ Expect.equals(false, foo.isT(new List<Object>.filled(5, "o")));
+ Expect.equals(true, foo.isT(new List<int>.filled(5, 0)));
+ Expect.equals(true, foo.isT(new List<num>.filled(5, 0)));
+ Expect.equals(false, foo.isT(new List<String>.filled(5, "s")));
+ }
+ {
+ Foo foo = new Foo<List<String>>();
+ Expect.equals(isWeakMode, foo.isT(new List.filled(5, null)));
+ Expect.equals(false, foo.isT(new List<Object>.filled(5, "o")));
+ Expect.equals(false, foo.isT(new List<int>.filled(5, 0)));
+ Expect.equals(false, foo.isT(new List<num>.filled(5, 0)));
+ Expect.equals(true, foo.isT(new List<String>.filled(5, "s")));
+ }
+ {
+ Foo foo = new Foo();
+ Expect.equals(true, foo.isListT(new List.filled(5, null)));
+ Expect.equals(true, foo.isListT(new List<Object>.filled(5, "o")));
+ Expect.equals(true, foo.isListT(new List<int>.filled(5, 0)));
+ Expect.equals(true, foo.isListT(new List<num>.filled(5, 0)));
+ Expect.equals(true, foo.isListT(new List<String>.filled(5, "s")));
+ }
+ {
+ Foo foo = new Foo<Object>();
+ Expect.equals(isWeakMode, foo.isListT(new List.filled(5, null)));
+ Expect.equals(true, foo.isListT(new List<Object>.filled(5, "o")));
+ Expect.equals(true, foo.isListT(new List<int>.filled(5, 0)));
+ Expect.equals(true, foo.isListT(new List<num>.filled(5, 0)));
+ Expect.equals(true, foo.isListT(new List<String>.filled(5, "s")));
+ }
+ {
+ Foo foo = new Foo<int>();
+ Expect.equals(isWeakMode, foo.isListT(new List.filled(5, null)));
+ Expect.equals(false, foo.isListT(new List<Object>.filled(5, "o")));
+ Expect.equals(true, foo.isListT(new List<int>.filled(5, 0)));
+ Expect.equals(false, foo.isListT(new List<num>.filled(5, 0)));
+ Expect.equals(false, foo.isListT(new List<String>.filled(5, "s")));
+ }
+ {
+ Foo foo = new Foo<num>();
+ Expect.equals(isWeakMode, foo.isListT(new List.filled(5, null)));
+ Expect.equals(false, foo.isListT(new List<Object>.filled(5, "o")));
+ Expect.equals(true, foo.isListT(new List<int>.filled(5, 0)));
+ Expect.equals(true, foo.isListT(new List<num>.filled(5, 0)));
+ Expect.equals(false, foo.isListT(new List<String>.filled(5, "s")));
+ }
+ {
+ Foo foo = new Foo<String>();
+ Expect.equals(isWeakMode, foo.isListT(new List.filled(5, null)));
+ Expect.equals(false, foo.isListT(new List<Object>.filled(5, "o")));
+ Expect.equals(false, foo.isListT(new List<int>.filled(5, 0)));
+ Expect.equals(false, foo.isListT(new List<num>.filled(5, 0)));
+ Expect.equals(true, foo.isListT(new List<String>.filled(5, "s")));
+ }
+ }
+}
diff --git a/tests/language/generic/instanceof2_test.dart b/tests/language/generic/instanceof2_test.dart
new file mode 100644
index 0000000..e8a28e3
--- /dev/null
+++ b/tests/language/generic/instanceof2_test.dart
@@ -0,0 +1,71 @@
+// Copyright (c) 2012, 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 instanceof works correctly with type variables.
+
+import "package:expect/expect.dart";
+
+// Test that partially typed generic instances are correctly constructed.
+
+// Test factory case.
+class Foo<K, V> {
+ Foo() {}
+
+ factory Foo.fac() {
+ return new Foo<K, V>();
+ }
+
+ FooString() {
+ return new Foo<K, String>.fac();
+ }
+}
+
+// Test constructor case.
+class Moo<K, V> {
+ Moo() {}
+
+ MooString() {
+ return new Moo<K, String>();
+ }
+}
+
+testAll() {
+ var foo_int_num = new Foo<int, num>();
+ Expect.isTrue(foo_int_num is Foo<int, num>);
+ Expect.isTrue(foo_int_num is! Foo<int, String>);
+ // foo_int_num.FooString() returns a Foo<int, String>
+ Expect.isTrue(foo_int_num.FooString() is! Foo<int, num>);
+ Expect.isTrue(foo_int_num.FooString() is Foo<int, String>);
+
+ var foo_raw = new Foo();
+ Expect.isTrue(foo_raw is! Foo<int, num>);
+ Expect.isTrue(foo_raw is! Foo<int, String>);
+ Expect.isTrue(foo_raw is Foo<dynamic, dynamic>);
+ // foo_raw.FooString() returns a Foo<dynamic, String>
+ Expect.isTrue(foo_raw.FooString() is! Foo<int, num>);
+ Expect.isTrue(foo_raw.FooString() is! Foo<int, String>);
+ Expect.isTrue(foo_raw.FooString() is Foo<dynamic, String>);
+
+ var moo_int_num = new Moo<int, num>();
+ Expect.isTrue(moo_int_num is Moo<int, num>);
+ Expect.isTrue(moo_int_num is! Moo<int, String>);
+ // moo_int_num.MooString() returns a Moo<int, String>
+ Expect.isTrue(moo_int_num.MooString() is! Moo<int, num>);
+ Expect.isTrue(moo_int_num.MooString() is Moo<int, String>);
+
+ var moo_raw = new Moo();
+ Expect.isTrue(moo_raw is! Moo<int, num>);
+ Expect.isTrue(moo_raw is! Moo<int, String>);
+ Expect.isTrue(moo_raw is Moo<dynamic, dynamic>);
+ // moo_raw.MooString() returns a Moo<dynamic, String>
+ Expect.isTrue(moo_raw.MooString() is! Moo<int, num>);
+ Expect.isTrue(moo_raw.MooString() is! Moo<int, String>);
+ Expect.isTrue(moo_raw.MooString() is Moo<dynamic, String>);
+}
+
+main() {
+ // Repeat type checks so that inlined tests can be tested as well.
+ for (int i = 0; i < 5; i++) {
+ testAll();
+ }
+}
diff --git a/tests/language/generic/instanceof3_test.dart b/tests/language/generic/instanceof3_test.dart
new file mode 100644
index 0000000..28aa882
--- /dev/null
+++ b/tests/language/generic/instanceof3_test.dart
@@ -0,0 +1,43 @@
+// Copyright (c) 2012, 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.
+// Dart test program for testing the instanceof operation.
+
+import "package:expect/expect.dart";
+
+// Tests involving generics.
+
+abstract class I<T> {}
+
+class A implements I<bool> {}
+
+class B<T> implements I<bool> {}
+
+abstract class K<T> {}
+
+abstract class L<T> extends K<bool> {}
+
+class C implements L<String> {}
+
+class D implements B<String> {}
+
+main() {
+ var a = new A();
+ var b = new B<String>();
+ var c = new C();
+ var d = new D();
+ // Repeat type checks so that inlined tests can be tested as well.
+ for (int i = 0; i < 5; i++) {
+ Expect.isFalse(a is I<String>);
+ Expect.isTrue(a is I<bool>);
+ Expect.isFalse(b is I<String>);
+ Expect.isFalse(c is K<String>);
+ Expect.isFalse(c is K<String>);
+ Expect.isTrue(c is L<String>);
+ Expect.isFalse(c is L<bool>);
+ Expect.isTrue(c is K<bool>);
+ Expect.isFalse(c is K<String>);
+ Expect.isFalse(d is I<String>);
+ Expect.isTrue(d is I<bool>);
+ }
+}
diff --git a/tests/language/generic/instanceof4_test.dart b/tests/language/generic/instanceof4_test.dart
new file mode 100644
index 0000000..15896cb
--- /dev/null
+++ b/tests/language/generic/instanceof4_test.dart
@@ -0,0 +1,28 @@
+// Copyright (c) 2014, 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 instanceof works correctly with type variables.
+
+import "package:expect/expect.dart";
+
+class A<T> {
+ foo(x) {
+ // Don't inline.
+ if (new DateTime.now().millisecondsSinceEpoch == 42) return foo(x);
+ return x is T;
+ }
+}
+
+class BB {}
+
+class B<T> implements BB {
+ foo() {
+ // Don't inline.
+ if (new DateTime.now().millisecondsSinceEpoch == 42) return foo();
+ return new A<T>().foo(new B());
+ }
+}
+
+main() {
+ Expect.isTrue(new B<BB>().foo());
+}
diff --git a/tests/language/generic/instanceof5_test.dart b/tests/language/generic/instanceof5_test.dart
new file mode 100644
index 0000000..5df4087
--- /dev/null
+++ b/tests/language/generic/instanceof5_test.dart
@@ -0,0 +1,25 @@
+// Copyright (c) 2014, 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 instanceof works correctly with type variables.
+
+import "package:expect/expect.dart";
+
+class A {}
+
+class B<T, S> {}
+
+class C<U, V> extends A with B<V, U> {}
+
+class D<T> {
+ foo(x) {
+ // Avoid inlining.
+ if (new DateTime.now().millisecondsSinceEpoch == 42) foo(x);
+ return x is T;
+ return true; // Avoid inlining.
+ }
+}
+
+main() {
+ Expect.isTrue(new D<B<int, bool>>().foo(new C<bool, int>()));
+}
diff --git a/tests/language/generic/instanceof_test.dart b/tests/language/generic/instanceof_test.dart
new file mode 100644
index 0000000..46eda64
--- /dev/null
+++ b/tests/language/generic/instanceof_test.dart
@@ -0,0 +1,16 @@
+// Copyright (c) 2011, 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 instanceof works correctly with type variables.
+
+library GenericInstanceofTest.dart;
+
+import "package:expect/expect.dart";
+part "instanceof.dart";
+
+main() {
+ // Repeat type checks so that inlined tests can be tested as well.
+ for (int i = 0; i < 5; i++) {
+ GenericInstanceof.testMain();
+ }
+}
diff --git a/tests/language/generic/instantiate_tearoff_after_contravariance_check_test.dart b/tests/language/generic/instantiate_tearoff_after_contravariance_check_test.dart
new file mode 100644
index 0000000..cb0fa33
--- /dev/null
+++ b/tests/language/generic/instantiate_tearoff_after_contravariance_check_test.dart
@@ -0,0 +1,27 @@
+// Copyright (c) 2017, 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 "package:expect/expect.dart";
+
+class A {}
+
+class B extends A {}
+
+class C<T> {
+ void Function(T) f<U>(U x) => (y) {};
+}
+
+void test(C<A> cA, C<A> cB) {
+ // Tear-off of c.f needs to be type checked due to contravariance. The
+ // instantiation should occur after the type check, so if the type is wrong we
+ // should get a type error.
+ void Function(A) Function(int) tearoffOfCA = cA.f;
+ Expect.throwsTypeError(() {
+ void Function(A) Function(int) tearoffOfCB = cB.f;
+ });
+}
+
+main() {
+ test(new C<A>(), new C<B>());
+}
diff --git a/tests/language/generic/instantiate_tearoff_of_call_test.dart b/tests/language/generic/instantiate_tearoff_of_call_test.dart
new file mode 100644
index 0000000..665a271
--- /dev/null
+++ b/tests/language/generic/instantiate_tearoff_of_call_test.dart
@@ -0,0 +1,30 @@
+// Copyright (c) 2017, 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 "package:expect/expect.dart";
+
+T f<T>(T x) => x;
+
+void test(T Function<T>(T) f) {
+ int Function(int) intFunc = f.call;
+ dynamic intFuncDynamic = intFunc;
+ Expect.isTrue(intFuncDynamic is int Function(int));
+ Expect.isFalse(intFuncDynamic is String Function(String));
+ Expect.equals(intFuncDynamic(1), 1);
+ Expect.throwsTypeError(() {
+ intFuncDynamic('oops');
+ });
+ String Function(String) stringFunc = f.call;
+ dynamic stringFuncDynamic = stringFunc;
+ Expect.isTrue(stringFuncDynamic is String Function(String));
+ Expect.isFalse(stringFuncDynamic is int Function(int));
+ Expect.equals(stringFuncDynamic('hello'), 'hello');
+ Expect.throwsTypeError(() {
+ stringFuncDynamic(1);
+ });
+}
+
+main() {
+ test(f);
+}
diff --git a/tests/language/generic/instantiate_tearoff_test.dart b/tests/language/generic/instantiate_tearoff_test.dart
new file mode 100644
index 0000000..6a551f6
--- /dev/null
+++ b/tests/language/generic/instantiate_tearoff_test.dart
@@ -0,0 +1,65 @@
+// Copyright (c) 2017, 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 "package:expect/expect.dart";
+
+T f<T>(T x) => x;
+
+int intToInt(int x) => x;
+String stringToString(String x) => x;
+String stringAndIntToString(String x, int y) => x;
+
+test(intFuncDynamic, stringFuncDynamic, dynamicFuncDynamic) {
+ Expect.isTrue(intFuncDynamic is int Function(int));
+ Expect.isFalse(intFuncDynamic is String Function(String));
+ Expect.equals(intFuncDynamic(1), 1);
+ Expect.equals("${intFuncDynamic.runtimeType}", "${intToInt.runtimeType}");
+ Expect.throwsTypeError(() {
+ intFuncDynamic('oops');
+ });
+ Expect.throwsNoSuchMethodError(() {
+ intFuncDynamic<String>('oops');
+ });
+ Expect.isTrue(stringFuncDynamic is String Function(String));
+ Expect.isFalse(stringFuncDynamic is int Function(int));
+ Expect.equals(stringFuncDynamic('hello'), 'hello');
+ Expect.equals(
+ "${stringFuncDynamic.runtimeType}", "${stringToString.runtimeType}");
+ Expect.throwsTypeError(() {
+ stringFuncDynamic(1);
+ });
+ Expect.throwsNoSuchMethodError(() {
+ stringFuncDynamic<int>(1);
+ });
+ Expect.throwsNoSuchMethodError(() {
+ dynamicFuncDynamic<int>(1);
+ });
+}
+
+main() {
+ int Function(int) if1 = f;
+ String Function(String) sf1 = f;
+ dynamic Function(dynamic) df1 = f;
+ test(if1, sf1, df1);
+
+ T local<T>(T x) => x;
+
+ int Function(int) if2 = local;
+ String Function(String) sf2 = local;
+ dynamic Function(dynamic) df2 = local;
+ test(if2, sf2, df2);
+
+ dynamic bar<X>() {
+ String foo<T>(X x, T t) {
+ return "$X, $T";
+ }
+
+ String Function(X, int) x = foo;
+ return x;
+ }
+
+ dynamic fn = bar<String>();
+ Expect.equals("${fn.runtimeType}", "${stringAndIntToString.runtimeType}");
+ Expect.equals(fn("a", 1), "String, int");
+}
diff --git a/tests/language/generic/instantiate_to_bounds_super_bounded_test.dart b/tests/language/generic/instantiate_to_bounds_super_bounded_test.dart
new file mode 100644
index 0000000..db07f2b
--- /dev/null
+++ b/tests/language/generic/instantiate_to_bounds_super_bounded_test.dart
@@ -0,0 +1,143 @@
+// 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.
+
+// Verify that when a super-bounded type is produced by instantiate-to-bounds,
+// it's properly allowed or rejected depending on the context in which it's
+// used.
+
+// Raw `A` will be instantiated to `A<B<dynamic>>`, which is super-bounded.
+class A<T extends B<T>> extends Base {
+ const A();
+}
+
+class B<T> {}
+
+class Base {
+ const Base();
+
+ factory Base.test() = A; //# 01: compile-time error
+}
+
+typedef void OldStyleTypedef<T>();
+
+typedef NewStyleTypedef<T> = void Function();
+
+void genericFunction<T>() {}
+
+mixin Mixin {}
+
+class C {
+ dynamic field;
+
+ void genericMethod<T>() {}
+
+ A? test; //# 02: ok
+
+ A? test() {} //# 03: ok
+
+ void test(A param()) {} //# 04: ok
+
+ void test(A? param) {} //# 05: ok
+
+ void test([A? param]) {} //# 06: ok
+
+ void test({A? param}) {} //# 07: ok
+
+ C(A param()); //# 08: ok
+
+ C(A this.field); //# 09: ok
+
+ C(A param); //# 10: ok
+
+ C([A? param]); //# 11: ok
+
+ C({A? param}); //# 12: ok
+}
+
+class Test extends B<A> {} //# 13: ok
+
+class Test extends A {} //# 14: compile-time error
+
+class Test implements A {} //# 15: compile-time error
+
+class Test extends Object with A {} //# 16: compile-time error
+
+class Test = A with Mixin; //# 17: compile-time error
+
+class Test = Object with Mixin implements A; //# 18: compile-time error
+
+class Test = Object with A; //# 19: compile-time error
+
+mixin Test implements A {} //# 20: compile-time error
+
+mixin Test on A {} //# 21: compile-time error
+
+A? test; //# 22: ok
+
+A? test() {} //# 23: ok
+
+void test(A param()) {} //# 24: ok
+
+void test(A param) {} //# 25: ok
+
+void test([A? param]) {} //# 26: ok
+
+void test({A? param}) {} //# 27: ok
+
+typedef A Test(); //# 28: ok
+
+typedef void Test(A param()); //# 29: ok
+
+typedef void Test(A param); //# 30: ok
+
+typedef void Test([A? param]); //# 31: ok
+
+typedef void Test({A? param}); //# 32: ok
+
+typedef Test = A Function(); //# 33: ok
+
+typedef Test = void Function(A param); //# 34: ok
+
+typedef Test = void Function(A); //# 35: ok
+
+typedef Test = void Function([A? param]); //# 36: ok
+
+typedef Test = void Function([A]); //# 37: ok
+
+typedef Test = void Function({A? param}); //# 38: ok
+
+void f(dynamic x) {
+ void localFunction<T>() {}
+
+ g(x as A?); //# 39: ok
+ g(x is A); //# 40: ok
+ try {} on A catch (_) {} //# 41: ok
+ for (A? test in [x]) {} //# 42: ok
+ A? test; //# 43: ok
+ OldStyleTypedef<A> test; //# 44: ok
+ NewStyleTypedef<A> test; //# 45: ok
+ genericFunction<A>(); //# 46: ok
+ new C().genericMethod<A>(); //# 47: ok
+ localFunction<A>(); //# 48: ok
+ A? test() {} //# 49: ok
+ void test(A param()) {} //# 50: ok
+ void test(A param) {} //# 51: ok
+ void test([A? param]) {} //# 52: ok
+ void test({A? param}) {} //# 53: ok
+ void Function(A param) test; //# 54: ok
+ void Function(A) test; //# 55: ok
+ void Function([A? param]) test; //# 56: ok
+ void Function([A]) test; //# 57: ok
+ void Function({A? param}) test; //# 58: ok
+ A(); //# 59: compile-time error
+ new A(); //# 60: compile-time error
+ const A(); //# 61: compile-time error
+ const test = A(); //# 62: compile-time error
+}
+
+void g(dynamic x) {}
+
+main() {
+ f(null);
+}
diff --git a/tests/language/generic/instantiate_type_variable_runtime_test.dart b/tests/language/generic/instantiate_type_variable_runtime_test.dart
new file mode 100644
index 0000000..2051586
--- /dev/null
+++ b/tests/language/generic/instantiate_type_variable_runtime_test.dart
@@ -0,0 +1,19 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// Copyright (c) 2011, 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 you cannot instantiate a type variable.
+
+class Foo<T> {
+ Foo() {}
+ dynamic make() {
+
+ }
+}
+
+main() {
+ new Foo<Object>().make();
+}
diff --git a/tests/language/generic/instantiate_type_variable_test.dart b/tests/language/generic/instantiate_type_variable_test.dart
new file mode 100644
index 0000000..f8df489
--- /dev/null
+++ b/tests/language/generic/instantiate_type_variable_test.dart
@@ -0,0 +1,19 @@
+// Copyright (c) 2011, 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 you cannot instantiate a type variable.
+
+class Foo<T> {
+ Foo() {}
+ dynamic make() {
+ return new T();
+ // ^
+ // [analyzer] STATIC_WARNING.NEW_WITH_NON_TYPE
+ // [cfe] Method not found: 'T'.
+ }
+}
+
+main() {
+ new Foo<Object>().make();
+}
diff --git a/tests/language/generic/is_check_test.dart b/tests/language/generic/is_check_test.dart
new file mode 100644
index 0000000..5cfa38a
--- /dev/null
+++ b/tests/language/generic/is_check_test.dart
@@ -0,0 +1,15 @@
+// Copyright (c) 2013, 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 "package:expect/expect.dart";
+
+class A<T> {
+ foo() => this is A<int>;
+}
+
+main() {
+ Expect.isFalse(new A().foo());
+ Expect.isTrue(new A<int>().foo());
+ Expect.isFalse(new A<String>().foo());
+}
diff --git a/tests/language/generic/list_checked_test.dart b/tests/language/generic/list_checked_test.dart
new file mode 100644
index 0000000..2355a14
--- /dev/null
+++ b/tests/language/generic/list_checked_test.dart
@@ -0,0 +1,11 @@
+// Copyright (c) 2013, 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 'package:expect/expect.dart';
+
+main() {
+ Expect.throws(() {
+ List<int> t = (<String>[] as dynamic);
+ });
+}
diff --git a/tests/language/generic/local_functions_test.dart b/tests/language/generic/local_functions_test.dart
new file mode 100644
index 0000000..790bc06
--- /dev/null
+++ b/tests/language/generic/local_functions_test.dart
@@ -0,0 +1,22 @@
+// Copyright (c) 2016, 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.
+
+/// Dart test verifying that the parser can handle type parameterization of
+/// local function declarations, and declarations of function parameters.
+
+library generic_local_functions_test;
+
+import "package:expect/expect.dart";
+
+// Declare a generic function parameter.
+int f(Y g<X, Y>(Map<X, Y> arg, X x)) => g<int, int>(<int, int>{1: 42}, 1);
+
+main() {
+ // Declare a generic local function
+ Y h<X, Y>(Map<X, Y> m, X x) => m[x]!;
+ // Pass a generic local function as an argument.
+ Expect.equals(f(h), 42);
+ // Pass a function expression as an argument.
+ Expect.equals(f(<X, Y>(Map<X, Y> m, X x) => m[x]!), 42);
+}
diff --git a/tests/language/generic/many_generic_instanceof_test.dart b/tests/language/generic/many_generic_instanceof_test.dart
new file mode 100644
index 0000000..ea9e1eb
--- /dev/null
+++ b/tests/language/generic/many_generic_instanceof_test.dart
@@ -0,0 +1,21 @@
+// Copyright (c) 2011, 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.
+// VMOptions=--optimization-counter-threshold=10 --no-background-compilation
+
+library GenericInstanceofTest.dart;
+
+import "package:expect/expect.dart";
+part "instanceof.dart";
+
+class ManyGenericInstanceofTest {
+ static testMain() {
+ for (int i = 0; i < 20; i++) {
+ GenericInstanceof.testMain();
+ }
+ }
+}
+
+main() {
+ ManyGenericInstanceofTest.testMain();
+}
diff --git a/tests/language/generic/metadata_runtime_1_test.dart b/tests/language/generic/metadata_runtime_1_test.dart
new file mode 100644
index 0000000..f411bd2
--- /dev/null
+++ b/tests/language/generic/metadata_runtime_1_test.dart
@@ -0,0 +1,17 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// Copyright (c) 2016, 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.
+
+// Check that annotations cannot use type arguments, but can be raw.
+
+class C<T> {
+ const C();
+}
+
+@C()
+
+
+main() {}
diff --git a/tests/language/generic/metadata_runtime_test.dart b/tests/language/generic/metadata_runtime_test.dart
new file mode 100644
index 0000000..bee4c44
--- /dev/null
+++ b/tests/language/generic/metadata_runtime_test.dart
@@ -0,0 +1,17 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// Copyright (c) 2016, 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.
+
+// Check that annotations cannot use type arguments, but can be raw.
+
+class C<T> {
+ const C();
+}
+
+
+
+
+main() {}
diff --git a/tests/language/generic/metadata_test.dart b/tests/language/generic/metadata_test.dart
new file mode 100644
index 0000000..99c8fbc
--- /dev/null
+++ b/tests/language/generic/metadata_test.dart
@@ -0,0 +1,20 @@
+// Copyright (c) 2016, 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.
+
+// Check that annotations cannot use type arguments, but can be raw.
+
+class C<T> {
+ const C();
+}
+
+@C()
+@C<dynamic>()
+//^
+// [analyzer] SYNTACTIC_ERROR.ANNOTATION_WITH_TYPE_ARGUMENTS
+// [cfe] An annotation (metadata) can't use type arguments.
+@C<int>()
+//^
+// [analyzer] SYNTACTIC_ERROR.ANNOTATION_WITH_TYPE_ARGUMENTS
+// [cfe] An annotation (metadata) can't use type arguments.
+main() {}
diff --git a/tests/language/generic/method_types_test.dart b/tests/language/generic/method_types_test.dart
new file mode 100644
index 0000000..2e2ee9e
--- /dev/null
+++ b/tests/language/generic/method_types_test.dart
@@ -0,0 +1,51 @@
+// Copyright (c) 2016, 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 'package:expect/expect.dart';
+
+typedef Convert1<O> = O Function<I>(I input);
+typedef Convert2<I> = O Function<O>(I input);
+typedef Convert3 = O Function<I, O>(I input);
+typedef Other(a, b);
+
+class Mixin<E> {
+ E convert1<I>(I input) => throw "uncalled";
+}
+
+class Class<F> extends Object with Mixin<F> {
+ O convert2<O>(F input) => throw "uncalled";
+}
+
+O convert3<I, O>(I input) => throw "uncalled";
+
+test1() {
+ var val = new Class<String>();
+ Expect.isTrue(val.convert1 is Convert1);
+ Expect.isFalse(val.convert1 is Convert2);
+ Expect.isTrue(val.convert1 is Convert1<String>);
+ Expect.isFalse(val.convert1 is Convert1<int>);
+ Expect.isFalse(val.convert1 is Convert2<String>);
+ Expect.isFalse(val.convert1 is Other);
+}
+
+test2() {
+ var val = new Class<String>();
+ Expect.isTrue(val.convert2 is Convert2);
+ Expect.isTrue(val.convert2 is Convert1);
+ Expect.isTrue(val.convert2 is Convert2<String>);
+ Expect.isTrue(val.convert2 is Convert2<int>);
+ Expect.isFalse(val.convert2 is Convert1<String>);
+ Expect.isFalse(val.convert2 is Other);
+}
+
+test3() {
+ Expect.isTrue(convert3 is Convert3);
+ Expect.isFalse(convert3 is Other);
+}
+
+main() {
+ test1(); //# 01: ok
+ test2(); //# 02: ok
+ test3(); //# 03: ok
+}
diff --git a/tests/language/generic/mock_test.dart b/tests/language/generic/mock_test.dart
new file mode 100644
index 0000000..f30e43e
--- /dev/null
+++ b/tests/language/generic/mock_test.dart
@@ -0,0 +1,19 @@
+// Copyright (c) 2019, 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.
+
+// Regression test for https://github.com/dart-lang/sdk/issues/38384
+
+class Built<X, Y> {}
+
+class Foo {
+ foo<S extends Built<S, B>, B extends Built<S, B>>() {}
+}
+
+class Mock {
+ noSuchMethod(Invocation i) {}
+}
+
+class MockFoo extends Mock implements Foo {}
+
+main() {}
diff --git a/tests/language/generic/native_test.dart b/tests/language/generic/native_test.dart
new file mode 100644
index 0000000..3eec082
--- /dev/null
+++ b/tests/language/generic/native_test.dart
@@ -0,0 +1,25 @@
+// Copyright (c) 2013, 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 is-tests with type variables on native subclasses.
+
+import "package:expect/expect.dart";
+
+class A<T> {
+ foo(o) => o is T;
+}
+
+class B {}
+
+class C {}
+
+main() {
+ Expect.isTrue(new A<Iterable<B>>().foo(<B>[]));
+ Expect.isFalse(new A<Iterable<C>>().foo(<B>[]));
+
+ Expect.isTrue(new A<Pattern>().foo('hest'));
+
+ Expect.isTrue(new A<Comparable<String>>().foo('hest'));
+ Expect.isFalse(new A<Comparable<C>>().foo('hest'));
+}
diff --git a/tests/language/generic/no_such_method_dispatcher_test.dart b/tests/language/generic/no_such_method_dispatcher_test.dart
new file mode 100644
index 0000000..336e7b9
--- /dev/null
+++ b/tests/language/generic/no_such_method_dispatcher_test.dart
@@ -0,0 +1,71 @@
+// Copyright (c) 2017, 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.
+// VMOptions=--reify-generic-functions --optimization-counter-threshold=10 --no-use-osr --no-background-compilation
+
+import "package:expect/expect.dart";
+
+// Test that noSuchMethod dispatching and auto-closurization work correctly
+// with generic functions.
+
+class A {
+ noSuchMethod(m) {
+ return 123;
+ }
+
+ bar<U, V>(x) => x + 1;
+}
+
+class B extends A {}
+
+class C {
+ C(this.typeArgs, this.posArgs, this.namedArgs);
+ List typeArgs;
+ List posArgs;
+ Map namedArgs;
+ noSuchMethod(m) {
+ Expect.equals(typeArgs.length, m.typeArguments.length);
+ for (var i = 0; i < typeArgs.length; ++i) {
+ Expect.equals(typeArgs[i], m.typeArguments[i]);
+ }
+ Expect.equals(posArgs.length, m.positionalArguments.length);
+ for (var i = 0; i < posArgs.length; ++i) {
+ Expect.equals(posArgs[i], m.positionalArguments[i]);
+ }
+ Expect.equals(namedArgs.length, m.namedArguments.length);
+ for (var k in namedArgs.keys) {
+ Expect.equals(namedArgs[k], m.namedArguments[new Symbol(k)]);
+ }
+ return 123;
+ }
+}
+
+main() {
+ dynamic a = new A();
+ for (var i = 0; i < 20; ++i) Expect.equals(123, a.foo<int, A>());
+ Expect.throws(() => (a.foo)());
+ Expect.throws(() => (a.foo)<int, A>());
+ Expect.equals("123", (a.foo).toString());
+
+ dynamic b = new B();
+ for (var i = 0; i < 20; ++i) {
+ Expect.equals(2, b.bar<int, A>(1));
+ Expect.equals(2, b.bar(1));
+ Expect.equals(123, b.bar<int, A>());
+ Expect.equals(3, b.bar<int, A>(2));
+ Expect.equals(123, b.bar<int>(1));
+ }
+
+ for (var i = 0; i < 20; ++i) {
+ Expect.equals(123, b.bar<int, A>(1, 2, 3));
+ Expect.equals(123, b.bar<int, A>(1, 2, foo: 3));
+ Expect.equals(123, b.bar<int>(1));
+ }
+
+ // Test type, named, and positional arguments.
+ dynamic c = new C([int, A], [100], {"n1": 101, "n2": 102});
+ for (var i = 0; i < 20; ++i) {
+ Expect.equals(123, c.bar<int, A>(100, n1: 101, n2: 102));
+ Expect.equals(123, c.bar<int, A>(100, n2: 102, n1: 101));
+ }
+}
diff --git a/tests/language/generic/object_type_test.dart b/tests/language/generic/object_type_test.dart
new file mode 100644
index 0000000..4b1733a
--- /dev/null
+++ b/tests/language/generic/object_type_test.dart
@@ -0,0 +1,16 @@
+// Copyright (c) 2014, 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 "package:expect/expect.dart";
+
+class Tester<T> {
+ testGenericType(x) {
+ return x is T;
+ }
+}
+
+main() {
+ // The Dart Object type is special in that it doesn't have any superclass.
+ Expect.isTrue(new Tester<Object>().testGenericType(new Object()));
+}
diff --git a/tests/language/generic/parameterized_extends_test.dart b/tests/language/generic/parameterized_extends_test.dart
new file mode 100644
index 0000000..0d85fe9
--- /dev/null
+++ b/tests/language/generic/parameterized_extends_test.dart
@@ -0,0 +1,31 @@
+// Copyright (c) 2011, 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 verifying that generic extends are processed correctly.
+
+import "package:expect/expect.dart";
+
+class A<T> {}
+
+class B<T1, T2 extends A<T1>> {}
+
+class C<T1 extends A<T2>, T2> {}
+
+main() {
+ var a = new A<String>();
+ var b = new B<String, A<String>>();
+ var c = new C<A<String>, String>();
+ Expect.isTrue(a is Object);
+ Expect.isTrue(a is A<Object>);
+ Expect.isTrue(a is A<String>);
+ Expect.isTrue(a is! A<int>);
+ Expect.isTrue(b is Object);
+ Expect.isTrue(b is B<Object, A<Object>>);
+ Expect.isTrue(b is B<String, A<String>>);
+ Expect.isTrue(b is! B<int, A<int>>);
+ Expect.isTrue(c is Object);
+ Expect.isTrue(c is C<A<Object>, Object>);
+ Expect.isTrue(c is C<A<String>, String>);
+ Expect.isTrue(c is! C<A<int>, int>);
+}
diff --git a/tests/language/generic/recursive_generic_test.dart b/tests/language/generic/recursive_generic_test.dart
new file mode 100644
index 0000000..6f56104
--- /dev/null
+++ b/tests/language/generic/recursive_generic_test.dart
@@ -0,0 +1,35 @@
+// Copyright (c) 2016, 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 "package:expect/expect.dart";
+
+abstract class S<T extends S<T>> {
+ m() => 123;
+ get S_T => T;
+}
+
+class C<T extends C<T>> extends S<C<T>> {
+ m() => 456;
+ get C_T => T;
+}
+
+class D extends C<D> {}
+
+main() {
+ regress31434();
+
+ Expect.equals(new C<D>().m(), 456);
+ Expect.equals(new C<D>().C_T, D);
+ Expect.equals(new C<D>().S_T.toString(), 'C<D>');
+}
+
+class F<L, R> {}
+
+class E<L, R> extends F<E<L, Object>, R> {}
+
+regress31434() {
+ type<T>() => T;
+ dynamic e = new E<int, String>();
+ Expect.equals(e.runtimeType, type<E<int, String>>());
+}
diff --git a/tests/language/generic/reify_typevar_runtime_1_test.dart b/tests/language/generic/reify_typevar_runtime_1_test.dart
new file mode 100644
index 0000000..d2f11b2
--- /dev/null
+++ b/tests/language/generic/reify_typevar_runtime_1_test.dart
@@ -0,0 +1,34 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// Copyright (c) 2014, 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 "package:expect/expect.dart";
+
+class C<T> {
+ final x;
+ C([this.x]);
+
+ static staticFunction(bool b) =>
+
+ null;
+ factory C.factoryConstructor(bool b) => new C(
+ b ? T :
+ null);
+ C.redirectingConstructor(bool b) : this(
+
+ null);
+ C.ordinaryConstructor(bool b)
+ : x =
+
+ null;
+}
+
+main() {
+ Expect.equals(null, C.staticFunction(false));
+ Expect.equals(null, new C.factoryConstructor(false).x);
+ Expect.equals(null, new C.redirectingConstructor(false).x);
+ Expect.equals(null, new C.ordinaryConstructor(false).x);
+}
diff --git a/tests/language/generic/reify_typevar_runtime_2_test.dart b/tests/language/generic/reify_typevar_runtime_2_test.dart
new file mode 100644
index 0000000..568cc93
--- /dev/null
+++ b/tests/language/generic/reify_typevar_runtime_2_test.dart
@@ -0,0 +1,34 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// Copyright (c) 2014, 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 "package:expect/expect.dart";
+
+class C<T> {
+ final x;
+ C([this.x]);
+
+ static staticFunction(bool b) =>
+
+ null;
+ factory C.factoryConstructor(bool b) => new C(
+
+ null);
+ C.redirectingConstructor(bool b) : this(
+ b ? T :
+ null);
+ C.ordinaryConstructor(bool b)
+ : x =
+
+ null;
+}
+
+main() {
+ Expect.equals(null, C.staticFunction(false));
+ Expect.equals(null, new C.factoryConstructor(false).x);
+ Expect.equals(null, new C.redirectingConstructor(false).x);
+ Expect.equals(null, new C.ordinaryConstructor(false).x);
+}
diff --git a/tests/language/generic/reify_typevar_runtime_3_test.dart b/tests/language/generic/reify_typevar_runtime_3_test.dart
new file mode 100644
index 0000000..712db2ef
--- /dev/null
+++ b/tests/language/generic/reify_typevar_runtime_3_test.dart
@@ -0,0 +1,34 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// Copyright (c) 2014, 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 "package:expect/expect.dart";
+
+class C<T> {
+ final x;
+ C([this.x]);
+
+ static staticFunction(bool b) =>
+
+ null;
+ factory C.factoryConstructor(bool b) => new C(
+
+ null);
+ C.redirectingConstructor(bool b) : this(
+
+ null);
+ C.ordinaryConstructor(bool b)
+ : x =
+ b ? T :
+ null;
+}
+
+main() {
+ Expect.equals(null, C.staticFunction(false));
+ Expect.equals(null, new C.factoryConstructor(false).x);
+ Expect.equals(null, new C.redirectingConstructor(false).x);
+ Expect.equals(null, new C.ordinaryConstructor(false).x);
+}
diff --git a/tests/language/generic/reify_typevar_runtime_test.dart b/tests/language/generic/reify_typevar_runtime_test.dart
new file mode 100644
index 0000000..02131f0
--- /dev/null
+++ b/tests/language/generic/reify_typevar_runtime_test.dart
@@ -0,0 +1,34 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// Copyright (c) 2014, 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 "package:expect/expect.dart";
+
+class C<T> {
+ final x;
+ C([this.x]);
+
+ static staticFunction(bool b) =>
+
+ null;
+ factory C.factoryConstructor(bool b) => new C(
+
+ null);
+ C.redirectingConstructor(bool b) : this(
+
+ null);
+ C.ordinaryConstructor(bool b)
+ : x =
+
+ null;
+}
+
+main() {
+ Expect.equals(null, C.staticFunction(false));
+ Expect.equals(null, new C.factoryConstructor(false).x);
+ Expect.equals(null, new C.redirectingConstructor(false).x);
+ Expect.equals(null, new C.ordinaryConstructor(false).x);
+}
diff --git a/tests/language/generic/reify_typevar_static_test.dart b/tests/language/generic/reify_typevar_static_test.dart
new file mode 100644
index 0000000..b3c502b
--- /dev/null
+++ b/tests/language/generic/reify_typevar_static_test.dart
@@ -0,0 +1,34 @@
+// Copyright (c) 2014, 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 "package:expect/expect.dart";
+
+class C<T> {
+ final x;
+ C([this.x]);
+
+ static staticFunction(bool b) =>
+ b ? T :
+ // ^
+ // [analyzer] STATIC_WARNING.TYPE_PARAMETER_REFERENCED_BY_STATIC
+ // [cfe] Type variables can't be used in static members.
+ null;
+ factory C.factoryConstructor(bool b) => new C(
+ b ? T :
+ null);
+ C.redirectingConstructor(bool b) : this(
+ b ? T :
+ null);
+ C.ordinaryConstructor(bool b)
+ : x =
+ b ? T :
+ null;
+}
+
+main() {
+ Expect.equals(null, C.staticFunction(false));
+ Expect.equals(null, new C.factoryConstructor(false).x);
+ Expect.equals(null, new C.redirectingConstructor(false).x);
+ Expect.equals(null, new C.ordinaryConstructor(false).x);
+}
diff --git a/tests/language/generic/self_reference_test.dart b/tests/language/generic/self_reference_test.dart
new file mode 100644
index 0000000..e5e60e8
--- /dev/null
+++ b/tests/language/generic/self_reference_test.dart
@@ -0,0 +1,13 @@
+// Copyright (c) 2016, 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 "package:expect/expect.dart";
+
+class Bar<T> {}
+
+class Foo<T> extends Bar<Foo<T>> {}
+
+void main() {
+ print(new Foo<int>());
+}
diff --git a/tests/language/generic/sends_test.dart b/tests/language/generic/sends_test.dart
new file mode 100644
index 0000000..57befee
--- /dev/null
+++ b/tests/language/generic/sends_test.dart
@@ -0,0 +1,26 @@
+// Copyright (c) 2016, 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.
+
+/// Dart test verifying that the parser can handle certain cases where
+/// grammar ambiguity is resolved in favor of generic sends, not
+/// relational expressions.
+
+library generic_sends_test;
+
+f(arg1, [arg2]) => null;
+g<X, Y>(arg) => null;
+
+main() {
+ // Generic invocations.
+ f(g<int, String>(3));
+ f(g<int, List<String>>(3));
+ f(g<int, String>(3), 4);
+ f(g<int, List<String>>(3), 4);
+
+ // Relational expressions.
+ int a = 0, b = 1, c = 2, d = 3;
+ f(a < b, c > 3);
+ f(a < b, c >> 3);
+ f(a < b, c < d >> 3);
+}
diff --git a/tests/language/generic/sync_star_test.dart b/tests/language/generic/sync_star_test.dart
new file mode 100644
index 0000000..cf61d92
--- /dev/null
+++ b/tests/language/generic/sync_star_test.dart
@@ -0,0 +1,17 @@
+// Copyright (c) 2016, 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 "package:expect/expect.dart";
+
+Iterable<T> foo<T>(T x) sync* {
+ for (int i = 0; i < 3; i++) {
+ yield x;
+ }
+}
+
+main() {
+ for (var x in foo<int>(1)) {
+ Expect.equals(1, x);
+ }
+}
diff --git a/tests/language/generic/syntax_test.dart b/tests/language/generic/syntax_test.dart
new file mode 100644
index 0000000..82c8d0f
--- /dev/null
+++ b/tests/language/generic/syntax_test.dart
@@ -0,0 +1,49 @@
+// Copyright (c) 2012, 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 "package:expect/expect.dart";
+
+// Dart test verifying that the parser does not confuse parameterized types with
+// boolean expressions, since both contain '<'.
+
+class GenericSyntaxTest<B, C, D, E, F> {
+ GenericSyntaxTest() {}
+
+ void foo(x1, x2, x3, x4, x5) {
+ Expect.equals(true, x1);
+ Expect.equals(3, x2);
+ Expect.equals(4, x3);
+ Expect.equals(5, x4);
+ Expect.equals(false, x5);
+ }
+
+ void bar(x) {
+ Expect.equals(null, x(null));
+ }
+
+ test() {
+ var a = 1;
+ var b = 2;
+ var c = 3;
+ var d = 4;
+ var e = 5;
+ var f = 6;
+ var g = 7;
+ var h = null;
+ bar((A<B, C, D, E, F>? g) {
+ return h;
+ }); // 'A<B' starts a generic type.
+ foo(a < b, c, d, e, f > g); // 'a<b' is a boolean function argument.
+ }
+
+ static testMain() {
+ new GenericSyntaxTest().test();
+ }
+}
+
+abstract class A<B, C, D, E, F> {}
+
+main() {
+ GenericSyntaxTest.testMain();
+}
diff --git a/tests/language/generic/tearoff_test.dart b/tests/language/generic/tearoff_test.dart
new file mode 100644
index 0000000..06c863f
--- /dev/null
+++ b/tests/language/generic/tearoff_test.dart
@@ -0,0 +1,44 @@
+// Copyright (c) 2016, 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:math' as math;
+import 'dart:math' show min; // <-- generic: <T extends num>(T, T) -> T
+import 'package:expect/expect.dart';
+
+class C {
+ T m<T extends num>(T x, T y) => min(x, y);
+ int m2(int x, int y) => min(x, y);
+}
+
+typedef int Int2Int2Int(int x, int y);
+
+void _test(Int2Int2Int f) {
+ int y = f(123, 456);
+ Expect.equals(y, 123);
+ // `f` doesn't take type args.
+ Expect.throws(() => (f as dynamic)<int>(123, 456));
+}
+
+void _testParam(T minFn<T extends num>(T x, T y)) {
+ _test(minFn);
+}
+
+main() {
+ // Strong mode infers: `min<int>`
+ // Test simple/prefixed identifiers and property access
+ _test(min);
+ _test(math.min);
+ _test(new C().m);
+
+ // Test local function, variable, and parameter
+ T m<T extends num>(T x, T y) => min(x, y);
+ _test(m);
+ final f = min;
+ _test(f);
+ _testParam(math.min);
+
+ // A few misc tests for methods
+ Expect.equals(123, (new C() as dynamic).m<int>(123, 456));
+ Expect.throws(() => (new C() as dynamic).m2<int>(123, 456));
+}
diff --git a/tests/language/generic/type_argument_in_super_type_test.dart b/tests/language/generic/type_argument_in_super_type_test.dart
new file mode 100644
index 0000000..1d9a2a0
--- /dev/null
+++ b/tests/language/generic/type_argument_in_super_type_test.dart
@@ -0,0 +1,24 @@
+// Copyright (c) 2013, 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 "package:expect/expect.dart";
+
+class C {}
+
+class A<T> {
+ var field;
+ A(this.field);
+ T foo() => field;
+ int bar() => field;
+}
+
+class B extends A<C> {
+ B() : super(new C());
+}
+
+main() {
+ B b = new B();
+ Expect.equals(b.field, b.foo());
+ Expect.throwsTypeError(b.bar);
+}
diff --git a/tests/language/generic/type_argument_substitution_test.dart b/tests/language/generic/type_argument_substitution_test.dart
new file mode 100644
index 0000000..cca72f0
--- /dev/null
+++ b/tests/language/generic/type_argument_substitution_test.dart
@@ -0,0 +1,23 @@
+// Copyright (c) 2014, 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 substitutions are emitted for classes that are only used as
+// type arguments.
+
+import 'package:expect/expect.dart';
+
+class K {}
+
+class A<T> {}
+
+class B extends A<K> {}
+
+class X<T> {}
+
+main() {
+ var v = new DateTime.now().millisecondsSinceEpoch != 42
+ ? new X<B>()
+ : new X<A<String>>();
+ Expect.isFalse(v is X<A<String>>);
+}
diff --git a/tests/language/generic/type_parameter_literal_test.dart b/tests/language/generic/type_parameter_literal_test.dart
new file mode 100644
index 0000000..452b535
--- /dev/null
+++ b/tests/language/generic/type_parameter_literal_test.dart
@@ -0,0 +1,17 @@
+// Copyright (c) 2011, 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 "package:expect/expect.dart";
+
+// Test type parameter literal expressions.
+
+class D<T> {
+ Type getT() {
+ return T;
+ }
+}
+
+main() {
+ Expect.equals(int, new D<int>().getT());
+}
diff --git a/tests/language/generic/type_parameter_test.dart b/tests/language/generic/type_parameter_test.dart
new file mode 100644
index 0000000..9009863
--- /dev/null
+++ b/tests/language/generic/type_parameter_test.dart
@@ -0,0 +1,90 @@
+// Copyright (c) 2012, 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 "package:expect/expect.dart";
+
+class A<T> {
+ late Function closure;
+ A._(this.closure);
+
+ factory A() {
+ return new A._(() => new Set<T>());
+ }
+
+ A.bar() {
+ closure = () => new Set<T>();
+ }
+
+ static
+ T //# 01: compile-time error
+ staticMethod(
+ T //# 02: compile-time error
+ a) {
+ final
+ T //# 03: compile-time error
+ a = "not_null";
+ print(a);
+ return a;
+ }
+
+ static final
+ T //# 04: compile-time error
+ staticFinalField = "not_null";
+
+ static const
+ T //# 05: compile-time error
+ staticConstField = "not_null";
+
+ static not_null() => "not_null";
+ static final
+ T //# 06: compile-time error
+ staticFinalField2 = not_null();
+
+ // Type parameters are not in scope inside static methods.
+ static
+ T //# 07: compile-time error
+ staticMethod2(
+ T //# 07: compile-time error
+ a) {
+ final
+ T //# 07: compile-time error
+ a = null;
+ print(a);
+ return a;
+ }
+
+ static final
+ T //# 08: compile-time error
+ staticFinalField3 = null;
+
+ static null_() => null;
+ static final
+ T //# 09: compile-time error
+ staticFinalField4 = null_();
+}
+
+main() {
+ var s = ((new A()).closure)();
+ Expect.isTrue(s is Set);
+
+ s = ((new A.bar()).closure)();
+ Expect.isTrue(s is Set);
+
+ s = ((new A<int>()).closure)();
+ Expect.isTrue(s is Set<int>);
+ Expect.isFalse(s is Set<double>);
+
+ s = ((new A<int>.bar()).closure)();
+ Expect.isTrue(s is Set<int>);
+ Expect.isFalse(s is Set<double>);
+
+ A.staticMethod("not_null");
+ print(A.staticFinalField);
+ print(A.staticConstField);
+ print(A.staticFinalField2);
+
+ A.staticMethod2(null);
+ print(A.staticFinalField3);
+ print(A.staticFinalField4);
+}
diff --git a/tests/language/generic/typedef_test.dart b/tests/language/generic/typedef_test.dart
new file mode 100644
index 0000000..09dce80
--- /dev/null
+++ b/tests/language/generic/typedef_test.dart
@@ -0,0 +1,60 @@
+// Copyright (c) 2017, 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 'package:expect/expect.dart';
+
+// Test runtime behavior of generic function typedefs:
+//
+// - use "is" and "as" on them.
+// - get Type values from runtimeType.
+// - pass type parameters from another generic type to them.
+
+typedef A<T> = T Function(T x, T y);
+typedef B = T Function<T>(T x, T y);
+
+typedef C<K> = Map<K, V> Function<V>(K k, V v);
+typedef D = Map<String, V> Function<V>(String k, V v);
+
+class G<Y, Z> {
+ test() {
+ dynamic d = (Y x, Y y) => y;
+ Expect.isTrue(d is A<Y>);
+ Expect.equals(d is A<Z>, Y == Z);
+
+ Expect.isFalse(d is B);
+ Expect.throws(() => d as B);
+
+ d = (Y y, Z z) => <Y, Z>{};
+ Expect.isFalse(d is C<Y>);
+
+ d = <S>(Y y, S s) => <Y, S>{};
+ Expect.isTrue(d is C<Y>);
+ Expect.equals(d is C<Z>, Y == Z);
+ Expect.equals(d is D, Y == String);
+ }
+}
+
+main() {
+ dynamic d = (int x, int y) => x + y;
+ Expect.isTrue(d is A<int>);
+ Expect.equals((d as A<int>)(1, 2), 3);
+
+ Expect.isFalse(d is B);
+ Expect.throws(() => d as B);
+
+ d = <S>(S x, S y) => x is String ? x : y;
+ Expect.isFalse(d is A);
+ Expect.throws(() => d as A);
+
+ Expect.isTrue(d is B);
+ // TODO(jmesserly): Analyzer incorrectly rejects this form:
+ // Expect.equals((d as B)<int>(1, 2), 2);
+ B b = d;
+ Expect.equals(b<int>(1, 2), 2);
+ Expect.equals(b<String>('a', 'b'), 'a');
+
+
+ new G<int, String>().test();
+ new G<String, String>().test();
+}
diff --git a/tests/language/generic/wrong_number_type_arguments_runtime_test.dart b/tests/language/generic/wrong_number_type_arguments_runtime_test.dart
new file mode 100644
index 0000000..5c61331
--- /dev/null
+++ b/tests/language/generic/wrong_number_type_arguments_runtime_test.dart
@@ -0,0 +1,24 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// Copyright (c) 2012, 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 "package:expect/expect.dart";
+
+// Map takes 2 type arguments.
+Map
+
+foo = {};
+Map
+
+baz = {};
+
+main() {
+
+ var bar = new Map
+
+ ();
+
+}
diff --git a/tests/language/generic/wrong_number_type_arguments_test.dart b/tests/language/generic/wrong_number_type_arguments_test.dart
new file mode 100644
index 0000000..dcc0d9a
--- /dev/null
+++ b/tests/language/generic/wrong_number_type_arguments_test.dart
@@ -0,0 +1,22 @@
+// Copyright (c) 2012, 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.
+
+// Map takes 2 type arguments.
+Map<String> foo = {};
+// [error line 6, column 1, length 11]
+// [analyzer] STATIC_TYPE_WARNING.WRONG_NUMBER_OF_TYPE_ARGUMENTS
+// [cfe] Expected 2 type arguments.
+Map<String> baz = {};
+// [error line 10, column 1, length 11]
+// [analyzer] STATIC_TYPE_WARNING.WRONG_NUMBER_OF_TYPE_ARGUMENTS
+// [cfe] Expected 2 type arguments.
+
+main() {
+ foo = {};
+ var bar = new Map<String>();
+ // ^^^^^^^^^^^
+ // [analyzer] STATIC_TYPE_WARNING.WRONG_NUMBER_OF_TYPE_ARGUMENTS
+ // [cfe] Expected 2 type arguments.
+ baz = new Map();
+}
diff --git a/tests/language/generic_methods/bounds_test.dart b/tests/language/generic_methods/bounds_test.dart
new file mode 100644
index 0000000..365d0ef
--- /dev/null
+++ b/tests/language/generic_methods/bounds_test.dart
@@ -0,0 +1,26 @@
+// Copyright (c) 2017, 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 a dynamic call to a generic function checks the type argument
+// against its bound.
+
+library generic_methods_bounds_test;
+
+import "package:expect/expect.dart";
+
+class A {}
+
+class B {}
+
+class C {
+ void fun<T extends A>(T t) {}
+}
+
+main() {
+ C c = new C();
+ c.fun<B>(new B()); //# 01: compile-time error
+
+ dynamic obj = new C();
+ obj.fun<B>(new B()); //# 02: runtime error
+}
diff --git a/tests/language/generic_methods/closure_test.dart b/tests/language/generic_methods/closure_test.dart
new file mode 100644
index 0000000..131105d
--- /dev/null
+++ b/tests/language/generic_methods/closure_test.dart
@@ -0,0 +1,41 @@
+// Copyright (c) 2017, 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 a generic closure is correctly constructed.
+
+library generic_methods_closure_test;
+
+import "package:expect/expect.dart";
+
+class A {}
+
+class I<T> {}
+
+class B extends I<B> {}
+
+void fun<T>(List<T> list) {
+ var helper1 = <S>(List<S> list) {
+ if (list.length > 0) {
+ Expect.isTrue(list[0] is S);
+ }
+ Expect.isTrue(list is List<S>);
+ Expect.isTrue(list is List<T>);
+ };
+
+ void helper2<S>(List<S> list) {
+ if (list.length > 0) {
+ Expect.isTrue(list[0] is S);
+ }
+ Expect.isTrue(list is List<S>);
+ Expect.isTrue(list is List<T>);
+ }
+
+ helper1<T>(list);
+ helper2<T>(list);
+}
+
+main() {
+ List<B> list = <B>[new B()];
+ fun<B>(list);
+}
diff --git a/tests/language/generic_methods/dynamic_test.dart b/tests/language/generic_methods/dynamic_test.dart
new file mode 100644
index 0000000..6b92dc3
--- /dev/null
+++ b/tests/language/generic_methods/dynamic_test.dart
@@ -0,0 +1,44 @@
+// Copyright (c) 2017, 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 if the type of a parameter of a generic method is a type parameter,
+// the type of the passed argument is checked (01) at compile time
+// if the receiver is given via an interface-type variable, and (02) at runtime
+// if the receiver is dynamic.
+
+library generic_methods_dynamic_test;
+
+import "package:expect/expect.dart";
+
+class A {}
+
+class B {}
+
+class C {
+ T foo<T>(T t) => t;
+ List<T> bar<T>(Iterable<T> t) => <T>[t.first];
+}
+
+main() {
+ B b = new B();
+ C c = new C();
+ dynamic obj = c;
+
+ c.foo<A>(b); //# 01: compile-time error
+ obj.foo<A>(b); //# 02: runtime error
+
+ c.bar<A>(<B>[new B()]); //# 03: compile-time error
+ obj.bar<A>(<B>[new B()]); //# 04: runtime error
+
+ Expect.equals(c.foo<B>(b), b); //# 05: ok
+ Expect.equals(obj.foo<B>(b), b); //# 05: continued
+
+ dynamic x = c.bar<B>(<B>[new B()]); //# 05: continued
+ Expect.isTrue(x is List<B>); //# 05: continued
+ Expect.equals(x.length, 1); //# 05: continued
+
+ dynamic y = obj.bar<B>(<B>[new B()]); //# 05: continued
+ Expect.isTrue(y is List<B>); //# 05: continued
+ Expect.equals(y.length, 1); //# 05: continued
+}
diff --git a/tests/language/generic_methods/function_type_test.dart b/tests/language/generic_methods/function_type_test.dart
new file mode 100644
index 0000000..4941c43
--- /dev/null
+++ b/tests/language/generic_methods/function_type_test.dart
@@ -0,0 +1,20 @@
+// Copyright (c) 2016, 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.
+
+/// Dart test on the usage of method type arguments in a function typed
+/// parameter declaration.
+
+library generic_methods_function_type_test;
+
+import "package:expect/expect.dart";
+
+class C<V> {
+ U m1<U>(U f(V v), V v) => f(v);
+ V m2<U>(V f(U v), U u) => f(u);
+}
+
+main() {
+ Expect.equals(new C<int>().m1<int>((x) => x, 10), 10);
+ Expect.equals(new C<int>().m2<int>((x) => x, 20), 20);
+}
diff --git a/tests/language/generic_methods/generic_class_tearoff_test.dart b/tests/language/generic_methods/generic_class_tearoff_test.dart
new file mode 100644
index 0000000..6c98ba8
--- /dev/null
+++ b/tests/language/generic_methods/generic_class_tearoff_test.dart
@@ -0,0 +1,43 @@
+// Copyright (c) 2017, 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 a torn off method of a generic class is not a generic method,
+// and that it is correctly specialized.
+
+library generic_methods_generic_class_tearoff_test;
+
+import "package:expect/expect.dart";
+
+class A<T> {
+ T fun(T t) => t;
+}
+
+typedef Int2Int = int Function(int);
+typedef String2String = String Function(String);
+typedef Object2Object = Object Function(Object);
+typedef GenericMethod = T Function<T>(T);
+
+main() {
+ A<int> x = new A<int>();
+ var f = x.fun; // The type of f should be 'int Function(Object?)'.
+ A<String> y = new A<String>();
+ var g = y.fun; // The type of g should be 'String Function(Object?)'.
+ A z = new A();
+ var h = z.fun; // The type of h should be 'dynamic Function(Object?)'.
+
+ Expect.isTrue(f is Int2Int);
+ Expect.isTrue(f is! String2String);
+ Expect.isTrue(f is Object2Object);
+ Expect.isTrue(f is! GenericMethod);
+
+ Expect.isTrue(g is! Int2Int);
+ Expect.isTrue(g is String2String);
+ Expect.isTrue(g is Object2Object);
+ Expect.isTrue(g is! GenericMethod);
+
+ Expect.isTrue(h is! Int2Int);
+ Expect.isTrue(h is! String2String);
+ Expect.equals(isWeakMode, h is Object2Object);
+ Expect.isTrue(h is! GenericMethod);
+}
diff --git a/tests/language/generic_methods/generic_function_parameter_test.dart b/tests/language/generic_methods/generic_function_parameter_test.dart
new file mode 100644
index 0000000..3c4c2c7
--- /dev/null
+++ b/tests/language/generic_methods/generic_function_parameter_test.dart
@@ -0,0 +1,15 @@
+// Copyright (c) 2016, 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 "package:expect/expect.dart";
+
+class C<T> {
+ bar<V>(T t, int u, V v) => t.toString() + u.toString() + v.toString();
+ foo<U>(bar<V>(T t, U u, V v)) => bar<int>(1 as T, 2 as U, 3);
+}
+
+main() {
+ var c = new C<int>();
+ Expect.equals("123", c.foo<int>(c.bar));
+}
diff --git a/tests/language/generic_methods/generic_function_result_runtime_test.dart b/tests/language/generic_methods/generic_function_result_runtime_test.dart
new file mode 100644
index 0000000..e382965
--- /dev/null
+++ b/tests/language/generic_methods/generic_function_result_runtime_test.dart
@@ -0,0 +1,29 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// Copyright (c) 2017, 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.
+
+// Verify that function type parameter S can be resolved in bar's result type.
+// Verify that generic function types are not allowed as type arguments.
+
+import "package:expect/expect.dart";
+
+int foo
+
+ (int i, int j) => i + j;
+
+List<int Function
+
+ (S, int)> bar<S extends int>() {
+ return <int Function
+
+ (S, int)>[foo, foo];
+}
+
+void main() {
+ var list = bar<int>();
+ print(list[0].runtimeType);
+ Expect.equals(123, list[1](100, 23));
+}
diff --git a/tests/language/generic_methods/generic_function_result_test.dart b/tests/language/generic_methods/generic_function_result_test.dart
new file mode 100644
index 0000000..41d4742
--- /dev/null
+++ b/tests/language/generic_methods/generic_function_result_test.dart
@@ -0,0 +1,28 @@
+// Copyright (c) 2017, 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.
+
+// Verify that function type parameter S can be resolved in bar's result type.
+// Verify that generic function types are not allowed as type arguments.
+
+import "package:expect/expect.dart";
+
+int foo
+ <T>
+ (int i, int j) => i + j;
+
+List<int Function<T>(S, int)> bar<S extends int>() {
+// ^^^^^^^^^^^^^^^^^^^^^^^
+// [analyzer] COMPILE_TIME_ERROR.GENERIC_FUNCTION_TYPE_CANNOT_BE_TYPE_ARGUMENT
+// ^
+// [cfe] A generic function type can't be used as a type argument.
+ return <int Function<T>(S, int)>[foo, foo];
+}
+
+void main() {
+ var list = bar<int>();
+ // ^
+ // [cfe] Generic function type 'int Function<T>(int, int)' inferred as a type argument.
+ print(list[0].runtimeType);
+ Expect.equals(123, list[1](100, 23));
+}
diff --git a/tests/language/generic_methods/generic_methods_test.dart b/tests/language/generic_methods/generic_methods_test.dart
new file mode 100644
index 0000000..31e1d29
--- /dev/null
+++ b/tests/language/generic_methods/generic_methods_test.dart
@@ -0,0 +1,107 @@
+// Copyright (c) 2016, 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.
+
+/// Dart test verifying that the parser can handle type parameterization of
+/// method declarations and method invocations. Slightly adjusted version of
+/// code from DEP #22.
+
+library generic_methods_test;
+
+import "package:expect/expect.dart";
+
+class BinaryTreeNode<K extends Comparable<K>, V> {
+ final K _key;
+ final V _value;
+ final BinaryTreeNode<K, V>? _left;
+ final BinaryTreeNode<K, V>? _right;
+
+ BinaryTreeNode(this._key, this._value,
+ {BinaryTreeNode<K, V>? left: null, BinaryTreeNode<K, V>? right: null})
+ : _left = left,
+ _right = right;
+
+ // Use fresh type variables.
+ static BinaryTreeNode<K2, V2> insertOpt<K2 extends Comparable<K2>, V2>(
+ BinaryTreeNode<K2, V2>? t, K2 key, V2 value) {
+ return (t == null) ? new BinaryTreeNode(key, value) : t.insert(key, value);
+ }
+
+ BinaryTreeNode<K, V> insert(K key, V value) {
+ int c = key.compareTo(_key);
+ if (c == 0) return this;
+ var _insert = (BinaryTreeNode<K, V>? node, K key, V value) =>
+ insertOpt<K, V>(node, key, value);
+ BinaryTreeNode<K, V>? left = _left;
+ BinaryTreeNode<K, V>? right = _right;
+ if (c < 0) {
+ left = _insert(_left, key, value);
+ } else {
+ right = _insert(_right, key, value);
+ }
+ return new BinaryTreeNode<K, V>(_key, _value, left: left, right: right);
+ }
+
+ // Reuse type variables [K], [V] to test shadowing.
+ static BinaryTreeNode<K, U>? mapOpt<K extends Comparable<K>, V, U>(
+ BinaryTreeNode<K, V>? t, U f(V x)) {
+ return (t == null) ? null : t.map<U>(f);
+ }
+
+ BinaryTreeNode<K, U> map<U>(U f(V x)) {
+ var _map = (BinaryTreeNode<K, V>? t, U f(V x)) => mapOpt<K, V, U>(t, f);
+ return new BinaryTreeNode<K, U>(_key, f(_value),
+ left: _map(_left, f), right: _map(_right, f));
+ }
+
+ // Use fresh [K2], shadowing [V].
+ static S foldPreOpt<K2 extends Comparable<K2>, V, S>(
+ BinaryTreeNode<K2, V>? t, S init, S f(V t, S s)) {
+ return (t == null) ? init : t.foldPre<S>(init, f);
+ }
+
+ S foldPre<S>(S init, S f(V t, S s)) {
+ var _fold = (BinaryTreeNode<K, V>? t, S s, S f(V t, S s)) =>
+ foldPreOpt<K, V, S>(t, s, f);
+ S s = init;
+ s = f(_value, s);
+ s = _fold(_left, s, f);
+ s = _fold(_right, s, f);
+ return s;
+ }
+}
+
+class BinaryTree<K extends Comparable<K>, V> {
+ final BinaryTreeNode<K, V>? _root;
+
+ BinaryTree._internal(this._root);
+ BinaryTree.empty() : this._internal(null);
+
+ BinaryTree<K, V> insert(K key, V value) {
+ BinaryTreeNode<K, V> root =
+ BinaryTreeNode.insertOpt<K, V>(_root, key, value);
+ return new BinaryTree<K, V>._internal(root);
+ }
+
+ BinaryTree<K, U> map<U>(U f(V x)) {
+ BinaryTreeNode<K, U>? root = BinaryTreeNode.mapOpt<K, V, U>(_root, f);
+ return new BinaryTree<K, U>._internal(root);
+ }
+
+ S foldPre<S>(S init, S f(V t, S s)) {
+ return BinaryTreeNode.foldPreOpt<K, V, S>(_root, init, f);
+ }
+}
+
+main() {
+ BinaryTree<num, String> sT = new BinaryTree<num, String>.empty();
+
+ sT = sT.insert(0, "");
+ sT = sT.insert(1, " ");
+ sT = sT.insert(2, " ");
+ sT = sT.insert(3, " ");
+
+ BinaryTree<num, num> iT = sT.map<num>((String s) => s.length);
+
+ Expect.equals(iT.foldPre<num>(0, (num i, num s) => i + s), 6);
+}
diff --git a/tests/language/generic_methods/local_variable_declaration_test.dart b/tests/language/generic_methods/local_variable_declaration_test.dart
new file mode 100644
index 0000000..46b22df
--- /dev/null
+++ b/tests/language/generic_methods/local_variable_declaration_test.dart
@@ -0,0 +1,50 @@
+// Copyright (c) 2017, 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 a type variable can be used to declare local variables, and that
+// these local variables are of correct type.
+
+library generic_methods_local_variable_declaration_test;
+
+import "package:expect/expect.dart";
+
+class X {}
+
+abstract class Generator<T> {
+ T generate();
+}
+
+class A implements Generator<A> {
+ generate() {
+ return new A();
+ }
+
+ String toString() => "instance of A";
+}
+
+class B implements Generator<B> {
+ generate() {
+ return new B();
+ }
+
+ String toString() => "instance of B";
+}
+
+String fun<T extends Generator<T>>(T t) {
+ T another = t.generate();
+ String anotherName = "$another";
+
+ Expect.isTrue(another is T);
+ Expect.isTrue(another is Generator<T>);
+
+ return anotherName;
+}
+
+main() {
+ A a = new A();
+ B b = new B();
+
+ Expect.equals(fun<A>(a), "instance of A");
+ Expect.equals(fun<B>(b), "instance of B");
+}
diff --git a/tests/language/generic_methods/named_parameters_test.dart b/tests/language/generic_methods/named_parameters_test.dart
new file mode 100644
index 0000000..1c90d0e
--- /dev/null
+++ b/tests/language/generic_methods/named_parameters_test.dart
@@ -0,0 +1,41 @@
+// Copyright (c) 2017, 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 generic methods with named parameters are of correct type.
+
+library generic_methods_named_parameters_test;
+
+import "package:expect/expect.dart";
+
+typedef FunObjObj = Object? Function<T>(Object?, {Object? y});
+typedef FunTypObj = Object? Function<T>(T, {Object? y});
+typedef FunObjTyp = Object? Function<T>(Object?, {T? y});
+typedef FunTypTyp = Object? Function<T>(T, {T? y});
+
+Object? funObjObj<T>(Object? x, {Object? y}) => x;
+Object? funTypObj<T>(T x, {Object? y}) => y;
+Object? funObjTyp<T>(Object? x, {T? y}) => x;
+Object? funTypTyp<T>(T x, {T? y}) => null;
+
+main() {
+ Expect.isTrue(funObjObj is FunObjObj);
+ Expect.isTrue(funObjObj is FunTypObj);
+ Expect.isTrue(funObjObj is FunObjTyp);
+ Expect.isTrue(funObjObj is FunTypTyp);
+
+ Expect.isTrue(funTypObj is! FunObjObj);
+ Expect.isTrue(funTypObj is FunTypObj);
+ Expect.isTrue(funTypObj is! FunObjTyp);
+ Expect.isTrue(funTypObj is FunTypTyp);
+
+ Expect.isTrue(funObjTyp is! FunObjObj);
+ Expect.isTrue(funObjTyp is! FunTypObj);
+ Expect.isTrue(funObjTyp is FunObjTyp);
+ Expect.isTrue(funObjTyp is FunTypTyp);
+
+ Expect.isTrue(funTypTyp is! FunObjObj);
+ Expect.isTrue(funTypTyp is! FunTypObj);
+ Expect.isTrue(funTypTyp is! FunObjTyp);
+ Expect.isTrue(funTypTyp is FunTypTyp);
+}
diff --git a/tests/language/generic_methods/new_test.dart b/tests/language/generic_methods/new_test.dart
new file mode 100644
index 0000000..31d62ed
--- /dev/null
+++ b/tests/language/generic_methods/new_test.dart
@@ -0,0 +1,32 @@
+// Copyright (c) 2016, 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 "package:expect/expect.dart";
+
+class C<E> {
+ E e;
+ C(this.e);
+}
+
+C<T> f1<T>(T t) => new C<T>(t);
+
+List<T> f2<T>(T t) => <T>[t];
+
+Map<T, String> f3<T>(T t) => <T, String>{t: 'hi'};
+
+main() {
+ C c = f1<int>(42);
+ List i = f2<String>("Hello!");
+ Expect.isTrue(c is C<int>);
+ Expect.isFalse(c is C<String>);
+ Expect.isTrue(i is List<String>);
+ Expect.isFalse(i is List<int>);
+ Expect.equals(c.e, 42);
+ Expect.equals(i[0], "Hello!");
+
+ Map m1 = f3<int>(1);
+ Expect.isTrue(m1 is Map<int, String>);
+ Expect.isFalse(m1 is Map<String, String>);
+ Expect.isFalse(m1 is Map<int, int>);
+ Expect.equals('hi', m1[1]);
+}
diff --git a/tests/language/generic_methods/optional_parameters_test.dart b/tests/language/generic_methods/optional_parameters_test.dart
new file mode 100644
index 0000000..d81c148
--- /dev/null
+++ b/tests/language/generic_methods/optional_parameters_test.dart
@@ -0,0 +1,41 @@
+// Copyright (c) 2017, 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 generic methods with optional parameters are of correct type.
+
+library generic_methods_optional_parameters_test;
+
+import "package:expect/expect.dart";
+
+typedef FunObjObj = Object? Function<T>(Object?, [Object?]);
+typedef FunTypObj = Object? Function<T>(T, [Object?]);
+typedef FunObjTyp = Object? Function<T>(Object?, [T?]);
+typedef FunTypTyp = Object? Function<T>(T, [T?]);
+
+Object? funObjObj<T>(Object? x, [Object? y]) => x;
+Object? funTypObj<T>(T x, [Object? y]) => y;
+Object? funObjTyp<T>(Object? x, [T? y]) => x;
+Object? funTypTyp<T>(T x, [T? y]) => null;
+
+main() {
+ Expect.isTrue(funObjObj is FunObjObj);
+ Expect.isTrue(funObjObj is FunTypObj);
+ Expect.isTrue(funObjObj is FunObjTyp);
+ Expect.isTrue(funObjObj is FunTypTyp);
+
+ Expect.isTrue(funTypObj is! FunObjObj);
+ Expect.isTrue(funTypObj is FunTypObj);
+ Expect.isTrue(funTypObj is! FunObjTyp);
+ Expect.isTrue(funTypObj is FunTypTyp);
+
+ Expect.isTrue(funObjTyp is! FunObjObj);
+ Expect.isTrue(funObjTyp is! FunTypObj);
+ Expect.isTrue(funObjTyp is FunObjTyp);
+ Expect.isTrue(funObjTyp is FunTypTyp);
+
+ Expect.isTrue(funTypTyp is! FunObjObj);
+ Expect.isTrue(funTypTyp is! FunTypObj);
+ Expect.isTrue(funTypTyp is! FunObjTyp);
+ Expect.isTrue(funTypTyp is FunTypTyp);
+}
diff --git a/tests/language/generic_methods/overriding_test.dart b/tests/language/generic_methods/overriding_test.dart
new file mode 100644
index 0000000..2ef1def
--- /dev/null
+++ b/tests/language/generic_methods/overriding_test.dart
@@ -0,0 +1,62 @@
+// Copyright (c) 2017, 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 generic methods can be overloaded (a) with widened type bounds, and
+// (b) using the bound as the type of the parameter in the overloaded method.
+
+library generic_methods_overriding_test;
+
+import "package:expect/expect.dart";
+
+class X {}
+
+class Y extends X {}
+
+class Z extends Y {}
+
+class C {
+ String fun<T extends Y>(T t) => "C";
+}
+
+class D extends C {
+ String fun<T extends X>(T t) => "D"; //# 01: compile-time error
+ String fun<T extends Y>(T t) => "D"; //# 02: ok
+}
+
+class E extends C {
+ String fun<T>(Y y) => "E"; //# 03: compile-time error
+ String fun<T extends Y>(Y y) => "E"; //# 04: ok
+}
+
+class F extends C {
+ String foobar(Z z) {
+ return "FZ";
+ }
+
+ String fun<T extends Y>(T t) {
+ if (t is Z) {
+ return this.foobar(t as Z); //# 05: ok
+ return this.foobar(t); //# 06: ok
+ }
+ return "FY";
+ }
+}
+
+main() {
+ Y y = new Y();
+ Z z = new Z();
+
+ C c = new C();
+ D d = new D();
+ E e = new E();
+ F f = new F();
+
+ Expect.equals(c.fun<Y>(y), "C");
+ Expect.equals(d.fun<Y>(y), "D"); //# 02: continued
+ Expect.equals(e.fun<Y>(y), "E"); //# 04: continued
+ Expect.equals(f.fun<Y>(y), "FY"); //# 05: continued
+ Expect.equals(f.fun<Z>(z), "FZ"); //# 05: continued
+ Expect.equals(f.fun<Y>(y), "FY"); //# 06: continued
+ Expect.equals(f.fun<Z>(z), "FZ"); //# 06: continued
+}
diff --git a/tests/language/generic_methods/recursive_bound_test.dart b/tests/language/generic_methods/recursive_bound_test.dart
new file mode 100644
index 0000000..f79ce20
--- /dev/null
+++ b/tests/language/generic_methods/recursive_bound_test.dart
@@ -0,0 +1,35 @@
+// Copyright (c) 2017, 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 F-bounded quantification works for generic methods, and that types
+// that are passed to generic methods in dynamic calls are checked for being
+// recursively defined.
+
+library generic_methods_recursive_bound_test;
+
+import "package:expect/expect.dart";
+
+abstract class I<T> {
+ bool fun(T x);
+}
+
+void foo<T extends I<T>>(List<T> a) {
+ if (a.length > 1) {
+ a[0].fun(a[1]);
+ }
+}
+
+class C implements I<C> {
+ bool fun(C c) => true;
+}
+
+main() {
+ foo<C>(<C>[new C(), new C()]); //# 01: ok
+
+ dynamic bar = foo;
+ List<int> list2 = <int>[4, 2];
+ // The type int does not extend I<int>.
+ foo<int>(list2); //# 02: compile-time error
+ bar<int>(list2); //# 03: runtime error
+}
diff --git a/tests/language/generic_methods/reuse_type_variables_test.dart b/tests/language/generic_methods/reuse_type_variables_test.dart
new file mode 100644
index 0000000..c885116
--- /dev/null
+++ b/tests/language/generic_methods/reuse_type_variables_test.dart
@@ -0,0 +1,21 @@
+// Copyright (c) 2017, 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 type parameter can be passed as a type argument in a definition of
+// a local variable, and that this local variable is correctly constructed.
+
+library generic_methods_reuse_type_variables_test;
+
+import "package:expect/expect.dart";
+
+int fun<T extends String>(T t) {
+ List<T> list = <T>[t, t, t];
+ Expect.isTrue(list is List<String>);
+ Expect.isTrue(list is! List<int>);
+ return list.length;
+}
+
+main() {
+ Expect.equals(fun<String>("foo"), 3);
+}
diff --git a/tests/language/generic_methods/shadowing_test.dart b/tests/language/generic_methods/shadowing_test.dart
new file mode 100644
index 0000000..ae6a69d
--- /dev/null
+++ b/tests/language/generic_methods/shadowing_test.dart
@@ -0,0 +1,26 @@
+// Copyright (c) 2017, 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 type parameters in generic methods can be shadowed.
+
+library generic_methods_shadowing_test;
+
+import "package:expect/expect.dart";
+
+class X {}
+
+class Y {}
+
+bool foo<T, S>(T t, S s) {
+ // The type parameter T of bar shadows the type parameter T of foo.
+ bool bar<T>(T t) {
+ return t is T && t is S;
+ }
+
+ return bar<S>(s);
+}
+
+main() {
+ Expect.isTrue(foo<X, Y>(new X(), new Y()));
+}
diff --git a/tests/language/generic_methods/simple_as_expression_test.dart b/tests/language/generic_methods/simple_as_expression_test.dart
new file mode 100644
index 0000000..d6b3c48
--- /dev/null
+++ b/tests/language/generic_methods/simple_as_expression_test.dart
@@ -0,0 +1,18 @@
+// Copyright (c) 2017, 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 type parameters in generic methods can be used in as-expressions.
+
+library generic_methods_simple_as_expression_test;
+
+import "package:expect/expect.dart";
+
+T cast<T>(dynamic obj) {
+ return obj as T;
+}
+
+main() {
+ Expect.equals(cast<num>(42), 42); //# 01: ok
+ cast<String>(42); //# 02: runtime error
+}
diff --git a/tests/language/generic_methods/simple_is_expression_test.dart b/tests/language/generic_methods/simple_is_expression_test.dart
new file mode 100644
index 0000000..5e9dced
--- /dev/null
+++ b/tests/language/generic_methods/simple_is_expression_test.dart
@@ -0,0 +1,18 @@
+// Copyright (c) 2017, 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 type parameters in generic methods can be used in is-expressions.
+
+library generic_methods_simple_is_expression_test;
+
+import "package:expect/expect.dart";
+
+bool fun<T>(int n) {
+ return n is T;
+}
+
+main() {
+ Expect.isTrue(fun<int>(42));
+ Expect.isFalse(fun<String>(42));
+}
diff --git a/tests/language/generic_methods/tearoff_specialization_test.dart b/tests/language/generic_methods/tearoff_specialization_test.dart
new file mode 100644
index 0000000..5c03297
--- /dev/null
+++ b/tests/language/generic_methods/tearoff_specialization_test.dart
@@ -0,0 +1,47 @@
+// Copyright (c) 2017, 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 generic methods can be specialized after being torn off, and that
+// their specialized versions are correctly constructed.
+
+library generic_methods_tearoff_specialization_test;
+
+import "package:expect/expect.dart";
+
+class A {
+ T fun<T>(T t) => t;
+}
+
+typedef Int2Int = int Function(int);
+typedef String2String = String Function(String);
+typedef Object2Object = Object Function(Object);
+typedef GenericMethod = T Function<T>(T);
+
+main() {
+ A a = new A();
+ Int2Int f = a.fun;
+ String2String g = a.fun;
+ Object2Object h = a.fun;
+ var generic = a.fun;
+
+ Expect.isTrue(f is Int2Int);
+ Expect.isTrue(f is! String2String);
+ Expect.isTrue(f is! Object2Object);
+ Expect.isTrue(f is! GenericMethod);
+
+ Expect.isTrue(g is! Int2Int);
+ Expect.isTrue(g is String2String);
+ Expect.isTrue(g is! Object2Object);
+ Expect.isTrue(g is! GenericMethod);
+
+ Expect.isTrue(h is! Int2Int);
+ Expect.isTrue(h is! String2String);
+ Expect.isTrue(h is Object2Object);
+ Expect.isTrue(g is! GenericMethod);
+
+ Expect.isTrue(generic is! Int2Int);
+ Expect.isTrue(generic is! String2String);
+ Expect.isTrue(generic is! Object2Object);
+ Expect.isTrue(generic is GenericMethod);
+}
diff --git a/tests/language/generic_methods/type_expression_test.dart b/tests/language/generic_methods/type_expression_test.dart
new file mode 100644
index 0000000..e809704
--- /dev/null
+++ b/tests/language/generic_methods/type_expression_test.dart
@@ -0,0 +1,62 @@
+// Copyright (c) 2016, 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.
+
+/// Dart test on the usage of method type arguments in type expressions.
+
+import "package:expect/expect.dart";
+
+bool f1<T>(Object o) => o is T;
+
+bool f2<T>(Object o) => o is List<T>;
+
+bool f3<T>(Object o) => o is! T;
+
+bool f4<T>(Object o) => o is! List<T>;
+
+T f5<T>(Object o) => o as T;
+
+List<T> f6<T>(Object o) => o as List<T>;
+
+Type f7<T>() => T;
+
+class TypeValue<X> {
+ Type get value => X;
+}
+
+Type f8<T>() => new TypeValue<List<T>>().value;
+
+bool f9<T>(Object o) => o is Map<T, String>;
+
+class IsMap<A> {
+ @pragma('dart2js:noInline')
+ bool check<B>(o) => o is Map<A, B>;
+}
+
+main() {
+ String s = "Hello!";
+ List<String> ss = <String>[s];
+ Expect.isTrue(f1<int>(42));
+ Expect.isFalse(f1<String>(42));
+ Expect.isTrue(f2<int>(<int>[42]));
+ Expect.isFalse(f2<String>(<int>[42])); // `is List<String>` is false.
+ Expect.isFalse(f3<int>(42));
+ Expect.isTrue(f3<String>(42));
+ Expect.isFalse(f4<int>(<int>[42]));
+ Expect.isTrue(f4<String>(<int>[42])); // `is! List<dynamic>` is true.
+ Expect.equals(f5<String>(s), s); // `s as String == s`
+ Expect.throwsTypeError(() => f5<int>(s)); // `s as int == s`
+ Expect.equals(f6<String>(ss), ss);
+ Expect.throwsTypeError(() => f6<int>(ss)); // `as List<int>` fails.
+ Expect.equals(f7<int>(), int);
+
+ // Returns `List<int>`.
+ Expect.equals(f8<int>(), new TypeValue<List<int>>().value);
+
+ Expect.isTrue(f9<int>(<int, String>{}));
+ Expect.isFalse(f9<int>(<bool, String>{}));
+ Expect.isFalse(f9<int>(<int, int>{}));
+
+ Expect.isTrue(new IsMap<int>().check<String>(<int, String>{}));
+ Expect.isFalse(new IsMap<int>().check<int>(<int, String>{}));
+}
diff --git a/tests/language/generic_methods/unused_parameter_test.dart b/tests/language/generic_methods/unused_parameter_test.dart
new file mode 100644
index 0000000..42e371a
--- /dev/null
+++ b/tests/language/generic_methods/unused_parameter_test.dart
@@ -0,0 +1,91 @@
+// Copyright (c) 2017, 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 generic methods with unused parameters aren't treated as
+// non-generic methods, but can be specialized as such.
+
+library generic_methods_unused_parameter_test;
+
+import "package:expect/expect.dart";
+
+typedef Fun = int Function();
+typedef FunReq = int Function(int);
+typedef FunOpt = int Function([int?]);
+typedef FunReqOpt = int Function(int, [int?]);
+typedef FunNam = int Function({int? p});
+typedef FunReqNam = int Function(int, {int? p});
+
+typedef FunTyp = int Function<T>();
+typedef FunTypReq = int Function<T>(int);
+typedef FunTypOpt = int Function<T>([int?]);
+typedef FunTypReqOpt = int Function<T>(int, [int?]);
+typedef FunTypNam = int Function<T>({int? p});
+typedef FunTypReqNam = int Function<T>(int, {int? p});
+
+int fun() { return -1; }
+int funReq(int x) => x;
+int funOpt([int? y]) => y ?? 42;
+int funReqOpt(int x, [int? y]) => x;
+int funNam({int? p}) => p ?? 42;
+int funReqNam(int x, {int? p}) => x;
+
+int funTyp<T>() { return -1; }
+int funTypReq<T>(int x) => x;
+int funTypOpt<T>([int? y]) => y ?? 42;
+int funTypReqOpt<T>(int x, [int? y]) => x;
+int funTypNam<T>({int? p}) => p ?? 42;
+int funTypReqNam<T>(int x, {int? p}) => x;
+
+main() {
+ // Use generic function instantiation to obtain non-generic functions,
+ // and test below that they have the expected run-time types.
+ Fun varFun = funTyp;
+ FunReq varFunReq = funTypReq;
+ FunOpt varFunOpt = funTypOpt;
+ FunReqOpt varFunReqOpt = funTypReqOpt;
+ FunNam varFunNam = funTypNam;
+ FunReqNam varFunReqNam = funTypReqNam;
+
+ Expect.isTrue(fun is Fun);
+ Expect.isTrue(fun is! FunTyp);
+ Expect.isTrue(funTyp is! Fun);
+ Expect.isTrue(funTyp is FunTyp);
+ Expect.isTrue(varFun is Fun);
+ Expect.isTrue(varFun is! FunTyp);
+
+ Expect.isTrue(funReq is FunReq);
+ Expect.isTrue(funReq is! FunTypReq);
+ Expect.isTrue(funTypReq is! FunReq);
+ Expect.isTrue(funTypReq is FunTypReq);
+ Expect.isTrue(varFunReq is FunReq);
+ Expect.isTrue(varFunReq is! FunTypReq);
+
+ Expect.isTrue(funOpt is FunOpt);
+ Expect.isTrue(funOpt is! FunTypOpt);
+ Expect.isTrue(funTypOpt is! FunOpt);
+ Expect.isTrue(funTypOpt is FunTypOpt);
+ Expect.isTrue(varFunOpt is FunOpt);
+ Expect.isTrue(varFunOpt is! FunTypOpt);
+
+ Expect.isTrue(funReqOpt is FunReqOpt);
+ Expect.isTrue(funReqOpt is! FunTypReqOpt);
+ Expect.isTrue(funTypReqOpt is! FunReqOpt);
+ Expect.isTrue(funTypReqOpt is FunTypReqOpt);
+ Expect.isTrue(varFunReqOpt is FunReqOpt);
+ Expect.isTrue(varFunReqOpt is! FunTypReqOpt);
+
+ Expect.isTrue(funNam is FunNam);
+ Expect.isTrue(funNam is! FunTypNam);
+ Expect.isTrue(funTypNam is! FunNam);
+ Expect.isTrue(funTypNam is FunTypNam);
+ Expect.isTrue(varFunNam is FunNam);
+ Expect.isTrue(varFunNam is! FunTypNam);
+
+ Expect.isTrue(funReqNam is FunReqNam);
+ Expect.isTrue(funReqNam is! FunTypReqNam);
+ Expect.isTrue(funTypReqNam is! FunReqNam);
+ Expect.isTrue(funTypReqNam is FunTypReqNam);
+ Expect.isTrue(varFunReqNam is FunReqNam);
+ Expect.isTrue(varFunReqNam is! FunTypReqNam);
+}
diff --git a/tests/language/getter/closure_execution_order_test.dart b/tests/language/getter/closure_execution_order_test.dart
new file mode 100644
index 0000000..0b5196b
--- /dev/null
+++ b/tests/language/getter/closure_execution_order_test.dart
@@ -0,0 +1,89 @@
+// Copyright (c) 2011, 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 a getter is evaluated after the arguments, when a getter is
+// for invoking a method. See chapter 'Method Invocation' in specification.
+
+import "package:expect/expect.dart";
+
+var counter = 0;
+
+class Test1 {
+ get a {
+ Expect.equals(1, counter);
+ counter++;
+ return (c) {};
+ }
+
+ b() {
+ Expect.equals(0, counter);
+ counter++;
+ return 1;
+ }
+}
+
+class Test2 {
+ static get a {
+ Expect.equals(0, counter);
+ counter++;
+ return (c) {};
+ }
+
+ static b() {
+ Expect.equals(1, counter);
+ counter++;
+ return 1;
+ }
+}
+
+get a {
+ Expect.equals(0, counter);
+ counter++;
+ return (c) {};
+}
+
+b() {
+ Expect.equals(1, counter);
+ counter++;
+ return 1;
+}
+
+main() {
+ var failures = [];
+ try {
+ // Check instance getters.
+ counter = 0;
+ var o = new Test1();
+ o.a(o.b());
+ Expect.equals(2, counter);
+ } catch (exc, stack) {
+ failures.add(exc);
+ failures.add(stack);
+ }
+ try {
+ // Check static getters.
+ counter = 0;
+ Test2.a(Test2.b());
+ Expect.equals(2, counter);
+ } catch (exc, stack) {
+ failures.add(exc);
+ failures.add(stack);
+ }
+ try {
+ // Check top-level getters.
+ counter = 0;
+ a(b());
+ Expect.equals(2, counter);
+ } catch (exc, stack) {
+ failures.add(exc);
+ failures.add(stack);
+ }
+ // If any of the tests failed print out the details and fail the test.
+ if (failures.length != 0) {
+ for (var msg in failures) {
+ print(msg.toString());
+ }
+ throw "${failures.length ~/ 2} tests failed.";
+ }
+}
diff --git a/tests/language/getter/declaration_test.dart b/tests/language/getter/declaration_test.dart
new file mode 100644
index 0000000..6ccc137
--- /dev/null
+++ b/tests/language/getter/declaration_test.dart
@@ -0,0 +1,15 @@
+// Copyright (c) 2019, 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 a getter takes no parameters.
+get m(extraParam) {
+// ^
+// [analyzer] SYNTACTIC_ERROR.GETTER_WITH_PARAMETERS
+// [cfe] A getter can't have formal parameters.
+ return null;
+}
+
+main() {
+ m;
+}
diff --git a/tests/language/getter/no_setter2_runtime_test.dart b/tests/language/getter/no_setter2_runtime_test.dart
new file mode 100644
index 0000000..3e7567b
--- /dev/null
+++ b/tests/language/getter/no_setter2_runtime_test.dart
@@ -0,0 +1,38 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// Copyright (c) 2012, 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.
+// Verifies behavior with a static getter, but no field and no setter.
+
+import "package:expect/expect.dart";
+
+class Example {
+ static int _var = 1;
+ static int get nextVar => _var++;
+ Example() {
+
+
+ }
+ static test() {
+
+
+ }
+}
+
+class Example1 {
+ Example1(int i) {}
+}
+
+class Example2 extends Example1 {
+ static int _var = 1;
+ static int get nextVar => _var++;
+ Example2() : super(nextVar) {} // No 'this' in scope.
+}
+
+void main() {
+ Example x = new Example();
+ Example.test();
+ Example2 x2 = new Example2();
+}
diff --git a/tests/language/getter/no_setter2_test.dart b/tests/language/getter/no_setter2_test.dart
new file mode 100644
index 0000000..778ce8f
--- /dev/null
+++ b/tests/language/getter/no_setter2_test.dart
@@ -0,0 +1,54 @@
+// Copyright (c) 2012, 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.
+// Verifies behavior with a static getter, but no field and no setter.
+
+import "package:expect/expect.dart";
+
+class Example {
+ static int _var = 1;
+ static int get nextVar => _var++;
+ Example() {
+ nextVar++;
+// ^^^^^^^
+// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [cfe] Setter not found: 'nextVar'.
+ this.nextVar++;
+ // ^^^^^^^
+ // [analyzer] STATIC_TYPE_WARNING.INSTANCE_ACCESS_TO_STATIC_MEMBER
+ // [cfe] The getter 'nextVar' isn't defined for the class 'Example'.
+ // ^^^^^^^
+ // [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+ // [cfe] The setter 'nextVar' isn't defined for the class 'Example'.
+ }
+ static test() {
+ nextVar++;
+// ^^^^^^^
+// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [cfe] Setter not found: 'nextVar'.
+ this.nextVar++;
+// ^^^^
+// [analyzer] COMPILE_TIME_ERROR.INVALID_REFERENCE_TO_THIS
+// [cfe] Expected identifier, but got 'this'.
+// ^^^^^^^
+// [analyzer] STATIC_TYPE_WARNING.INSTANCE_ACCESS_TO_STATIC_MEMBER
+// ^^^^^^^
+// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+ }
+}
+
+class Example1 {
+ Example1(int i) {}
+}
+
+class Example2 extends Example1 {
+ static int _var = 1;
+ static int get nextVar => _var++;
+ Example2() : super(nextVar) {} // No 'this' in scope.
+}
+
+void main() {
+ Example x = new Example();
+ Example.test();
+ Example2 x2 = new Example2();
+}
diff --git a/tests/language/getter/no_setter_runtime_test.dart b/tests/language/getter/no_setter_runtime_test.dart
new file mode 100644
index 0000000..3e7567b
--- /dev/null
+++ b/tests/language/getter/no_setter_runtime_test.dart
@@ -0,0 +1,38 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// Copyright (c) 2012, 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.
+// Verifies behavior with a static getter, but no field and no setter.
+
+import "package:expect/expect.dart";
+
+class Example {
+ static int _var = 1;
+ static int get nextVar => _var++;
+ Example() {
+
+
+ }
+ static test() {
+
+
+ }
+}
+
+class Example1 {
+ Example1(int i) {}
+}
+
+class Example2 extends Example1 {
+ static int _var = 1;
+ static int get nextVar => _var++;
+ Example2() : super(nextVar) {} // No 'this' in scope.
+}
+
+void main() {
+ Example x = new Example();
+ Example.test();
+ Example2 x2 = new Example2();
+}
diff --git a/tests/language/getter/no_setter_test.dart b/tests/language/getter/no_setter_test.dart
new file mode 100644
index 0000000..8d84129
--- /dev/null
+++ b/tests/language/getter/no_setter_test.dart
@@ -0,0 +1,53 @@
+// Copyright (c) 2012, 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.
+// Verifies behavior with a static getter, but no field and no setter.
+
+import "package:expect/expect.dart";
+
+class Example {
+ static int _var = 1;
+ static int get nextVar => _var++;
+ Example() {
+ nextVar = 1;
+// ^^^^^^^
+// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [cfe] Setter not found: 'nextVar'.
+ this.nextVar = 1;
+ // ^^^^^^^
+ // [analyzer] STATIC_TYPE_WARNING.INSTANCE_ACCESS_TO_STATIC_MEMBER
+ // [cfe] The setter 'nextVar' isn't defined for the class 'Example'.
+ // ^^^^^^^
+ // [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+ }
+ static test() {
+ nextVar = 0;
+// ^^^^^^^
+// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [cfe] Setter not found: 'nextVar'.
+ this.nextVar = 0;
+// ^^^^
+// [analyzer] COMPILE_TIME_ERROR.INVALID_REFERENCE_TO_THIS
+// [cfe] Expected identifier, but got 'this'.
+// ^^^^^^^
+// [analyzer] STATIC_TYPE_WARNING.INSTANCE_ACCESS_TO_STATIC_MEMBER
+// ^^^^^^^
+// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+ }
+}
+
+class Example1 {
+ Example1(int i) {}
+}
+
+class Example2 extends Example1 {
+ static int _var = 1;
+ static int get nextVar => _var++;
+ Example2() : super(nextVar) {} // No 'this' in scope.
+}
+
+void main() {
+ Example x = new Example();
+ Example.test();
+ Example2 x2 = new Example2();
+}
diff --git a/tests/language/getter/override2_test.dart b/tests/language/getter/override2_test.dart
new file mode 100644
index 0000000..95519a2
--- /dev/null
+++ b/tests/language/getter/override2_test.dart
@@ -0,0 +1,23 @@
+// Copyright (c) 2013, 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 we report a compile-time error when an instance getter conflicts
+// with an inherited instance method of the same name.
+
+import "package:expect/expect.dart";
+
+class A {
+ var foo = 42; // //# 00: ok
+ get foo => 42; // //# 01: ok
+ foo() => 42; // //# 02: compile-time error
+ set foo(value) { } // //# 03: ok
+}
+
+class B extends A {
+ get foo => 42;
+}
+
+main() {
+ Expect.equals(42, new B().foo);
+}
diff --git a/tests/language/getter/override3_test.dart b/tests/language/getter/override3_test.dart
new file mode 100644
index 0000000..c17b27e
--- /dev/null
+++ b/tests/language/getter/override3_test.dart
@@ -0,0 +1,26 @@
+// Copyright (c) 2016, 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.
+
+// Tests that a getter in a subclass does not shadow the setter in the
+// superclass.
+import "package:expect/expect.dart";
+
+class A {
+ int _x = 42;
+ void set x(int val) {
+ _x = val;
+ }
+}
+
+class B extends A {
+ int get x => _x;
+}
+
+void main() {
+ var b = new B();
+ Expect.equals(42, b.x);
+
+ b.x = 21;
+ Expect.equals(21, b.x);
+}
diff --git a/tests/language/getter/override_test.dart b/tests/language/getter/override_test.dart
new file mode 100644
index 0000000..8e17d33
--- /dev/null
+++ b/tests/language/getter/override_test.dart
@@ -0,0 +1,23 @@
+// Copyright (c) 2013, 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 we report a compile-time error when a static getter conflicts with
+// an inherited instance member of the same name.
+
+import "package:expect/expect.dart";
+
+class A {
+ var foo = 42; // //# 00: compile-time error
+ get foo => 42; // //# 01: compile-time error
+ foo() => 42; // //# 02: compile-time error
+ set foo(value) { } // //# 03: compile-time error
+}
+
+class B extends A {
+ static get foo => 42;
+}
+
+main() {
+ Expect.equals(42, B.foo);
+}
diff --git a/tests/language/getter/parameters_runtime_test.dart b/tests/language/getter/parameters_runtime_test.dart
new file mode 100644
index 0000000..f61f2fc
--- /dev/null
+++ b/tests/language/getter/parameters_runtime_test.dart
@@ -0,0 +1,30 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// Copyright (c) 2013, 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 a getter has no parameters.
+
+get f1 => null;
+get f2
+
+ => null;
+get f3
+
+ => null;
+get f4
+
+ => null;
+get f5
+
+ => null;
+
+main() {
+ f1;
+ f2;
+ f3;
+ f4;
+ f5;
+}
diff --git a/tests/language/getter/parameters_test.dart b/tests/language/getter/parameters_test.dart
new file mode 100644
index 0000000..0ff6eac
--- /dev/null
+++ b/tests/language/getter/parameters_test.dart
@@ -0,0 +1,39 @@
+// Copyright (c) 2013, 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 a getter has no parameters.
+
+get f1 => null;
+get f2
+()
+// [error line 9, column 1, length 1]
+// [analyzer] SYNTACTIC_ERROR.GETTER_WITH_PARAMETERS
+// [cfe] A getter can't have formal parameters.
+ => null;
+get f3
+(arg)
+// [error line 15, column 1, length 1]
+// [analyzer] SYNTACTIC_ERROR.GETTER_WITH_PARAMETERS
+// [cfe] A getter can't have formal parameters.
+ => null;
+get f4
+([arg])
+// [error line 21, column 1, length 1]
+// [analyzer] SYNTACTIC_ERROR.GETTER_WITH_PARAMETERS
+// [cfe] A getter can't have formal parameters.
+ => null;
+get f5
+({arg})
+// [error line 27, column 1, length 1]
+// [analyzer] SYNTACTIC_ERROR.GETTER_WITH_PARAMETERS
+// [cfe] A getter can't have formal parameters.
+ => null;
+
+main() {
+ f1;
+ f2;
+ f3;
+ f4;
+ f5;
+}
diff --git a/tests/language/getter/setter2_test.dart b/tests/language/getter/setter2_test.dart
new file mode 100644
index 0000000..2e0a03c
--- /dev/null
+++ b/tests/language/getter/setter2_test.dart
@@ -0,0 +1,94 @@
+// Copyright (c) 2012, 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 "package:expect/expect.dart";
+
+// Tests classes with getters and setters that do not have the same type.
+
+class A {
+ int a() {
+ return 37;
+ }
+}
+
+class B extends A {
+ int b() {
+ return 38;
+ }
+}
+
+class C {}
+
+class T1 {
+ late A getterField;
+ A get field {
+ // ^^^^^
+ // [analyzer] STATIC_WARNING.GETTER_NOT_SUBTYPE_SETTER_TYPES
+ // [cfe] unspecified
+ return getterField;
+ }
+
+ void set field(B arg) {
+ getterField = arg;
+ }
+}
+
+class T2 {
+ late A getterField;
+ late C setterField;
+ A get field {
+ // ^^^^^
+ // [analyzer] STATIC_WARNING.GETTER_NOT_SUBTYPE_SETTER_TYPES
+ // [cfe] unspecified
+ return getterField;
+ }
+
+ // Type C is not assignable to A
+ void set field(C arg) { setterField = arg; }
+}
+
+class T3 {
+ late B getterField;
+ B get field {
+ return getterField;
+ }
+
+ void set field(A arg) {
+ getterField = arg;
+ // ^^^
+ // [analyzer] STATIC_TYPE_WARNING.INVALID_ASSIGNMENT
+ // [cfe] A value of type 'A' can't be assigned to a variable of type 'B'.
+ }
+}
+
+main() {
+ T1 instance1 = new T1();
+ T2 instance2 = new T2();
+ T3 instance3 = new T3();
+
+ instance1.field = new B();
+ A resultA = instance1.field;
+ Expect.throwsTypeError(() => instance1.field = new A() as dynamic);
+ B resultB = instance1.field;
+ // ^^^^^^^^^^^^^^^
+ // [analyzer] STATIC_TYPE_WARNING.INVALID_ASSIGNMENT
+ // ^
+ // [cfe] A value of type 'A' can't be assigned to a variable of type 'B'.
+
+ int result;
+ result = instance1.field.a();
+ Expect.equals(37, result);
+
+ // Type 'A' has no method named 'b'
+ instance1.field.b();
+ // ^
+ // [analyzer] STATIC_TYPE_WARNING.UNDEFINED_METHOD
+ // [cfe] The method 'b' isn't defined for the class 'A'.
+
+ instance3.field = new B();
+ result = instance3.field.a();
+ Expect.equals(37, result);
+ result = instance3.field.b();
+ Expect.equals(38, result);
+}
diff --git a/tests/language/getter/setter_getters_setters_test.dart b/tests/language/getter/setter_getters_setters_test.dart
new file mode 100644
index 0000000..b48283e
--- /dev/null
+++ b/tests/language/getter/setter_getters_setters_test.dart
@@ -0,0 +1,150 @@
+// Copyright (c) 2012, 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 "package:expect/expect.dart";
+
+class GettersSettersTest {
+ static int foo = -1;
+
+ static testMain() {
+ A a = new A();
+ a.x = 2;
+ Expect.equals(2, a.x);
+ Expect.equals(2, a.x_);
+
+ // Test inheritance.
+ a = new B();
+ a.x = 4;
+ Expect.equals(4, a.x);
+ Expect.equals(4, a.x_);
+
+ // Test overriding.
+ C c = new C();
+ c.x = 8;
+ Expect.equals(8, c.x);
+ Expect.equals(0, c.x_);
+ Expect.equals(8, c.y_);
+
+ // Test keyed getters and setters.
+ a.x_ = 0;
+ Expect.equals(2, a[2]);
+ a[2] = 4;
+ Expect.equals(6, a[0]);
+
+ // Test assignment operators.
+ a.x_ = 0;
+ a[2] += 8;
+ Expect.equals(12, a[0]);
+
+ // Test calling a function that internally uses getters.
+ Expect.equals(true, a.isXPositive());
+
+ // Test static fields.
+ foo = 42;
+ Expect.equals(42, foo);
+ A.foo = 43;
+ Expect.equals(43, A.foo);
+
+ new D().test();
+
+ OverrideField of = new OverrideField();
+ Expect.equals(27, of.getX_());
+
+ ReferenceField rf = new ReferenceField();
+ rf.x_ = 1;
+ Expect.equals(1, rf.getIt());
+ rf.setIt(2);
+ Expect.equals(2, rf.x_);
+ }
+}
+
+class A {
+ int x_ = -1;
+ static int foo = -1;
+
+ static get bar {
+ return foo;
+ }
+
+ static set bar(newValue) {
+ foo = newValue;
+ }
+
+ int get x {
+ return x_;
+ }
+
+ void set x(int value) {
+ x_ = value;
+ }
+
+ bool isXPositive() {
+ return x > 0;
+ }
+
+ int operator [](int index) {
+ return x_ + index;
+ }
+
+ void operator []=(int index, int value) {
+ x_ = index + value;
+ }
+
+ int getX_() {
+ return x_;
+ }
+}
+
+class B extends A {}
+
+class C extends A {
+ int y_ = -1;
+
+ C() : super() {
+ this.x_ = 0;
+ }
+
+ int get x {
+ return y_;
+ }
+
+ void set x(int value) {
+ y_ = value;
+ }
+}
+
+class D extends A {
+ var x2_;
+
+ set x(new_x) {
+ x2_ = new_x;
+ }
+
+ test() {
+ x = 87;
+ Expect.equals(87, x2_);
+ x = 42;
+ Expect.equals(42, x2_);
+ }
+}
+
+class OverrideField extends A {
+ int get x_ {
+ return 27;
+ }
+}
+
+class ReferenceField extends A {
+ setIt(a) {
+ super.x_ = a;
+ }
+
+ int getIt() {
+ return super.x_;
+ }
+}
+
+main() {
+ GettersSettersTest.testMain();
+}
diff --git a/tests/language/getter/setter_in_lib.dart b/tests/language/getter/setter_in_lib.dart
new file mode 100644
index 0000000..9761ab2
--- /dev/null
+++ b/tests/language/getter/setter_in_lib.dart
@@ -0,0 +1,10 @@
+// Copyright (c) 2012, 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.
+
+library GetterSetterInLib;
+
+get foo => 42;
+set foo(a) {}
+
+get bar => 77;
diff --git a/tests/language/getter/setter_in_lib2.dart b/tests/language/getter/setter_in_lib2.dart
new file mode 100644
index 0000000..46a23b3
--- /dev/null
+++ b/tests/language/getter/setter_in_lib2.dart
@@ -0,0 +1,7 @@
+// Copyright (c) 2015, 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.
+
+library GetterSetterInLib2;
+
+set bar(a) {}
diff --git a/tests/language/getter/setter_in_lib3.dart b/tests/language/getter/setter_in_lib3.dart
new file mode 100644
index 0000000..2d05421
--- /dev/null
+++ b/tests/language/getter/setter_in_lib3.dart
@@ -0,0 +1,13 @@
+// Copyright (c) 2015, 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.
+
+library GetterSetterInLib3;
+
+var _f = 33;
+
+set bar(a) {
+ _f = a;
+}
+
+get bar => _f;
diff --git a/tests/language/getter/setter_in_lib_test.dart b/tests/language/getter/setter_in_lib_test.dart
new file mode 100644
index 0000000..f9803e0
--- /dev/null
+++ b/tests/language/getter/setter_in_lib_test.dart
@@ -0,0 +1,24 @@
+// Copyright (c) 2012, 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.
+
+library GetterSetterInLibTest;
+
+import "package:expect/expect.dart";
+import 'setter_in_lib.dart';
+import 'setter_in_lib2.dart';
+import 'setter_in_lib3.dart' as L3;
+
+main() {
+ Expect.equals(42, foo);
+ foo = 43;
+ Expect.equals(42, foo);
+
+ Expect.equals(77, bar);
+ bar = 43;
+ Expect.equals(77, bar);
+
+ Expect.equals(L3.bar, 33);
+ L3.bar = 44;
+ Expect.equals(L3.bar, 44);
+}
diff --git a/tests/language/getter/setter_interceptor_test.dart b/tests/language/getter/setter_interceptor_test.dart
new file mode 100644
index 0000000..0a18635
--- /dev/null
+++ b/tests/language/getter/setter_interceptor_test.dart
@@ -0,0 +1,38 @@
+// Copyright (c) 2012, 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 "package:expect/expect.dart";
+
+class A {
+ int length = 0;
+}
+
+class B {
+ int length = 0;
+ foo(receiver) {
+ length++;
+ return receiver.length++;
+ }
+
+ bar(receiver) {
+ ++length;
+ return ++receiver.length;
+ }
+}
+
+main() {
+ var a = new A();
+ var b = new B();
+ var c = <int?>[1, 2, 3];
+
+ Expect.equals(3, b.foo(c));
+ Expect.equals(5, b.bar(c));
+ Expect.equals(5, c.length);
+
+ Expect.equals(0, b.foo(a));
+ Expect.equals(2, b.bar(a));
+ Expect.equals(2, a.length);
+
+ Expect.equals(4, b.length);
+}
diff --git a/tests/language/getter/setter_order_test.dart b/tests/language/getter/setter_order_test.dart
new file mode 100644
index 0000000..0050b7e
--- /dev/null
+++ b/tests/language/getter/setter_order_test.dart
@@ -0,0 +1,100 @@
+// Copyright (c) 2013, 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 for the evaluation order of getters and setters.
+
+import 'package:expect/expect.dart';
+
+var trace;
+
+class X {
+ get b {
+ trace.add('get b');
+ return new X();
+ }
+
+ set c(value) {
+ trace.add('set c');
+ }
+
+ toString() {
+ trace.add('toString');
+ return 'X';
+ }
+
+ get c {
+ trace.add('get c');
+ return 42;
+ }
+
+ get d {
+ trace.add('get d');
+ return new X();
+ }
+
+ operator [](index) {
+ trace.add('index');
+ return 42;
+ }
+
+ operator []=(index, value) {
+ trace.add('indexSet');
+ }
+}
+
+main() {
+ var x = new X();
+
+ trace = [];
+ x.b.c = '$x';
+ Expect.listEquals(['get b', 'toString', 'set c'], trace);
+
+ trace = [];
+ x.b.c += '$x'.hashCode;
+ Expect.listEquals(['get b', 'get c', 'toString', 'set c'], trace);
+
+ trace = [];
+ x.b.c++;
+ Expect.listEquals(['get b', 'get c', 'set c'], trace);
+
+ trace = [];
+ x.b.d[42] = '$x';
+ Expect.listEquals(['get b', 'get d', 'toString', 'indexSet'], trace);
+
+ trace = [];
+ x.b.d[42] += '$x'.hashCode;
+ Expect.listEquals(['get b', 'get d', 'index', 'toString', 'indexSet'], trace);
+
+ trace = [];
+ x.b.d[42]++;
+ Expect.listEquals(['get b', 'get d', 'index', 'indexSet'], trace);
+
+ trace = [];
+ ++x.b.d[42];
+ Expect.listEquals(['get b', 'get d', 'index', 'indexSet'], trace);
+
+ trace = [];
+ x.b.d[x.c] *= '$x'.hashCode;
+ Expect.listEquals(
+ ['get b', 'get d', 'get c', 'index', 'toString', 'indexSet'], trace);
+
+ trace = [];
+ x.b.c = x.d.c = '$x';
+ Expect.listEquals([
+ 'get b',
+ 'get d',
+ 'toString',
+ 'set c',
+ 'set c',
+ ], trace);
+
+ trace = [];
+ x.b.c = x.d[42] *= '$x'.hashCode;
+ Expect.listEquals(
+ ['get b', 'get d', 'index', 'toString', 'indexSet', 'set c'], trace);
+
+ trace = [];
+ x.b.c = ++x.d.c;
+ Expect.listEquals(['get b', 'get d', 'get c', 'set c', 'set c'], trace);
+}
diff --git a/tests/language/getter/setter_type2_test.dart b/tests/language/getter/setter_type2_test.dart
new file mode 100644
index 0000000..33bf18b
--- /dev/null
+++ b/tests/language/getter/setter_type2_test.dart
@@ -0,0 +1,23 @@
+// Copyright (c) 2012, 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.
+// Getters and setters can have different types, and it is not a warning if the
+// two types are assignable.
+
+import "package:expect/expect.dart";
+
+int bar = 499;
+
+int get foo => bar;
+
+void set foo(str) {
+ bar = str.length;
+}
+
+main() {
+ int x = foo;
+ Expect.equals(499, x);
+ foo = "1234";
+ int y = foo;
+ Expect.equals(4, y);
+}
diff --git a/tests/language/getter/setter_type_runtime_test.dart b/tests/language/getter/setter_type_runtime_test.dart
new file mode 100644
index 0000000..150f1737
--- /dev/null
+++ b/tests/language/getter/setter_type_runtime_test.dart
@@ -0,0 +1,29 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// Copyright (c) 2012, 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.
+// Getters and setters can have different types, but it is a warning if the
+// two types are not assignable.
+
+import "package:expect/expect.dart";
+
+int bar = 499;
+
+
+get foo => bar;
+
+void set foo(
+
+ str) {
+ bar = str.length;
+}
+
+main() {
+ int x = foo;
+ Expect.equals(499, x);
+ foo = "1234";
+ int y = foo;
+ Expect.equals(4, y);
+}
diff --git a/tests/language/getter/setter_type_test.dart b/tests/language/getter/setter_type_test.dart
new file mode 100644
index 0000000..b5b5299
--- /dev/null
+++ b/tests/language/getter/setter_type_test.dart
@@ -0,0 +1,21 @@
+// Copyright (c) 2012, 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.
+// Getters and setters can have different types, but it is a warning if the
+// two types are not assignable.
+
+int bar = 499;
+
+int get foo => bar;
+// ^^^
+// [analyzer] STATIC_WARNING.GETTER_NOT_SUBTYPE_SETTER_TYPES
+// [cfe] unspecified
+
+void set foo(String str) {
+ bar = str.length;
+}
+
+main() {
+ int x = foo;
+ foo = "1234";
+}
diff --git a/tests/language/getter/syntax_get_set_syntax_test.dart b/tests/language/getter/syntax_get_set_syntax_test.dart
new file mode 100644
index 0000000..9dcaac2
--- /dev/null
+++ b/tests/language/getter/syntax_get_set_syntax_test.dart
@@ -0,0 +1,227 @@
+// Copyright (c) 2012, 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.
+
+var get;
+var get a;
+// [error line 6, column 1, length 3]
+// [analyzer] SYNTACTIC_ERROR.VAR_RETURN_TYPE
+// [cfe] The return type can't be 'var'.
+// ^
+// [analyzer] SYNTACTIC_ERROR.MISSING_FUNCTION_BODY
+// [cfe] Expected a function body or '=>'.
+var get b, c;
+// [error line 13, column 1, length 3]
+// [analyzer] SYNTACTIC_ERROR.VAR_RETURN_TYPE
+// [cfe] The return type can't be 'var'.
+// ^
+// [analyzer] SYNTACTIC_ERROR.EXPECTED_EXECUTABLE
+// [cfe] Expected '{' before this.
+// ^
+// [analyzer] SYNTACTIC_ERROR.MISSING_FUNCTION_BODY
+// [cfe] Expected a declaration, but got ','.
+// ^
+// [cfe] Expected a function body, but got ','.
+// ^
+// [cfe] Expected a function body, but got '{'.
+// ^
+// [analyzer] SYNTACTIC_ERROR.MISSING_CONST_FINAL_VAR_OR_TYPE
+// [cfe] Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+
+var set;
+var set d;
+// [error line 32, column 1, length 3]
+// [analyzer] SYNTACTIC_ERROR.VAR_RETURN_TYPE
+// [cfe] The return type can't be 'var'.
+// ^
+// [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_SETTER
+// [cfe] A function declaration needs an explicit list of parameters.
+// ^
+// [analyzer] SYNTACTIC_ERROR.MISSING_FUNCTION_PARAMETERS
+// ^
+// [analyzer] SYNTACTIC_ERROR.MISSING_FUNCTION_BODY
+// [cfe] A setter should have exactly one formal parameter.
+// ^
+// [cfe] Expected a function body or '=>'.
+var set e, f;
+// [error line 46, column 1, length 3]
+// [analyzer] SYNTACTIC_ERROR.VAR_RETURN_TYPE
+// [cfe] The return type can't be 'var'.
+// ^
+// [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_SETTER
+// [cfe] A function declaration needs an explicit list of parameters.
+// ^
+// [analyzer] SYNTACTIC_ERROR.MISSING_FUNCTION_PARAMETERS
+// ^
+// [analyzer] SYNTACTIC_ERROR.EXPECTED_EXECUTABLE
+// [cfe] A setter should have exactly one formal parameter.
+// ^
+// [analyzer] SYNTACTIC_ERROR.MISSING_FUNCTION_BODY
+// [cfe] Expected '{' before this.
+// ^
+// [cfe] Expected a declaration, but got ','.
+// ^
+// [analyzer] SYNTACTIC_ERROR.MISSING_CONST_FINAL_VAR_OR_TYPE
+// [cfe] Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+
+class C0 {
+// ^
+// [cfe] The non-abstract class 'C0' is missing implementations for these members:
+ var get;
+ var get a;
+//^^^
+// [analyzer] SYNTACTIC_ERROR.VAR_RETURN_TYPE
+// [cfe] The return type can't be 'var'.
+// ^^^^^^
+// [analyzer] STATIC_WARNING.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
+ var get b, c;
+//^^^
+// [analyzer] SYNTACTIC_ERROR.VAR_RETURN_TYPE
+// [cfe] The return type can't be 'var'.
+// ^
+// [analyzer] SYNTACTIC_ERROR.EXPECTED_CLASS_MEMBER
+// [cfe] Expected '{' before this.
+// ^
+// [analyzer] SYNTACTIC_ERROR.MISSING_FUNCTION_BODY
+// [cfe] Expected a class member, but got ','.
+// ^
+// [analyzer] SYNTACTIC_ERROR.MISSING_CONST_FINAL_VAR_OR_TYPE
+// [cfe] Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+
+ var set;
+ var set d;
+//^^^
+// [analyzer] SYNTACTIC_ERROR.VAR_RETURN_TYPE
+// [cfe] The return type can't be 'var'.
+// ^^^^^^
+// [analyzer] STATIC_WARNING.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
+// ^
+// [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_SETTER
+// [cfe] A method declaration needs an explicit list of parameters.
+// ^
+// [analyzer] SYNTACTIC_ERROR.MISSING_METHOD_PARAMETERS
+// ^
+// [cfe] A setter should have exactly one formal parameter.
+ var set e, f;
+//^^^
+// [analyzer] SYNTACTIC_ERROR.VAR_RETURN_TYPE
+// [cfe] The return type can't be 'var'.
+// ^
+// [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_SETTER
+// [cfe] A method declaration needs an explicit list of parameters.
+// ^
+// [analyzer] SYNTACTIC_ERROR.MISSING_METHOD_PARAMETERS
+// ^
+// [analyzer] SYNTACTIC_ERROR.EXPECTED_CLASS_MEMBER
+// [cfe] A setter should have exactly one formal parameter.
+// ^
+// [analyzer] SYNTACTIC_ERROR.MISSING_FUNCTION_BODY
+// [cfe] Expected '{' before this.
+// ^
+// [cfe] Expected a class member, but got ','.
+// ^
+// [analyzer] SYNTACTIC_ERROR.MISSING_CONST_FINAL_VAR_OR_TYPE
+// [cfe] Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+}
+
+class C1 {
+ List? get;
+ List? get a => null;
+ List? get b, c;
+ // ^
+ // [analyzer] SYNTACTIC_ERROR.EXPECTED_CLASS_MEMBER
+ // [cfe] Expected '{' before this.
+ // ^
+ // [analyzer] SYNTACTIC_ERROR.MISSING_FUNCTION_BODY
+ // [cfe] Expected a class member, but got ','.
+ // ^
+ // [analyzer] SYNTACTIC_ERROR.MISSING_CONST_FINAL_VAR_OR_TYPE
+ // [cfe] Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+
+ List? set;
+ List set d;
+//^^^^
+// [analyzer] STATIC_WARNING.NON_VOID_RETURN_FOR_SETTER
+//^^^^^^^^^^^
+// [analyzer] STATIC_WARNING.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
+// ^
+// [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_SETTER
+// [cfe] A method declaration needs an explicit list of parameters.
+// ^
+// [analyzer] SYNTACTIC_ERROR.MISSING_METHOD_PARAMETERS
+// ^
+// [cfe] A setter should have exactly one formal parameter.
+ List? set e, f;
+//^^^^^
+// [analyzer] STATIC_WARNING.NON_VOID_RETURN_FOR_SETTER
+// ^
+// [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_SETTER
+// [cfe] A method declaration needs an explicit list of parameters.
+// ^
+// [analyzer] SYNTACTIC_ERROR.MISSING_METHOD_PARAMETERS
+// ^
+// [analyzer] SYNTACTIC_ERROR.EXPECTED_CLASS_MEMBER
+// [cfe] A setter should have exactly one formal parameter.
+// ^
+// [analyzer] SYNTACTIC_ERROR.MISSING_FUNCTION_BODY
+// [cfe] Expected '{' before this.
+// ^
+// [cfe] Expected a class member, but got ','.
+// ^
+// [analyzer] SYNTACTIC_ERROR.MISSING_CONST_FINAL_VAR_OR_TYPE
+// [cfe] Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+}
+
+class C2 {
+ List<int>? get;
+ List<int>? get a => null;
+ List<int>? get b, c;
+ // ^
+ // [analyzer] SYNTACTIC_ERROR.EXPECTED_CLASS_MEMBER
+ // [cfe] Expected '{' before this.
+ // ^
+ // [analyzer] SYNTACTIC_ERROR.MISSING_FUNCTION_BODY
+ // [cfe] Expected a class member, but got ','.
+ // ^
+ // [analyzer] SYNTACTIC_ERROR.MISSING_CONST_FINAL_VAR_OR_TYPE
+ // [cfe] Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+
+ List<int>? set;
+ List<int> set d;
+//^^^^^^^^^
+// [analyzer] STATIC_WARNING.NON_VOID_RETURN_FOR_SETTER
+//^^^^^^^^^^^^^^^^
+// [analyzer] STATIC_WARNING.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
+// ^
+// [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_SETTER
+// [cfe] A method declaration needs an explicit list of parameters.
+// ^
+// [analyzer] SYNTACTIC_ERROR.MISSING_METHOD_PARAMETERS
+// ^
+// [cfe] A setter should have exactly one formal parameter.
+ List<int>? set e, f;
+//^^^^^^^^^^
+// [analyzer] STATIC_WARNING.NON_VOID_RETURN_FOR_SETTER
+// ^
+// [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_SETTER
+// [cfe] A method declaration needs an explicit list of parameters.
+// ^
+// [analyzer] SYNTACTIC_ERROR.MISSING_METHOD_PARAMETERS
+// ^
+// [analyzer] SYNTACTIC_ERROR.EXPECTED_CLASS_MEMBER
+// [cfe] A setter should have exactly one formal parameter.
+// ^
+// [analyzer] SYNTACTIC_ERROR.MISSING_FUNCTION_BODY
+// [cfe] Expected '{' before this.
+// ^
+// [cfe] Expected a class member, but got ','.
+// ^
+// [analyzer] SYNTACTIC_ERROR.MISSING_CONST_FINAL_VAR_OR_TYPE
+// [cfe] Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+}
+
+main() {
+ new C0();
+ new C1();
+ new C2();
+}
diff --git a/tests/language/getter/syntax_runtime_1_test.dart b/tests/language/getter/syntax_runtime_1_test.dart
new file mode 100644
index 0000000..4cd591a
--- /dev/null
+++ b/tests/language/getter/syntax_runtime_1_test.dart
@@ -0,0 +1,50 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// Copyright (c) 2012, 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.
+
+var get;
+
+
+
+var set;
+
+
+
+class C0 {
+ var get;
+
+
+
+ var set;
+
+
+}
+
+class C1 {
+ List? get;
+ List? get a => null;
+
+
+ List? set;
+
+
+}
+
+class C2 {
+ List<int>? get;
+ List<int>? get a => null;
+
+
+ List<int>? set;
+
+
+}
+
+main() {
+ new C0();
+ new C1();
+ new C2();
+}
diff --git a/tests/language/getter/syntax_runtime_test.dart b/tests/language/getter/syntax_runtime_test.dart
new file mode 100644
index 0000000..baf1437
--- /dev/null
+++ b/tests/language/getter/syntax_runtime_test.dart
@@ -0,0 +1,50 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// Copyright (c) 2012, 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.
+
+
+
+
+
+
+
+
+
+class C0 {
+
+
+
+
+
+
+
+}
+
+class C1 {
+
+
+
+
+
+
+
+}
+
+class C2 {
+
+
+
+
+
+
+
+}
+
+main() {
+ new C0();
+ new C1();
+ new C2();
+}
diff --git a/tests/language/getter/unbound_test.dart b/tests/language/getter/unbound_test.dart
new file mode 100644
index 0000000..8eb2120
--- /dev/null
+++ b/tests/language/getter/unbound_test.dart
@@ -0,0 +1,15 @@
+// Copyright (c) 2011, 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.
+// Verify that an unbound getter is properly resolved at runtime.
+
+class A {
+ const A();
+ foo() {
+ return y; /*@compile-error=unspecified*/
+ }
+}
+
+main() {
+ new A().foo();
+}
diff --git a/tests/language/identifier/built_in_identifier_test.dart b/tests/language/identifier/built_in_identifier_test.dart
new file mode 100644
index 0000000..bab2510
--- /dev/null
+++ b/tests/language/identifier/built_in_identifier_test.dart
@@ -0,0 +1,118 @@
+// Copyright (c) 2012, 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.
+// Check that we can use pseudo keywords as names in function level code.
+
+import "package:expect/expect.dart";
+
+class PseudoKWTest {
+ static testMain() {
+ // This is a list of built-in identifiers from the Dart spec.
+ // It sanity checks that these pseudo-keywords are legal identifiers.
+
+ var abstract = 0; //# 01: ok
+ var as = 0;
+ var dynamic = 0;
+ var export = 0;
+ var external = 0; //# 01: ok
+ var factory = 0;
+ var get = 0;
+ var interface = 0;
+ var implements = 0;
+ var import = 0;
+ var library = 0;
+ var mixin = 0;
+ var operator = 0;
+ var part = 0;
+ var set = 0;
+ var static = 0; //# 01: ok
+ var typedef = 0;
+
+ // "native" is a per-implementation extension that is not a part of the
+ // Dart language. While it is not an official built-in identifier, it
+ // is useful to ensure that it remains a legal identifier.
+ var native = 0;
+
+ // The code below adds a few additional variants of usage without any
+ // attempt at complete coverage.
+ {
+ void factory(set) {
+ return; //# 01: ok
+ }
+ }
+
+ get:
+ while (import > 0) {
+ break get;
+ }
+
+ return
+ static + //# 01: ok
+ library * operator;
+ }
+}
+
+typedef(x) => "typedef $x"; //# 01: ok
+
+static(abstract) { //# 01: ok
+ return abstract == true; //# 01: ok
+} //# 01: ok
+
+class A {
+ var typedef = 0;
+ final operator = "smooth";
+
+ set(x) {
+ typedef = x;
+ }
+
+ get() => typedef - 5;
+
+ static static() { //# 01: ok
+ return 1; //# 01: ok
+ } //# 01: ok
+ static check() {
+ var o = new A();
+ o.set(55);
+ Expect.equals(50, o.get());
+ static(); //# 01: ok
+ }
+}
+
+class B {
+ var set = 100;
+ get get => set;
+ set get(get) => set = (2 * get.get).toInt();
+
+ static() { //# 01: ok
+ var set = new B(); //# 01: ok
+ set.get = set; //# 01: ok
+ Expect.equals(200, set.get); //# 01: ok
+ } //# 01: ok
+ int operator() {
+ return 1;
+ }
+}
+
+class C {
+ static int operator = (5);
+ static var get;
+ static get set => 111;
+ static set set(set) {}
+}
+
+main() {
+ PseudoKWTest.testMain();
+ A.check();
+ new B().static(); //# 01: ok
+ Expect.equals(1, new B().operator());
+ Expect.equals(1, A.static()); //# 01: ok
+ typedef("T"); //# 01: ok
+ Expect.equals("typedef T", typedef("T")); //# 01: ok
+ static("true"); //# 01: ok
+ Expect.equals(false, static("true")); //# 01: ok
+ Expect.equals(5, C.operator);
+ Expect.equals(null, C.get);
+ C.set = 0;
+ Expect.equals(111, C.set);
+}
diff --git a/tests/language/identifier/built_in_illegal_runtime_test.dart b/tests/language/identifier/built_in_illegal_runtime_test.dart
new file mode 100644
index 0000000..ab96118
--- /dev/null
+++ b/tests/language/identifier/built_in_illegal_runtime_test.dart
@@ -0,0 +1,28 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// Copyright (c) 2012, 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.
+// Check that we cannot use a pseudo keyword at the class level code.
+
+// Pseudo keywords are not allowed to be used as class names.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+main() {}
diff --git a/tests/language/identifier/built_in_illegal_test.dart b/tests/language/identifier/built_in_illegal_test.dart
new file mode 100644
index 0000000..86d9e5c
--- /dev/null
+++ b/tests/language/identifier/built_in_illegal_test.dart
@@ -0,0 +1,178 @@
+// Copyright (c) 2012, 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.
+// Check that we cannot use a pseudo keyword at the class level code.
+
+// Pseudo keywords are not allowed to be used as class names.
+class abstract { }
+// ^^^^^^^^
+// [analyzer] COMPILE_TIME_ERROR.BUILT_IN_IDENTIFIER_AS_TYPE_NAME
+// [cfe] Can't use 'abstract' as a name here.
+class as { }
+// ^^
+// [analyzer] COMPILE_TIME_ERROR.BUILT_IN_IDENTIFIER_AS_TYPE_NAME
+// [cfe] Can't use 'as' as a name here.
+class dynamic { }
+// ^^^^^^^
+// [analyzer] COMPILE_TIME_ERROR.BUILT_IN_IDENTIFIER_AS_TYPE_NAME
+// [cfe] Can't use 'dynamic' as a name here.
+class export { }
+// ^^^^^^
+// [analyzer] SYNTACTIC_ERROR.DIRECTIVE_AFTER_DECLARATION
+// [cfe] A class declaration must have a body, even if it is empty.
+// ^^^^^^
+// [analyzer] SYNTACTIC_ERROR.EXPECTED_BODY
+// [cfe] Directives must appear before any declarations.
+// ^^^^^^
+// [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
+// [cfe] Expected an identifier, but got 'export'.
+// [error line 19, column 14, length 0]
+// [cfe] Expected ';' after this.
+// ^
+// [analyzer] SYNTACTIC_ERROR.EXPECTED_EXECUTABLE
+// [cfe] Expected a String, but got '{'.
+// ^
+// [analyzer] SYNTACTIC_ERROR.EXPECTED_STRING_LITERAL
+// [cfe] Expected a declaration, but got '{'.
+// ^
+// [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
+class external { }
+// ^^^^^^^^
+// [analyzer] COMPILE_TIME_ERROR.BUILT_IN_IDENTIFIER_AS_TYPE_NAME
+// [cfe] Can't use 'external' as a name here.
+class factory { }
+// ^^^^^^^
+// [analyzer] COMPILE_TIME_ERROR.BUILT_IN_IDENTIFIER_AS_TYPE_NAME
+// [cfe] Can't use 'factory' as a name here.
+class get { }
+// ^^^
+// [analyzer] SYNTACTIC_ERROR.EXPECTED_BODY
+// [cfe] A class declaration must have a body, even if it is empty.
+// ^^^
+// [analyzer] SYNTACTIC_ERROR.MISSING_FUNCTION_PARAMETERS
+// [cfe] A function declaration needs an explicit list of parameters.
+// ^^^
+// [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
+// [cfe] Expected an identifier, but got 'get'.
+class interface { }
+// ^^^^^^^^^
+// [analyzer] COMPILE_TIME_ERROR.BUILT_IN_IDENTIFIER_AS_TYPE_NAME
+// [cfe] Can't use 'interface' as a name here.
+class implements { }
+// ^^^^^^^^^^
+// [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
+// [cfe] Expected an identifier, but got 'implements'.
+// [error line 61, column 18, length 0]
+// [analyzer] COMPILE_TIME_ERROR.IMPLEMENTS_NON_CLASS
+// [cfe] Expected a type, but got '{'.
+// ^
+// [analyzer] SYNTACTIC_ERROR.EXPECTED_TYPE_NAME
+class import { }
+// ^^^^^^
+// [analyzer] SYNTACTIC_ERROR.DIRECTIVE_AFTER_DECLARATION
+// [cfe] A class declaration must have a body, even if it is empty.
+// ^^^^^^
+// [analyzer] SYNTACTIC_ERROR.EXPECTED_BODY
+// [cfe] Directives must appear before any declarations.
+// ^^^^^^
+// [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
+// [cfe] Expected an identifier, but got 'import'.
+// [error line 70, column 14, length 0]
+// [cfe] Expected ';' after this.
+// ^
+// [analyzer] SYNTACTIC_ERROR.EXPECTED_EXECUTABLE
+// [cfe] Expected a String, but got '{'.
+// ^
+// [analyzer] SYNTACTIC_ERROR.EXPECTED_STRING_LITERAL
+// [cfe] Expected a declaration, but got '{'.
+// ^
+// [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
+class mixin { }
+// ^^^^^
+// [analyzer] SYNTACTIC_ERROR.EXPECTED_BODY
+// [cfe] A class declaration must have a body, even if it is empty.
+// ^^^^^
+// [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
+// [cfe] Expected an identifier, but got 'mixin'.
+// ^
+// [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
+// [cfe] Expected an identifier, but got '{'.
+class library { }
+// ^^^^^^^
+// [analyzer] SYNTACTIC_ERROR.EXPECTED_BODY
+// [cfe] A class declaration must have a body, even if it is empty.
+// ^^^^^^^
+// [analyzer] SYNTACTIC_ERROR.LIBRARY_DIRECTIVE_NOT_FIRST
+// [cfe] Expected an identifier, but got 'library'.
+// ^^^^^^^
+// [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
+// [cfe] The library directive must appear before all other directives.
+// ^
+// [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
+// [cfe] Expected an identifier, but got '{'.
+// ^
+// [analyzer] SYNTACTIC_ERROR.EXPECTED_EXECUTABLE
+// [cfe] Expected ';' after this.
+// ^
+// [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
+// [cfe] Expected a declaration, but got '}'.
+class operator { }
+// ^^^^^^^^
+// [analyzer] COMPILE_TIME_ERROR.BUILT_IN_IDENTIFIER_AS_TYPE_NAME
+// [cfe] Can't use 'operator' as a name here.
+class part { }
+// ^^^^
+// [analyzer] SYNTACTIC_ERROR.DIRECTIVE_AFTER_DECLARATION
+// [cfe] A class declaration must have a body, even if it is empty.
+// ^^^^
+// [analyzer] SYNTACTIC_ERROR.EXPECTED_BODY
+// [cfe] Directives must appear before any declarations.
+// ^^^^
+// [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
+// [cfe] Expected an identifier, but got 'part'.
+// [error line 123, column 12, length 0]
+// [analyzer] COMPILE_TIME_ERROR.PART_OF_NON_PART
+// [cfe] Expected ';' after this.
+// ^
+// [analyzer] SYNTACTIC_ERROR.EXPECTED_EXECUTABLE
+// [cfe] Expected a String, but got '{'.
+// ^
+// [analyzer] SYNTACTIC_ERROR.EXPECTED_STRING_LITERAL
+// [cfe] Expected a declaration, but got '{'.
+// ^
+// [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
+class set { }
+// ^^^
+// [analyzer] SYNTACTIC_ERROR.EXPECTED_BODY
+// [cfe] A class declaration must have a body, even if it is empty.
+// ^^^
+// [analyzer] SYNTACTIC_ERROR.MISSING_FUNCTION_PARAMETERS
+// [cfe] A function declaration needs an explicit list of parameters.
+// ^^^
+// [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
+// [cfe] Expected an identifier, but got 'set'.
+class static { }
+// ^^^^^^
+// [analyzer] COMPILE_TIME_ERROR.BUILT_IN_IDENTIFIER_AS_TYPE_NAME
+// [cfe] Can't use 'static' as a name here.
+class typedef { }
+// ^^^^^^^
+// [analyzer] SYNTACTIC_ERROR.EXPECTED_BODY
+// [cfe] A class declaration must have a body, even if it is empty.
+// ^^^^^^^
+// [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
+// [cfe] Expected an identifier, but got 'typedef'.
+// ^
+// [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
+// [cfe] Expected an identifier, but got '{'.
+// ^
+// [analyzer] SYNTACTIC_ERROR.EXPECTED_EXECUTABLE
+// [cfe] A typedef needs an explicit list of parameters.
+// ^
+// [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
+// [cfe] Expected ';' after this.
+// ^
+// [analyzer] SYNTACTIC_ERROR.MISSING_TYPEDEF_PARAMETERS
+// [cfe] Expected a declaration, but got '}'.
+
+main() {}
diff --git a/tests/language/identifier/built_in_not_prefix_test.dart b/tests/language/identifier/built_in_not_prefix_test.dart
new file mode 100644
index 0000000..db1e856
--- /dev/null
+++ b/tests/language/identifier/built_in_not_prefix_test.dart
@@ -0,0 +1,62 @@
+// Copyright (c) 2017, 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.
+
+// From The Dart Programming Language Specification, section 16.33
+// "Identifier Reference":
+//
+// "A built-in identifier is one of the identifiers produced by the
+// production BUILT_IN_IDENTIFIER. It is a compile-time error if a
+// built-in identifier is used as the declared name of a prefix, class,
+// type parameter or type alias. It is a compile-time error to use a
+// built-in identifier other than dynamic in a type annotation or type
+// parameter."
+//
+// Observation: it is illegal to use a built-in identifier as a library
+// prefix.
+
+// Dart test for using a built-in identifier as a library prefix.
+
+import "dart:core" // Fine unless imported with a built-in identifier as prefix.
+deferred as abstract // //# deferred-abstract: compile-time error
+deferred as as // //# deferred-as: compile-time error
+deferred as covariant // //# deferred-covariant: compile-time error
+deferred as deferred // //# deferred-deferred: compile-time error
+deferred as dynamic // //# deferred-dynamic: compile-time error
+deferred as export // //# deferred-export: compile-time error
+deferred as external // //# deferred-external: compile-time error
+deferred as factory // //# deferred-factory: compile-time error
+deferred as get // //# deferred-get: compile-time error
+deferred as implements // //# deferred-implements: compile-time error
+deferred as import // //# deferred-import: compile-time error
+deferred as interface // //# deferred-interface: compile-time error
+deferred as library // //# deferred-library: compile-time error
+deferred as mixin // //# deferred-mixin: compile-time error
+deferred as operator // //# deferred-operator: compile-time error
+deferred as part // //# deferred-part: compile-time error
+deferred as set // //# deferred-set: compile-time error
+deferred as static // //# deferred-static: compile-time error
+deferred as typedef // //# deferred-typedef: compile-time error
+as abstract // //# abstract: compile-time error
+as as // //# as: compile-time error
+as covariant // //# covariant: compile-time error
+as deferred // //# deferred: compile-time error
+as dynamic // //# dynamic: compile-time error
+as export // //# export: compile-time error
+as external // //# external: compile-time error
+as factory // //# factory: compile-time error
+as get // //# get: compile-time error
+as implements // //# implements: compile-time error
+as import // //# import: compile-time error
+as interface // //# interface: compile-time error
+as library // //# library: compile-time error
+as mixin // //# mixin: compile-time error
+as operator // //# operator: compile-time error
+as part // //# part: compile-time error
+as set // //# set: compile-time error
+as static // //# static: compile-time error
+as typedef // //# typedef: compile-time error
+;
+
+main() {
+}
diff --git a/tests/language/identifier/built_in_prefix_library_async.dart b/tests/language/identifier/built_in_prefix_library_async.dart
new file mode 100644
index 0000000..5662dae
--- /dev/null
+++ b/tests/language/identifier/built_in_prefix_library_async.dart
@@ -0,0 +1,11 @@
+// Copyright (c) 2012, 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.
+
+library async;
+
+class A {}
+
+class B<T> {}
+
+class C<T, S> {}
diff --git a/tests/language/identifier/built_in_prefix_library_await.dart b/tests/language/identifier/built_in_prefix_library_await.dart
new file mode 100644
index 0000000..c4f5d37
--- /dev/null
+++ b/tests/language/identifier/built_in_prefix_library_await.dart
@@ -0,0 +1,11 @@
+// Copyright (c) 2012, 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.
+
+library await;
+
+class A {}
+
+class B<T> {}
+
+class C<T, S> {}
diff --git a/tests/language/identifier/built_in_prefix_library_hide.dart b/tests/language/identifier/built_in_prefix_library_hide.dart
new file mode 100644
index 0000000..6c686a0
--- /dev/null
+++ b/tests/language/identifier/built_in_prefix_library_hide.dart
@@ -0,0 +1,11 @@
+// Copyright (c) 2012, 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.
+
+library hide;
+
+class A {}
+
+class B<T> {}
+
+class C<T, S> {}
diff --git a/tests/language/identifier/built_in_prefix_library_library.dart b/tests/language/identifier/built_in_prefix_library_library.dart
new file mode 100644
index 0000000..6565cec
--- /dev/null
+++ b/tests/language/identifier/built_in_prefix_library_library.dart
@@ -0,0 +1,11 @@
+// Copyright (c) 2012, 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.
+
+library library;
+
+class A {}
+
+class B<T> {}
+
+class C<T, S> {}
diff --git a/tests/language/identifier/built_in_prefix_library_of.dart b/tests/language/identifier/built_in_prefix_library_of.dart
new file mode 100644
index 0000000..e2fec7d
--- /dev/null
+++ b/tests/language/identifier/built_in_prefix_library_of.dart
@@ -0,0 +1,11 @@
+// Copyright (c) 2012, 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.
+
+library of;
+
+class A {}
+
+class B<T> {}
+
+class C<T, S> {}
diff --git a/tests/language/identifier/built_in_prefix_library_on.dart b/tests/language/identifier/built_in_prefix_library_on.dart
new file mode 100644
index 0000000..861eac9
--- /dev/null
+++ b/tests/language/identifier/built_in_prefix_library_on.dart
@@ -0,0 +1,11 @@
+// Copyright (c) 2012, 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.
+
+library on;
+
+class A {}
+
+class B<T> {}
+
+class C<T, S> {}
diff --git a/tests/language/identifier/built_in_prefix_library_show.dart b/tests/language/identifier/built_in_prefix_library_show.dart
new file mode 100644
index 0000000..12f2e7b
--- /dev/null
+++ b/tests/language/identifier/built_in_prefix_library_show.dart
@@ -0,0 +1,11 @@
+// Copyright (c) 2012, 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.
+
+library show;
+
+class A {}
+
+class B<T> {}
+
+class C<T, S> {}
diff --git a/tests/language/identifier/built_in_prefix_library_sync.dart b/tests/language/identifier/built_in_prefix_library_sync.dart
new file mode 100644
index 0000000..e63a2b2
--- /dev/null
+++ b/tests/language/identifier/built_in_prefix_library_sync.dart
@@ -0,0 +1,11 @@
+// Copyright (c) 2012, 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.
+
+library sync;
+
+class A {}
+
+class B<T> {}
+
+class C<T, S> {}
diff --git a/tests/language/identifier/built_in_prefix_library_yield.dart b/tests/language/identifier/built_in_prefix_library_yield.dart
new file mode 100644
index 0000000..2b97a2c
--- /dev/null
+++ b/tests/language/identifier/built_in_prefix_library_yield.dart
@@ -0,0 +1,11 @@
+// Copyright (c) 2012, 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.
+
+library yield;
+
+class A {}
+
+class B<T> {}
+
+class C<T, S> {}
diff --git a/tests/language/identifier/built_in_type_annotation_test.dart b/tests/language/identifier/built_in_type_annotation_test.dart
new file mode 100644
index 0000000..7410ff7
--- /dev/null
+++ b/tests/language/identifier/built_in_type_annotation_test.dart
@@ -0,0 +1,129 @@
+// Copyright (c) 2017, 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.
+
+// From The Dart Programming Language Specification, section 16.33
+// "Identifier Reference":
+//
+// "A built-in identifier is one of the identifiers produced by the
+// production BUILT_IN_IDENTIFIER. It is a compile-time error if a
+// built-in identifier is used as the declared name of a prefix, class,
+// type parameter or type alias. It is a compile-time error to use a
+// built-in identifier other than dynamic in a type annotation or type
+// parameter."
+//
+// Observation: it is illegal to use a built-in identifier other than
+// `dynamic` in a type annotation. A type annotation is not fully defined
+// in the specification, so we assume this means that the grammar
+// production "type" cannot be a built-in identifier, and it cannot contain
+// a built-in identifier at a location where it must denote a type.
+//
+// Note that we have several ways to use built-in identifiers other than
+// `dynamic` in other locations in a type, e.g., `Function(int set)`.
+
+final // optional type before variable must not be a built-in identifier.
+abstract // //# abstract: syntax error
+as // //# as: syntax error
+covariant // //# covariant: syntax error
+deferred // //# deferred: syntax error
+dynamic // //# dynamic: ok
+export // //# export: syntax error
+external // //# external: syntax error
+factory // //# factory: syntax error
+get // //# get: syntax error
+implements // //# implements: syntax error
+import // //# import: syntax error
+interface // //# interface: syntax error
+library // //# library: syntax error
+mixin // //# mixin: syntax error
+operator // //# operator: syntax error
+part // //# part: syntax error
+set // //# set: syntax error
+static // //# static: syntax error
+typedef // //# typedef: syntax error
+
+abstract<int>? // //# abstract-gen: syntax error
+as<int>? // //# as-gen: syntax error
+covariant<int>? // //# covariant-gen: syntax error
+deferred<int>? // //# deferred-gen: syntax error
+dynamic<int>? // //# dynamic-gen: compile-time error
+export<int>? // //# export-gen: syntax error
+external<int>? // //# external-gen: syntax error
+factory<int>? // //# factory-gen: syntax error
+get<int>? // //# get-gen: syntax error
+implements<int>? // //# implements-gen: syntax error
+import<int>? // //# import-gen: syntax error
+interface<int>? // //# interface-gen: syntax error
+library<int>? // //# library-gen: syntax error
+mixin<int>? // //# mixin-gen: syntax error
+operator<int>? // //# operator-gen: syntax error
+part<int>? // //# part-gen: syntax error
+set<int>? // //# set-gen: syntax error
+static<int>? // //# static-gen: syntax error
+typedef<int>? // //# typedef-gen: syntax error
+
+List<abstract>? // //# abstract-list: syntax error
+List<as>? // //# as-list: syntax error
+List<covariant>? // //# covariant-list: syntax error
+List<deferred>? // //# deferred-list: syntax error
+List<dynamic>? // //# dynamic-list: ok
+List<export>? // //# export-list: syntax error
+List<external>? // //# external-list: syntax error
+List<factory>? // //# factory-list: syntax error
+List<get>? // //# get-list: syntax error
+List<implements>? // //# implements-list: syntax error
+List<import>? // //# import-list: syntax error
+List<interface>? // //# interface-list: syntax error
+List<library>? // //# library-list: syntax error
+List<mixin>? // //# mixin-list: syntax error
+List<operator>? // //# operator-list: syntax error
+List<part>? // //# part-list: syntax error
+List<set>? // //# set-list: syntax error
+List<static>? // //# static-list: syntax error
+List<typedef>? // //# typedef-list: syntax error
+
+Function(abstract)? // //# abstract-funarg: syntax error
+Function(as)? // //# as-funarg: syntax error
+Function(covariant)? // //# covariant-funarg: syntax error
+Function(deferred)? // //# deferred-funarg: syntax error
+Function(dynamic)? // //# dynamic-funarg: ok
+Function(export)? // //# export-funarg: syntax error
+Function(external)? // //# external-funarg: syntax error
+Function(factory)? // //# factory-funarg: syntax error
+Function(get)? // //# get-funarg: syntax error
+Function(implements)? // //# implements-funarg: syntax error
+Function(import)? // //# import-funarg: syntax error
+Function(interface)? // //# interface-funarg: syntax error
+Function(library)? // //# library-funarg: syntax error
+Function(mixin)? // //# mixin-funarg: syntax error
+Function(operator)? // //# operator-funarg: syntax error
+Function(part)? // //# part-funarg: syntax error
+Function(set)? // //# set-funarg: syntax error
+Function(static)? // //# static-funarg: syntax error
+Function(typedef)? // //# typedef-funarg: syntax error
+
+abstract Function()? // //# abstract-funret: syntax error
+as Function()? // //# as-funret: syntax error
+covariant Function()? // //# covariant-funret: syntax error
+deferred Function()? // //# deferred-funret: syntax error
+dynamic Function()? // //# dynamic-funret: ok
+export Function()? // //# export-funret: syntax error
+external Function()? // //# external-funret: syntax error
+factory Function()? // //# factory-funret: syntax error
+get Function()? // //# get-funret: syntax error
+implements Function()? // //# implements-funret: syntax error
+import Function()? // //# import-funret: syntax error
+interface Function()? // //# interface-funret: syntax error
+library Function()? // //# library-funret: syntax error
+mixin Function()? // //# mixin-funret: syntax error
+operator Function()? // //# operator-funret: syntax error
+part Function()? // //# part-funret: syntax error
+set Function()? // //# set-funret: syntax error
+static Function()? // //# static-funret: syntax error
+typedef Function()? // //# typedef-funret: syntax error
+
+x = null;
+
+main() {
+ x.toString();
+}
diff --git a/tests/language/identifier/known_prefix_error_runtime_test.dart b/tests/language/identifier/known_prefix_error_runtime_test.dart
new file mode 100644
index 0000000..2d4a40c
--- /dev/null
+++ b/tests/language/identifier/known_prefix_error_runtime_test.dart
@@ -0,0 +1,81 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// Copyright (c) 2017, 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 identifiers which are used explicitly in the grammar but are
+// not built-in identifiers can be used as library prefixes.
+
+// The identifiers listed below are mentioned in the grammar, but none of
+// them is a reserved word or a built-in identifier. Such an identifier can
+// be used as a library prefix; this test puts such prefixes in wrong
+// locations to verify that this is being handled. Here are the 'known'
+// identifiers: `async`, `await`, `hide`, `of`, `on`, `show`, `sync`, `yield`.
+
+import "package:expect/expect.dart";
+import 'built_in_prefix_library_async.dart' as async;
+import 'built_in_prefix_library_await.dart' as await;
+import 'built_in_prefix_library_hide.dart' as hide;
+import 'built_in_prefix_library_of.dart' as of;
+import 'built_in_prefix_library_on.dart' as on;
+import 'built_in_prefix_library_show.dart' as show;
+import 'built_in_prefix_library_sync.dart' as sync;
+import 'built_in_prefix_library_yield.dart' as yield;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+main() {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+}
diff --git a/tests/language/identifier/known_prefix_error_test.dart b/tests/language/identifier/known_prefix_error_test.dart
new file mode 100644
index 0000000..a104b53
--- /dev/null
+++ b/tests/language/identifier/known_prefix_error_test.dart
@@ -0,0 +1,182 @@
+// Copyright (c) 2017, 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 identifiers which are used explicitly in the grammar but are
+// not built-in identifiers can be used as library prefixes.
+
+// The identifiers listed below are mentioned in the grammar, but none of
+// them is a reserved word or a built-in identifier. Such an identifier can
+// be used as a library prefix; this test puts such prefixes in wrong
+// locations to verify that this is being handled. Here are the 'known'
+// identifiers: `async`, `await`, `hide`, `of`, `on`, `show`, `sync`, `yield`.
+
+import "package:expect/expect.dart";
+import 'built_in_prefix_library_async.dart' as async;
+import 'built_in_prefix_library_await.dart' as await;
+import 'built_in_prefix_library_hide.dart' as hide;
+import 'built_in_prefix_library_of.dart' as of;
+import 'built_in_prefix_library_on.dart' as on;
+import 'built_in_prefix_library_show.dart' as show;
+import 'built_in_prefix_library_sync.dart' as sync;
+import 'built_in_prefix_library_yield.dart' as yield;
+
+async<dynamic> _async = new async.A();
+// [error line 24, column 1, length 5]
+// [analyzer] STATIC_WARNING.NOT_A_TYPE
+// [cfe] 'async' isn't a type.
+// [error line 24, column 1]
+// [cfe] Expected 0 type arguments.
+await<dynamic> _await = new await.A();
+// [error line 30, column 1, length 5]
+// [analyzer] STATIC_WARNING.NOT_A_TYPE
+// [cfe] 'await' isn't a type.
+// [error line 30, column 1]
+// [cfe] Expected 0 type arguments.
+hide<dynamic> _hide = new hide.A();
+// [error line 36, column 1, length 4]
+// [analyzer] STATIC_WARNING.NOT_A_TYPE
+// [cfe] 'hide' isn't a type.
+// [error line 36, column 1]
+// [cfe] Expected 0 type arguments.
+of<dynamic> _of = new of.A();
+// [error line 42, column 1, length 2]
+// [analyzer] STATIC_WARNING.NOT_A_TYPE
+// [cfe] 'of' isn't a type.
+// [error line 42, column 1]
+// [cfe] Expected 0 type arguments.
+on<dynamic> _on = new on.A();
+// [error line 48, column 1, length 2]
+// [analyzer] STATIC_WARNING.NOT_A_TYPE
+// [cfe] 'on' isn't a type.
+// [error line 48, column 1]
+// [cfe] Expected 0 type arguments.
+show<dynamic> _show = new show.A();
+// [error line 54, column 1, length 4]
+// [analyzer] STATIC_WARNING.NOT_A_TYPE
+// [cfe] 'show' isn't a type.
+// [error line 54, column 1]
+// [cfe] Expected 0 type arguments.
+sync<dynamic> _sync = new sync.A();
+// [error line 60, column 1, length 4]
+// [analyzer] STATIC_WARNING.NOT_A_TYPE
+// [cfe] 'sync' isn't a type.
+// [error line 60, column 1]
+// [cfe] Expected 0 type arguments.
+yield<dynamic> _yield = new yield.A();
+// [error line 66, column 1, length 5]
+// [analyzer] STATIC_WARNING.NOT_A_TYPE
+// [cfe] 'yield' isn't a type.
+// [error line 66, column 1]
+// [cfe] Expected 0 type arguments.
+
+async.B<async> _B_async = new async.B();
+// ^^^^^
+// [analyzer] STATIC_TYPE_WARNING.NON_TYPE_AS_TYPE_ARGUMENT
+// [cfe] 'async' isn't a type.
+await.B<await> _B_await = new await.B();
+// ^^^^^
+// [analyzer] STATIC_TYPE_WARNING.NON_TYPE_AS_TYPE_ARGUMENT
+// [cfe] 'await' isn't a type.
+hide.B<hide> _B_hide = new hide.B();
+// ^^^^
+// [analyzer] STATIC_TYPE_WARNING.NON_TYPE_AS_TYPE_ARGUMENT
+// [cfe] 'hide' isn't a type.
+of.B<of> _B_of = new of.B();
+// ^^
+// [analyzer] STATIC_TYPE_WARNING.NON_TYPE_AS_TYPE_ARGUMENT
+// [cfe] 'of' isn't a type.
+on.B<on> _B_on = new on.B();
+// ^^
+// [analyzer] STATIC_TYPE_WARNING.NON_TYPE_AS_TYPE_ARGUMENT
+// [cfe] 'on' isn't a type.
+show.B<show> _B_show = new show.B();
+// ^^^^
+// [analyzer] STATIC_TYPE_WARNING.NON_TYPE_AS_TYPE_ARGUMENT
+// [cfe] 'show' isn't a type.
+sync.B<sync> _B_sync = new sync.B();
+// ^^^^
+// [analyzer] STATIC_TYPE_WARNING.NON_TYPE_AS_TYPE_ARGUMENT
+// [cfe] 'sync' isn't a type.
+yield.B<yield> _B_yield = new yield.B();
+// ^^^^^
+// [analyzer] STATIC_TYPE_WARNING.NON_TYPE_AS_TYPE_ARGUMENT
+// [cfe] 'yield' isn't a type.
+
+async.B<async<dynamic>> _B2_async = new async.B();
+// ^^^^^
+// [analyzer] STATIC_TYPE_WARNING.NON_TYPE_AS_TYPE_ARGUMENT
+// [cfe] 'async' isn't a type.
+// ^
+// [cfe] Expected 0 type arguments.
+await.B<await<dynamic>> _B2_await = new await.B();
+// ^^^^^
+// [analyzer] STATIC_TYPE_WARNING.NON_TYPE_AS_TYPE_ARGUMENT
+// [cfe] 'await' isn't a type.
+// ^
+// [cfe] Expected 0 type arguments.
+hide.B<hide<dynamic>> _B2_hide = new hide.B();
+// ^^^^
+// [analyzer] STATIC_TYPE_WARNING.NON_TYPE_AS_TYPE_ARGUMENT
+// [cfe] 'hide' isn't a type.
+// ^
+// [cfe] Expected 0 type arguments.
+of.B<of<dynamic>> _B2_of = new of.B();
+// ^^
+// [analyzer] STATIC_TYPE_WARNING.NON_TYPE_AS_TYPE_ARGUMENT
+// [cfe] 'of' isn't a type.
+// ^
+// [cfe] Expected 0 type arguments.
+on.B<on<dynamic>> _B2_on = new on.B();
+// ^^
+// [analyzer] STATIC_TYPE_WARNING.NON_TYPE_AS_TYPE_ARGUMENT
+// [cfe] 'on' isn't a type.
+// ^
+// [cfe] Expected 0 type arguments.
+show.B<show<dynamic>> _B2_show = new show.B();
+// ^^^^
+// [analyzer] STATIC_TYPE_WARNING.NON_TYPE_AS_TYPE_ARGUMENT
+// [cfe] 'show' isn't a type.
+// ^
+// [cfe] Expected 0 type arguments.
+sync.B<sync<dynamic>> _B2_sync = new sync.B();
+// ^^^^
+// [analyzer] STATIC_TYPE_WARNING.NON_TYPE_AS_TYPE_ARGUMENT
+// [cfe] 'sync' isn't a type.
+// ^
+// [cfe] Expected 0 type arguments.
+yield.B<yield<dynamic>> _B2_yield = new yield.B();
+// ^^^^^
+// [analyzer] STATIC_TYPE_WARNING.NON_TYPE_AS_TYPE_ARGUMENT
+// [cfe] 'yield' isn't a type.
+// ^
+// [cfe] Expected 0 type arguments.
+
+main() {
+ Expect.isTrue(_async is async.A);
+ Expect.isTrue(_await is await.A);
+ Expect.isTrue(_hide is hide.A);
+ Expect.isTrue(_of is of.A);
+ Expect.isTrue(_on is on.A);
+ Expect.isTrue(_show is show.A);
+ Expect.isTrue(_sync is sync.A);
+ Expect.isTrue(_yield is yield.A);
+
+ Expect.isTrue(_B_async is async.B);
+ Expect.isTrue(_B_await is await.B);
+ Expect.isTrue(_B_hide is hide.B);
+ Expect.isTrue(_B_of is of.B);
+ Expect.isTrue(_B_on is on.B);
+ Expect.isTrue(_B_show is show.B);
+ Expect.isTrue(_B_sync is sync.B);
+ Expect.isTrue(_B_yield is yield.B);
+
+ Expect.isTrue(_B2_async is async.B);
+ Expect.isTrue(_B2_await is await.B);
+ Expect.isTrue(_B2_hide is hide.B);
+ Expect.isTrue(_B2_of is of.B);
+ Expect.isTrue(_B2_on is on.B);
+ Expect.isTrue(_B2_show is show.B);
+ Expect.isTrue(_B2_sync is sync.B);
+ Expect.isTrue(_B2_yield is yield.B);
+}
diff --git a/tests/language/identifier/known_prefix_test.dart b/tests/language/identifier/known_prefix_test.dart
new file mode 100644
index 0000000..9caf67b
--- /dev/null
+++ b/tests/language/identifier/known_prefix_test.dart
@@ -0,0 +1,78 @@
+// Copyright (c) 2017, 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.
+
+// The identifiers listed below are mentioned in the grammar, but none of
+// them is a reserved word or a built-in identifier. Such an identifier can
+// be used as library prefix. Here are said 'known' identifiers:
+//
+// `async`, `await`, `hide`, `of`, `on`, `show`, `sync`, `yield`.
+
+import "package:expect/expect.dart";
+import 'built_in_prefix_library_async.dart' as async;
+import 'built_in_prefix_library_await.dart' as await;
+import 'built_in_prefix_library_hide.dart' as hide;
+import 'built_in_prefix_library_of.dart' as of;
+import 'built_in_prefix_library_on.dart' as on;
+import 'built_in_prefix_library_show.dart' as show;
+import 'built_in_prefix_library_sync.dart' as sync;
+import 'built_in_prefix_library_yield.dart' as yield;
+
+async.A _async = new async.A();
+await.A _await = new await.A();
+hide.A _hide = new hide.A();
+of.A _of = new of.A();
+on.A _on = new on.A();
+show.A _show = new show.A();
+sync.A _sync = new sync.A();
+yield.A _yield = new yield.A();
+
+async.B<dynamic> dynamic_B_async = new async.B();
+await.B<dynamic> dynamic_B_await = new await.B();
+hide.B<dynamic> dynamic_B_hide = new hide.B();
+of.B<dynamic> dynamic_B_of = new of.B();
+on.B<dynamic> dynamic_B_on = new on.B();
+show.B<dynamic> dynamic_B_show = new show.B();
+sync.B<dynamic> dynamic_B_sync = new sync.B();
+yield.B<dynamic> dynamic_B_yield = new yield.B();
+
+class UseA {
+ async.A _async = new async.A();
+ await.A _await = new await.A();
+ hide.A _hide = new hide.A();
+ of.A _of = new of.A();
+ on.A _on = new on.A();
+ show.A _show = new show.A();
+ sync.A _sync = new sync.A();
+ yield.A _yield = new yield.A();
+}
+
+main() {
+ Expect.isTrue(_async is async.A);
+ Expect.isTrue(_await is await.A);
+ Expect.isTrue(_hide is hide.A);
+ Expect.isTrue(_of is of.A);
+ Expect.isTrue(_on is on.A);
+ Expect.isTrue(_show is show.A);
+ Expect.isTrue(_sync is sync.A);
+ Expect.isTrue(_yield is yield.A);
+
+ Expect.isTrue(dynamic_B_async is async.B);
+ Expect.isTrue(dynamic_B_await is await.B);
+ Expect.isTrue(dynamic_B_hide is hide.B);
+ Expect.isTrue(dynamic_B_of is of.B);
+ Expect.isTrue(dynamic_B_on is on.B);
+ Expect.isTrue(dynamic_B_show is show.B);
+ Expect.isTrue(dynamic_B_sync is sync.B);
+ Expect.isTrue(dynamic_B_yield is yield.B);
+
+ var x = new UseA();
+ Expect.isTrue(x._async is async.A);
+ Expect.isTrue(x._await is await.A);
+ Expect.isTrue(x._hide is hide.A);
+ Expect.isTrue(x._of is of.A);
+ Expect.isTrue(x._on is on.A);
+ Expect.isTrue(x._show is show.A);
+ Expect.isTrue(x._sync is sync.A);
+ Expect.isTrue(x._yield is yield.A);
+}
diff --git a/tests/language/identifier/known_usage_error_runtime_test.dart b/tests/language/identifier/known_usage_error_runtime_test.dart
new file mode 100644
index 0000000..fb7bf7c
--- /dev/null
+++ b/tests/language/identifier/known_usage_error_runtime_test.dart
@@ -0,0 +1,76 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// Copyright (c) 2017, 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.
+
+// The identifiers listed below are mentioned in the grammar, but none of
+// them is a reserved word or a built-in identifier. Such an identifier can
+// be used just like all other identifiers, with the exceptions mentioned
+// below. Here are said 'known' identifiers:
+//
+// `async`, `await`, `hide`, `of`, `on`, `show`, `sync`, `yield`
+//
+// The following exceptions apply:
+//
+// It is a compile-time error to use `await` or `yield` as an identifier in
+// the body of a function marked `async`, `async*`, or `sync*`.
+//
+// It is a compile-time error if an asynchronous for-in appears inside a
+// synchronous function.
+
+import 'dart:async';
+
+Future<void> f1() async {
+ // Allowed:
+ int async = 1;
+
+
+
+ Stream<int> s = new Stream<int>.fromFuture(new Future<int>.value(1));
+ await for (int i in s) {
+ return;
+ }
+}
+
+Stream<int> f2() async* {
+ int async = 1;
+
+
+
+ Stream<int> s = new Stream<int>.fromFuture(new Future<int>.value(1));
+ await for (var i in s) {
+ yield i + 1;
+ }
+}
+
+Iterable<int> f3() sync* {
+ int async = 1;
+
+
+
+ Stream<int> s = new Stream<int>.fromFuture(new Future<int>.value(1));
+
+
+
+}
+
+void f4() {
+ int async = 1;
+ int await = 1;
+ int yield = 1;
+
+ Stream s = new Stream<int>.fromFuture(new Future<int>.value(1));
+
+
+
+
+}
+
+main() {
+ Future<void> f = f1();
+ Stream s = f2();
+ Iterable<int> i = f3();
+ f4();
+}
diff --git a/tests/language/identifier/known_usage_error_test.dart b/tests/language/identifier/known_usage_error_test.dart
new file mode 100644
index 0000000..eee5865
--- /dev/null
+++ b/tests/language/identifier/known_usage_error_test.dart
@@ -0,0 +1,97 @@
+// Copyright (c) 2017, 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.
+
+// The identifiers listed below are mentioned in the grammar, but none of
+// them is a reserved word or a built-in identifier. Such an identifier can
+// be used just like all other identifiers, with the exceptions mentioned
+// below. Here are said 'known' identifiers:
+//
+// `async`, `await`, `hide`, `of`, `on`, `show`, `sync`, `yield`
+//
+// The following exceptions apply:
+//
+// It is a compile-time error to use `await` or `yield` as an identifier in
+// the body of a function marked `async`, `async*`, or `sync*`.
+//
+// It is a compile-time error if an asynchronous for-in appears inside a
+// synchronous function.
+
+import 'dart:async';
+
+Future<void> f1() async {
+ // Allowed:
+ int async = 1;
+ int await = 1;
+ // ^^^^^
+ // [analyzer] SYNTACTIC_ERROR.ASYNC_KEYWORD_USED_AS_IDENTIFIER
+ // [cfe] 'await' can't be used as an identifier in 'async', 'async*', or 'sync*' methods.
+ int yield = 1;
+ // ^^^^^
+ // [analyzer] SYNTACTIC_ERROR.ASYNC_KEYWORD_USED_AS_IDENTIFIER
+ // [cfe] 'yield' can't be used as an identifier in 'async', 'async*', or 'sync*' methods.
+
+ Stream<int> s = new Stream<int>.fromFuture(new Future<int>.value(1));
+ await for (int i in s) {
+ return;
+ }
+}
+
+Stream<int> f2() async* {
+ int async = 1;
+ int await = 1;
+ // ^^^^^
+ // [analyzer] SYNTACTIC_ERROR.ASYNC_KEYWORD_USED_AS_IDENTIFIER
+ // [cfe] 'await' can't be used as an identifier in 'async', 'async*', or 'sync*' methods.
+ int yield = 1;
+ // ^^^^^
+ // [analyzer] SYNTACTIC_ERROR.ASYNC_KEYWORD_USED_AS_IDENTIFIER
+ // [cfe] 'yield' can't be used as an identifier in 'async', 'async*', or 'sync*' methods.
+
+ Stream<int> s = new Stream<int>.fromFuture(new Future<int>.value(1));
+ await for (var i in s) {
+ yield i + 1;
+ }
+}
+
+Iterable<int> f3() sync* {
+ int async = 1;
+ int await = 1;
+ // ^^^^^
+ // [analyzer] SYNTACTIC_ERROR.ASYNC_KEYWORD_USED_AS_IDENTIFIER
+ // [cfe] 'await' can't be used as an identifier in 'async', 'async*', or 'sync*' methods.
+ int yield = 1;
+ // ^^^^^
+ // [analyzer] SYNTACTIC_ERROR.ASYNC_KEYWORD_USED_AS_IDENTIFIER
+ // [cfe] 'yield' can't be used as an identifier in 'async', 'async*', or 'sync*' methods.
+
+ Stream<int> s = new Stream<int>.fromFuture(new Future<int>.value(1));
+ await for (int i in s) {
+ // ^^
+ // [analyzer] COMPILE_TIME_ERROR.ASYNC_FOR_IN_WRONG_CONTEXT
+ // [cfe] The asynchronous for-in can only be used in functions marked with 'async' or 'async*'.
+ yield i + 1;
+ }
+}
+
+void f4() {
+ int async = 1;
+ int await = 1;
+ int yield = 1;
+
+ Stream s = new Stream<int>.fromFuture(new Future<int>.value(1));
+ await for (int i in s) {
+ // ^^
+ // [analyzer] COMPILE_TIME_ERROR.ASYNC_FOR_IN_WRONG_CONTEXT
+ // [cfe] The asynchronous for-in can only be used in functions marked with 'async' or 'async*'.
+ return;
+ }
+
+}
+
+main() {
+ Future<void> f = f1();
+ Stream s = f2();
+ Iterable<int> i = f3();
+ f4();
+}
diff --git a/tests/language/identifier/known_usage_test.dart b/tests/language/identifier/known_usage_test.dart
new file mode 100644
index 0000000..360869b
--- /dev/null
+++ b/tests/language/identifier/known_usage_test.dart
@@ -0,0 +1,370 @@
+// Copyright (c) 2017, 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.
+
+// The identifiers listed below are mentioned in the grammar, but none of
+// them is a reserved word or a built-in identifier. Such an identifier can
+// be used just like all other identifiers, with a few exceptions. Here are
+// said 'known' identifiers:
+//
+// `async`, `await`, `hide`, `of`, `on`, `show`, `sync`, `yield`
+//
+// This test contains various declarations of entities whose name is one of
+// these known identifiers.
+
+// Top level.
+
+var async; //# 01: ok
+var await; //# 01: continued
+var hide; //# 01: continued
+var of; //# 01: continued
+var on; //# 01: continued
+var show; //# 01: continued
+var sync; //# 01: continued
+var yield; //# 01: continued
+
+int? async; //# 02: ok
+int? await; //# 02: continued
+int? hide; //# 02: continued
+int? of; //# 02: continued
+int? on; //# 02: continued
+int? show; //# 02: continued
+int? sync; //# 02: continued
+int? yield; //# 02: continued
+
+final String async = ""; //# 03: ok
+final String await = ""; //# 03: continued
+final String hide = ""; //# 03: continued
+final String of = ""; //# 03: continued
+final String on = ""; //# 03: continued
+final String show = ""; //# 03: continued
+final String sync = ""; //# 03: continued
+final String yield = ""; //# 03: continued
+
+const async = null; //# 04: ok
+const await = null; //# 04: continued
+const hide = null; //# 04: continued
+const of = null; //# 04: continued
+const on = null; //# 04: continued
+const show = null; //# 04: continued
+const sync = null; //# 04: continued
+const yield = null; //# 04: continued
+
+void async() {} //# 05: ok
+void await() {} //# 05: continued
+void hide() {} //# 05: continued
+void of() {} //# 05: continued
+void on() {} //# 05: continued
+void show() {} //# 05: continued
+void sync() {} //# 05: continued
+void yield() {} //# 05: continued
+
+void f1(async, await, hide, of, on, show, sync, yield) {}
+void f2([async, await, hide, of, on, show, sync, yield]) {}
+void f3({async, await, hide, of, on, show, sync, yield}) {}
+
+void f4(
+ int async,
+ int await,
+ int hide,
+ int of,
+ int on,
+ int show,
+ int sync,
+ int yield,
+) {}
+
+void f5([
+ int? async,
+ int? await,
+ int? hide,
+ int? of,
+ int? on,
+ int? show,
+ int? sync,
+ int? yield,
+]) {}
+
+void f6({
+ int? async,
+ int? await,
+ int? hide,
+ int? of,
+ int? on,
+ int? show,
+ int? sync,
+ int? yield,
+}) {}
+
+class A {
+ var async; //# 01: continued
+ var await; //# 01: continued
+ var hide; //# 01: continued
+ var of; //# 01: continued
+ var on; //# 01: continued
+ var show; //# 01: continued
+ var sync; //# 01: continued
+ var yield; //# 01: continued
+
+ num? async; //# 02: continued
+ num? await; //# 02: continued
+ num? hide; //# 02: continued
+ num? of; //# 02: continued
+ num? on; //# 02: continued
+ num? show; //# 02: continued
+ num? sync; //# 02: continued
+ num? yield; //# 02: continued
+
+ final String async = ""; //# 03: continued
+ final String await = ""; //# 03: continued
+ final String hide = ""; //# 03: continued
+ final String of = ""; //# 03: continued
+ final String on = ""; //# 03: continued
+ final String show = ""; //# 03: continued
+ final String sync = ""; //# 03: continued
+ final String yield = ""; //# 03: continued
+
+ String get async => ""; //# 04: continued
+ String get await => ""; //# 04: continued
+ String get hide => ""; //# 04: continued
+ String get of => ""; //# 04: continued
+ String get on => ""; //# 04: continued
+ String get show => ""; //# 04: continued
+ String get sync => ""; //# 04: continued
+ String get yield => ""; //# 04: continued
+
+ void async() {} //# 05: ok
+ void await() {} //# 05: continued
+ void hide() {} //# 05: continued
+ void of() {} //# 05: continued
+ void on() {} //# 05: continued
+ void show() {} //# 05: continued
+ void sync() {} //# 05: continued
+ void yield() {} //# 05: continued
+
+ A();
+
+ A.c1( //# 01: continued
+ this.async, //# 01: continued
+ this.await, //# 01: continued
+ this.hide, //# 01: continued
+ this.of, //# 01: continued
+ this.on, //# 01: continued
+ this.show, //# 01: continued
+ this.sync, //# 01: continued
+ this.yield, //# 01: continued
+ ) {} //# 01: continued
+
+ A.c2([ //# 01: continued
+ this.async, //# 01: continued
+ this.await, //# 01: continued
+ this.hide, //# 01: continued
+ this.of, //# 01: continued
+ this.on, //# 01: continued
+ this.show, //# 01: continued
+ this.sync, //# 01: continued
+ this.yield, //# 01: continued
+ ]) {} //# 01: continued
+
+ A.c3({ //# 01: continued
+ this.async, //# 01: continued
+ this.await, //# 01: continued
+ this.hide, //# 01: continued
+ this.of, //# 01: continued
+ this.on, //# 01: continued
+ this.show, //# 01: continued
+ this.sync, //# 01: continued
+ this.yield, //# 01: continued
+ }) {} //# 01: continued
+
+ A.c4( //# 02: continued
+ int this.async, //# 02: continued
+ int this.await, //# 02: continued
+ int this.hide, //# 02: continued
+ int this.of, //# 02: continued
+ int this.on, //# 02: continued
+ int this.show, //# 02: continued
+ int this.sync, //# 02: continued
+ int this.yield, //# 02: continued
+ ) {} //# 02: continued
+
+ A.c5([ //# 02: continued
+ int? this.async, //# 02: continued
+ int? this.await, //# 02: continued
+ int? this.hide, //# 02: continued
+ int? this.of, //# 02: continued
+ int? this.on, //# 02: continued
+ int? this.show, //# 02: continued
+ int? this.sync, //# 02: continued
+ int? this.yield, //# 02: continued
+ ]) {} //# 02: continued
+
+ A.c6({ //# 02: continued
+ int? this.async, //# 02: continued
+ int? this.await, //# 02: continued
+ int? this.hide, //# 02: continued
+ int? this.of, //# 02: continued
+ int? this.on, //# 02: continued
+ int? this.show, //# 02: continued
+ int? this.sync, //# 02: continued
+ int? this.yield, //# 02: continued
+ }) {} //# 02: continued
+
+ void method1(
+ covariant int async,
+ covariant int await,
+ covariant int hide,
+ covariant int of,
+ covariant int on,
+ covariant int show,
+ covariant int sync,
+ covariant int yield,
+ ) {}
+
+ void method2([
+ covariant int? async,
+ covariant int? await,
+ covariant int? hide,
+ covariant int? of,
+ covariant int? on,
+ covariant int? show,
+ covariant int? sync,
+ covariant int? yield,
+ ]) {}
+
+ void method3({
+ covariant int? async,
+ covariant int? await,
+ covariant int? hide,
+ covariant int? of,
+ covariant int? on,
+ covariant int? show,
+ covariant int? sync,
+ covariant int? yield,
+ }) {}
+}
+
+class B {
+ static var async; //# 01: continued
+ static var await; //# 01: continued
+ static var hide; //# 01: continued
+ static var of; //# 01: continued
+ static var on; //# 01: continued
+ static var show; //# 01: continued
+ static var sync; //# 01: continued
+ static var yield; //# 01: continued
+
+ static num? async; //# 02: continued
+ static num? await; //# 02: continued
+ static num? hide; //# 02: continued
+ static num? of; //# 02: continued
+ static num? on; //# 02: continued
+ static num? show; //# 02: continued
+ static num? sync; //# 02: continued
+ static num? yield; //# 02: continued
+
+ static final String async = ""; //# 03: continued
+ static final String await = ""; //# 03: continued
+ static final String hide = ""; //# 03: continued
+ static final String of = ""; //# 03: continued
+ static final String on = ""; //# 03: continued
+ static final String show = ""; //# 03: continued
+ static final String sync = ""; //# 03: continued
+ static final String yield = ""; //# 03: continued
+
+ static const async = null; //# 04: continued
+ static const await = null; //# 04: continued
+ static const hide = null; //# 04: continued
+ static const of = null; //# 04: continued
+ static const on = null; //# 04: continued
+ static const show = null; //# 04: continued
+ static const sync = null; //# 04: continued
+ static const yield = null; //# 04: continued
+
+ static get async => null; //# 05: continued
+ static get await => null; //# 05: continued
+ static get hide => null; //# 05: continued
+ static get of => null; //# 05: continued
+ static get on => null; //# 05: continued
+ static get show => null; //# 05: continued
+ static get sync => null; //# 05: continued
+ static get yield => null; //# 05: continued
+}
+
+main() {
+ /* //# none: ok
+
+ // Except none: Use a top-level declaration.
+ var top_async = async;
+ var top_await = await;
+ var top_hide = hide;
+ var top_of = of;
+ var top_on = on;
+ var top_show = show;
+ var top_sync = sync;
+ var top_yield = yield;
+
+ // Except none: Use an instance member of A.
+ A a = new A();
+ var instance_async = a.async;
+ var instance_await = a.await;
+ var instance_hide = a.hide;
+ var instance_of = a.of;
+ var instance_on = a.on;
+ var instance_show = a.show;
+ var instance_sync = a.sync;
+ var instance_yield = a.yield;
+
+ // Except none: Use a static member of B.
+
+ var static_async = B.async;
+ var static_await = B.await;
+ var static_hide = B.hide;
+ var static_of = B.of;
+ var static_on = B.on;
+ var static_show = B.show;
+ var static_sync = B.sync;
+ var static_yield = B.yield;
+
+ */ //# none: continued
+
+ var a1 = new A.c1(1, 1, 1, 1, 1, 1, 1, 1); //# 01: continued
+ var a2 = new A.c2(); //# 01: continued
+ var a3 = new A.c3( //# 01: continued
+ async: 1, //# 01: continued
+ await: 1, //# 01: continued
+ hide: 1, //# 01: continued
+ of: 1, //# 01: continued
+ on: 1, //# 01: continued
+ show: 1, //# 01: continued
+ sync: 1, //# 01: continued
+ yield: 1, //# 01: continued
+ ); //# 01: continued
+
+ var a4 = new A.c4(1, 1, 1, 1, 1, 1, 1, 1); //# 02: continued
+ var a5 = new A.c5(); //# 02: continued
+ var a6 = new A.c6( //# 02: continued
+ async: 1, //# 02: continued
+ await: 1, //# 02: continued
+ hide: 1, //# 02: continued
+ of: 1, //# 02: continued
+ on: 1, //# 02: continued
+ show: 1, //# 02: continued
+ sync: 1, //# 02: continued
+ yield: 1, //# 02: continued
+ ); //# 02: continued
+
+ var aa = new A();
+ aa.method1(1, 1, 1, 1, 1, 1, 1, 1);
+ aa.method2();
+ aa.method3(
+ async: 1,
+ await: 1,
+ hide: 1,
+ of: 1,
+ on: 1,
+ show: 1,
+ sync: 1,
+ yield: 1,
+ );
+}
diff --git a/tests/language/identifier/naming2_test.dart b/tests/language/identifier/naming2_test.dart
new file mode 100644
index 0000000..f9c0800
--- /dev/null
+++ b/tests/language/identifier/naming2_test.dart
@@ -0,0 +1,15 @@
+// Copyright (c) 2012, 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 "package:expect/expect.dart";
+
+class A {
+ var function;
+ A(function) : function = function;
+}
+
+main() {
+ var a = new A(499);
+ Expect.equals(499, a.function);
+}
diff --git a/tests/language/identifier/naming3_test.dart b/tests/language/identifier/naming3_test.dart
new file mode 100644
index 0000000..3936778
--- /dev/null
+++ b/tests/language/identifier/naming3_test.dart
@@ -0,0 +1,97 @@
+// Copyright (c) 2012, 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 "package:expect/expect.dart";
+
+class A {
+ var __PROTO__ = 499;
+ var constructor = 1;
+ var prototype = 2;
+}
+
+// TODO(jmesserly): changed this test to avoid shadowing a field with a getter,
+// which DDC doesn't currently support, see:
+// https://github.com/dart-lang/dev_compiler/issues/52
+class A2 {
+ get __PROTO__ => 499;
+ get constructor => 1;
+ get prototype => 2;
+}
+
+class B extends A2 {
+ get __PROTO__ => 42;
+ get constructor => 3;
+ get prototype => 4;
+}
+
+class P {
+ m() => 42;
+}
+
+class C {
+ m() => 777;
+ static get prototype => new P();
+ static get name => 'hello from C.name';
+ static void _check(obj) {
+ Expect.equals(obj, 'hello');
+ check_++;
+ }
+
+ static void as(obj) {
+ Expect.equals(obj, 'world');
+ as_++;
+ }
+
+ static int as_ = 0;
+ static int check_ = 0;
+}
+
+// Regression test for https://github.com/dart-lang/sdk/issues/31049
+regress31049() {
+ dynamic d = new C();
+ C c = d; // implicit cast
+ d as C; // explicit cast
+ C._check('hello');
+ Expect.equals(C.check_, 1);
+ C.as('world');
+ Expect.equals(C.as_, 1);
+}
+
+// Regression test for https://github.com/dart-lang/sdk/issues/31050
+regress31050() {
+ Expect.isFalse((C).toString().contains('C.name'), 'should not call C.name');
+ Expect.equals(C.name, 'hello from C.name');
+ Expect.equals(C.prototype.m(), 42);
+ Expect.equals(new C().m(), 777);
+}
+
+var name = 42;
+regress31117() {
+ Expect.equals(name, 42);
+}
+
+main() {
+ var a = new A();
+ var a2 = new A2();
+ var b = new B();
+ var list = <dynamic>[a, a2, b];
+ for (int i = 0; i < list.length; i++) {
+ var proto = list[i].__PROTO__;
+ var constructor = list[i].constructor;
+ var prototype = list[i].prototype;
+ if (i < 2) {
+ Expect.equals(499, proto);
+ Expect.equals(1, constructor);
+ Expect.equals(2, prototype);
+ } else {
+ Expect.equals(42, proto);
+ Expect.equals(3, constructor);
+ Expect.equals(4, prototype);
+ }
+ }
+
+ regress31049();
+ regress31050();
+ regress31117();
+}
diff --git a/tests/language/identifier/naming_test.dart b/tests/language/identifier/naming_test.dart
new file mode 100644
index 0000000..6ed5472
--- /dev/null
+++ b/tests/language/identifier/naming_test.dart
@@ -0,0 +1,528 @@
+// Copyright (c) 2011, 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 "package:expect/expect.dart";
+
+class A {
+ A() {
+ NamingTest.count++;
+ }
+ foo(a, b) {
+ Expect.equals(1, a);
+ Expect.equals(2, b);
+ }
+}
+
+class MyException {
+ MyException() {}
+}
+
+class debugger {
+ static const int __PROTO__ = 5;
+
+ int x;
+
+ factory debugger.F() {
+ return new debugger(1);
+ }
+ debugger(x) : this.x = x + 1 {}
+ debugger.C(x) : this.x = x + 2 {}
+ debugger.C$C(x) : this.x = x + 3 {}
+ debugger.C$I(x) : this.x = x + 4 {}
+}
+
+class debugger$C {
+ int x;
+
+ factory debugger$C.F() {
+ return new debugger$C(1);
+ }
+ debugger$C(x) : this.x = x + 5 {}
+ debugger$C.C(x) : this.x = x + 6 {}
+ debugger$C.C$C(x) : this.x = x + 7 {}
+ debugger$C.C$I(x) : this.x = x + 8 {}
+}
+
+class debugger$C$C {
+ int x;
+
+ factory debugger$C$C.F() {
+ return new debugger$C$C(1);
+ }
+ debugger$C$C(x) : this.x = x + 9 {}
+ debugger$C$C.C(x) : this.x = x + 10 {}
+ debugger$C$C.C$C(x) : this.x = x + 11 {}
+ debugger$C$C.C$I(x) : this.x = x + 12 {}
+}
+
+class with$I extends debugger$C {
+ int y;
+
+ factory with$I.F() {
+ return new with$I(1, 2);
+ }
+ with$I(x, y)
+ : this.y = y + 11,
+ super(x) {}
+ with$I.I(x, y)
+ : this.y = y + 12,
+ super.C(x) {}
+ with$I.C(x, y)
+ : this.y = y + 13,
+ super.C$C(x){}
+ with$I.I$C(x, y)
+ : this.y = y + 14,
+ super.C$I(x) {}
+ with$I.C$C(x, y)
+ : this.y = y + 15,
+ super(x) {}
+ with$I.C$C$C(x, y)
+ : this.y = y + 16,
+ super.C(x) {}
+ with$I.$C$I(x, y)
+ :this.y = y + 17,
+ super.C$C(x) {}
+ with$I.$$I$C(x, y)
+ :this.y = y + 18,
+ super.C$I(x) {}
+ with$I.$(x, y)
+ : this.y = y + 19,
+ super(x) {}
+ with$I.$$(x, y)
+ : this.y = y + 20,
+ super.C(x) {}
+}
+
+class with$C extends debugger$C$C {
+ int y;
+
+ factory with$C.F() {
+ return new with$C(1, 2);
+ }
+ with$C(x, y)
+ : this.y = y + 21,
+ super(x) {}
+ with$C.I(x, y)
+ : this.y = y + 22,
+ super.C(x) {}
+ with$C.C(x, y)
+ : this.y = y + 23,
+ super.C$C(x) {}
+ with$C.I$C(x, y)
+ : this.y = y + 24,
+ super.C$I(x) {}
+ with$C.C$C(x, y)
+ : this.y = y + 25,
+ super(x) {}
+ with$C.C$C$C(x, y)
+ : this.y = y + 26,
+ super.C(x) {}
+ with$C.$C$I(x, y)
+ : this.y = y + 27,
+ super.C$C(x) {}
+ with$C.$$I$C(x, y)
+ : this.y = y + 28,
+ super.C$I(x) {}
+ with$C.$(x, y)
+ : this.y = y + 29,
+ super(x) {}
+ with$C.$$(x, y)
+ : this.y = y + 30,
+ super.C(x) {}
+}
+
+class with$I$C extends debugger$C$C {
+ int y;
+
+ factory with$I$C.F() {
+ return new with$I$C(1, 2);
+ }
+ with$I$C(x, y)
+ : this.y = y + 31,
+ super(x) {}
+ with$I$C.I(x, y)
+ : this.y = y + 32,
+ super.C(x) {}
+ with$I$C.C(x, y)
+ : this.y = y + 33,
+ super.C$C(x) {}
+ with$I$C.I$C(x, y)
+ : this.y = y + 34,
+ super.C$I(x) {}
+ with$I$C.C$C(x, y)
+ : this.y = y + 35,
+ super(x) {}
+ with$I$C.C$C$C(x, y)
+ : this.y = y + 36,
+ super.C(x) {}
+ with$I$C.$C$I(x, y)
+ : this.y = y + 37,
+ super.C$C(x) {}
+ with$I$C.$$I$C(x, y)
+ : this.y = y + 38,
+ super.C$I(x) {}
+ with$I$C.$(x, y)
+ : this.y = y + 39,
+ super(x) {}
+ with$I$C.$$(x, y)
+ : this.y = y + 40,
+ super.C(x) {}
+}
+
+class Tata {
+ var prototype;
+
+ Tata() : this.prototype = 0 {}
+
+ __PROTO__$() {
+ return 12;
+ }
+}
+
+class Toto extends Tata {
+ var __PROTO__;
+
+ Toto()
+ : this.__PROTO__ = 0,
+ super() {}
+
+ prototype$() {
+ return 10;
+ }
+
+ titi() {
+ Expect.equals(0, prototype);
+ Expect.equals(0, __PROTO__);
+ prototype = 3;
+ __PROTO__ = 5;
+ Expect.equals(3, prototype);
+ Expect.equals(5, __PROTO__);
+ Expect.equals(10, prototype$());
+ Expect.equals(12, __PROTO__$());
+ Expect.equals(12, this.__PROTO__$());
+ Expect.equals(10, this.prototype$());
+ Expect.equals(12, __PROTO__$());
+ }
+}
+
+class Bug4082360 {
+ int x_ = -1;
+ Bug4082360() {}
+
+ int get x {
+ return x_;
+ }
+
+ void set x(int value) {
+ x_ = value;
+ }
+
+ void indirectSet(int value) {
+ x = value;
+ }
+
+ static void test() {
+ var bug = new Bug4082360();
+ bug.indirectSet(42);
+ Expect.equals(42, bug.x_);
+ Expect.equals(42, bug.x);
+ }
+}
+
+class Hoisting {
+ var f_;
+ Hoisting.negate(var x) {
+ f_ = () {
+ return x;
+ };
+ }
+
+ operator -() {
+ var x = 3;
+ return () {
+ return x + 1;
+ };
+ }
+
+ operator [](x) {
+ return () {
+ return x + 3;
+ };
+ }
+
+ static void test() {
+ var h = new Hoisting.negate(1);
+ Expect.equals(1, (h.f_)());
+ var f = -h;
+ Expect.equals(4, f());
+ Expect.equals(7, h[4]());
+ }
+}
+
+// It is not possible to make sure that the backend uses the hardcoded names
+// we are testing against. This test might therefore become rapidly out of date
+class NamingTest {
+ static int count = -1;
+
+ static testExceptionNaming() {
+ // Exceptions use a hardcoded "e" as exception name. If the namer works
+ // correctly then it will be renamed in case of clashes.
+ var e = 3;
+ var caught = 0;
+ try {
+ throw new MyException();
+ } catch (exc) {
+ try {
+ throw new MyException();
+ } catch (exc2) {
+ caught++;
+ }
+ Expect.equals(1, caught);
+ caught++;
+ }
+ Expect.equals(2, caught);
+ Expect.equals(3, e);
+ }
+
+ static testTmpNaming() {
+ Expect.equals(0, count);
+ var tmp$0 = 1;
+ var tmp$1 = 2;
+ new A().foo(tmp$0, tmp$1++);
+ Expect.equals(1, count);
+ Expect.equals(3, tmp$1);
+ }
+
+ static testScopeNaming() {
+ // Alias scopes use a hardcoded "dartc_scp$<depth>" as names.
+ var dartc_scp$1 = 5;
+ var foo = 8;
+ var f = () {
+ var dartc_scp$1 = 15;
+ return foo + dartc_scp$1;
+ };
+ Expect.equals(5, dartc_scp$1);
+ Expect.equals(23, f());
+ }
+
+ static testGlobalMangling() {
+ var x;
+ x = new debugger(0);
+ Expect.equals(1, x.x);
+ x = new debugger.C(0);
+ Expect.equals(2, x.x);
+ x = new debugger.C$C(0);
+ Expect.equals(3, x.x);
+ x = new debugger.C$I(0);
+ Expect.equals(4, x.x);
+ x = new debugger$C(0);
+ Expect.equals(5, x.x);
+ x = new debugger$C.C(0);
+ Expect.equals(6, x.x);
+ x = new debugger$C.C$C(0);
+ Expect.equals(7, x.x);
+ x = new debugger$C.C$I(0);
+ Expect.equals(8, x.x);
+ x = new debugger$C$C(0);
+ Expect.equals(9, x.x);
+ x = new debugger$C$C.C(0);
+ Expect.equals(10, x.x);
+ x = new debugger$C$C.C$C(0);
+ Expect.equals(11, x.x);
+ x = new debugger$C$C.C$I(0);
+ Expect.equals(12, x.x);
+ x = new with$I(0, 0);
+ Expect.equals(5, x.x);
+ Expect.equals(11, x.y);
+ x = new with$I.I(0, 0);
+ Expect.equals(6, x.x);
+ Expect.equals(12, x.y);
+ x = new with$I.C(0, 0);
+ Expect.equals(7, x.x);
+ Expect.equals(13, x.y);
+ x = new with$I.I$C(0, 0);
+ Expect.equals(8, x.x);
+ Expect.equals(14, x.y);
+ x = new with$I.C$C(0, 0);
+ Expect.equals(5, x.x);
+ Expect.equals(15, x.y);
+ x = new with$I.C$C$C(0, 0);
+ Expect.equals(6, x.x);
+ Expect.equals(16, x.y);
+ x = new with$I.$C$I(0, 0);
+ Expect.equals(7, x.x);
+ Expect.equals(17, x.y);
+ x = new with$I.$$I$C(0, 0);
+ Expect.equals(8, x.x);
+ Expect.equals(18, x.y);
+ x = new with$I.$(0, 0);
+ Expect.equals(5, x.x);
+ Expect.equals(19, x.y);
+ x = new with$I.$$(0, 0);
+ Expect.equals(6, x.x);
+ Expect.equals(20, x.y);
+ x = new with$C(0, 0);
+ Expect.equals(9, x.x);
+ Expect.equals(21, x.y);
+ x = new with$C.I(0, 0);
+ Expect.equals(10, x.x);
+ Expect.equals(22, x.y);
+ x = new with$C.C(0, 0);
+ Expect.equals(11, x.x);
+ Expect.equals(23, x.y);
+ x = new with$C.I$C(0, 0);
+ Expect.equals(12, x.x);
+ Expect.equals(24, x.y);
+ x = new with$C.C$C(0, 0);
+ Expect.equals(9, x.x);
+ Expect.equals(25, x.y);
+ x = new with$C.C$C$C(0, 0);
+ Expect.equals(10, x.x);
+ Expect.equals(26, x.y);
+ x = new with$C.$C$I(0, 0);
+ Expect.equals(11, x.x);
+ Expect.equals(27, x.y);
+ x = new with$C.$$I$C(0, 0);
+ Expect.equals(12, x.x);
+ Expect.equals(28, x.y);
+ x = new with$C.$(0, 0);
+ Expect.equals(9, x.x);
+ Expect.equals(29, x.y);
+ x = new with$C.$$(0, 0);
+ Expect.equals(10, x.x);
+ Expect.equals(30, x.y);
+ x = new with$I$C(0, 0);
+ Expect.equals(9, x.x);
+ Expect.equals(31, x.y);
+ x = new with$I$C.I(0, 0);
+ Expect.equals(10, x.x);
+ Expect.equals(32, x.y);
+ x = new with$I$C.C(0, 0);
+ Expect.equals(11, x.x);
+ Expect.equals(33, x.y);
+ x = new with$I$C.I$C(0, 0);
+ Expect.equals(12, x.x);
+ Expect.equals(34, x.y);
+ x = new with$I$C.C$C(0, 0);
+ Expect.equals(9, x.x);
+ Expect.equals(35, x.y);
+ x = new with$I$C.C$C$C(0, 0);
+ Expect.equals(10, x.x);
+ Expect.equals(36, x.y);
+ x = new with$I$C.$C$I(0, 0);
+ Expect.equals(11, x.x);
+ Expect.equals(37, x.y);
+ x = new with$I$C.$$I$C(0, 0);
+ Expect.equals(12, x.x);
+ Expect.equals(38, x.y);
+ x = new with$I$C.$(0, 0);
+ Expect.equals(9, x.x);
+ Expect.equals(39, x.y);
+ x = new with$I$C.$$(0, 0);
+ Expect.equals(10, x.x);
+ Expect.equals(40, x.y);
+ }
+
+ static void testMemberMangling() {
+ Expect.equals(5, debugger.__PROTO__);
+ new Toto().titi();
+ }
+
+ static void testFactoryMangling() {
+ var o = new debugger.F() as dynamic;
+ Expect.equals(2, o.x);
+ o = new debugger$C.F();
+ Expect.equals(6, o.x);
+ o = new debugger$C$C.F();
+ Expect.equals(10, o.x);
+ o = new with$I.F();
+ Expect.equals(6, o.x);
+ Expect.equals(13, o.y);
+ o = new with$C.F();
+ Expect.equals(10, o.x);
+ Expect.equals(23, o.y);
+ o = new with$I$C.F();
+ Expect.equals(10, o.x);
+ Expect.equals(33, o.y);
+ }
+
+ static testFunctionParameters() {
+ a(eval) {
+ return eval;
+ }
+
+ b(arguments) {
+ return arguments;
+ }
+
+ Expect.equals(10, a(10));
+ Expect.equals(10, b(10));
+ }
+
+ static testPseudoTokens() {
+ var EOS = 400;
+ var ILLEGAL = 99;
+ Expect.equals(499, EOS + ILLEGAL);
+ }
+
+ static testDollar() {
+ Expect.equals(123, $(123).wrapped);
+ var x = new Object(), y = new Object();
+ Expect.identical(x, $(x).wrapped);
+ Expect.identical(y, $(x).$add(y));
+ Expect.identical(x, $(x).$negate());
+ Expect.equals(123, $(x) + x);
+ Expect.equals(444, -$(x));
+ }
+
+ static void testMain() {
+ count = 0;
+ testExceptionNaming();
+ testTmpNaming();
+ testScopeNaming();
+ testGlobalMangling();
+ testMemberMangling();
+ testFactoryMangling();
+ testFunctionParameters();
+ Bug4082360.test();
+ Hoisting.test();
+ testPseudoTokens();
+ testDollar();
+ }
+}
+
+// Test that the generated JS names don't conflict with "$"
+class DartQuery {
+ Object wrapped;
+ DartQuery(this.wrapped);
+
+ $add(Object other) => other;
+ $negate() => wrapped;
+
+ operator +(Object other) => 123;
+ operator -() => 444;
+}
+
+$add(Object first, Object second) => second;
+DartQuery $(Object obj) => new DartQuery(obj);
+
+// Ensure we don't have false positive.
+class Naming2Test {
+ Naming2Test() {}
+ int get foo {
+ return 1;
+ }
+
+ set foo(x) {}
+
+ static void main(args) {
+ var a = new Naming2Test() as dynamic;
+ Expect.throwsNoSuchMethodError(() => a.foo(2));
+ }
+}
+
+main() {
+ NamingTest.testMain();
+ Naming2Test.main(null);
+}
diff --git a/tests/language/identity/closure2_test.dart b/tests/language/identity/closure2_test.dart
new file mode 100644
index 0000000..5b9621e
--- /dev/null
+++ b/tests/language/identity/closure2_test.dart
@@ -0,0 +1,20 @@
+// Copyright (c) 2012, 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 "package:expect/expect.dart";
+
+var myIdentical = identical;
+
+main() {
+ // Mint (2^63).
+ // TODO(rnystrom): Figure out how to change this to work on the web.
+ Expect.isTrue(myIdentical(0x8000000000000000, 0x8000000000000000));
+ Expect.isFalse(myIdentical(0x8000000000000000, 0x8000000000000001));
+
+ // Different types.
+ Expect.isFalse(myIdentical(42, 42.0));
+
+ // NaN handling.
+ Expect.isTrue(myIdentical(double.nan, double.nan));
+}
diff --git a/tests/language/identity/closure_test.dart b/tests/language/identity/closure_test.dart
new file mode 100644
index 0000000..62f47d0
--- /dev/null
+++ b/tests/language/identity/closure_test.dart
@@ -0,0 +1,44 @@
+// Copyright (c) 2012, 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 "package:expect/expect.dart";
+
+var myIdentical = identical;
+
+class Point {
+ num x, y;
+ Point(this.x, this.y);
+}
+
+main() {
+ // int.
+ Expect.isTrue(myIdentical(42, 42));
+ Expect.isFalse(myIdentical(42, 41));
+
+ // double.
+ Expect.isTrue(myIdentical(42.0, 42.0));
+ Expect.isFalse(myIdentical(42.0, 41.0));
+
+ // Mint (2^45).
+ Expect.isTrue(myIdentical(35184372088832, 35184372088832));
+ Expect.isFalse(myIdentical(35184372088832, 35184372088831));
+
+ // Different types.
+ Expect.isFalse(myIdentical("hello", 41));
+
+ // Points.
+ var p = new Point(1, 1);
+ var q = new Point(1, 1);
+ Expect.isFalse(myIdentical(p, q));
+
+ // Strings.
+ var a = "hello";
+ var b = "hello";
+ // Identical strings are coalesced into single instances.
+ Expect.isTrue(myIdentical(a, b));
+
+ // Null handling.
+ Expect.isFalse(myIdentical(42, null));
+ Expect.isTrue(myIdentical(null, null));
+}
diff --git a/tests/language/identity/const_test.dart b/tests/language/identity/const_test.dart
new file mode 100644
index 0000000..9c62b06
--- /dev/null
+++ b/tests/language/identity/const_test.dart
@@ -0,0 +1,39 @@
+// Copyright (c) 2014, 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 'package:expect/expect.dart';
+
+f() {}
+const g = 1;
+
+const identical_ff = identical(f, f);
+const identical_fg = identical(f, g);
+const identical_gf = identical(g, f);
+const identical_gg = identical(g, g);
+
+// Verify proper compile time computation of identical()
+const a = const {
+ identical_ff: 0, //# 01: compile-time error
+ identical_gg: 0, //# 02: compile-time error
+ true: 0
+};
+
+const b = const {
+ identical_fg: 0, //# 03: compile-time error
+ identical_gf: 0, //# 04: compile-time error
+ false: 0
+};
+
+use(x) => x;
+
+main() {
+ use(a);
+ use(b);
+
+ // Verify proper run time computation of identical()
+ Expect.isTrue(identical_ff); //# 05: ok
+ Expect.isTrue(identical_gg); //# 06: ok
+ Expect.isFalse(identical_fg); //# 07: ok
+ Expect.isFalse(identical_gf); //# 08: ok
+}
diff --git a/tests/language/identity/identical_test.dart b/tests/language/identity/identical_test.dart
new file mode 100644
index 0000000..244f814
--- /dev/null
+++ b/tests/language/identity/identical_test.dart
@@ -0,0 +1,39 @@
+// Copyright (c) 2013, 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 efficient and correct implementation of !identical(a, b).
+// VMOptions=--optimization-counter-threshold=10 --no-background-compilation
+
+import 'package:expect/expect.dart';
+
+notIdenticalTest1(a) {
+ if (!identical("ho", a)) {
+ return 2;
+ } else {
+ return 1;
+ }
+}
+
+notIdenticalTest2(a) {
+ var x = identical("ho", a);
+ if (!x) {
+ Expect.equals(false, x);
+ return x;
+ } else {
+ Expect.equals(true, x);
+ return 1;
+ }
+}
+
+notIdenticalTest3(a) {
+ var x = identical("ho", a);
+ return !x;
+}
+
+main() {
+ for (int i = 0; i < 20; i++) {
+ Expect.equals(1, notIdenticalTest1("ho"));
+ Expect.equals(1, notIdenticalTest2("ho"));
+ Expect.equals(false, notIdenticalTest3("ho"));
+ }
+}
diff --git a/tests/language/identity/mint_identical_test.dart b/tests/language/identity/mint_identical_test.dart
new file mode 100644
index 0000000..a499a9e
--- /dev/null
+++ b/tests/language/identity/mint_identical_test.dart
@@ -0,0 +1,17 @@
+// 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 "package:expect/expect.dart";
+
+main() {
+ // Smis on 64-bit.
+ Expect.isTrue(identical(2305843009213693952, 2305843009213693952));
+ Expect.isTrue(identical(2305843009213693953, 2305843009213693953));
+ Expect.isTrue(identical(2305843009213693954, 2305843009213693954));
+ Expect.isTrue(identical(4611686018427387903, 4611686018427387903));
+
+ // Mints on 64-bit.
+ Expect.isTrue(identical(4611686018427387904, 4611686018427387904));
+ Expect.isTrue(identical(4611686018427387905, 4611686018427387905));
+}
diff --git a/tests/language/identity/nan_identical_test.dart b/tests/language/identity/nan_identical_test.dart
new file mode 100644
index 0000000..83fa7e4
--- /dev/null
+++ b/tests/language/identity/nan_identical_test.dart
@@ -0,0 +1,51 @@
+// Copyright (c) 2015, 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 a new statement by itself.
+// VMOptions=--optimization-counter-threshold=4 --no-use-osr
+
+import 'dart:typed_data';
+
+import "package:expect/expect.dart";
+
+double uint64toDouble(int i) {
+ var buffer = new Uint8List(8).buffer;
+ var bdata = new ByteData.view(buffer);
+ bdata.setUint64(0, i);
+ return bdata.getFloat64(0);
+}
+
+double createOtherNAN() {
+ return uint64toDouble((1 << 64) - 2);
+}
+
+main() {
+ var otherNAN = createOtherNAN();
+ for (int i = 0; i < 100; i++) {
+ Expect.isFalse(checkIdentical(double.nan, -double.nan));
+ Expect.isTrue(checkIdentical(double.nan, double.nan));
+ Expect.isTrue(checkIdentical(-double.nan, -double.nan));
+
+ Expect.isFalse(checkIdentical(otherNAN, -otherNAN));
+ Expect.isTrue(checkIdentical(otherNAN, otherNAN));
+ Expect.isTrue(checkIdentical(-otherNAN, -otherNAN));
+
+ var a = otherNAN;
+ var b = double.nan;
+ Expect.isFalse(checkIdentical(a, b));
+ Expect.isFalse(checkIdentical(-a, -b));
+ Expect.isFalse(checkIdentical(-a, b));
+ Expect.isFalse(checkIdentical(a, -b));
+
+ a = -a;
+ Expect.isFalse(checkIdentical(a, b));
+ Expect.isFalse(checkIdentical(-a, -b));
+ Expect.isFalse(checkIdentical(-a, b));
+ Expect.isFalse(checkIdentical(a, -b));
+
+ Expect.isTrue(checkIdentical(-(-a), a));
+ Expect.isTrue(checkIdentical(-(-b), b));
+ }
+}
+
+checkIdentical(a, b) => identical(a, b);
diff --git a/tests/language/identity/strict_equal_test.dart b/tests/language/identity/strict_equal_test.dart
new file mode 100644
index 0000000..31c31cd
--- /dev/null
+++ b/tests/language/identity/strict_equal_test.dart
@@ -0,0 +1,128 @@
+// Copyright (c) 2011, 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.
+// VMOptions=--optimization-counter-threshold=10
+
+import "package:expect/expect.dart";
+
+main() {
+ for (int i = 0; i < 20; i++) {
+ Expect.isFalse(test1(5));
+ Expect.isTrue(test1(3));
+
+ Expect.isTrue(test2(5));
+ Expect.isFalse(test2(3));
+
+ Expect.isTrue(test2r(5));
+ Expect.isFalse(test2r(3));
+
+ Expect.isTrue(test3());
+
+ Expect.equals(2, test4(5));
+ Expect.equals(1, test4(3));
+
+ Expect.equals(1, test5(5));
+ Expect.equals(2, test5(3));
+
+ Expect.equals(1, test6());
+
+ Expect.isFalse(test7());
+ Expect.equals(2, test8());
+
+ Expect.isFalse(test9(2));
+ Expect.isFalse(test9r(2));
+ Expect.isTrue(test9(0));
+ Expect.isTrue(test9r(0));
+
+ Expect.isFalse(test10(0));
+ Expect.isFalse(test10r(0));
+ Expect.isTrue(test10(2));
+ Expect.isTrue(test10r(2));
+
+ test11(i);
+ }
+}
+
+test1(a) {
+ return identical(a, 3);
+}
+
+test2(a) {
+ return !identical(a, 3);
+}
+
+test2r(a) {
+ return !identical(3, a);
+}
+
+test3() {
+ return identical(get5(), 5);
+}
+
+test4(a) {
+ if (identical(a, 3)) {
+ return 1;
+ } else {
+ return 2;
+ }
+}
+
+test5(a) {
+ if (!identical(a, 3)) {
+ return 1;
+ } else {
+ return 2;
+ }
+}
+
+test6() {
+ if (identical(get5(), 5)) {
+ return 1;
+ } else {
+ return 2;
+ }
+}
+
+get5() {
+ return 5;
+}
+
+test7() {
+ return null != null;
+}
+
+test8() {
+ if (null != null) {
+ return 1;
+ } else {
+ return 2;
+ }
+}
+
+test9(a) {
+ return identical(a, 0);
+}
+
+test9r(a) {
+ return identical(0, a);
+}
+
+test10(a) {
+ return !identical(a, 0);
+}
+
+test10r(a) {
+ return !identical(0, a);
+}
+
+test11(a) {
+ if (identical(a, 0)) {
+ Expect.isTrue(identical(0, a));
+ Expect.isFalse(!identical(a, 0));
+ Expect.isFalse(!identical(0, a));
+ } else {
+ Expect.isFalse(identical(0, a));
+ Expect.isTrue(!identical(a, 0));
+ Expect.isTrue(!identical(0, a));
+ }
+}
diff --git a/tests/language/if/and_test.dart b/tests/language/if/and_test.dart
new file mode 100644
index 0000000..55c28da
--- /dev/null
+++ b/tests/language/if/and_test.dart
@@ -0,0 +1,33 @@
+// Copyright (c) 2012, 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 "package:expect/expect.dart";
+
+// The "if (negative) res2 |= 3" below can be emitted as negative && (res2 |= 3)
+// in JavaScript. Dart2js produced the wrong output.
+
+_shiftRight(x, y) => x;
+int64_bits(x) => x;
+
+class A {
+ opshr(int n, a2) {
+ int res2;
+ bool negative = a2 == 496;
+
+ res2 = _shiftRight(a2, n);
+ if (negative) {
+ res2 |= 3;
+ }
+ return int64_bits(res2);
+ }
+}
+
+main() {
+ var a = new A();
+ var t;
+ for (int i = 0; i < 3; i++) {
+ t = a.opshr(99, 496);
+ }
+ Expect.equals(499, t);
+}
diff --git a/tests/language/if/dangling_else_test.dart b/tests/language/if/dangling_else_test.dart
new file mode 100644
index 0000000..4790e57
--- /dev/null
+++ b/tests/language/if/dangling_else_test.dart
@@ -0,0 +1,84 @@
+// Copyright (c) 2012, 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.
+// Tests dangling else. The VM should not have any problems, but dart2js or
+// dart2dart could get this wrong.
+
+import "package:expect/expect.dart";
+
+nestedIf1(notTrue) {
+ if (notTrue) return 'bad input';
+ if (notTrue) {
+ if (notTrue) {
+ return 'bad';
+ }
+ } else {
+ return 'good';
+ }
+ return 'bug';
+}
+
+nestedIf2(notTrue) {
+ if (notTrue) return 'bad input';
+ if (notTrue) {
+ if (notTrue) {
+ return 'bad';
+ } else {
+ if (notTrue) {
+ return 'bad';
+ }
+ }
+ } else {
+ return 'good';
+ }
+ return 'bug';
+}
+
+nestedWhile(notTrue) {
+ if (notTrue) return 'bad input';
+ if (notTrue) {
+ while (notTrue) {
+ if (notTrue) {
+ return 'bad';
+ }
+ }
+ } else {
+ return 'good';
+ }
+ return 'bug';
+}
+
+nestedFor(notTrue) {
+ if (notTrue) return 'bad input';
+ if (notTrue) {
+ for (int i = 0; i < 3; i++) {
+ if (i == 0) {
+ return 'bad';
+ }
+ }
+ } else {
+ return 'good';
+ }
+ return 'bug';
+}
+
+nestedLabeledStatement(notTrue) {
+ if (notTrue) return 'bad input';
+ if (notTrue) {
+ label:
+ if (notTrue) {
+ break label;
+ }
+ } else {
+ return 'good';
+ }
+ return 'bug';
+}
+
+main() {
+ Expect.equals('good', nestedIf1(false));
+ Expect.equals('good', nestedIf2(false));
+ Expect.equals('good', nestedWhile(false));
+ Expect.equals('good', nestedFor(false));
+ Expect.equals('good', nestedLabeledStatement(false));
+}
diff --git a/tests/language/if/if_test.dart b/tests/language/if/if_test.dart
new file mode 100644
index 0000000..86b72029
--- /dev/null
+++ b/tests/language/if/if_test.dart
@@ -0,0 +1,95 @@
+// Copyright (c) 2011, 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.
+// Dart test program for testing if statement.
+
+import "package:expect/expect.dart";
+
+class Helper {
+ static int f0(bool b) {
+ if (b) ;
+ if (b)
+ ;
+ else
+ ;
+ if (b) {}
+ if (b) {} else {}
+ return 0;
+ }
+
+ static int f1(bool b) {
+ if (b)
+ return 1;
+ else
+ return 2;
+ }
+
+ static int f2(bool b) {
+ if (b) {
+ return 1;
+ } else {
+ return 2;
+ }
+ }
+
+ static int f3(bool b) {
+ if (b) return 1;
+ return 2;
+ }
+
+ static int f4(bool b) {
+ if (b) {
+ return 1;
+ }
+ return 2;
+ }
+
+ static int f5(bool b) {
+ if (!b) {
+ return 1;
+ }
+ return 2;
+ }
+
+ static int f6(bool a, bool b) {
+ if (a || b) {
+ return 1;
+ }
+ return 2;
+ }
+
+ static int f7(bool a, bool b) {
+ if (a && b) {
+ return 1;
+ }
+ return 2;
+ }
+}
+
+class IfTest {
+ static testMain() {
+ Expect.equals(0, Helper.f0(true));
+ Expect.equals(1, Helper.f1(true));
+ Expect.equals(2, Helper.f1(false));
+ Expect.equals(1, Helper.f2(true));
+ Expect.equals(2, Helper.f2(false));
+ Expect.equals(1, Helper.f3(true));
+ Expect.equals(2, Helper.f3(false));
+ Expect.equals(1, Helper.f4(true));
+ Expect.equals(2, Helper.f4(false));
+ Expect.equals(2, Helper.f5(true));
+ Expect.equals(1, Helper.f5(false));
+ Expect.equals(1, Helper.f6(true, true));
+ Expect.equals(1, Helper.f6(true, false));
+ Expect.equals(1, Helper.f6(false, true));
+ Expect.equals(2, Helper.f6(false, false));
+ Expect.equals(1, Helper.f7(true, true));
+ Expect.equals(2, Helper.f7(true, false));
+ Expect.equals(2, Helper.f7(false, true));
+ Expect.equals(2, Helper.f7(false, false));
+ }
+}
+
+main() {
+ IfTest.testMain();
+}
diff --git a/tests/language/if/nested_if_test.dart b/tests/language/if/nested_if_test.dart
new file mode 100644
index 0000000..41c7d34
--- /dev/null
+++ b/tests/language/if/nested_if_test.dart
@@ -0,0 +1,35 @@
+// Copyright (c) 2011, 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.
+// Dart2Js had problems with nested ifs inside loops.
+
+import "package:expect/expect.dart";
+
+foo(x, a) {
+ /*---------------------------------------------*/
+ /*---------------------------------------------*/
+ /*---------------------------------------------*/
+ /*---------------------------------------------*/
+ /*---------------------------------------------*/
+ /*---------------------------------------------*/
+ /*------- Avoid inlining ----------------------*/
+ /*---------------------------------------------*/
+ /*---------------------------------------------*/
+ /*---------------------------------------------*/
+ /*---------------------------------------------*/
+ /*---------------------------------------------*/
+ /*---------------------------------------------*/
+ for (int i = 0; i < 10; i++) {
+ if (x) {
+ if (!x) a = [];
+ a.add(3);
+ }
+ }
+ return a;
+}
+
+main() {
+ var a = foo(true, []);
+ Expect.equals(10, a.length);
+ Expect.equals(3, a[0]);
+}
diff --git a/tests/language/if_null/assignment_behavior_runtime_10_test.dart b/tests/language/if_null/assignment_behavior_runtime_10_test.dart
new file mode 100644
index 0000000..6fba05c
--- /dev/null
+++ b/tests/language/if_null/assignment_behavior_runtime_10_test.dart
@@ -0,0 +1,209 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// Copyright (c) 2015, 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.
+
+// Verify semantics of the ??= operator, including order of operations, by
+// keeping track of the operations performed.
+
+import "package:expect/expect.dart";
+import "assignment_helper.dart" as h;
+
+bad() {
+ Expect.fail('Should not be executed');
+}
+
+var xGetValue = null;
+
+get x {
+ h.operations.add('x');
+ var tmp = xGetValue;
+ xGetValue = null;
+ return tmp;
+}
+
+void set x(value) {
+ h.operations.add('x=$value');
+}
+
+var yGetValue = null;
+
+get y {
+ h.operations.add('y');
+ var tmp = yGetValue;
+ yGetValue = null;
+ return tmp;
+}
+
+void set y(value) {
+ h.operations.add('y=$value');
+}
+
+var zGetValue = null;
+
+get z {
+ h.operations.add('z');
+ var tmp = zGetValue;
+ zGetValue = null;
+ return tmp;
+}
+
+void set z(value) {
+ h.operations.add('z=$value');
+}
+
+var fValue = null;
+
+f() {
+ h.operations.add('f()');
+ var tmp = fValue;
+ fValue = null;
+ return tmp;
+}
+
+void check(expectedValue, f(), expectedOperations) {
+ Expect.equals(expectedValue, f());
+ Expect.listEquals(expectedOperations, h.operations);
+ h.operations = [];
+}
+
+class C {
+ final String s;
+
+ C(this.s);
+
+ @override
+ String toString() => s;
+
+ static var xGetValue = null;
+
+ static get x {
+ h.operations.add('C.x');
+ var tmp = xGetValue;
+ xGetValue = null;
+ return tmp;
+ }
+
+ static void set x(value) {
+ h.operations.add('C.x=$value');
+ }
+
+ var vGetValue = null;
+
+ get v {
+ h.operations.add('$s.v');
+ var tmp = vGetValue;
+ vGetValue = null;
+ return tmp;
+ }
+
+ void set v(value) {
+ h.operations.add('$s.v=$value');
+ }
+
+ var indexGetValue = null;
+
+ operator [](index) {
+ h.operations.add('$s[$index]');
+ var tmp = indexGetValue;
+ indexGetValue = null;
+ return tmp;
+ }
+
+ void operator []=(index, value) {
+ h.operations.add('$s[$index]=$value');
+ }
+
+ final finalOne = 1;
+ final finalNull = null;
+
+ void instanceTest() {
+ // v ??= e is equivalent to ((x) => x == null ? v = e : x)(v)
+
+
+
+ yGetValue = 1;
+ }
+}
+
+class D extends C {
+ D(String s) : super(s);
+
+ get v => bad();
+
+ void set v(value) {
+ bad();
+ }
+
+ void derivedInstanceTest() {
+ // super.v ??= e is equivalent to
+ // ((x) => x == null ? super.v = e : x)(super.v)
+
+
+ }
+}
+
+main() {
+ // Make sure the "none" test fails if "??=" is not implemented. This makes
+ // status files easier to maintain.
+ var _;
+ _ ??= null;
+
+ new C('c').instanceTest();
+ new D('d').derivedInstanceTest();
+
+ // v ??= e is equivalent to ((x) => x == null ? v = e : x)(v)
+
+
+
+
+
+ { var l; yGetValue = 1; check(1, () => l ??= y, ['y']); Expect.equals(1, l); }
+
+
+
+
+
+ // C.v ??= e is equivalent to ((x) => x == null ? C.v = e : x)(C.v)
+
+
+
+
+
+ // e1.v ??= e2 is equivalent to
+ // ((x) => ((y) => y == null ? x.v = e2 : y)(x.v))(e1)
+
+
+
+
+
+
+
+
+
+ // e1[e2] ??= e3 is equivalent to
+ // ((a, i) => ((x) => x == null ? a[i] = e3 : x)(a[i]))(e1, e2)
+
+
+
+
+
+ // e1?.v ??= e2 is equivalent to ((x) => x == null ? null : x.v ??= e2)(e1).
+
+
+
+
+
+
+ // C?.v ??= e2 is equivalent to C.v ??= e2.
+
+
+
+
+
+
+
+
+}
diff --git a/tests/language/if_null/assignment_behavior_runtime_13_test.dart b/tests/language/if_null/assignment_behavior_runtime_13_test.dart
new file mode 100644
index 0000000..e168581
--- /dev/null
+++ b/tests/language/if_null/assignment_behavior_runtime_13_test.dart
@@ -0,0 +1,209 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// Copyright (c) 2015, 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.
+
+// Verify semantics of the ??= operator, including order of operations, by
+// keeping track of the operations performed.
+
+import "package:expect/expect.dart";
+import "assignment_helper.dart" as h;
+
+bad() {
+ Expect.fail('Should not be executed');
+}
+
+var xGetValue = null;
+
+get x {
+ h.operations.add('x');
+ var tmp = xGetValue;
+ xGetValue = null;
+ return tmp;
+}
+
+void set x(value) {
+ h.operations.add('x=$value');
+}
+
+var yGetValue = null;
+
+get y {
+ h.operations.add('y');
+ var tmp = yGetValue;
+ yGetValue = null;
+ return tmp;
+}
+
+void set y(value) {
+ h.operations.add('y=$value');
+}
+
+var zGetValue = null;
+
+get z {
+ h.operations.add('z');
+ var tmp = zGetValue;
+ zGetValue = null;
+ return tmp;
+}
+
+void set z(value) {
+ h.operations.add('z=$value');
+}
+
+var fValue = null;
+
+f() {
+ h.operations.add('f()');
+ var tmp = fValue;
+ fValue = null;
+ return tmp;
+}
+
+void check(expectedValue, f(), expectedOperations) {
+ Expect.equals(expectedValue, f());
+ Expect.listEquals(expectedOperations, h.operations);
+ h.operations = [];
+}
+
+class C {
+ final String s;
+
+ C(this.s);
+
+ @override
+ String toString() => s;
+
+ static var xGetValue = null;
+
+ static get x {
+ h.operations.add('C.x');
+ var tmp = xGetValue;
+ xGetValue = null;
+ return tmp;
+ }
+
+ static void set x(value) {
+ h.operations.add('C.x=$value');
+ }
+
+ var vGetValue = null;
+
+ get v {
+ h.operations.add('$s.v');
+ var tmp = vGetValue;
+ vGetValue = null;
+ return tmp;
+ }
+
+ void set v(value) {
+ h.operations.add('$s.v=$value');
+ }
+
+ var indexGetValue = null;
+
+ operator [](index) {
+ h.operations.add('$s[$index]');
+ var tmp = indexGetValue;
+ indexGetValue = null;
+ return tmp;
+ }
+
+ void operator []=(index, value) {
+ h.operations.add('$s[$index]=$value');
+ }
+
+ final finalOne = 1;
+ final finalNull = null;
+
+ void instanceTest() {
+ // v ??= e is equivalent to ((x) => x == null ? v = e : x)(v)
+
+
+
+ yGetValue = 1;
+ }
+}
+
+class D extends C {
+ D(String s) : super(s);
+
+ get v => bad();
+
+ void set v(value) {
+ bad();
+ }
+
+ void derivedInstanceTest() {
+ // super.v ??= e is equivalent to
+ // ((x) => x == null ? super.v = e : x)(super.v)
+
+
+ }
+}
+
+main() {
+ // Make sure the "none" test fails if "??=" is not implemented. This makes
+ // status files easier to maintain.
+ var _;
+ _ ??= null;
+
+ new C('c').instanceTest();
+ new D('d').derivedInstanceTest();
+
+ // v ??= e is equivalent to ((x) => x == null ? v = e : x)(v)
+
+
+
+
+
+
+
+
+
+
+
+ // C.v ??= e is equivalent to ((x) => x == null ? C.v = e : x)(C.v)
+ C.xGetValue = 1; check(1, () => C.x ??= bad(), ['C.x']);
+
+
+
+
+ // e1.v ??= e2 is equivalent to
+ // ((x) => ((y) => y == null ? x.v = e2 : y)(x.v))(e1)
+
+
+
+
+
+
+
+
+
+ // e1[e2] ??= e3 is equivalent to
+ // ((a, i) => ((x) => x == null ? a[i] = e3 : x)(a[i]))(e1, e2)
+
+
+
+
+
+ // e1?.v ??= e2 is equivalent to ((x) => x == null ? null : x.v ??= e2)(e1).
+
+
+
+
+
+
+ // C?.v ??= e2 is equivalent to C.v ??= e2.
+
+
+
+
+
+
+
+
+}
diff --git a/tests/language/if_null/assignment_behavior_runtime_14_test.dart b/tests/language/if_null/assignment_behavior_runtime_14_test.dart
new file mode 100644
index 0000000..17a5c90
--- /dev/null
+++ b/tests/language/if_null/assignment_behavior_runtime_14_test.dart
@@ -0,0 +1,209 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// Copyright (c) 2015, 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.
+
+// Verify semantics of the ??= operator, including order of operations, by
+// keeping track of the operations performed.
+
+import "package:expect/expect.dart";
+import "assignment_helper.dart" as h;
+
+bad() {
+ Expect.fail('Should not be executed');
+}
+
+var xGetValue = null;
+
+get x {
+ h.operations.add('x');
+ var tmp = xGetValue;
+ xGetValue = null;
+ return tmp;
+}
+
+void set x(value) {
+ h.operations.add('x=$value');
+}
+
+var yGetValue = null;
+
+get y {
+ h.operations.add('y');
+ var tmp = yGetValue;
+ yGetValue = null;
+ return tmp;
+}
+
+void set y(value) {
+ h.operations.add('y=$value');
+}
+
+var zGetValue = null;
+
+get z {
+ h.operations.add('z');
+ var tmp = zGetValue;
+ zGetValue = null;
+ return tmp;
+}
+
+void set z(value) {
+ h.operations.add('z=$value');
+}
+
+var fValue = null;
+
+f() {
+ h.operations.add('f()');
+ var tmp = fValue;
+ fValue = null;
+ return tmp;
+}
+
+void check(expectedValue, f(), expectedOperations) {
+ Expect.equals(expectedValue, f());
+ Expect.listEquals(expectedOperations, h.operations);
+ h.operations = [];
+}
+
+class C {
+ final String s;
+
+ C(this.s);
+
+ @override
+ String toString() => s;
+
+ static var xGetValue = null;
+
+ static get x {
+ h.operations.add('C.x');
+ var tmp = xGetValue;
+ xGetValue = null;
+ return tmp;
+ }
+
+ static void set x(value) {
+ h.operations.add('C.x=$value');
+ }
+
+ var vGetValue = null;
+
+ get v {
+ h.operations.add('$s.v');
+ var tmp = vGetValue;
+ vGetValue = null;
+ return tmp;
+ }
+
+ void set v(value) {
+ h.operations.add('$s.v=$value');
+ }
+
+ var indexGetValue = null;
+
+ operator [](index) {
+ h.operations.add('$s[$index]');
+ var tmp = indexGetValue;
+ indexGetValue = null;
+ return tmp;
+ }
+
+ void operator []=(index, value) {
+ h.operations.add('$s[$index]=$value');
+ }
+
+ final finalOne = 1;
+ final finalNull = null;
+
+ void instanceTest() {
+ // v ??= e is equivalent to ((x) => x == null ? v = e : x)(v)
+
+
+
+ yGetValue = 1;
+ }
+}
+
+class D extends C {
+ D(String s) : super(s);
+
+ get v => bad();
+
+ void set v(value) {
+ bad();
+ }
+
+ void derivedInstanceTest() {
+ // super.v ??= e is equivalent to
+ // ((x) => x == null ? super.v = e : x)(super.v)
+
+
+ }
+}
+
+main() {
+ // Make sure the "none" test fails if "??=" is not implemented. This makes
+ // status files easier to maintain.
+ var _;
+ _ ??= null;
+
+ new C('c').instanceTest();
+ new D('d').derivedInstanceTest();
+
+ // v ??= e is equivalent to ((x) => x == null ? v = e : x)(v)
+
+
+
+
+
+
+
+
+
+
+
+ // C.v ??= e is equivalent to ((x) => x == null ? C.v = e : x)(C.v)
+
+ yGetValue = 1; check(1, () => C.x ??= y, ['C.x', 'y', 'C.x=1']);
+
+
+
+ // e1.v ??= e2 is equivalent to
+ // ((x) => ((y) => y == null ? x.v = e2 : y)(x.v))(e1)
+
+
+
+
+
+
+
+
+
+ // e1[e2] ??= e3 is equivalent to
+ // ((a, i) => ((x) => x == null ? a[i] = e3 : x)(a[i]))(e1, e2)
+
+
+
+
+
+ // e1?.v ??= e2 is equivalent to ((x) => x == null ? null : x.v ??= e2)(e1).
+
+
+
+
+
+
+ // C?.v ??= e2 is equivalent to C.v ??= e2.
+
+
+
+
+
+
+
+
+}
diff --git a/tests/language/if_null/assignment_behavior_runtime_15_test.dart b/tests/language/if_null/assignment_behavior_runtime_15_test.dart
new file mode 100644
index 0000000..9310956
--- /dev/null
+++ b/tests/language/if_null/assignment_behavior_runtime_15_test.dart
@@ -0,0 +1,209 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// Copyright (c) 2015, 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.
+
+// Verify semantics of the ??= operator, including order of operations, by
+// keeping track of the operations performed.
+
+import "package:expect/expect.dart";
+import "assignment_helper.dart" as h;
+
+bad() {
+ Expect.fail('Should not be executed');
+}
+
+var xGetValue = null;
+
+get x {
+ h.operations.add('x');
+ var tmp = xGetValue;
+ xGetValue = null;
+ return tmp;
+}
+
+void set x(value) {
+ h.operations.add('x=$value');
+}
+
+var yGetValue = null;
+
+get y {
+ h.operations.add('y');
+ var tmp = yGetValue;
+ yGetValue = null;
+ return tmp;
+}
+
+void set y(value) {
+ h.operations.add('y=$value');
+}
+
+var zGetValue = null;
+
+get z {
+ h.operations.add('z');
+ var tmp = zGetValue;
+ zGetValue = null;
+ return tmp;
+}
+
+void set z(value) {
+ h.operations.add('z=$value');
+}
+
+var fValue = null;
+
+f() {
+ h.operations.add('f()');
+ var tmp = fValue;
+ fValue = null;
+ return tmp;
+}
+
+void check(expectedValue, f(), expectedOperations) {
+ Expect.equals(expectedValue, f());
+ Expect.listEquals(expectedOperations, h.operations);
+ h.operations = [];
+}
+
+class C {
+ final String s;
+
+ C(this.s);
+
+ @override
+ String toString() => s;
+
+ static var xGetValue = null;
+
+ static get x {
+ h.operations.add('C.x');
+ var tmp = xGetValue;
+ xGetValue = null;
+ return tmp;
+ }
+
+ static void set x(value) {
+ h.operations.add('C.x=$value');
+ }
+
+ var vGetValue = null;
+
+ get v {
+ h.operations.add('$s.v');
+ var tmp = vGetValue;
+ vGetValue = null;
+ return tmp;
+ }
+
+ void set v(value) {
+ h.operations.add('$s.v=$value');
+ }
+
+ var indexGetValue = null;
+
+ operator [](index) {
+ h.operations.add('$s[$index]');
+ var tmp = indexGetValue;
+ indexGetValue = null;
+ return tmp;
+ }
+
+ void operator []=(index, value) {
+ h.operations.add('$s[$index]=$value');
+ }
+
+ final finalOne = 1;
+ final finalNull = null;
+
+ void instanceTest() {
+ // v ??= e is equivalent to ((x) => x == null ? v = e : x)(v)
+
+
+
+ yGetValue = 1;
+ }
+}
+
+class D extends C {
+ D(String s) : super(s);
+
+ get v => bad();
+
+ void set v(value) {
+ bad();
+ }
+
+ void derivedInstanceTest() {
+ // super.v ??= e is equivalent to
+ // ((x) => x == null ? super.v = e : x)(super.v)
+
+
+ }
+}
+
+main() {
+ // Make sure the "none" test fails if "??=" is not implemented. This makes
+ // status files easier to maintain.
+ var _;
+ _ ??= null;
+
+ new C('c').instanceTest();
+ new D('d').derivedInstanceTest();
+
+ // v ??= e is equivalent to ((x) => x == null ? v = e : x)(v)
+
+
+
+
+
+
+
+
+
+
+
+ // C.v ??= e is equivalent to ((x) => x == null ? C.v = e : x)(C.v)
+
+
+ h.C.xGetValue = 1; check(1, () => h.C.x ??= bad(), ['h.C.x']);
+
+
+ // e1.v ??= e2 is equivalent to
+ // ((x) => ((y) => y == null ? x.v = e2 : y)(x.v))(e1)
+
+
+
+
+
+
+
+
+
+ // e1[e2] ??= e3 is equivalent to
+ // ((a, i) => ((x) => x == null ? a[i] = e3 : x)(a[i]))(e1, e2)
+
+
+
+
+
+ // e1?.v ??= e2 is equivalent to ((x) => x == null ? null : x.v ??= e2)(e1).
+
+
+
+
+
+
+ // C?.v ??= e2 is equivalent to C.v ??= e2.
+
+
+
+
+
+
+
+
+}
diff --git a/tests/language/if_null/assignment_behavior_runtime_16_test.dart b/tests/language/if_null/assignment_behavior_runtime_16_test.dart
new file mode 100644
index 0000000..8781d7a
--- /dev/null
+++ b/tests/language/if_null/assignment_behavior_runtime_16_test.dart
@@ -0,0 +1,209 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// Copyright (c) 2015, 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.
+
+// Verify semantics of the ??= operator, including order of operations, by
+// keeping track of the operations performed.
+
+import "package:expect/expect.dart";
+import "assignment_helper.dart" as h;
+
+bad() {
+ Expect.fail('Should not be executed');
+}
+
+var xGetValue = null;
+
+get x {
+ h.operations.add('x');
+ var tmp = xGetValue;
+ xGetValue = null;
+ return tmp;
+}
+
+void set x(value) {
+ h.operations.add('x=$value');
+}
+
+var yGetValue = null;
+
+get y {
+ h.operations.add('y');
+ var tmp = yGetValue;
+ yGetValue = null;
+ return tmp;
+}
+
+void set y(value) {
+ h.operations.add('y=$value');
+}
+
+var zGetValue = null;
+
+get z {
+ h.operations.add('z');
+ var tmp = zGetValue;
+ zGetValue = null;
+ return tmp;
+}
+
+void set z(value) {
+ h.operations.add('z=$value');
+}
+
+var fValue = null;
+
+f() {
+ h.operations.add('f()');
+ var tmp = fValue;
+ fValue = null;
+ return tmp;
+}
+
+void check(expectedValue, f(), expectedOperations) {
+ Expect.equals(expectedValue, f());
+ Expect.listEquals(expectedOperations, h.operations);
+ h.operations = [];
+}
+
+class C {
+ final String s;
+
+ C(this.s);
+
+ @override
+ String toString() => s;
+
+ static var xGetValue = null;
+
+ static get x {
+ h.operations.add('C.x');
+ var tmp = xGetValue;
+ xGetValue = null;
+ return tmp;
+ }
+
+ static void set x(value) {
+ h.operations.add('C.x=$value');
+ }
+
+ var vGetValue = null;
+
+ get v {
+ h.operations.add('$s.v');
+ var tmp = vGetValue;
+ vGetValue = null;
+ return tmp;
+ }
+
+ void set v(value) {
+ h.operations.add('$s.v=$value');
+ }
+
+ var indexGetValue = null;
+
+ operator [](index) {
+ h.operations.add('$s[$index]');
+ var tmp = indexGetValue;
+ indexGetValue = null;
+ return tmp;
+ }
+
+ void operator []=(index, value) {
+ h.operations.add('$s[$index]=$value');
+ }
+
+ final finalOne = 1;
+ final finalNull = null;
+
+ void instanceTest() {
+ // v ??= e is equivalent to ((x) => x == null ? v = e : x)(v)
+
+
+
+ yGetValue = 1;
+ }
+}
+
+class D extends C {
+ D(String s) : super(s);
+
+ get v => bad();
+
+ void set v(value) {
+ bad();
+ }
+
+ void derivedInstanceTest() {
+ // super.v ??= e is equivalent to
+ // ((x) => x == null ? super.v = e : x)(super.v)
+
+
+ }
+}
+
+main() {
+ // Make sure the "none" test fails if "??=" is not implemented. This makes
+ // status files easier to maintain.
+ var _;
+ _ ??= null;
+
+ new C('c').instanceTest();
+ new D('d').derivedInstanceTest();
+
+ // v ??= e is equivalent to ((x) => x == null ? v = e : x)(v)
+
+
+
+
+
+
+
+
+
+
+
+ // C.v ??= e is equivalent to ((x) => x == null ? C.v = e : x)(C.v)
+
+
+
+ yGetValue = 1; check(1, () => h.C.x ??= y, ['h.C.x', 'y', 'h.C.x=1']);
+
+ // e1.v ??= e2 is equivalent to
+ // ((x) => ((y) => y == null ? x.v = e2 : y)(x.v))(e1)
+
+
+
+
+
+
+
+
+
+ // e1[e2] ??= e3 is equivalent to
+ // ((a, i) => ((x) => x == null ? a[i] = e3 : x)(a[i]))(e1, e2)
+
+
+
+
+
+ // e1?.v ??= e2 is equivalent to ((x) => x == null ? null : x.v ??= e2)(e1).
+
+
+
+
+
+
+ // C?.v ??= e2 is equivalent to C.v ??= e2.
+
+
+
+
+
+
+
+
+}
diff --git a/tests/language/if_null/assignment_behavior_runtime_17_test.dart b/tests/language/if_null/assignment_behavior_runtime_17_test.dart
new file mode 100644
index 0000000..55c4fbe
--- /dev/null
+++ b/tests/language/if_null/assignment_behavior_runtime_17_test.dart
@@ -0,0 +1,209 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// Copyright (c) 2015, 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.
+
+// Verify semantics of the ??= operator, including order of operations, by
+// keeping track of the operations performed.
+
+import "package:expect/expect.dart";
+import "assignment_helper.dart" as h;
+
+bad() {
+ Expect.fail('Should not be executed');
+}
+
+var xGetValue = null;
+
+get x {
+ h.operations.add('x');
+ var tmp = xGetValue;
+ xGetValue = null;
+ return tmp;
+}
+
+void set x(value) {
+ h.operations.add('x=$value');
+}
+
+var yGetValue = null;
+
+get y {
+ h.operations.add('y');
+ var tmp = yGetValue;
+ yGetValue = null;
+ return tmp;
+}
+
+void set y(value) {
+ h.operations.add('y=$value');
+}
+
+var zGetValue = null;
+
+get z {
+ h.operations.add('z');
+ var tmp = zGetValue;
+ zGetValue = null;
+ return tmp;
+}
+
+void set z(value) {
+ h.operations.add('z=$value');
+}
+
+var fValue = null;
+
+f() {
+ h.operations.add('f()');
+ var tmp = fValue;
+ fValue = null;
+ return tmp;
+}
+
+void check(expectedValue, f(), expectedOperations) {
+ Expect.equals(expectedValue, f());
+ Expect.listEquals(expectedOperations, h.operations);
+ h.operations = [];
+}
+
+class C {
+ final String s;
+
+ C(this.s);
+
+ @override
+ String toString() => s;
+
+ static var xGetValue = null;
+
+ static get x {
+ h.operations.add('C.x');
+ var tmp = xGetValue;
+ xGetValue = null;
+ return tmp;
+ }
+
+ static void set x(value) {
+ h.operations.add('C.x=$value');
+ }
+
+ var vGetValue = null;
+
+ get v {
+ h.operations.add('$s.v');
+ var tmp = vGetValue;
+ vGetValue = null;
+ return tmp;
+ }
+
+ void set v(value) {
+ h.operations.add('$s.v=$value');
+ }
+
+ var indexGetValue = null;
+
+ operator [](index) {
+ h.operations.add('$s[$index]');
+ var tmp = indexGetValue;
+ indexGetValue = null;
+ return tmp;
+ }
+
+ void operator []=(index, value) {
+ h.operations.add('$s[$index]=$value');
+ }
+
+ final finalOne = 1;
+ final finalNull = null;
+
+ void instanceTest() {
+ // v ??= e is equivalent to ((x) => x == null ? v = e : x)(v)
+
+
+
+ yGetValue = 1;
+ }
+}
+
+class D extends C {
+ D(String s) : super(s);
+
+ get v => bad();
+
+ void set v(value) {
+ bad();
+ }
+
+ void derivedInstanceTest() {
+ // super.v ??= e is equivalent to
+ // ((x) => x == null ? super.v = e : x)(super.v)
+
+
+ }
+}
+
+main() {
+ // Make sure the "none" test fails if "??=" is not implemented. This makes
+ // status files easier to maintain.
+ var _;
+ _ ??= null;
+
+ new C('c').instanceTest();
+ new D('d').derivedInstanceTest();
+
+ // v ??= e is equivalent to ((x) => x == null ? v = e : x)(v)
+
+
+
+
+
+
+
+
+
+
+
+ // C.v ??= e is equivalent to ((x) => x == null ? C.v = e : x)(C.v)
+
+
+
+
+
+ // e1.v ??= e2 is equivalent to
+ // ((x) => ((y) => y == null ? x.v = e2 : y)(x.v))(e1)
+ xGetValue = new C('x'); xGetValue.vGetValue = 1;
+ check(1, () => x.v ??= bad(), ['x', 'x.v']);
+
+
+
+
+
+
+
+ // e1[e2] ??= e3 is equivalent to
+ // ((a, i) => ((x) => x == null ? a[i] = e3 : x)(a[i]))(e1, e2)
+
+
+
+
+
+ // e1?.v ??= e2 is equivalent to ((x) => x == null ? null : x.v ??= e2)(e1).
+
+
+
+
+
+
+ // C?.v ??= e2 is equivalent to C.v ??= e2.
+
+
+
+
+
+
+
+
+}
diff --git a/tests/language/if_null/assignment_behavior_runtime_18_test.dart b/tests/language/if_null/assignment_behavior_runtime_18_test.dart
new file mode 100644
index 0000000..190aeb0
--- /dev/null
+++ b/tests/language/if_null/assignment_behavior_runtime_18_test.dart
@@ -0,0 +1,209 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// Copyright (c) 2015, 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.
+
+// Verify semantics of the ??= operator, including order of operations, by
+// keeping track of the operations performed.
+
+import "package:expect/expect.dart";
+import "assignment_helper.dart" as h;
+
+bad() {
+ Expect.fail('Should not be executed');
+}
+
+var xGetValue = null;
+
+get x {
+ h.operations.add('x');
+ var tmp = xGetValue;
+ xGetValue = null;
+ return tmp;
+}
+
+void set x(value) {
+ h.operations.add('x=$value');
+}
+
+var yGetValue = null;
+
+get y {
+ h.operations.add('y');
+ var tmp = yGetValue;
+ yGetValue = null;
+ return tmp;
+}
+
+void set y(value) {
+ h.operations.add('y=$value');
+}
+
+var zGetValue = null;
+
+get z {
+ h.operations.add('z');
+ var tmp = zGetValue;
+ zGetValue = null;
+ return tmp;
+}
+
+void set z(value) {
+ h.operations.add('z=$value');
+}
+
+var fValue = null;
+
+f() {
+ h.operations.add('f()');
+ var tmp = fValue;
+ fValue = null;
+ return tmp;
+}
+
+void check(expectedValue, f(), expectedOperations) {
+ Expect.equals(expectedValue, f());
+ Expect.listEquals(expectedOperations, h.operations);
+ h.operations = [];
+}
+
+class C {
+ final String s;
+
+ C(this.s);
+
+ @override
+ String toString() => s;
+
+ static var xGetValue = null;
+
+ static get x {
+ h.operations.add('C.x');
+ var tmp = xGetValue;
+ xGetValue = null;
+ return tmp;
+ }
+
+ static void set x(value) {
+ h.operations.add('C.x=$value');
+ }
+
+ var vGetValue = null;
+
+ get v {
+ h.operations.add('$s.v');
+ var tmp = vGetValue;
+ vGetValue = null;
+ return tmp;
+ }
+
+ void set v(value) {
+ h.operations.add('$s.v=$value');
+ }
+
+ var indexGetValue = null;
+
+ operator [](index) {
+ h.operations.add('$s[$index]');
+ var tmp = indexGetValue;
+ indexGetValue = null;
+ return tmp;
+ }
+
+ void operator []=(index, value) {
+ h.operations.add('$s[$index]=$value');
+ }
+
+ final finalOne = 1;
+ final finalNull = null;
+
+ void instanceTest() {
+ // v ??= e is equivalent to ((x) => x == null ? v = e : x)(v)
+
+
+
+ yGetValue = 1;
+ }
+}
+
+class D extends C {
+ D(String s) : super(s);
+
+ get v => bad();
+
+ void set v(value) {
+ bad();
+ }
+
+ void derivedInstanceTest() {
+ // super.v ??= e is equivalent to
+ // ((x) => x == null ? super.v = e : x)(super.v)
+
+
+ }
+}
+
+main() {
+ // Make sure the "none" test fails if "??=" is not implemented. This makes
+ // status files easier to maintain.
+ var _;
+ _ ??= null;
+
+ new C('c').instanceTest();
+ new D('d').derivedInstanceTest();
+
+ // v ??= e is equivalent to ((x) => x == null ? v = e : x)(v)
+
+
+
+
+
+
+
+
+
+
+
+ // C.v ??= e is equivalent to ((x) => x == null ? C.v = e : x)(C.v)
+
+
+
+
+
+ // e1.v ??= e2 is equivalent to
+ // ((x) => ((y) => y == null ? x.v = e2 : y)(x.v))(e1)
+
+
+ xGetValue = new C('x'); yGetValue = 1;
+ check(1, () => x.v ??= y, ['x', 'x.v', 'y', 'x.v=1']);
+
+
+
+
+
+ // e1[e2] ??= e3 is equivalent to
+ // ((a, i) => ((x) => x == null ? a[i] = e3 : x)(a[i]))(e1, e2)
+
+
+
+
+
+ // e1?.v ??= e2 is equivalent to ((x) => x == null ? null : x.v ??= e2)(e1).
+
+
+
+
+
+
+ // C?.v ??= e2 is equivalent to C.v ??= e2.
+
+
+
+
+
+
+
+
+}
diff --git a/tests/language/if_null/assignment_behavior_runtime_19_test.dart b/tests/language/if_null/assignment_behavior_runtime_19_test.dart
new file mode 100644
index 0000000..0aa6394
--- /dev/null
+++ b/tests/language/if_null/assignment_behavior_runtime_19_test.dart
@@ -0,0 +1,209 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// Copyright (c) 2015, 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.
+
+// Verify semantics of the ??= operator, including order of operations, by
+// keeping track of the operations performed.
+
+import "package:expect/expect.dart";
+import "assignment_helper.dart" as h;
+
+bad() {
+ Expect.fail('Should not be executed');
+}
+
+var xGetValue = null;
+
+get x {
+ h.operations.add('x');
+ var tmp = xGetValue;
+ xGetValue = null;
+ return tmp;
+}
+
+void set x(value) {
+ h.operations.add('x=$value');
+}
+
+var yGetValue = null;
+
+get y {
+ h.operations.add('y');
+ var tmp = yGetValue;
+ yGetValue = null;
+ return tmp;
+}
+
+void set y(value) {
+ h.operations.add('y=$value');
+}
+
+var zGetValue = null;
+
+get z {
+ h.operations.add('z');
+ var tmp = zGetValue;
+ zGetValue = null;
+ return tmp;
+}
+
+void set z(value) {
+ h.operations.add('z=$value');
+}
+
+var fValue = null;
+
+f() {
+ h.operations.add('f()');
+ var tmp = fValue;
+ fValue = null;
+ return tmp;
+}
+
+void check(expectedValue, f(), expectedOperations) {
+ Expect.equals(expectedValue, f());
+ Expect.listEquals(expectedOperations, h.operations);
+ h.operations = [];
+}
+
+class C {
+ final String s;
+
+ C(this.s);
+
+ @override
+ String toString() => s;
+
+ static var xGetValue = null;
+
+ static get x {
+ h.operations.add('C.x');
+ var tmp = xGetValue;
+ xGetValue = null;
+ return tmp;
+ }
+
+ static void set x(value) {
+ h.operations.add('C.x=$value');
+ }
+
+ var vGetValue = null;
+
+ get v {
+ h.operations.add('$s.v');
+ var tmp = vGetValue;
+ vGetValue = null;
+ return tmp;
+ }
+
+ void set v(value) {
+ h.operations.add('$s.v=$value');
+ }
+
+ var indexGetValue = null;
+
+ operator [](index) {
+ h.operations.add('$s[$index]');
+ var tmp = indexGetValue;
+ indexGetValue = null;
+ return tmp;
+ }
+
+ void operator []=(index, value) {
+ h.operations.add('$s[$index]=$value');
+ }
+
+ final finalOne = 1;
+ final finalNull = null;
+
+ void instanceTest() {
+ // v ??= e is equivalent to ((x) => x == null ? v = e : x)(v)
+
+
+
+ yGetValue = 1;
+ }
+}
+
+class D extends C {
+ D(String s) : super(s);
+
+ get v => bad();
+
+ void set v(value) {
+ bad();
+ }
+
+ void derivedInstanceTest() {
+ // super.v ??= e is equivalent to
+ // ((x) => x == null ? super.v = e : x)(super.v)
+
+
+ }
+}
+
+main() {
+ // Make sure the "none" test fails if "??=" is not implemented. This makes
+ // status files easier to maintain.
+ var _;
+ _ ??= null;
+
+ new C('c').instanceTest();
+ new D('d').derivedInstanceTest();
+
+ // v ??= e is equivalent to ((x) => x == null ? v = e : x)(v)
+
+
+
+
+
+
+
+
+
+
+
+ // C.v ??= e is equivalent to ((x) => x == null ? C.v = e : x)(C.v)
+
+
+
+
+
+ // e1.v ??= e2 is equivalent to
+ // ((x) => ((y) => y == null ? x.v = e2 : y)(x.v))(e1)
+
+
+
+
+ fValue = new C('f()'); fValue.vGetValue = 1;
+ check(1, () => f().v ??= bad(), ['f()', 'f().v']);
+
+
+
+ // e1[e2] ??= e3 is equivalent to
+ // ((a, i) => ((x) => x == null ? a[i] = e3 : x)(a[i]))(e1, e2)
+
+
+
+
+
+ // e1?.v ??= e2 is equivalent to ((x) => x == null ? null : x.v ??= e2)(e1).
+
+
+
+
+
+
+ // C?.v ??= e2 is equivalent to C.v ??= e2.
+
+
+
+
+
+
+
+
+}
diff --git a/tests/language/if_null/assignment_behavior_runtime_1_test.dart b/tests/language/if_null/assignment_behavior_runtime_1_test.dart
new file mode 100644
index 0000000..8c461f7
--- /dev/null
+++ b/tests/language/if_null/assignment_behavior_runtime_1_test.dart
@@ -0,0 +1,209 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// Copyright (c) 2015, 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.
+
+// Verify semantics of the ??= operator, including order of operations, by
+// keeping track of the operations performed.
+
+import "package:expect/expect.dart";
+import "assignment_helper.dart" as h;
+
+bad() {
+ Expect.fail('Should not be executed');
+}
+
+var xGetValue = null;
+
+get x {
+ h.operations.add('x');
+ var tmp = xGetValue;
+ xGetValue = null;
+ return tmp;
+}
+
+void set x(value) {
+ h.operations.add('x=$value');
+}
+
+var yGetValue = null;
+
+get y {
+ h.operations.add('y');
+ var tmp = yGetValue;
+ yGetValue = null;
+ return tmp;
+}
+
+void set y(value) {
+ h.operations.add('y=$value');
+}
+
+var zGetValue = null;
+
+get z {
+ h.operations.add('z');
+ var tmp = zGetValue;
+ zGetValue = null;
+ return tmp;
+}
+
+void set z(value) {
+ h.operations.add('z=$value');
+}
+
+var fValue = null;
+
+f() {
+ h.operations.add('f()');
+ var tmp = fValue;
+ fValue = null;
+ return tmp;
+}
+
+void check(expectedValue, f(), expectedOperations) {
+ Expect.equals(expectedValue, f());
+ Expect.listEquals(expectedOperations, h.operations);
+ h.operations = [];
+}
+
+class C {
+ final String s;
+
+ C(this.s);
+
+ @override
+ String toString() => s;
+
+ static var xGetValue = null;
+
+ static get x {
+ h.operations.add('C.x');
+ var tmp = xGetValue;
+ xGetValue = null;
+ return tmp;
+ }
+
+ static void set x(value) {
+ h.operations.add('C.x=$value');
+ }
+
+ var vGetValue = null;
+
+ get v {
+ h.operations.add('$s.v');
+ var tmp = vGetValue;
+ vGetValue = null;
+ return tmp;
+ }
+
+ void set v(value) {
+ h.operations.add('$s.v=$value');
+ }
+
+ var indexGetValue = null;
+
+ operator [](index) {
+ h.operations.add('$s[$index]');
+ var tmp = indexGetValue;
+ indexGetValue = null;
+ return tmp;
+ }
+
+ void operator []=(index, value) {
+ h.operations.add('$s[$index]=$value');
+ }
+
+ final finalOne = 1;
+ final finalNull = null;
+
+ void instanceTest() {
+ // v ??= e is equivalent to ((x) => x == null ? v = e : x)(v)
+ vGetValue = 1; check(1, () => v ??= bad(), ['$s.v']);
+
+
+ yGetValue = 1;
+ }
+}
+
+class D extends C {
+ D(String s) : super(s);
+
+ get v => bad();
+
+ void set v(value) {
+ bad();
+ }
+
+ void derivedInstanceTest() {
+ // super.v ??= e is equivalent to
+ // ((x) => x == null ? super.v = e : x)(super.v)
+
+
+ }
+}
+
+main() {
+ // Make sure the "none" test fails if "??=" is not implemented. This makes
+ // status files easier to maintain.
+ var _;
+ _ ??= null;
+
+ new C('c').instanceTest();
+ new D('d').derivedInstanceTest();
+
+ // v ??= e is equivalent to ((x) => x == null ? v = e : x)(v)
+
+
+
+
+
+
+
+
+
+
+
+ // C.v ??= e is equivalent to ((x) => x == null ? C.v = e : x)(C.v)
+
+
+
+
+
+ // e1.v ??= e2 is equivalent to
+ // ((x) => ((y) => y == null ? x.v = e2 : y)(x.v))(e1)
+
+
+
+
+
+
+
+
+
+ // e1[e2] ??= e3 is equivalent to
+ // ((a, i) => ((x) => x == null ? a[i] = e3 : x)(a[i]))(e1, e2)
+
+
+
+
+
+ // e1?.v ??= e2 is equivalent to ((x) => x == null ? null : x.v ??= e2)(e1).
+
+
+
+
+
+
+ // C?.v ??= e2 is equivalent to C.v ??= e2.
+
+
+
+
+
+
+
+
+}
diff --git a/tests/language/if_null/assignment_behavior_runtime_20_test.dart b/tests/language/if_null/assignment_behavior_runtime_20_test.dart
new file mode 100644
index 0000000..a76471b
--- /dev/null
+++ b/tests/language/if_null/assignment_behavior_runtime_20_test.dart
@@ -0,0 +1,209 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// Copyright (c) 2015, 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.
+
+// Verify semantics of the ??= operator, including order of operations, by
+// keeping track of the operations performed.
+
+import "package:expect/expect.dart";
+import "assignment_helper.dart" as h;
+
+bad() {
+ Expect.fail('Should not be executed');
+}
+
+var xGetValue = null;
+
+get x {
+ h.operations.add('x');
+ var tmp = xGetValue;
+ xGetValue = null;
+ return tmp;
+}
+
+void set x(value) {
+ h.operations.add('x=$value');
+}
+
+var yGetValue = null;
+
+get y {
+ h.operations.add('y');
+ var tmp = yGetValue;
+ yGetValue = null;
+ return tmp;
+}
+
+void set y(value) {
+ h.operations.add('y=$value');
+}
+
+var zGetValue = null;
+
+get z {
+ h.operations.add('z');
+ var tmp = zGetValue;
+ zGetValue = null;
+ return tmp;
+}
+
+void set z(value) {
+ h.operations.add('z=$value');
+}
+
+var fValue = null;
+
+f() {
+ h.operations.add('f()');
+ var tmp = fValue;
+ fValue = null;
+ return tmp;
+}
+
+void check(expectedValue, f(), expectedOperations) {
+ Expect.equals(expectedValue, f());
+ Expect.listEquals(expectedOperations, h.operations);
+ h.operations = [];
+}
+
+class C {
+ final String s;
+
+ C(this.s);
+
+ @override
+ String toString() => s;
+
+ static var xGetValue = null;
+
+ static get x {
+ h.operations.add('C.x');
+ var tmp = xGetValue;
+ xGetValue = null;
+ return tmp;
+ }
+
+ static void set x(value) {
+ h.operations.add('C.x=$value');
+ }
+
+ var vGetValue = null;
+
+ get v {
+ h.operations.add('$s.v');
+ var tmp = vGetValue;
+ vGetValue = null;
+ return tmp;
+ }
+
+ void set v(value) {
+ h.operations.add('$s.v=$value');
+ }
+
+ var indexGetValue = null;
+
+ operator [](index) {
+ h.operations.add('$s[$index]');
+ var tmp = indexGetValue;
+ indexGetValue = null;
+ return tmp;
+ }
+
+ void operator []=(index, value) {
+ h.operations.add('$s[$index]=$value');
+ }
+
+ final finalOne = 1;
+ final finalNull = null;
+
+ void instanceTest() {
+ // v ??= e is equivalent to ((x) => x == null ? v = e : x)(v)
+
+
+
+ yGetValue = 1;
+ }
+}
+
+class D extends C {
+ D(String s) : super(s);
+
+ get v => bad();
+
+ void set v(value) {
+ bad();
+ }
+
+ void derivedInstanceTest() {
+ // super.v ??= e is equivalent to
+ // ((x) => x == null ? super.v = e : x)(super.v)
+
+
+ }
+}
+
+main() {
+ // Make sure the "none" test fails if "??=" is not implemented. This makes
+ // status files easier to maintain.
+ var _;
+ _ ??= null;
+
+ new C('c').instanceTest();
+ new D('d').derivedInstanceTest();
+
+ // v ??= e is equivalent to ((x) => x == null ? v = e : x)(v)
+
+
+
+
+
+
+
+
+
+
+
+ // C.v ??= e is equivalent to ((x) => x == null ? C.v = e : x)(C.v)
+
+
+
+
+
+ // e1.v ??= e2 is equivalent to
+ // ((x) => ((y) => y == null ? x.v = e2 : y)(x.v))(e1)
+
+
+
+
+
+
+ fValue = new C('f()'); yGetValue = 1;
+ check(1, () => f().v ??= y, ['f()', 'f().v', 'y', 'f().v=1']);
+
+ // e1[e2] ??= e3 is equivalent to
+ // ((a, i) => ((x) => x == null ? a[i] = e3 : x)(a[i]))(e1, e2)
+
+
+
+
+
+ // e1?.v ??= e2 is equivalent to ((x) => x == null ? null : x.v ??= e2)(e1).
+
+
+
+
+
+
+ // C?.v ??= e2 is equivalent to C.v ??= e2.
+
+
+
+
+
+
+
+
+}
diff --git a/tests/language/if_null/assignment_behavior_runtime_21_test.dart b/tests/language/if_null/assignment_behavior_runtime_21_test.dart
new file mode 100644
index 0000000..88129e0
--- /dev/null
+++ b/tests/language/if_null/assignment_behavior_runtime_21_test.dart
@@ -0,0 +1,209 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// Copyright (c) 2015, 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.
+
+// Verify semantics of the ??= operator, including order of operations, by
+// keeping track of the operations performed.
+
+import "package:expect/expect.dart";
+import "assignment_helper.dart" as h;
+
+bad() {
+ Expect.fail('Should not be executed');
+}
+
+var xGetValue = null;
+
+get x {
+ h.operations.add('x');
+ var tmp = xGetValue;
+ xGetValue = null;
+ return tmp;
+}
+
+void set x(value) {
+ h.operations.add('x=$value');
+}
+
+var yGetValue = null;
+
+get y {
+ h.operations.add('y');
+ var tmp = yGetValue;
+ yGetValue = null;
+ return tmp;
+}
+
+void set y(value) {
+ h.operations.add('y=$value');
+}
+
+var zGetValue = null;
+
+get z {
+ h.operations.add('z');
+ var tmp = zGetValue;
+ zGetValue = null;
+ return tmp;
+}
+
+void set z(value) {
+ h.operations.add('z=$value');
+}
+
+var fValue = null;
+
+f() {
+ h.operations.add('f()');
+ var tmp = fValue;
+ fValue = null;
+ return tmp;
+}
+
+void check(expectedValue, f(), expectedOperations) {
+ Expect.equals(expectedValue, f());
+ Expect.listEquals(expectedOperations, h.operations);
+ h.operations = [];
+}
+
+class C {
+ final String s;
+
+ C(this.s);
+
+ @override
+ String toString() => s;
+
+ static var xGetValue = null;
+
+ static get x {
+ h.operations.add('C.x');
+ var tmp = xGetValue;
+ xGetValue = null;
+ return tmp;
+ }
+
+ static void set x(value) {
+ h.operations.add('C.x=$value');
+ }
+
+ var vGetValue = null;
+
+ get v {
+ h.operations.add('$s.v');
+ var tmp = vGetValue;
+ vGetValue = null;
+ return tmp;
+ }
+
+ void set v(value) {
+ h.operations.add('$s.v=$value');
+ }
+
+ var indexGetValue = null;
+
+ operator [](index) {
+ h.operations.add('$s[$index]');
+ var tmp = indexGetValue;
+ indexGetValue = null;
+ return tmp;
+ }
+
+ void operator []=(index, value) {
+ h.operations.add('$s[$index]=$value');
+ }
+
+ final finalOne = 1;
+ final finalNull = null;
+
+ void instanceTest() {
+ // v ??= e is equivalent to ((x) => x == null ? v = e : x)(v)
+
+
+
+ yGetValue = 1;
+ }
+}
+
+class D extends C {
+ D(String s) : super(s);
+
+ get v => bad();
+
+ void set v(value) {
+ bad();
+ }
+
+ void derivedInstanceTest() {
+ // super.v ??= e is equivalent to
+ // ((x) => x == null ? super.v = e : x)(super.v)
+
+
+ }
+}
+
+main() {
+ // Make sure the "none" test fails if "??=" is not implemented. This makes
+ // status files easier to maintain.
+ var _;
+ _ ??= null;
+
+ new C('c').instanceTest();
+ new D('d').derivedInstanceTest();
+
+ // v ??= e is equivalent to ((x) => x == null ? v = e : x)(v)
+
+
+
+
+
+
+
+
+
+
+
+ // C.v ??= e is equivalent to ((x) => x == null ? C.v = e : x)(C.v)
+
+
+
+
+
+ // e1.v ??= e2 is equivalent to
+ // ((x) => ((y) => y == null ? x.v = e2 : y)(x.v))(e1)
+
+
+
+
+
+
+
+
+
+ // e1[e2] ??= e3 is equivalent to
+ // ((a, i) => ((x) => x == null ? a[i] = e3 : x)(a[i]))(e1, e2)
+ xGetValue = new C('x'); yGetValue = 1; xGetValue.indexGetValue = 2;
+ check(2, () => x[y] ??= bad(), ['x', 'y', 'x[1]']);
+
+
+
+ // e1?.v ??= e2 is equivalent to ((x) => x == null ? null : x.v ??= e2)(e1).
+
+
+
+
+
+
+ // C?.v ??= e2 is equivalent to C.v ??= e2.
+
+
+
+
+
+
+
+
+}
diff --git a/tests/language/if_null/assignment_behavior_runtime_22_test.dart b/tests/language/if_null/assignment_behavior_runtime_22_test.dart
new file mode 100644
index 0000000..3b09af8
--- /dev/null
+++ b/tests/language/if_null/assignment_behavior_runtime_22_test.dart
@@ -0,0 +1,209 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// Copyright (c) 2015, 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.
+
+// Verify semantics of the ??= operator, including order of operations, by
+// keeping track of the operations performed.
+
+import "package:expect/expect.dart";
+import "assignment_helper.dart" as h;
+
+bad() {
+ Expect.fail('Should not be executed');
+}
+
+var xGetValue = null;
+
+get x {
+ h.operations.add('x');
+ var tmp = xGetValue;
+ xGetValue = null;
+ return tmp;
+}
+
+void set x(value) {
+ h.operations.add('x=$value');
+}
+
+var yGetValue = null;
+
+get y {
+ h.operations.add('y');
+ var tmp = yGetValue;
+ yGetValue = null;
+ return tmp;
+}
+
+void set y(value) {
+ h.operations.add('y=$value');
+}
+
+var zGetValue = null;
+
+get z {
+ h.operations.add('z');
+ var tmp = zGetValue;
+ zGetValue = null;
+ return tmp;
+}
+
+void set z(value) {
+ h.operations.add('z=$value');
+}
+
+var fValue = null;
+
+f() {
+ h.operations.add('f()');
+ var tmp = fValue;
+ fValue = null;
+ return tmp;
+}
+
+void check(expectedValue, f(), expectedOperations) {
+ Expect.equals(expectedValue, f());
+ Expect.listEquals(expectedOperations, h.operations);
+ h.operations = [];
+}
+
+class C {
+ final String s;
+
+ C(this.s);
+
+ @override
+ String toString() => s;
+
+ static var xGetValue = null;
+
+ static get x {
+ h.operations.add('C.x');
+ var tmp = xGetValue;
+ xGetValue = null;
+ return tmp;
+ }
+
+ static void set x(value) {
+ h.operations.add('C.x=$value');
+ }
+
+ var vGetValue = null;
+
+ get v {
+ h.operations.add('$s.v');
+ var tmp = vGetValue;
+ vGetValue = null;
+ return tmp;
+ }
+
+ void set v(value) {
+ h.operations.add('$s.v=$value');
+ }
+
+ var indexGetValue = null;
+
+ operator [](index) {
+ h.operations.add('$s[$index]');
+ var tmp = indexGetValue;
+ indexGetValue = null;
+ return tmp;
+ }
+
+ void operator []=(index, value) {
+ h.operations.add('$s[$index]=$value');
+ }
+
+ final finalOne = 1;
+ final finalNull = null;
+
+ void instanceTest() {
+ // v ??= e is equivalent to ((x) => x == null ? v = e : x)(v)
+
+
+
+ yGetValue = 1;
+ }
+}
+
+class D extends C {
+ D(String s) : super(s);
+
+ get v => bad();
+
+ void set v(value) {
+ bad();
+ }
+
+ void derivedInstanceTest() {
+ // super.v ??= e is equivalent to
+ // ((x) => x == null ? super.v = e : x)(super.v)
+
+
+ }
+}
+
+main() {
+ // Make sure the "none" test fails if "??=" is not implemented. This makes
+ // status files easier to maintain.
+ var _;
+ _ ??= null;
+
+ new C('c').instanceTest();
+ new D('d').derivedInstanceTest();
+
+ // v ??= e is equivalent to ((x) => x == null ? v = e : x)(v)
+
+
+
+
+
+
+
+
+
+
+
+ // C.v ??= e is equivalent to ((x) => x == null ? C.v = e : x)(C.v)
+
+
+
+
+
+ // e1.v ??= e2 is equivalent to
+ // ((x) => ((y) => y == null ? x.v = e2 : y)(x.v))(e1)
+
+
+
+
+
+
+
+
+
+ // e1[e2] ??= e3 is equivalent to
+ // ((a, i) => ((x) => x == null ? a[i] = e3 : x)(a[i]))(e1, e2)
+
+
+ xGetValue = new C('x'); yGetValue = 1; zGetValue = 2;
+ check(2, () => x[y] ??= z, ['x', 'y', 'x[1]', 'z', 'x[1]=2']);
+
+ // e1?.v ??= e2 is equivalent to ((x) => x == null ? null : x.v ??= e2)(e1).
+
+
+
+
+
+
+ // C?.v ??= e2 is equivalent to C.v ??= e2.
+
+
+
+
+
+
+
+
+}
diff --git a/tests/language/if_null/assignment_behavior_runtime_23_test.dart b/tests/language/if_null/assignment_behavior_runtime_23_test.dart
new file mode 100644
index 0000000..eeae2ec
--- /dev/null
+++ b/tests/language/if_null/assignment_behavior_runtime_23_test.dart
@@ -0,0 +1,209 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// Copyright (c) 2015, 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.
+
+// Verify semantics of the ??= operator, including order of operations, by
+// keeping track of the operations performed.
+
+import "package:expect/expect.dart";
+import "assignment_helper.dart" as h;
+
+bad() {
+ Expect.fail('Should not be executed');
+}
+
+var xGetValue = null;
+
+get x {
+ h.operations.add('x');
+ var tmp = xGetValue;
+ xGetValue = null;
+ return tmp;
+}
+
+void set x(value) {
+ h.operations.add('x=$value');
+}
+
+var yGetValue = null;
+
+get y {
+ h.operations.add('y');
+ var tmp = yGetValue;
+ yGetValue = null;
+ return tmp;
+}
+
+void set y(value) {
+ h.operations.add('y=$value');
+}
+
+var zGetValue = null;
+
+get z {
+ h.operations.add('z');
+ var tmp = zGetValue;
+ zGetValue = null;
+ return tmp;
+}
+
+void set z(value) {
+ h.operations.add('z=$value');
+}
+
+var fValue = null;
+
+f() {
+ h.operations.add('f()');
+ var tmp = fValue;
+ fValue = null;
+ return tmp;
+}
+
+void check(expectedValue, f(), expectedOperations) {
+ Expect.equals(expectedValue, f());
+ Expect.listEquals(expectedOperations, h.operations);
+ h.operations = [];
+}
+
+class C {
+ final String s;
+
+ C(this.s);
+
+ @override
+ String toString() => s;
+
+ static var xGetValue = null;
+
+ static get x {
+ h.operations.add('C.x');
+ var tmp = xGetValue;
+ xGetValue = null;
+ return tmp;
+ }
+
+ static void set x(value) {
+ h.operations.add('C.x=$value');
+ }
+
+ var vGetValue = null;
+
+ get v {
+ h.operations.add('$s.v');
+ var tmp = vGetValue;
+ vGetValue = null;
+ return tmp;
+ }
+
+ void set v(value) {
+ h.operations.add('$s.v=$value');
+ }
+
+ var indexGetValue = null;
+
+ operator [](index) {
+ h.operations.add('$s[$index]');
+ var tmp = indexGetValue;
+ indexGetValue = null;
+ return tmp;
+ }
+
+ void operator []=(index, value) {
+ h.operations.add('$s[$index]=$value');
+ }
+
+ final finalOne = 1;
+ final finalNull = null;
+
+ void instanceTest() {
+ // v ??= e is equivalent to ((x) => x == null ? v = e : x)(v)
+
+
+
+ yGetValue = 1;
+ }
+}
+
+class D extends C {
+ D(String s) : super(s);
+
+ get v => bad();
+
+ void set v(value) {
+ bad();
+ }
+
+ void derivedInstanceTest() {
+ // super.v ??= e is equivalent to
+ // ((x) => x == null ? super.v = e : x)(super.v)
+
+
+ }
+}
+
+main() {
+ // Make sure the "none" test fails if "??=" is not implemented. This makes
+ // status files easier to maintain.
+ var _;
+ _ ??= null;
+
+ new C('c').instanceTest();
+ new D('d').derivedInstanceTest();
+
+ // v ??= e is equivalent to ((x) => x == null ? v = e : x)(v)
+
+
+
+
+
+
+
+
+
+
+
+ // C.v ??= e is equivalent to ((x) => x == null ? C.v = e : x)(C.v)
+
+
+
+
+
+ // e1.v ??= e2 is equivalent to
+ // ((x) => ((y) => y == null ? x.v = e2 : y)(x.v))(e1)
+
+
+
+
+
+
+
+
+
+ // e1[e2] ??= e3 is equivalent to
+ // ((a, i) => ((x) => x == null ? a[i] = e3 : x)(a[i]))(e1, e2)
+
+
+
+
+
+ // e1?.v ??= e2 is equivalent to ((x) => x == null ? null : x.v ??= e2)(e1).
+ check(null, () => x?.v ??= bad(), ['x']);
+
+
+
+
+
+ // C?.v ??= e2 is equivalent to C.v ??= e2.
+
+
+
+
+
+
+
+
+}
diff --git a/tests/language/if_null/assignment_behavior_runtime_24_test.dart b/tests/language/if_null/assignment_behavior_runtime_24_test.dart
new file mode 100644
index 0000000..21b0594
--- /dev/null
+++ b/tests/language/if_null/assignment_behavior_runtime_24_test.dart
@@ -0,0 +1,209 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// Copyright (c) 2015, 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.
+
+// Verify semantics of the ??= operator, including order of operations, by
+// keeping track of the operations performed.
+
+import "package:expect/expect.dart";
+import "assignment_helper.dart" as h;
+
+bad() {
+ Expect.fail('Should not be executed');
+}
+
+var xGetValue = null;
+
+get x {
+ h.operations.add('x');
+ var tmp = xGetValue;
+ xGetValue = null;
+ return tmp;
+}
+
+void set x(value) {
+ h.operations.add('x=$value');
+}
+
+var yGetValue = null;
+
+get y {
+ h.operations.add('y');
+ var tmp = yGetValue;
+ yGetValue = null;
+ return tmp;
+}
+
+void set y(value) {
+ h.operations.add('y=$value');
+}
+
+var zGetValue = null;
+
+get z {
+ h.operations.add('z');
+ var tmp = zGetValue;
+ zGetValue = null;
+ return tmp;
+}
+
+void set z(value) {
+ h.operations.add('z=$value');
+}
+
+var fValue = null;
+
+f() {
+ h.operations.add('f()');
+ var tmp = fValue;
+ fValue = null;
+ return tmp;
+}
+
+void check(expectedValue, f(), expectedOperations) {
+ Expect.equals(expectedValue, f());
+ Expect.listEquals(expectedOperations, h.operations);
+ h.operations = [];
+}
+
+class C {
+ final String s;
+
+ C(this.s);
+
+ @override
+ String toString() => s;
+
+ static var xGetValue = null;
+
+ static get x {
+ h.operations.add('C.x');
+ var tmp = xGetValue;
+ xGetValue = null;
+ return tmp;
+ }
+
+ static void set x(value) {
+ h.operations.add('C.x=$value');
+ }
+
+ var vGetValue = null;
+
+ get v {
+ h.operations.add('$s.v');
+ var tmp = vGetValue;
+ vGetValue = null;
+ return tmp;
+ }
+
+ void set v(value) {
+ h.operations.add('$s.v=$value');
+ }
+
+ var indexGetValue = null;
+
+ operator [](index) {
+ h.operations.add('$s[$index]');
+ var tmp = indexGetValue;
+ indexGetValue = null;
+ return tmp;
+ }
+
+ void operator []=(index, value) {
+ h.operations.add('$s[$index]=$value');
+ }
+
+ final finalOne = 1;
+ final finalNull = null;
+
+ void instanceTest() {
+ // v ??= e is equivalent to ((x) => x == null ? v = e : x)(v)
+
+
+
+ yGetValue = 1;
+ }
+}
+
+class D extends C {
+ D(String s) : super(s);
+
+ get v => bad();
+
+ void set v(value) {
+ bad();
+ }
+
+ void derivedInstanceTest() {
+ // super.v ??= e is equivalent to
+ // ((x) => x == null ? super.v = e : x)(super.v)
+
+
+ }
+}
+
+main() {
+ // Make sure the "none" test fails if "??=" is not implemented. This makes
+ // status files easier to maintain.
+ var _;
+ _ ??= null;
+
+ new C('c').instanceTest();
+ new D('d').derivedInstanceTest();
+
+ // v ??= e is equivalent to ((x) => x == null ? v = e : x)(v)
+
+
+
+
+
+
+
+
+
+
+
+ // C.v ??= e is equivalent to ((x) => x == null ? C.v = e : x)(C.v)
+
+
+
+
+
+ // e1.v ??= e2 is equivalent to
+ // ((x) => ((y) => y == null ? x.v = e2 : y)(x.v))(e1)
+
+
+
+
+
+
+
+
+
+ // e1[e2] ??= e3 is equivalent to
+ // ((a, i) => ((x) => x == null ? a[i] = e3 : x)(a[i]))(e1, e2)
+
+
+
+
+
+ // e1?.v ??= e2 is equivalent to ((x) => x == null ? null : x.v ??= e2)(e1).
+
+ xGetValue = new C('x'); xGetValue.vGetValue = 1;
+ check(1, () => x?.v ??= bad(), ['x', 'x.v']);
+
+
+
+ // C?.v ??= e2 is equivalent to C.v ??= e2.
+
+
+
+
+
+
+
+
+}
diff --git a/tests/language/if_null/assignment_behavior_runtime_25_test.dart b/tests/language/if_null/assignment_behavior_runtime_25_test.dart
new file mode 100644
index 0000000..e323f4d
--- /dev/null
+++ b/tests/language/if_null/assignment_behavior_runtime_25_test.dart
@@ -0,0 +1,209 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// Copyright (c) 2015, 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.
+
+// Verify semantics of the ??= operator, including order of operations, by
+// keeping track of the operations performed.
+
+import "package:expect/expect.dart";
+import "assignment_helper.dart" as h;
+
+bad() {
+ Expect.fail('Should not be executed');
+}
+
+var xGetValue = null;
+
+get x {
+ h.operations.add('x');
+ var tmp = xGetValue;
+ xGetValue = null;
+ return tmp;
+}
+
+void set x(value) {
+ h.operations.add('x=$value');
+}
+
+var yGetValue = null;
+
+get y {
+ h.operations.add('y');
+ var tmp = yGetValue;
+ yGetValue = null;
+ return tmp;
+}
+
+void set y(value) {
+ h.operations.add('y=$value');
+}
+
+var zGetValue = null;
+
+get z {
+ h.operations.add('z');
+ var tmp = zGetValue;
+ zGetValue = null;
+ return tmp;
+}
+
+void set z(value) {
+ h.operations.add('z=$value');
+}
+
+var fValue = null;
+
+f() {
+ h.operations.add('f()');
+ var tmp = fValue;
+ fValue = null;
+ return tmp;
+}
+
+void check(expectedValue, f(), expectedOperations) {
+ Expect.equals(expectedValue, f());
+ Expect.listEquals(expectedOperations, h.operations);
+ h.operations = [];
+}
+
+class C {
+ final String s;
+
+ C(this.s);
+
+ @override
+ String toString() => s;
+
+ static var xGetValue = null;
+
+ static get x {
+ h.operations.add('C.x');
+ var tmp = xGetValue;
+ xGetValue = null;
+ return tmp;
+ }
+
+ static void set x(value) {
+ h.operations.add('C.x=$value');
+ }
+
+ var vGetValue = null;
+
+ get v {
+ h.operations.add('$s.v');
+ var tmp = vGetValue;
+ vGetValue = null;
+ return tmp;
+ }
+
+ void set v(value) {
+ h.operations.add('$s.v=$value');
+ }
+
+ var indexGetValue = null;
+
+ operator [](index) {
+ h.operations.add('$s[$index]');
+ var tmp = indexGetValue;
+ indexGetValue = null;
+ return tmp;
+ }
+
+ void operator []=(index, value) {
+ h.operations.add('$s[$index]=$value');
+ }
+
+ final finalOne = 1;
+ final finalNull = null;
+
+ void instanceTest() {
+ // v ??= e is equivalent to ((x) => x == null ? v = e : x)(v)
+
+
+
+ yGetValue = 1;
+ }
+}
+
+class D extends C {
+ D(String s) : super(s);
+
+ get v => bad();
+
+ void set v(value) {
+ bad();
+ }
+
+ void derivedInstanceTest() {
+ // super.v ??= e is equivalent to
+ // ((x) => x == null ? super.v = e : x)(super.v)
+
+
+ }
+}
+
+main() {
+ // Make sure the "none" test fails if "??=" is not implemented. This makes
+ // status files easier to maintain.
+ var _;
+ _ ??= null;
+
+ new C('c').instanceTest();
+ new D('d').derivedInstanceTest();
+
+ // v ??= e is equivalent to ((x) => x == null ? v = e : x)(v)
+
+
+
+
+
+
+
+
+
+
+
+ // C.v ??= e is equivalent to ((x) => x == null ? C.v = e : x)(C.v)
+
+
+
+
+
+ // e1.v ??= e2 is equivalent to
+ // ((x) => ((y) => y == null ? x.v = e2 : y)(x.v))(e1)
+
+
+
+
+
+
+
+
+
+ // e1[e2] ??= e3 is equivalent to
+ // ((a, i) => ((x) => x == null ? a[i] = e3 : x)(a[i]))(e1, e2)
+
+
+
+
+
+ // e1?.v ??= e2 is equivalent to ((x) => x == null ? null : x.v ??= e2)(e1).
+
+
+
+ xGetValue = new C('x'); yGetValue = 1;
+ check(1, () => x?.v ??= y, ['x', 'x.v', 'y', 'x.v=1']);
+
+ // C?.v ??= e2 is equivalent to C.v ??= e2.
+
+
+
+
+
+
+
+
+}
diff --git a/tests/language/if_null/assignment_behavior_runtime_26_test.dart b/tests/language/if_null/assignment_behavior_runtime_26_test.dart
new file mode 100644
index 0000000..afd709b
--- /dev/null
+++ b/tests/language/if_null/assignment_behavior_runtime_26_test.dart
@@ -0,0 +1,209 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// Copyright (c) 2015, 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.
+
+// Verify semantics of the ??= operator, including order of operations, by
+// keeping track of the operations performed.
+
+import "package:expect/expect.dart";
+import "assignment_helper.dart" as h;
+
+bad() {
+ Expect.fail('Should not be executed');
+}
+
+var xGetValue = null;
+
+get x {
+ h.operations.add('x');
+ var tmp = xGetValue;
+ xGetValue = null;
+ return tmp;
+}
+
+void set x(value) {
+ h.operations.add('x=$value');
+}
+
+var yGetValue = null;
+
+get y {
+ h.operations.add('y');
+ var tmp = yGetValue;
+ yGetValue = null;
+ return tmp;
+}
+
+void set y(value) {
+ h.operations.add('y=$value');
+}
+
+var zGetValue = null;
+
+get z {
+ h.operations.add('z');
+ var tmp = zGetValue;
+ zGetValue = null;
+ return tmp;
+}
+
+void set z(value) {
+ h.operations.add('z=$value');
+}
+
+var fValue = null;
+
+f() {
+ h.operations.add('f()');
+ var tmp = fValue;
+ fValue = null;
+ return tmp;
+}
+
+void check(expectedValue, f(), expectedOperations) {
+ Expect.equals(expectedValue, f());
+ Expect.listEquals(expectedOperations, h.operations);
+ h.operations = [];
+}
+
+class C {
+ final String s;
+
+ C(this.s);
+
+ @override
+ String toString() => s;
+
+ static var xGetValue = null;
+
+ static get x {
+ h.operations.add('C.x');
+ var tmp = xGetValue;
+ xGetValue = null;
+ return tmp;
+ }
+
+ static void set x(value) {
+ h.operations.add('C.x=$value');
+ }
+
+ var vGetValue = null;
+
+ get v {
+ h.operations.add('$s.v');
+ var tmp = vGetValue;
+ vGetValue = null;
+ return tmp;
+ }
+
+ void set v(value) {
+ h.operations.add('$s.v=$value');
+ }
+
+ var indexGetValue = null;
+
+ operator [](index) {
+ h.operations.add('$s[$index]');
+ var tmp = indexGetValue;
+ indexGetValue = null;
+ return tmp;
+ }
+
+ void operator []=(index, value) {
+ h.operations.add('$s[$index]=$value');
+ }
+
+ final finalOne = 1;
+ final finalNull = null;
+
+ void instanceTest() {
+ // v ??= e is equivalent to ((x) => x == null ? v = e : x)(v)
+
+
+
+ yGetValue = 1;
+ }
+}
+
+class D extends C {
+ D(String s) : super(s);
+
+ get v => bad();
+
+ void set v(value) {
+ bad();
+ }
+
+ void derivedInstanceTest() {
+ // super.v ??= e is equivalent to
+ // ((x) => x == null ? super.v = e : x)(super.v)
+
+
+ }
+}
+
+main() {
+ // Make sure the "none" test fails if "??=" is not implemented. This makes
+ // status files easier to maintain.
+ var _;
+ _ ??= null;
+
+ new C('c').instanceTest();
+ new D('d').derivedInstanceTest();
+
+ // v ??= e is equivalent to ((x) => x == null ? v = e : x)(v)
+
+
+
+
+
+
+
+
+
+
+
+ // C.v ??= e is equivalent to ((x) => x == null ? C.v = e : x)(C.v)
+
+
+
+
+
+ // e1.v ??= e2 is equivalent to
+ // ((x) => ((y) => y == null ? x.v = e2 : y)(x.v))(e1)
+
+
+
+
+
+
+
+
+
+ // e1[e2] ??= e3 is equivalent to
+ // ((a, i) => ((x) => x == null ? a[i] = e3 : x)(a[i]))(e1, e2)
+
+
+
+
+
+ // e1?.v ??= e2 is equivalent to ((x) => x == null ? null : x.v ??= e2)(e1).
+
+
+
+
+
+
+ // C?.v ??= e2 is equivalent to C.v ??= e2.
+
+
+
+
+ yGetValue = 1;
+ check(1, () => C?.x ??= y, ['C.x', 'y', 'C.x=1']);
+
+
+}
diff --git a/tests/language/if_null/assignment_behavior_runtime_27_test.dart b/tests/language/if_null/assignment_behavior_runtime_27_test.dart
new file mode 100644
index 0000000..97fa09c
--- /dev/null
+++ b/tests/language/if_null/assignment_behavior_runtime_27_test.dart
@@ -0,0 +1,209 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// Copyright (c) 2015, 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.
+
+// Verify semantics of the ??= operator, including order of operations, by
+// keeping track of the operations performed.
+
+import "package:expect/expect.dart";
+import "assignment_helper.dart" as h;
+
+bad() {
+ Expect.fail('Should not be executed');
+}
+
+var xGetValue = null;
+
+get x {
+ h.operations.add('x');
+ var tmp = xGetValue;
+ xGetValue = null;
+ return tmp;
+}
+
+void set x(value) {
+ h.operations.add('x=$value');
+}
+
+var yGetValue = null;
+
+get y {
+ h.operations.add('y');
+ var tmp = yGetValue;
+ yGetValue = null;
+ return tmp;
+}
+
+void set y(value) {
+ h.operations.add('y=$value');
+}
+
+var zGetValue = null;
+
+get z {
+ h.operations.add('z');
+ var tmp = zGetValue;
+ zGetValue = null;
+ return tmp;
+}
+
+void set z(value) {
+ h.operations.add('z=$value');
+}
+
+var fValue = null;
+
+f() {
+ h.operations.add('f()');
+ var tmp = fValue;
+ fValue = null;
+ return tmp;
+}
+
+void check(expectedValue, f(), expectedOperations) {
+ Expect.equals(expectedValue, f());
+ Expect.listEquals(expectedOperations, h.operations);
+ h.operations = [];
+}
+
+class C {
+ final String s;
+
+ C(this.s);
+
+ @override
+ String toString() => s;
+
+ static var xGetValue = null;
+
+ static get x {
+ h.operations.add('C.x');
+ var tmp = xGetValue;
+ xGetValue = null;
+ return tmp;
+ }
+
+ static void set x(value) {
+ h.operations.add('C.x=$value');
+ }
+
+ var vGetValue = null;
+
+ get v {
+ h.operations.add('$s.v');
+ var tmp = vGetValue;
+ vGetValue = null;
+ return tmp;
+ }
+
+ void set v(value) {
+ h.operations.add('$s.v=$value');
+ }
+
+ var indexGetValue = null;
+
+ operator [](index) {
+ h.operations.add('$s[$index]');
+ var tmp = indexGetValue;
+ indexGetValue = null;
+ return tmp;
+ }
+
+ void operator []=(index, value) {
+ h.operations.add('$s[$index]=$value');
+ }
+
+ final finalOne = 1;
+ final finalNull = null;
+
+ void instanceTest() {
+ // v ??= e is equivalent to ((x) => x == null ? v = e : x)(v)
+
+
+
+ yGetValue = 1;
+ }
+}
+
+class D extends C {
+ D(String s) : super(s);
+
+ get v => bad();
+
+ void set v(value) {
+ bad();
+ }
+
+ void derivedInstanceTest() {
+ // super.v ??= e is equivalent to
+ // ((x) => x == null ? super.v = e : x)(super.v)
+
+
+ }
+}
+
+main() {
+ // Make sure the "none" test fails if "??=" is not implemented. This makes
+ // status files easier to maintain.
+ var _;
+ _ ??= null;
+
+ new C('c').instanceTest();
+ new D('d').derivedInstanceTest();
+
+ // v ??= e is equivalent to ((x) => x == null ? v = e : x)(v)
+
+
+
+
+
+
+
+
+
+
+
+ // C.v ??= e is equivalent to ((x) => x == null ? C.v = e : x)(C.v)
+
+
+
+
+
+ // e1.v ??= e2 is equivalent to
+ // ((x) => ((y) => y == null ? x.v = e2 : y)(x.v))(e1)
+
+
+
+
+
+
+
+
+
+ // e1[e2] ??= e3 is equivalent to
+ // ((a, i) => ((x) => x == null ? a[i] = e3 : x)(a[i]))(e1, e2)
+
+
+
+
+
+ // e1?.v ??= e2 is equivalent to ((x) => x == null ? null : x.v ??= e2)(e1).
+
+
+
+
+
+
+ // C?.v ??= e2 is equivalent to C.v ??= e2.
+
+
+
+
+
+
+ yGetValue = 1;
+ check(1, () => h.C?.x ??= y, ['h.C.x', 'y', 'h.C.x=1']);
+}
diff --git a/tests/language/if_null/assignment_behavior_runtime_2_test.dart b/tests/language/if_null/assignment_behavior_runtime_2_test.dart
new file mode 100644
index 0000000..24750fa
--- /dev/null
+++ b/tests/language/if_null/assignment_behavior_runtime_2_test.dart
@@ -0,0 +1,209 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// Copyright (c) 2015, 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.
+
+// Verify semantics of the ??= operator, including order of operations, by
+// keeping track of the operations performed.
+
+import "package:expect/expect.dart";
+import "assignment_helper.dart" as h;
+
+bad() {
+ Expect.fail('Should not be executed');
+}
+
+var xGetValue = null;
+
+get x {
+ h.operations.add('x');
+ var tmp = xGetValue;
+ xGetValue = null;
+ return tmp;
+}
+
+void set x(value) {
+ h.operations.add('x=$value');
+}
+
+var yGetValue = null;
+
+get y {
+ h.operations.add('y');
+ var tmp = yGetValue;
+ yGetValue = null;
+ return tmp;
+}
+
+void set y(value) {
+ h.operations.add('y=$value');
+}
+
+var zGetValue = null;
+
+get z {
+ h.operations.add('z');
+ var tmp = zGetValue;
+ zGetValue = null;
+ return tmp;
+}
+
+void set z(value) {
+ h.operations.add('z=$value');
+}
+
+var fValue = null;
+
+f() {
+ h.operations.add('f()');
+ var tmp = fValue;
+ fValue = null;
+ return tmp;
+}
+
+void check(expectedValue, f(), expectedOperations) {
+ Expect.equals(expectedValue, f());
+ Expect.listEquals(expectedOperations, h.operations);
+ h.operations = [];
+}
+
+class C {
+ final String s;
+
+ C(this.s);
+
+ @override
+ String toString() => s;
+
+ static var xGetValue = null;
+
+ static get x {
+ h.operations.add('C.x');
+ var tmp = xGetValue;
+ xGetValue = null;
+ return tmp;
+ }
+
+ static void set x(value) {
+ h.operations.add('C.x=$value');
+ }
+
+ var vGetValue = null;
+
+ get v {
+ h.operations.add('$s.v');
+ var tmp = vGetValue;
+ vGetValue = null;
+ return tmp;
+ }
+
+ void set v(value) {
+ h.operations.add('$s.v=$value');
+ }
+
+ var indexGetValue = null;
+
+ operator [](index) {
+ h.operations.add('$s[$index]');
+ var tmp = indexGetValue;
+ indexGetValue = null;
+ return tmp;
+ }
+
+ void operator []=(index, value) {
+ h.operations.add('$s[$index]=$value');
+ }
+
+ final finalOne = 1;
+ final finalNull = null;
+
+ void instanceTest() {
+ // v ??= e is equivalent to ((x) => x == null ? v = e : x)(v)
+
+ yGetValue = 1; check(1, () => v ??= y, ['$s.v', 'y', '$s.v=1']);
+
+ yGetValue = 1;
+ }
+}
+
+class D extends C {
+ D(String s) : super(s);
+
+ get v => bad();
+
+ void set v(value) {
+ bad();
+ }
+
+ void derivedInstanceTest() {
+ // super.v ??= e is equivalent to
+ // ((x) => x == null ? super.v = e : x)(super.v)
+
+
+ }
+}
+
+main() {
+ // Make sure the "none" test fails if "??=" is not implemented. This makes
+ // status files easier to maintain.
+ var _;
+ _ ??= null;
+
+ new C('c').instanceTest();
+ new D('d').derivedInstanceTest();
+
+ // v ??= e is equivalent to ((x) => x == null ? v = e : x)(v)
+
+
+
+
+
+
+
+
+
+
+
+ // C.v ??= e is equivalent to ((x) => x == null ? C.v = e : x)(C.v)
+
+
+
+
+
+ // e1.v ??= e2 is equivalent to
+ // ((x) => ((y) => y == null ? x.v = e2 : y)(x.v))(e1)
+
+
+
+
+
+
+
+
+
+ // e1[e2] ??= e3 is equivalent to
+ // ((a, i) => ((x) => x == null ? a[i] = e3 : x)(a[i]))(e1, e2)
+
+
+
+
+
+ // e1?.v ??= e2 is equivalent to ((x) => x == null ? null : x.v ??= e2)(e1).
+
+
+
+
+
+
+ // C?.v ??= e2 is equivalent to C.v ??= e2.
+
+
+
+
+
+
+
+
+}
diff --git a/tests/language/if_null/assignment_behavior_runtime_3_test.dart b/tests/language/if_null/assignment_behavior_runtime_3_test.dart
new file mode 100644
index 0000000..bca92f8
--- /dev/null
+++ b/tests/language/if_null/assignment_behavior_runtime_3_test.dart
@@ -0,0 +1,209 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// Copyright (c) 2015, 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.
+
+// Verify semantics of the ??= operator, including order of operations, by
+// keeping track of the operations performed.
+
+import "package:expect/expect.dart";
+import "assignment_helper.dart" as h;
+
+bad() {
+ Expect.fail('Should not be executed');
+}
+
+var xGetValue = null;
+
+get x {
+ h.operations.add('x');
+ var tmp = xGetValue;
+ xGetValue = null;
+ return tmp;
+}
+
+void set x(value) {
+ h.operations.add('x=$value');
+}
+
+var yGetValue = null;
+
+get y {
+ h.operations.add('y');
+ var tmp = yGetValue;
+ yGetValue = null;
+ return tmp;
+}
+
+void set y(value) {
+ h.operations.add('y=$value');
+}
+
+var zGetValue = null;
+
+get z {
+ h.operations.add('z');
+ var tmp = zGetValue;
+ zGetValue = null;
+ return tmp;
+}
+
+void set z(value) {
+ h.operations.add('z=$value');
+}
+
+var fValue = null;
+
+f() {
+ h.operations.add('f()');
+ var tmp = fValue;
+ fValue = null;
+ return tmp;
+}
+
+void check(expectedValue, f(), expectedOperations) {
+ Expect.equals(expectedValue, f());
+ Expect.listEquals(expectedOperations, h.operations);
+ h.operations = [];
+}
+
+class C {
+ final String s;
+
+ C(this.s);
+
+ @override
+ String toString() => s;
+
+ static var xGetValue = null;
+
+ static get x {
+ h.operations.add('C.x');
+ var tmp = xGetValue;
+ xGetValue = null;
+ return tmp;
+ }
+
+ static void set x(value) {
+ h.operations.add('C.x=$value');
+ }
+
+ var vGetValue = null;
+
+ get v {
+ h.operations.add('$s.v');
+ var tmp = vGetValue;
+ vGetValue = null;
+ return tmp;
+ }
+
+ void set v(value) {
+ h.operations.add('$s.v=$value');
+ }
+
+ var indexGetValue = null;
+
+ operator [](index) {
+ h.operations.add('$s[$index]');
+ var tmp = indexGetValue;
+ indexGetValue = null;
+ return tmp;
+ }
+
+ void operator []=(index, value) {
+ h.operations.add('$s[$index]=$value');
+ }
+
+ final finalOne = 1;
+ final finalNull = null;
+
+ void instanceTest() {
+ // v ??= e is equivalent to ((x) => x == null ? v = e : x)(v)
+
+
+
+ yGetValue = 1;
+ }
+}
+
+class D extends C {
+ D(String s) : super(s);
+
+ get v => bad();
+
+ void set v(value) {
+ bad();
+ }
+
+ void derivedInstanceTest() {
+ // super.v ??= e is equivalent to
+ // ((x) => x == null ? super.v = e : x)(super.v)
+ vGetValue = 1; check(1, () => super.v ??= bad(), ['$s.v']);
+
+ }
+}
+
+main() {
+ // Make sure the "none" test fails if "??=" is not implemented. This makes
+ // status files easier to maintain.
+ var _;
+ _ ??= null;
+
+ new C('c').instanceTest();
+ new D('d').derivedInstanceTest();
+
+ // v ??= e is equivalent to ((x) => x == null ? v = e : x)(v)
+
+
+
+
+
+
+
+
+
+
+
+ // C.v ??= e is equivalent to ((x) => x == null ? C.v = e : x)(C.v)
+
+
+
+
+
+ // e1.v ??= e2 is equivalent to
+ // ((x) => ((y) => y == null ? x.v = e2 : y)(x.v))(e1)
+
+
+
+
+
+
+
+
+
+ // e1[e2] ??= e3 is equivalent to
+ // ((a, i) => ((x) => x == null ? a[i] = e3 : x)(a[i]))(e1, e2)
+
+
+
+
+
+ // e1?.v ??= e2 is equivalent to ((x) => x == null ? null : x.v ??= e2)(e1).
+
+
+
+
+
+
+ // C?.v ??= e2 is equivalent to C.v ??= e2.
+
+
+
+
+
+
+
+
+}
diff --git a/tests/language/if_null/assignment_behavior_runtime_4_test.dart b/tests/language/if_null/assignment_behavior_runtime_4_test.dart
new file mode 100644
index 0000000..027437f
--- /dev/null
+++ b/tests/language/if_null/assignment_behavior_runtime_4_test.dart
@@ -0,0 +1,209 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// Copyright (c) 2015, 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.
+
+// Verify semantics of the ??= operator, including order of operations, by
+// keeping track of the operations performed.
+
+import "package:expect/expect.dart";
+import "assignment_helper.dart" as h;
+
+bad() {
+ Expect.fail('Should not be executed');
+}
+
+var xGetValue = null;
+
+get x {
+ h.operations.add('x');
+ var tmp = xGetValue;
+ xGetValue = null;
+ return tmp;
+}
+
+void set x(value) {
+ h.operations.add('x=$value');
+}
+
+var yGetValue = null;
+
+get y {
+ h.operations.add('y');
+ var tmp = yGetValue;
+ yGetValue = null;
+ return tmp;
+}
+
+void set y(value) {
+ h.operations.add('y=$value');
+}
+
+var zGetValue = null;
+
+get z {
+ h.operations.add('z');
+ var tmp = zGetValue;
+ zGetValue = null;
+ return tmp;
+}
+
+void set z(value) {
+ h.operations.add('z=$value');
+}
+
+var fValue = null;
+
+f() {
+ h.operations.add('f()');
+ var tmp = fValue;
+ fValue = null;
+ return tmp;
+}
+
+void check(expectedValue, f(), expectedOperations) {
+ Expect.equals(expectedValue, f());
+ Expect.listEquals(expectedOperations, h.operations);
+ h.operations = [];
+}
+
+class C {
+ final String s;
+
+ C(this.s);
+
+ @override
+ String toString() => s;
+
+ static var xGetValue = null;
+
+ static get x {
+ h.operations.add('C.x');
+ var tmp = xGetValue;
+ xGetValue = null;
+ return tmp;
+ }
+
+ static void set x(value) {
+ h.operations.add('C.x=$value');
+ }
+
+ var vGetValue = null;
+
+ get v {
+ h.operations.add('$s.v');
+ var tmp = vGetValue;
+ vGetValue = null;
+ return tmp;
+ }
+
+ void set v(value) {
+ h.operations.add('$s.v=$value');
+ }
+
+ var indexGetValue = null;
+
+ operator [](index) {
+ h.operations.add('$s[$index]');
+ var tmp = indexGetValue;
+ indexGetValue = null;
+ return tmp;
+ }
+
+ void operator []=(index, value) {
+ h.operations.add('$s[$index]=$value');
+ }
+
+ final finalOne = 1;
+ final finalNull = null;
+
+ void instanceTest() {
+ // v ??= e is equivalent to ((x) => x == null ? v = e : x)(v)
+
+
+
+ yGetValue = 1;
+ }
+}
+
+class D extends C {
+ D(String s) : super(s);
+
+ get v => bad();
+
+ void set v(value) {
+ bad();
+ }
+
+ void derivedInstanceTest() {
+ // super.v ??= e is equivalent to
+ // ((x) => x == null ? super.v = e : x)(super.v)
+
+ yGetValue = 1; check(1, () => super.v ??= y, ['$s.v', 'y', '$s.v=1']);
+ }
+}
+
+main() {
+ // Make sure the "none" test fails if "??=" is not implemented. This makes
+ // status files easier to maintain.
+ var _;
+ _ ??= null;
+
+ new C('c').instanceTest();
+ new D('d').derivedInstanceTest();
+
+ // v ??= e is equivalent to ((x) => x == null ? v = e : x)(v)
+
+
+
+
+
+
+
+
+
+
+
+ // C.v ??= e is equivalent to ((x) => x == null ? C.v = e : x)(C.v)
+
+
+
+
+
+ // e1.v ??= e2 is equivalent to
+ // ((x) => ((y) => y == null ? x.v = e2 : y)(x.v))(e1)
+
+
+
+
+
+
+
+
+
+ // e1[e2] ??= e3 is equivalent to
+ // ((a, i) => ((x) => x == null ? a[i] = e3 : x)(a[i]))(e1, e2)
+
+
+
+
+
+ // e1?.v ??= e2 is equivalent to ((x) => x == null ? null : x.v ??= e2)(e1).
+
+
+
+
+
+
+ // C?.v ??= e2 is equivalent to C.v ??= e2.
+
+
+
+
+
+
+
+
+}
diff --git a/tests/language/if_null/assignment_behavior_runtime_5_test.dart b/tests/language/if_null/assignment_behavior_runtime_5_test.dart
new file mode 100644
index 0000000..534bffd
--- /dev/null
+++ b/tests/language/if_null/assignment_behavior_runtime_5_test.dart
@@ -0,0 +1,209 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// Copyright (c) 2015, 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.
+
+// Verify semantics of the ??= operator, including order of operations, by
+// keeping track of the operations performed.
+
+import "package:expect/expect.dart";
+import "assignment_helper.dart" as h;
+
+bad() {
+ Expect.fail('Should not be executed');
+}
+
+var xGetValue = null;
+
+get x {
+ h.operations.add('x');
+ var tmp = xGetValue;
+ xGetValue = null;
+ return tmp;
+}
+
+void set x(value) {
+ h.operations.add('x=$value');
+}
+
+var yGetValue = null;
+
+get y {
+ h.operations.add('y');
+ var tmp = yGetValue;
+ yGetValue = null;
+ return tmp;
+}
+
+void set y(value) {
+ h.operations.add('y=$value');
+}
+
+var zGetValue = null;
+
+get z {
+ h.operations.add('z');
+ var tmp = zGetValue;
+ zGetValue = null;
+ return tmp;
+}
+
+void set z(value) {
+ h.operations.add('z=$value');
+}
+
+var fValue = null;
+
+f() {
+ h.operations.add('f()');
+ var tmp = fValue;
+ fValue = null;
+ return tmp;
+}
+
+void check(expectedValue, f(), expectedOperations) {
+ Expect.equals(expectedValue, f());
+ Expect.listEquals(expectedOperations, h.operations);
+ h.operations = [];
+}
+
+class C {
+ final String s;
+
+ C(this.s);
+
+ @override
+ String toString() => s;
+
+ static var xGetValue = null;
+
+ static get x {
+ h.operations.add('C.x');
+ var tmp = xGetValue;
+ xGetValue = null;
+ return tmp;
+ }
+
+ static void set x(value) {
+ h.operations.add('C.x=$value');
+ }
+
+ var vGetValue = null;
+
+ get v {
+ h.operations.add('$s.v');
+ var tmp = vGetValue;
+ vGetValue = null;
+ return tmp;
+ }
+
+ void set v(value) {
+ h.operations.add('$s.v=$value');
+ }
+
+ var indexGetValue = null;
+
+ operator [](index) {
+ h.operations.add('$s[$index]');
+ var tmp = indexGetValue;
+ indexGetValue = null;
+ return tmp;
+ }
+
+ void operator []=(index, value) {
+ h.operations.add('$s[$index]=$value');
+ }
+
+ final finalOne = 1;
+ final finalNull = null;
+
+ void instanceTest() {
+ // v ??= e is equivalent to ((x) => x == null ? v = e : x)(v)
+
+
+
+ yGetValue = 1;
+ }
+}
+
+class D extends C {
+ D(String s) : super(s);
+
+ get v => bad();
+
+ void set v(value) {
+ bad();
+ }
+
+ void derivedInstanceTest() {
+ // super.v ??= e is equivalent to
+ // ((x) => x == null ? super.v = e : x)(super.v)
+
+
+ }
+}
+
+main() {
+ // Make sure the "none" test fails if "??=" is not implemented. This makes
+ // status files easier to maintain.
+ var _;
+ _ ??= null;
+
+ new C('c').instanceTest();
+ new D('d').derivedInstanceTest();
+
+ // v ??= e is equivalent to ((x) => x == null ? v = e : x)(v)
+ xGetValue = 1; check(1, () => x ??= bad(), ['x']);
+
+
+
+
+
+
+
+
+
+
+ // C.v ??= e is equivalent to ((x) => x == null ? C.v = e : x)(C.v)
+
+
+
+
+
+ // e1.v ??= e2 is equivalent to
+ // ((x) => ((y) => y == null ? x.v = e2 : y)(x.v))(e1)
+
+
+
+
+
+
+
+
+
+ // e1[e2] ??= e3 is equivalent to
+ // ((a, i) => ((x) => x == null ? a[i] = e3 : x)(a[i]))(e1, e2)
+
+
+
+
+
+ // e1?.v ??= e2 is equivalent to ((x) => x == null ? null : x.v ??= e2)(e1).
+
+
+
+
+
+
+ // C?.v ??= e2 is equivalent to C.v ??= e2.
+
+
+
+
+
+
+
+
+}
diff --git a/tests/language/if_null/assignment_behavior_runtime_6_test.dart b/tests/language/if_null/assignment_behavior_runtime_6_test.dart
new file mode 100644
index 0000000..fbe170b
--- /dev/null
+++ b/tests/language/if_null/assignment_behavior_runtime_6_test.dart
@@ -0,0 +1,209 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// Copyright (c) 2015, 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.
+
+// Verify semantics of the ??= operator, including order of operations, by
+// keeping track of the operations performed.
+
+import "package:expect/expect.dart";
+import "assignment_helper.dart" as h;
+
+bad() {
+ Expect.fail('Should not be executed');
+}
+
+var xGetValue = null;
+
+get x {
+ h.operations.add('x');
+ var tmp = xGetValue;
+ xGetValue = null;
+ return tmp;
+}
+
+void set x(value) {
+ h.operations.add('x=$value');
+}
+
+var yGetValue = null;
+
+get y {
+ h.operations.add('y');
+ var tmp = yGetValue;
+ yGetValue = null;
+ return tmp;
+}
+
+void set y(value) {
+ h.operations.add('y=$value');
+}
+
+var zGetValue = null;
+
+get z {
+ h.operations.add('z');
+ var tmp = zGetValue;
+ zGetValue = null;
+ return tmp;
+}
+
+void set z(value) {
+ h.operations.add('z=$value');
+}
+
+var fValue = null;
+
+f() {
+ h.operations.add('f()');
+ var tmp = fValue;
+ fValue = null;
+ return tmp;
+}
+
+void check(expectedValue, f(), expectedOperations) {
+ Expect.equals(expectedValue, f());
+ Expect.listEquals(expectedOperations, h.operations);
+ h.operations = [];
+}
+
+class C {
+ final String s;
+
+ C(this.s);
+
+ @override
+ String toString() => s;
+
+ static var xGetValue = null;
+
+ static get x {
+ h.operations.add('C.x');
+ var tmp = xGetValue;
+ xGetValue = null;
+ return tmp;
+ }
+
+ static void set x(value) {
+ h.operations.add('C.x=$value');
+ }
+
+ var vGetValue = null;
+
+ get v {
+ h.operations.add('$s.v');
+ var tmp = vGetValue;
+ vGetValue = null;
+ return tmp;
+ }
+
+ void set v(value) {
+ h.operations.add('$s.v=$value');
+ }
+
+ var indexGetValue = null;
+
+ operator [](index) {
+ h.operations.add('$s[$index]');
+ var tmp = indexGetValue;
+ indexGetValue = null;
+ return tmp;
+ }
+
+ void operator []=(index, value) {
+ h.operations.add('$s[$index]=$value');
+ }
+
+ final finalOne = 1;
+ final finalNull = null;
+
+ void instanceTest() {
+ // v ??= e is equivalent to ((x) => x == null ? v = e : x)(v)
+
+
+
+ yGetValue = 1;
+ }
+}
+
+class D extends C {
+ D(String s) : super(s);
+
+ get v => bad();
+
+ void set v(value) {
+ bad();
+ }
+
+ void derivedInstanceTest() {
+ // super.v ??= e is equivalent to
+ // ((x) => x == null ? super.v = e : x)(super.v)
+
+
+ }
+}
+
+main() {
+ // Make sure the "none" test fails if "??=" is not implemented. This makes
+ // status files easier to maintain.
+ var _;
+ _ ??= null;
+
+ new C('c').instanceTest();
+ new D('d').derivedInstanceTest();
+
+ // v ??= e is equivalent to ((x) => x == null ? v = e : x)(v)
+
+ yGetValue = 1; check(1, () => x ??= y, ['x', 'y', 'x=1']);
+
+
+
+
+
+
+
+
+
+ // C.v ??= e is equivalent to ((x) => x == null ? C.v = e : x)(C.v)
+
+
+
+
+
+ // e1.v ??= e2 is equivalent to
+ // ((x) => ((y) => y == null ? x.v = e2 : y)(x.v))(e1)
+
+
+
+
+
+
+
+
+
+ // e1[e2] ??= e3 is equivalent to
+ // ((a, i) => ((x) => x == null ? a[i] = e3 : x)(a[i]))(e1, e2)
+
+
+
+
+
+ // e1?.v ??= e2 is equivalent to ((x) => x == null ? null : x.v ??= e2)(e1).
+
+
+
+
+
+
+ // C?.v ??= e2 is equivalent to C.v ??= e2.
+
+
+
+
+
+
+
+
+}
diff --git a/tests/language/if_null/assignment_behavior_runtime_7_test.dart b/tests/language/if_null/assignment_behavior_runtime_7_test.dart
new file mode 100644
index 0000000..8009cf4
--- /dev/null
+++ b/tests/language/if_null/assignment_behavior_runtime_7_test.dart
@@ -0,0 +1,209 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// Copyright (c) 2015, 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.
+
+// Verify semantics of the ??= operator, including order of operations, by
+// keeping track of the operations performed.
+
+import "package:expect/expect.dart";
+import "assignment_helper.dart" as h;
+
+bad() {
+ Expect.fail('Should not be executed');
+}
+
+var xGetValue = null;
+
+get x {
+ h.operations.add('x');
+ var tmp = xGetValue;
+ xGetValue = null;
+ return tmp;
+}
+
+void set x(value) {
+ h.operations.add('x=$value');
+}
+
+var yGetValue = null;
+
+get y {
+ h.operations.add('y');
+ var tmp = yGetValue;
+ yGetValue = null;
+ return tmp;
+}
+
+void set y(value) {
+ h.operations.add('y=$value');
+}
+
+var zGetValue = null;
+
+get z {
+ h.operations.add('z');
+ var tmp = zGetValue;
+ zGetValue = null;
+ return tmp;
+}
+
+void set z(value) {
+ h.operations.add('z=$value');
+}
+
+var fValue = null;
+
+f() {
+ h.operations.add('f()');
+ var tmp = fValue;
+ fValue = null;
+ return tmp;
+}
+
+void check(expectedValue, f(), expectedOperations) {
+ Expect.equals(expectedValue, f());
+ Expect.listEquals(expectedOperations, h.operations);
+ h.operations = [];
+}
+
+class C {
+ final String s;
+
+ C(this.s);
+
+ @override
+ String toString() => s;
+
+ static var xGetValue = null;
+
+ static get x {
+ h.operations.add('C.x');
+ var tmp = xGetValue;
+ xGetValue = null;
+ return tmp;
+ }
+
+ static void set x(value) {
+ h.operations.add('C.x=$value');
+ }
+
+ var vGetValue = null;
+
+ get v {
+ h.operations.add('$s.v');
+ var tmp = vGetValue;
+ vGetValue = null;
+ return tmp;
+ }
+
+ void set v(value) {
+ h.operations.add('$s.v=$value');
+ }
+
+ var indexGetValue = null;
+
+ operator [](index) {
+ h.operations.add('$s[$index]');
+ var tmp = indexGetValue;
+ indexGetValue = null;
+ return tmp;
+ }
+
+ void operator []=(index, value) {
+ h.operations.add('$s[$index]=$value');
+ }
+
+ final finalOne = 1;
+ final finalNull = null;
+
+ void instanceTest() {
+ // v ??= e is equivalent to ((x) => x == null ? v = e : x)(v)
+
+
+
+ yGetValue = 1;
+ }
+}
+
+class D extends C {
+ D(String s) : super(s);
+
+ get v => bad();
+
+ void set v(value) {
+ bad();
+ }
+
+ void derivedInstanceTest() {
+ // super.v ??= e is equivalent to
+ // ((x) => x == null ? super.v = e : x)(super.v)
+
+
+ }
+}
+
+main() {
+ // Make sure the "none" test fails if "??=" is not implemented. This makes
+ // status files easier to maintain.
+ var _;
+ _ ??= null;
+
+ new C('c').instanceTest();
+ new D('d').derivedInstanceTest();
+
+ // v ??= e is equivalent to ((x) => x == null ? v = e : x)(v)
+
+
+ h.xGetValue = 1; check(1, () => h.x ??= bad(), ['h.x']);
+
+
+
+
+
+
+
+
+ // C.v ??= e is equivalent to ((x) => x == null ? C.v = e : x)(C.v)
+
+
+
+
+
+ // e1.v ??= e2 is equivalent to
+ // ((x) => ((y) => y == null ? x.v = e2 : y)(x.v))(e1)
+
+
+
+
+
+
+
+
+
+ // e1[e2] ??= e3 is equivalent to
+ // ((a, i) => ((x) => x == null ? a[i] = e3 : x)(a[i]))(e1, e2)
+
+
+
+
+
+ // e1?.v ??= e2 is equivalent to ((x) => x == null ? null : x.v ??= e2)(e1).
+
+
+
+
+
+
+ // C?.v ??= e2 is equivalent to C.v ??= e2.
+
+
+
+
+
+
+
+
+}
diff --git a/tests/language/if_null/assignment_behavior_runtime_8_test.dart b/tests/language/if_null/assignment_behavior_runtime_8_test.dart
new file mode 100644
index 0000000..739db83
--- /dev/null
+++ b/tests/language/if_null/assignment_behavior_runtime_8_test.dart
@@ -0,0 +1,209 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// Copyright (c) 2015, 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.
+
+// Verify semantics of the ??= operator, including order of operations, by
+// keeping track of the operations performed.
+
+import "package:expect/expect.dart";
+import "assignment_helper.dart" as h;
+
+bad() {
+ Expect.fail('Should not be executed');
+}
+
+var xGetValue = null;
+
+get x {
+ h.operations.add('x');
+ var tmp = xGetValue;
+ xGetValue = null;
+ return tmp;
+}
+
+void set x(value) {
+ h.operations.add('x=$value');
+}
+
+var yGetValue = null;
+
+get y {
+ h.operations.add('y');
+ var tmp = yGetValue;
+ yGetValue = null;
+ return tmp;
+}
+
+void set y(value) {
+ h.operations.add('y=$value');
+}
+
+var zGetValue = null;
+
+get z {
+ h.operations.add('z');
+ var tmp = zGetValue;
+ zGetValue = null;
+ return tmp;
+}
+
+void set z(value) {
+ h.operations.add('z=$value');
+}
+
+var fValue = null;
+
+f() {
+ h.operations.add('f()');
+ var tmp = fValue;
+ fValue = null;
+ return tmp;
+}
+
+void check(expectedValue, f(), expectedOperations) {
+ Expect.equals(expectedValue, f());
+ Expect.listEquals(expectedOperations, h.operations);
+ h.operations = [];
+}
+
+class C {
+ final String s;
+
+ C(this.s);
+
+ @override
+ String toString() => s;
+
+ static var xGetValue = null;
+
+ static get x {
+ h.operations.add('C.x');
+ var tmp = xGetValue;
+ xGetValue = null;
+ return tmp;
+ }
+
+ static void set x(value) {
+ h.operations.add('C.x=$value');
+ }
+
+ var vGetValue = null;
+
+ get v {
+ h.operations.add('$s.v');
+ var tmp = vGetValue;
+ vGetValue = null;
+ return tmp;
+ }
+
+ void set v(value) {
+ h.operations.add('$s.v=$value');
+ }
+
+ var indexGetValue = null;
+
+ operator [](index) {
+ h.operations.add('$s[$index]');
+ var tmp = indexGetValue;
+ indexGetValue = null;
+ return tmp;
+ }
+
+ void operator []=(index, value) {
+ h.operations.add('$s[$index]=$value');
+ }
+
+ final finalOne = 1;
+ final finalNull = null;
+
+ void instanceTest() {
+ // v ??= e is equivalent to ((x) => x == null ? v = e : x)(v)
+
+
+
+ yGetValue = 1;
+ }
+}
+
+class D extends C {
+ D(String s) : super(s);
+
+ get v => bad();
+
+ void set v(value) {
+ bad();
+ }
+
+ void derivedInstanceTest() {
+ // super.v ??= e is equivalent to
+ // ((x) => x == null ? super.v = e : x)(super.v)
+
+
+ }
+}
+
+main() {
+ // Make sure the "none" test fails if "??=" is not implemented. This makes
+ // status files easier to maintain.
+ var _;
+ _ ??= null;
+
+ new C('c').instanceTest();
+ new D('d').derivedInstanceTest();
+
+ // v ??= e is equivalent to ((x) => x == null ? v = e : x)(v)
+
+
+
+ yGetValue = 1; check(1, () => h.x ??= y, ['h.x', 'y', 'h.x=1']);
+
+
+
+
+
+
+
+ // C.v ??= e is equivalent to ((x) => x == null ? C.v = e : x)(C.v)
+
+
+
+
+
+ // e1.v ??= e2 is equivalent to
+ // ((x) => ((y) => y == null ? x.v = e2 : y)(x.v))(e1)
+
+
+
+
+
+
+
+
+
+ // e1[e2] ??= e3 is equivalent to
+ // ((a, i) => ((x) => x == null ? a[i] = e3 : x)(a[i]))(e1, e2)
+
+
+
+
+
+ // e1?.v ??= e2 is equivalent to ((x) => x == null ? null : x.v ??= e2)(e1).
+
+
+
+
+
+
+ // C?.v ??= e2 is equivalent to C.v ??= e2.
+
+
+
+
+
+
+
+
+}
diff --git a/tests/language/if_null/assignment_behavior_runtime_9_test.dart b/tests/language/if_null/assignment_behavior_runtime_9_test.dart
new file mode 100644
index 0000000..4b1fdd5
--- /dev/null
+++ b/tests/language/if_null/assignment_behavior_runtime_9_test.dart
@@ -0,0 +1,209 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// Copyright (c) 2015, 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.
+
+// Verify semantics of the ??= operator, including order of operations, by
+// keeping track of the operations performed.
+
+import "package:expect/expect.dart";
+import "assignment_helper.dart" as h;
+
+bad() {
+ Expect.fail('Should not be executed');
+}
+
+var xGetValue = null;
+
+get x {
+ h.operations.add('x');
+ var tmp = xGetValue;
+ xGetValue = null;
+ return tmp;
+}
+
+void set x(value) {
+ h.operations.add('x=$value');
+}
+
+var yGetValue = null;
+
+get y {
+ h.operations.add('y');
+ var tmp = yGetValue;
+ yGetValue = null;
+ return tmp;
+}
+
+void set y(value) {
+ h.operations.add('y=$value');
+}
+
+var zGetValue = null;
+
+get z {
+ h.operations.add('z');
+ var tmp = zGetValue;
+ zGetValue = null;
+ return tmp;
+}
+
+void set z(value) {
+ h.operations.add('z=$value');
+}
+
+var fValue = null;
+
+f() {
+ h.operations.add('f()');
+ var tmp = fValue;
+ fValue = null;
+ return tmp;
+}
+
+void check(expectedValue, f(), expectedOperations) {
+ Expect.equals(expectedValue, f());
+ Expect.listEquals(expectedOperations, h.operations);
+ h.operations = [];
+}
+
+class C {
+ final String s;
+
+ C(this.s);
+
+ @override
+ String toString() => s;
+
+ static var xGetValue = null;
+
+ static get x {
+ h.operations.add('C.x');
+ var tmp = xGetValue;
+ xGetValue = null;
+ return tmp;
+ }
+
+ static void set x(value) {
+ h.operations.add('C.x=$value');
+ }
+
+ var vGetValue = null;
+
+ get v {
+ h.operations.add('$s.v');
+ var tmp = vGetValue;
+ vGetValue = null;
+ return tmp;
+ }
+
+ void set v(value) {
+ h.operations.add('$s.v=$value');
+ }
+
+ var indexGetValue = null;
+
+ operator [](index) {
+ h.operations.add('$s[$index]');
+ var tmp = indexGetValue;
+ indexGetValue = null;
+ return tmp;
+ }
+
+ void operator []=(index, value) {
+ h.operations.add('$s[$index]=$value');
+ }
+
+ final finalOne = 1;
+ final finalNull = null;
+
+ void instanceTest() {
+ // v ??= e is equivalent to ((x) => x == null ? v = e : x)(v)
+
+
+
+ yGetValue = 1;
+ }
+}
+
+class D extends C {
+ D(String s) : super(s);
+
+ get v => bad();
+
+ void set v(value) {
+ bad();
+ }
+
+ void derivedInstanceTest() {
+ // super.v ??= e is equivalent to
+ // ((x) => x == null ? super.v = e : x)(super.v)
+
+
+ }
+}
+
+main() {
+ // Make sure the "none" test fails if "??=" is not implemented. This makes
+ // status files easier to maintain.
+ var _;
+ _ ??= null;
+
+ new C('c').instanceTest();
+ new D('d').derivedInstanceTest();
+
+ // v ??= e is equivalent to ((x) => x == null ? v = e : x)(v)
+
+
+
+
+ { dynamic l = 1; check(1, () => l ??= bad(), []); }
+
+
+
+
+
+
+ // C.v ??= e is equivalent to ((x) => x == null ? C.v = e : x)(C.v)
+
+
+
+
+
+ // e1.v ??= e2 is equivalent to
+ // ((x) => ((y) => y == null ? x.v = e2 : y)(x.v))(e1)
+
+
+
+
+
+
+
+
+
+ // e1[e2] ??= e3 is equivalent to
+ // ((a, i) => ((x) => x == null ? a[i] = e3 : x)(a[i]))(e1, e2)
+
+
+
+
+
+ // e1?.v ??= e2 is equivalent to ((x) => x == null ? null : x.v ??= e2)(e1).
+
+
+
+
+
+
+ // C?.v ??= e2 is equivalent to C.v ??= e2.
+
+
+
+
+
+
+
+
+}
diff --git a/tests/language/if_null/assignment_behavior_runtime_test.dart b/tests/language/if_null/assignment_behavior_runtime_test.dart
new file mode 100644
index 0000000..4ef49b0
--- /dev/null
+++ b/tests/language/if_null/assignment_behavior_runtime_test.dart
@@ -0,0 +1,209 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// Copyright (c) 2015, 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.
+
+// Verify semantics of the ??= operator, including order of operations, by
+// keeping track of the operations performed.
+
+import "package:expect/expect.dart";
+import "assignment_helper.dart" as h;
+
+bad() {
+ Expect.fail('Should not be executed');
+}
+
+var xGetValue = null;
+
+get x {
+ h.operations.add('x');
+ var tmp = xGetValue;
+ xGetValue = null;
+ return tmp;
+}
+
+void set x(value) {
+ h.operations.add('x=$value');
+}
+
+var yGetValue = null;
+
+get y {
+ h.operations.add('y');
+ var tmp = yGetValue;
+ yGetValue = null;
+ return tmp;
+}
+
+void set y(value) {
+ h.operations.add('y=$value');
+}
+
+var zGetValue = null;
+
+get z {
+ h.operations.add('z');
+ var tmp = zGetValue;
+ zGetValue = null;
+ return tmp;
+}
+
+void set z(value) {
+ h.operations.add('z=$value');
+}
+
+var fValue = null;
+
+f() {
+ h.operations.add('f()');
+ var tmp = fValue;
+ fValue = null;
+ return tmp;
+}
+
+void check(expectedValue, f(), expectedOperations) {
+ Expect.equals(expectedValue, f());
+ Expect.listEquals(expectedOperations, h.operations);
+ h.operations = [];
+}
+
+class C {
+ final String s;
+
+ C(this.s);
+
+ @override
+ String toString() => s;
+
+ static var xGetValue = null;
+
+ static get x {
+ h.operations.add('C.x');
+ var tmp = xGetValue;
+ xGetValue = null;
+ return tmp;
+ }
+
+ static void set x(value) {
+ h.operations.add('C.x=$value');
+ }
+
+ var vGetValue = null;
+
+ get v {
+ h.operations.add('$s.v');
+ var tmp = vGetValue;
+ vGetValue = null;
+ return tmp;
+ }
+
+ void set v(value) {
+ h.operations.add('$s.v=$value');
+ }
+
+ var indexGetValue = null;
+
+ operator [](index) {
+ h.operations.add('$s[$index]');
+ var tmp = indexGetValue;
+ indexGetValue = null;
+ return tmp;
+ }
+
+ void operator []=(index, value) {
+ h.operations.add('$s[$index]=$value');
+ }
+
+ final finalOne = 1;
+ final finalNull = null;
+
+ void instanceTest() {
+ // v ??= e is equivalent to ((x) => x == null ? v = e : x)(v)
+
+
+
+ yGetValue = 1;
+ }
+}
+
+class D extends C {
+ D(String s) : super(s);
+
+ get v => bad();
+
+ void set v(value) {
+ bad();
+ }
+
+ void derivedInstanceTest() {
+ // super.v ??= e is equivalent to
+ // ((x) => x == null ? super.v = e : x)(super.v)
+
+
+ }
+}
+
+main() {
+ // Make sure the "none" test fails if "??=" is not implemented. This makes
+ // status files easier to maintain.
+ var _;
+ _ ??= null;
+
+ new C('c').instanceTest();
+ new D('d').derivedInstanceTest();
+
+ // v ??= e is equivalent to ((x) => x == null ? v = e : x)(v)
+
+
+
+
+
+
+
+
+
+
+
+ // C.v ??= e is equivalent to ((x) => x == null ? C.v = e : x)(C.v)
+
+
+
+
+
+ // e1.v ??= e2 is equivalent to
+ // ((x) => ((y) => y == null ? x.v = e2 : y)(x.v))(e1)
+
+
+
+
+
+
+
+
+
+ // e1[e2] ??= e3 is equivalent to
+ // ((a, i) => ((x) => x == null ? a[i] = e3 : x)(a[i]))(e1, e2)
+
+
+
+
+
+ // e1?.v ??= e2 is equivalent to ((x) => x == null ? null : x.v ??= e2)(e1).
+
+
+
+
+
+
+ // C?.v ??= e2 is equivalent to C.v ??= e2.
+
+
+
+
+
+
+
+
+}
diff --git a/tests/language/if_null/assignment_behavior_test.dart b/tests/language/if_null/assignment_behavior_test.dart
new file mode 100644
index 0000000..a95aa57
--- /dev/null
+++ b/tests/language/if_null/assignment_behavior_test.dart
@@ -0,0 +1,227 @@
+// Copyright (c) 2015, 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.
+
+// Verify semantics of the ??= operator, including order of operations, by
+// keeping track of the operations performed.
+
+import "package:expect/expect.dart";
+import "assignment_helper.dart" as h;
+
+bad() {
+ Expect.fail('Should not be executed');
+}
+
+var xGetValue = null;
+
+get x {
+ h.operations.add('x');
+ var tmp = xGetValue;
+ xGetValue = null;
+ return tmp;
+}
+
+void set x(value) {
+ h.operations.add('x=$value');
+}
+
+var yGetValue = null;
+
+get y {
+ h.operations.add('y');
+ var tmp = yGetValue;
+ yGetValue = null;
+ return tmp;
+}
+
+void set y(value) {
+ h.operations.add('y=$value');
+}
+
+var zGetValue = null;
+
+get z {
+ h.operations.add('z');
+ var tmp = zGetValue;
+ zGetValue = null;
+ return tmp;
+}
+
+void set z(value) {
+ h.operations.add('z=$value');
+}
+
+var fValue = null;
+
+f() {
+ h.operations.add('f()');
+ var tmp = fValue;
+ fValue = null;
+ return tmp;
+}
+
+void check(expectedValue, f(), expectedOperations) {
+ Expect.equals(expectedValue, f());
+ Expect.listEquals(expectedOperations, h.operations);
+ h.operations = [];
+}
+
+class C {
+ final String s;
+
+ C(this.s);
+
+ @override
+ String toString() => s;
+
+ static var xGetValue = null;
+
+ static get x {
+ h.operations.add('C.x');
+ var tmp = xGetValue;
+ xGetValue = null;
+ return tmp;
+ }
+
+ static void set x(value) {
+ h.operations.add('C.x=$value');
+ }
+
+ var vGetValue = null;
+
+ get v {
+ h.operations.add('$s.v');
+ var tmp = vGetValue;
+ vGetValue = null;
+ return tmp;
+ }
+
+ void set v(value) {
+ h.operations.add('$s.v=$value');
+ }
+
+ var indexGetValue = null;
+
+ operator [](index) {
+ h.operations.add('$s[$index]');
+ var tmp = indexGetValue;
+ indexGetValue = null;
+ return tmp;
+ }
+
+ void operator []=(index, value) {
+ h.operations.add('$s[$index]=$value');
+ }
+
+ final finalOne = 1;
+ final finalNull = null;
+
+ void instanceTest() {
+ // v ??= e is equivalent to ((x) => x == null ? v = e : x)(v)
+ vGetValue = 1; check(1, () => v ??= bad(), ['$s.v']);
+ yGetValue = 1; check(1, () => v ??= y, ['$s.v', 'y', '$s.v=1']);
+ finalOne ??= null;
+// ^^^^^^^^
+// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL
+// [cfe] The setter 'finalOne' isn't defined for the class 'C'.
+ yGetValue = 1;
+ }
+}
+
+class D extends C {
+ D(String s) : super(s);
+
+ get v => bad();
+
+ void set v(value) {
+ bad();
+ }
+
+ void derivedInstanceTest() {
+ // super.v ??= e is equivalent to
+ // ((x) => x == null ? super.v = e : x)(super.v)
+ vGetValue = 1; check(1, () => super.v ??= bad(), ['$s.v']);
+ yGetValue = 1; check(1, () => super.v ??= y, ['$s.v', 'y', '$s.v=1']);
+ }
+}
+
+main() {
+ // Make sure the "none" test fails if "??=" is not implemented. This makes
+ // status files easier to maintain.
+ var _;
+ _ ??= null;
+
+ new C('c').instanceTest();
+ new D('d').derivedInstanceTest();
+
+ // v ??= e is equivalent to ((x) => x == null ? v = e : x)(v)
+ xGetValue = 1; check(1, () => x ??= bad(), ['x']);
+ yGetValue = 1; check(1, () => x ??= y, ['x', 'y', 'x=1']);
+ h.xGetValue = 1; check(1, () => h.x ??= bad(), ['h.x']);
+ yGetValue = 1; check(1, () => h.x ??= y, ['h.x', 'y', 'h.x=1']);
+ { var l = 1; check(1, () => l ??= bad(), []); }
+ { var l; yGetValue = 1; check(1, () => l ??= y, ['y']); Expect.equals(1, l); }
+ { final l = 1; l ??= null; }
+ // ^
+ // [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_LOCAL
+ // [cfe] Can't assign to the final variable 'l'.
+ C ??= null;
+//^
+// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_TYPE
+// [cfe] Can't assign to a type literal.
+ h ??= null;
+//^
+// [analyzer] COMPILE_TIME_ERROR.PREFIX_IDENTIFIER_NOT_FOLLOWED_BY_DOT
+// [cfe] A prefix can't be used as an expression.
+ h[0] ??= null;
+//^
+// [analyzer] COMPILE_TIME_ERROR.PREFIX_IDENTIFIER_NOT_FOLLOWED_BY_DOT
+// [cfe] A prefix can't be used as an expression.
+
+ // C.v ??= e is equivalent to ((x) => x == null ? C.v = e : x)(C.v)
+ C.xGetValue = 1; check(1, () => C.x ??= bad(), ['C.x']);
+ yGetValue = 1; check(1, () => C.x ??= y, ['C.x', 'y', 'C.x=1']);
+ h.C.xGetValue = 1; check(1, () => h.C.x ??= bad(), ['h.C.x']);
+ yGetValue = 1; check(1, () => h.C.x ??= y, ['h.C.x', 'y', 'h.C.x=1']);
+
+ // e1.v ??= e2 is equivalent to
+ // ((x) => ((y) => y == null ? x.v = e2 : y)(x.v))(e1)
+ xGetValue = new C('x'); xGetValue.vGetValue = 1;
+ check(1, () => x.v ??= bad(), ['x', 'x.v']);
+ xGetValue = new C('x'); yGetValue = 1;
+ check(1, () => x.v ??= y, ['x', 'x.v', 'y', 'x.v=1']);
+ fValue = new C('f()'); fValue.vGetValue = 1;
+ check(1, () => f().v ??= bad(), ['f()', 'f().v']);
+ fValue = new C('f()'); yGetValue = 1;
+ check(1, () => f().v ??= y, ['f()', 'f().v', 'y', 'f().v=1']);
+
+ // e1[e2] ??= e3 is equivalent to
+ // ((a, i) => ((x) => x == null ? a[i] = e3 : x)(a[i]))(e1, e2)
+ xGetValue = new C('x'); yGetValue = 1; xGetValue.indexGetValue = 2;
+ check(2, () => x[y] ??= bad(), ['x', 'y', 'x[1]']);
+ xGetValue = new C('x'); yGetValue = 1; zGetValue = 2;
+ check(2, () => x[y] ??= z, ['x', 'y', 'x[1]', 'z', 'x[1]=2']);
+
+ // e1?.v ??= e2 is equivalent to ((x) => x == null ? null : x.v ??= e2)(e1).
+ check(null, () => x?.v ??= bad(), ['x']);
+ xGetValue = new C('x'); xGetValue.vGetValue = 1;
+ check(1, () => x?.v ??= bad(), ['x', 'x.v']);
+ xGetValue = new C('x'); yGetValue = 1;
+ check(1, () => x?.v ??= y, ['x', 'x.v', 'y', 'x.v=1']);
+
+ // C?.v ??= e2 is equivalent to C.v ??= e2.
+ C.xGetValue = 1;
+ check(1, () => C?.x ??= bad(), ['C.x']);
+ h.C.xgetValue = 1;
+ // ^^^^^^^^^
+ // [analyzer] STATIC_TYPE_WARNING.UNDEFINED_SETTER
+ // [cfe] Setter not found: 'xgetValue'.
+ check(1, () => h.c?.x ??= bad(), ['h.C.x']);
+ // ^
+ // [analyzer] STATIC_TYPE_WARNING.UNDEFINED_PREFIXED_NAME
+ // [cfe] Getter not found: 'c'.
+ yGetValue = 1;
+ check(1, () => C?.x ??= y, ['C.x', 'y', 'C.x=1']);
+ yGetValue = 1;
+ check(1, () => h.C?.x ??= y, ['h.C.x', 'y', 'h.C.x=1']);
+}
diff --git a/tests/language/if_null/assignment_helper.dart b/tests/language/if_null/assignment_helper.dart
new file mode 100644
index 0000000..9d6819b
--- /dev/null
+++ b/tests/language/if_null/assignment_helper.dart
@@ -0,0 +1,40 @@
+// Copyright (c) 2015, 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.
+
+// Library used by if_null_assignment_behavior_test.dart, which
+// imports it using the prefix "h.".
+
+library lib;
+
+import "package:expect/expect.dart";
+
+List<String> operations = [];
+
+var xGetValue = null;
+
+get x {
+ operations.add('h.x');
+ var tmp = xGetValue;
+ xGetValue = null;
+ return tmp;
+}
+
+void set x(value) {
+ operations.add('h.x=$value');
+}
+
+class C {
+ static var xGetValue = null;
+
+ static get x {
+ operations.add('h.C.x');
+ var tmp = xGetValue;
+ xGetValue = null;
+ return tmp;
+ }
+
+ static void set x(value) {
+ operations.add('h.C.x=$value');
+ }
+}
diff --git a/tests/language/if_null/assignment_static_test.dart b/tests/language/if_null/assignment_static_test.dart
new file mode 100644
index 0000000..14edd3c
--- /dev/null
+++ b/tests/language/if_null/assignment_static_test.dart
@@ -0,0 +1,155 @@
+// Copyright (c) 2015, 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.
+
+// Verify that the static type of a ??= b is the least upper bound of the
+// static types of a and b.
+
+import "package:expect/expect.dart";
+
+bad() {
+ Expect.fail('Should not be executed');
+}
+
+/// Actually of type B so that the implicit downcasts below succeed at runtime.
+A theA = new B();
+B theB = new B();
+
+class A {
+ String? a;
+}
+
+class B extends A {
+ String? b;
+}
+
+class C extends A {
+ String? c;
+}
+
+A? get a => null;
+
+void set a(A? value) {}
+
+B? get b => null;
+
+void set b(B? value) {}
+
+class ClassWithStaticGetters {
+ static A? get a => null;
+
+ static void set a(A? value) {}
+
+ static B? get b => null;
+
+ static void set b(B? value) {}
+}
+
+class ClassWithInstanceGetters {
+ A? get a => null;
+
+ void set a(A? value) {}
+
+ B? get b => null;
+
+ void set b(B? value) {}
+}
+
+class DerivedClass extends ClassWithInstanceGetters {
+ A? get a => bad();
+
+ void set a(A? value) {
+ bad();
+ }
+
+ B? get b => bad();
+
+ void set b(B? value) {
+ bad();
+ }
+
+ void derivedTest() {
+ // The static type of super.v ??= e is the LUB of NonNull(typeof(super.v))
+ // and typeof(e).
+ (super.a ??= theA).a; //# 01: ok
+ (super.a ??= theA).b; //# 02: compile-time error
+ (super.a ??= theB).a; //# 03: ok
+ (super.a ??= theB).b; //# 04: compile-time error
+ (super.b ??= theA).a; //# 05: compile-time error
+ (super.b ??= theA).b; //# 06: compile-time error
+
+ // Exactly the same static errors that would be caused by super.v = e
+ // are also generated in the case of super.v ??= e.
+ super.b ??= new C(); //# 07: compile-time error
+ }
+}
+
+main() {
+ new DerivedClass().derivedTest();
+
+ // The static type of v ??= e is the LUB of NonNull(typeof(v)) and typeof(e).
+ (a ??= theA).a; //# 08: ok
+ (a ??= theA).b; //# 09: compile-time error
+ (a ??= theB).a; //# 10: ok
+ (a ??= theB).b; //# 11: compile-time error
+ (b ??= theA).a; //# 12: compile-time error
+ (b ??= theA).b; //# 13: compile-time error
+
+ // Exactly the same static errors that would be caused by v = e are also
+ // generated in the case of v ??= e.
+ b ??= new C(); //# 14: compile-time error
+
+ // The static type of C.v ??= e is the LUB of NonNull(typeof(C.v)) and
+ // typeof(e).
+ (ClassWithStaticGetters.a ??= theA).a; //# 15: ok
+ (ClassWithStaticGetters.a ??= theA).b; //# 16: compile-time error
+ (ClassWithStaticGetters.a ??= theB).a; //# 17: ok
+ (ClassWithStaticGetters.a ??= theB).b; //# 18: compile-time error
+ (ClassWithStaticGetters.b ??= theA).a; //# 19: compile-time error
+ (ClassWithStaticGetters.b ??= theA).b; //# 20: compile-time error
+
+ // Exactly the same static errors that would be caused by C.v = e are
+ // also generated in the case of C.v ??= e.
+ ClassWithStaticGetters.b ??= new C(); //# 21: compile-time error
+
+ // The static type of e1.v ??= e2 is the LUB of NonNull(typeof(e1.v)) and
+ // typeof(e2).
+ (new ClassWithInstanceGetters().a ??= theA).a; //# 22: ok
+ (new ClassWithInstanceGetters().a ??= theA).b; //# 23: compile-time error
+ (new ClassWithInstanceGetters().a ??= theB).a; //# 24: ok
+ (new ClassWithInstanceGetters().a ??= theB).b; //# 25: compile-time error
+ (new ClassWithInstanceGetters().b ??= theA).a; //# 26: compile-time error
+ (new ClassWithInstanceGetters().b ??= theA).b; //# 27: compile-time error
+
+ // Exactly the same static errors that would be caused by e1.v = e2 are
+ // also generated in the case of e1.v ??= e2.
+ new ClassWithInstanceGetters().b ??= new C(); //# 28: compile-time error
+
+ // The static type of e1[e2] ??= e3 is the LUB of NonNull(typeof(e1[e2])) and
+ // typeof(e3).
+ ((<A?>[null])[0] ??= theA).a; //# 29: ok
+ ((<A?>[null])[0] ??= theA).b; //# 30: compile-time error
+ ((<A?>[null])[0] ??= theB).a; //# 31: ok
+ ((<A?>[null])[0] ??= theB).b; //# 32: compile-time error
+ ((<B?>[null])[0] ??= theA).a; //# 33: compile-time error
+ ((<B?>[null])[0] ??= theA).b; //# 34: compile-time error
+
+ // Exactly the same static errors that would be caused by e1[e2] = e3 are
+ // also generated in the case of e1[e2] ??= e3.
+ (<B?>[null])[0] ??= new C(); //# 35: compile-time error
+
+ // The static type of e1?.v op= e2 is the static type of e1.v op e2,
+ // therefore the static type of e1?.v ??= e2 is the static type of
+ // e1.v ?? e2, which is the LUB of NonNull(typeof(e1?.v)) and typeof(e2).
+ ClassWithInstanceGetters? c = new ClassWithInstanceGetters();
+ (c?.a ??= theA)!.a; //# 36: ok
+ (c?.a ??= theA)!.b; //# 37: compile-time error
+ (c?.a ??= theB)!.a; //# 38: ok
+ (c?.a ??= theB)!.b; //# 39: compile-time error
+ (c?.b ??= theA)!.a; //# 40: compile-time error
+ (c?.b ??= theA)!.b; //# 41: compile-time error
+
+ // Exactly the same static errors that would be caused by e1.v ??= e2 are
+ // also generated in the case of e1?.v ??= e2.
+ c?.b ??= new C(); //# 42: compile-time error
+}
diff --git a/tests/language/if_null/behavior_test.dart b/tests/language/if_null/behavior_test.dart
new file mode 100644
index 0000000..a679108
--- /dev/null
+++ b/tests/language/if_null/behavior_test.dart
@@ -0,0 +1,53 @@
+// Copyright (c) 2015, 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.
+
+// Evaluation of an if-null expression e of the form e1 ?? e2 is equivalent to
+// the evaluation of the expression ((x) => x == null ? e2 : x)(e1). The
+// static type of e is the least upper bound of the static type of e1 and the
+// static type of e2.
+
+import "package:expect/expect.dart";
+
+class A {
+ final String a;
+ A(this.a);
+}
+
+class B extends A {
+ B(String v)
+ : b = v,
+ super(v);
+ final String b;
+}
+
+class C extends A {
+ C(String v)
+ : c = v,
+ super(v);
+ final String c;
+}
+
+B? nullB() => null;
+C? nullC() => null;
+
+main() {
+ int? one = 1;
+ B? b = B('B');
+ Expect.equals(1, one ?? 2);
+ Expect.equals(1, one ?? null);
+ Expect.equals(2, null ?? 2);
+ Expect.equals(null, null ?? null);
+ Expect.equals('B', (b ?? new C('C')).a);
+ Expect.equals('B', ((b ?? new C('C')) as dynamic).b);
+ Expect.throwsNoSuchMethodError(() => ((b ?? new C('C')) as dynamic).c);
+ Expect.equals('B', (b ?? nullC())?.a);
+ Expect.equals('B', ((b ?? nullC()) as dynamic).b);
+ Expect.throwsNoSuchMethodError(() => ((b ?? nullC()) as dynamic).c);
+ Expect.equals('C', (nullB() ?? new C('C')).a);
+ Expect.throwsNoSuchMethodError(() => ((nullB() ?? new C('C')) as dynamic).b);
+ Expect.equals('C', ((nullB() ?? new C('C')) as dynamic).c);
+ Expect.throwsNoSuchMethodError(() => ((nullB() ?? nullC()) as dynamic).a);
+ Expect.throwsNoSuchMethodError(() => ((nullB() ?? nullC()) as dynamic).b);
+ Expect.throwsNoSuchMethodError(() => ((nullB() ?? nullC()) as dynamic).c);
+}
diff --git a/tests/language/if_null/evaluation_order_test.dart b/tests/language/if_null/evaluation_order_test.dart
new file mode 100644
index 0000000..ca78ab4
--- /dev/null
+++ b/tests/language/if_null/evaluation_order_test.dart
@@ -0,0 +1,33 @@
+// Copyright (c) 2015, 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.
+
+// Evaluation of an if-null expression e of the form e1 ?? e2 is equivalent to
+// the evaluation of the expression ((x) => x == null ? e2 : x)(e1).
+//
+// Therefore, e1 should be evaluated first; if it is non-null, e2 should not
+// be evaluated.
+
+import "package:expect/expect.dart";
+
+bad() {
+ throw new Exception();
+}
+
+bool firstExecuted = false;
+
+first() {
+ firstExecuted = true;
+ return null;
+}
+
+second() {
+ Expect.isTrue(firstExecuted);
+ return 2;
+}
+
+main() {
+ int? one = 1;
+ Expect.equals(1, one ?? bad());
+ Expect.equals(2, first() ?? second());
+}
diff --git a/tests/language/if_null/precedence_runtime_test.dart b/tests/language/if_null/precedence_runtime_test.dart
new file mode 100644
index 0000000..8f65cfc
--- /dev/null
+++ b/tests/language/if_null/precedence_runtime_test.dart
@@ -0,0 +1,35 @@
+// TODO(multitest): This was automatically migrated from a multitest and may
+// contain strange or dead code.
+
+// Copyright (c) 2015, 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.
+
+// Verify that '??' binds tighter than '?:' and less tightly than '||'.
+
+import "package:expect/expect.dart";
+
+main() {
+ // Make sure the "none" test fails if "??" is not implemented. This makes
+ // status files easier to maintain.
+ var _ = null ?? null;
+
+ dynamic falsity = false;
+ dynamic truth = true;
+ dynamic one = 1;
+ dynamic two = 2;
+ dynamic nil = null;
+
+ // "a ?? b ?? c" should be legal, and should evaluate to the first non-null
+ // value (or null if there are no non-null values).
+ Expect.equals(1, one ?? 2 ?? 3);
+ Expect.equals(2, null ?? two ?? 3);
+ Expect.equals(3, null ?? null ?? 3);
+ Expect.equals(null, null ?? null ?? null);
+
+ // "a ?? b ? c : d" should parse as "(a ?? b) ? c : d", therefore provided
+ // that a is true, b need not be a bool. An incorrect parse of
+ // "a ?? (b ? c : d)" would require b to be a bool to avoid a static type
+ // warning.
+ Expect.equals(2, truth ?? one ? 2 : 3);
+}
diff --git a/tests/language/if_null/precedence_test.dart b/tests/language/if_null/precedence_test.dart
new file mode 100644
index 0000000..2b11622
--- /dev/null
+++ b/tests/language/if_null/precedence_test.dart
@@ -0,0 +1,58 @@
+// Copyright (c) 2015, 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.
+
+// Verify that '??' binds tighter than '?:' and less tightly than '||'.
+
+import "package:expect/expect.dart";
+
+main() {
+ // Make sure the "none" test fails if "??" is not implemented. This makes
+ // status files easier to maintain.
+ var _ = null ?? null;
+
+ dynamic falsity = false;
+ dynamic truth = true;
+ dynamic one = 1;
+ dynamic two = 2;
+
+ // "a ?? b ?? c" should be legal, and should evaluate to the first non-null
+ // value (or null if there are no non-null values).
+ Expect.equals(1, one ?? two ?? 3);
+ Expect.equals(2, null ?? two ?? 3);
+ Expect.equals(3, null ?? null ?? 3);
+ Expect.equals(null, null ?? null ?? null);
+
+ // "a ?? b ? c : d" should parse as "(a ?? b) ? c : d", therefore provided
+ // that a is true, b need not be a bool. An incorrect parse of
+ // "a ?? (b ? c : d)" would require b to be a bool to avoid a static type
+ // warning.
+ Expect.equals(2, truth ?? 1 ? 2 : 3);
+
+ // "a ?? b || c" should parse as "a ?? (b || c)", therefore it's a static
+ // type warning if b doesn't have type bool. An incorrect parse of
+ // "(a ?? b) || c" would allow b to have any type provided that a is bool.
+ falsity ?? 1 || true;
+ // ^
+ // [analyzer] STATIC_TYPE_WARNING.NON_BOOL_OPERAND
+ // [cfe] A value of type 'int' can't be assigned to a variable of type 'bool'.
+
+ // "a || b ?? c" should parse as "(a || b) ?? c", therefore it is a static
+ // type warning if b doesn't have type bool. An incorrect parse of
+ // "a || (b ?? c)" would allow b to have any type provided that c is bool.
+ falsity || 1 ?? true;
+// ^
+// [analyzer] STATIC_TYPE_WARNING.NON_BOOL_OPERAND
+// [cfe] A value of type 'int' can't be assigned to a variable of type 'bool'.
+// ^^^^
+// [analyzer] STATIC_WARNING.DEAD_NULL_AWARE_EXPRESSION
+
+ // An incorrect parse of "a || (b ?? c)" would result in no checked-mode
+ // error.
+ Expect.throwsAssertionError(() => false || null ?? true);
+ // ^^^^
+ // [analyzer] STATIC_TYPE_WARNING.NON_BOOL_OPERAND
+ // [cfe] A value of type 'Null' can't be assigned to a variable of type 'bool'.
+ // ^^^^
+ // [analyzer] STATIC_WARNING.DEAD_NULL_AWARE_EXPRESSION
+}
diff --git a/tests/language/operator/equality_covariant_test.dart b/tests/language/operator/equality_covariant_test.dart
new file mode 100644
index 0000000..946532a
--- /dev/null
+++ b/tests/language/operator/equality_covariant_test.dart
@@ -0,0 +1,40 @@
+// Copyright (c) 2020, 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 the dynamic semantics of expressions of the form `e1 == e2` when
+// the `operator ==` parameter is covariant.
+
+import "package:expect/expect.dart";
+
+class EqNever {
+ operator ==(covariant Never other) => throw "unreachable";
+}
+
+class EqTypeVar<T extends Object> {
+ operator ==(covariant T other) => identical(this, other);
+}
+
+void main() {
+ Object oNever = EqNever();
+ Object oTypeNum = EqTypeVar<num>();
+ Object? myNull = null;
+
+ Expect.isFalse(oNever == null);
+ Expect.isFalse(null == oNever);
+ Expect.throws(() => oNever == 0);
+ Expect.isFalse(0 == oNever);
+ Expect.isFalse(oTypeNum == null);
+ Expect.isFalse(null == oTypeNum);
+ Expect.isFalse(oTypeNum == 0);
+ Expect.isFalse(0 == oTypeNum);
+ Expect.isFalse(oTypeNum == 0.0);
+ Expect.isFalse(0.0 == oTypeNum);
+ Expect.throws(() => oTypeNum == "not a number");
+ Expect.isFalse("not a number" == oTypeNum);
+ Expect.throws(() => oTypeNum == oTypeNum);
+ Expect.isFalse(oNever == myNull);
+ Expect.isFalse(myNull == oNever);
+ Expect.isFalse(oTypeNum == myNull);
+ Expect.isFalse(myNull == oTypeNum);
+}
diff --git a/tests/language/operator/equality_static_test.dart b/tests/language/operator/equality_static_test.dart
new file mode 100644
index 0000000..e1508b6
--- /dev/null
+++ b/tests/language/operator/equality_static_test.dart
@@ -0,0 +1,492 @@
+// Copyright (c) 2020, 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 the static analysis of expressions of the form `e1 == e2`: Null is
+// allowed on both the left and right hand side, but handled separately, so
+// the instance member `operator ==` is only invoked with non-null receiver
+// and argument.
+
+import 'dart:async';
+
+class A {}
+
+class Covar1 {
+ // When `typeof(e1)` is `Covar1`, `e1 == e2` requires `typeof(e2) <: Covar1`.
+ operator ==(covariant Covar1 other) => identical(this, other);
+}
+
+abstract class AbstractCovar2 {
+ // When typeof(e1) is a subtype of `AbstractCovar2`, but not a subtype of
+ // `Covar2Impl`, `e1 == e2` requires `typeof(e2) <: AbstractCovar2`. We use
+ // `const` to make it statically known that the actual object for `e1` is a
+ // `Covar2Impl`, thus checking that the `==` check uses the specified static
+ // type rather than using knowledge about the constant expression directly.
+ operator ==(covariant AbstractCovar2 other);
+ const factory AbstractCovar2() = Covar2Impl;
+}
+
+class Covar2Impl implements AbstractCovar2 {
+ const Covar2Impl();
+ operator ==(Object other) => identical(this, other);
+}
+
+void main() {
+ num numVar = 2;
+ A aVar = A();
+ Covar1 covar1Var = Covar1();
+ A? aNullableVar = null;
+ Covar1? covar1NullableVar = null;
+ FutureOr<int?> futureOrNullableIntVar = null;
+ FutureOr<Covar1> futureOrCovar1Var = covar1Var;
+ List<void> voidListVar = [1];
+ var voidVar = voidListVar[0];
+
+ null == null;
+ null == true;
+ null == <int>{};
+ null == numVar;
+ null == aVar;
+ null == covar1Var;
+ null == aNullableVar;
+ null == covar1NullableVar;
+ null == futureOrNullableIntVar;
+ null == futureOrCovar1Var;
+ null == const AbstractCovar2();
+ null == voidListVar;
+ null == voidVar;
+ // ^^^^^^^
+ // [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+ // [cfe] This expression has type 'void' and can't be used.
+
+ true == null;
+ true == true;
+ true == <int>{};
+ true == numVar;
+ true == aVar;
+ true == covar1Var;
+ true == aNullableVar;
+ true == covar1NullableVar;
+ true == futureOrNullableIntVar;
+ true == futureOrCovar1Var;
+ true == const AbstractCovar2();
+ true == voidListVar;
+ true == voidVar;
+ // ^^^^^^^
+ // [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+ // [cfe] This expression has type 'void' and can't be used.
+
+ <int>{} == null;
+ <int>{} == true;
+ <int>{} == <int>{};
+ <int>{} == numVar;
+ <int>{} == aVar;
+ <int>{} == covar1Var;
+ <int>{} == aNullableVar;
+ <int>{} == covar1NullableVar;
+ <int>{} == futureOrNullableIntVar;
+ <int>{} == futureOrCovar1Var;
+ <int>{} == const AbstractCovar2();
+ <int>{} == voidListVar;
+ <int>{} == voidVar;
+ // ^^^^^^^
+ // [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+ // [cfe] This expression has type 'void' and can't be used.
+
+ numVar == null;
+ numVar == true;
+ numVar == <int>{};
+ numVar == numVar;
+ numVar == aVar;
+ numVar == covar1Var;
+ numVar == aNullableVar;
+ numVar == covar1NullableVar;
+ numVar == futureOrNullableIntVar;
+ numVar == futureOrCovar1Var;
+ numVar == const AbstractCovar2();
+ numVar == voidListVar;
+ numVar == voidVar;
+ // ^^^^^^^
+ // [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+ // [cfe] This expression has type 'void' and can't be used.
+
+ aVar == null;
+ aVar == true;
+ aVar == <int>{};
+ aVar == numVar;
+ aVar == aVar;
+ aVar == covar1Var;
+ aVar == aNullableVar;
+ aVar == covar1NullableVar;
+ aVar == futureOrNullableIntVar;
+ aVar == futureOrCovar1Var;
+ aVar == const AbstractCovar2();
+ aVar == voidListVar;
+ aVar == voidVar;
+ // ^^^^^^^
+ // [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+ // [cfe] This expression has type 'void' and can't be used.
+
+ covar1Var == null;
+ covar1Var == true;
+ // ^^^^
+ // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+ // [cfe] unspecified
+ covar1Var == <int>{};
+ // ^^^^^^^
+ // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+ // [cfe] unspecified
+ covar1Var == numVar;
+ // ^^^^^^
+ // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+ // [cfe] unspecified
+ covar1Var == aVar;
+ // ^^^^
+ // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+ // [cfe] unspecified
+ covar1Var == covar1Var;
+ covar1Var == aNullableVar;
+ // ^^^^^^^^^^^^
+ // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+ // [cfe] unspecified
+ covar1Var == covar1NullableVar;
+ covar1Var == futureOrNullableIntVar;
+ // ^^^^^^^^^^^^^^^^^^^^^^
+ // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+ // [cfe] unspecified
+ covar1Var == futureOrCovar1Var;
+ // ^^^^^^^^^^^^^^^^^
+ // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+ // [cfe] unspecified
+ covar1Var == const AbstractCovar2();
+ // ^^^^^^^^^^^^^^^^^^^^^^
+ // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+ // [cfe] unspecified
+ covar1Var == voidListVar;
+ // ^^^^^^^^^^^
+ // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+ // [cfe] unspecified
+ covar1Var == voidVar;
+ // ^^^^^^^
+ // [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+ // [cfe] This expression has type 'void' and can't be used.
+
+ aNullableVar == null;
+ aNullableVar == true;
+ aNullableVar == <int>{};
+ aNullableVar == numVar;
+ aNullableVar == aVar;
+ aNullableVar == covar1Var;
+ aNullableVar == aNullableVar;
+ aNullableVar == covar1NullableVar;
+ aNullableVar == futureOrNullableIntVar;
+ aNullableVar == futureOrCovar1Var;
+ aNullableVar == const AbstractCovar2();
+ aNullableVar == voidListVar;
+ aNullableVar == voidVar;
+ // ^^^^^^^
+ // [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+ // [cfe] This expression has type 'void' and can't be used.
+
+ covar1NullableVar == null;
+ covar1NullableVar == true;
+ // ^^^^
+ // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+ // [cfe] unspecified
+ covar1NullableVar == <int>{};
+ // ^^^^^^^
+ // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+ // [cfe] unspecified
+ covar1NullableVar == numVar;
+ // ^^^^^^
+ // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+ // [cfe] unspecified
+ covar1NullableVar == aVar;
+ // ^^^^
+ // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+ // [cfe] unspecified
+ covar1NullableVar == covar1Var;
+ covar1NullableVar == aNullableVar;
+ // ^^^^^^^^^^^^
+ // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+ // [cfe] unspecified
+ covar1NullableVar == covar1NullableVar;
+ covar1NullableVar == futureOrNullableIntVar;
+ // ^^^^^^^^^^^^^^^^^^^^^^
+ // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+ // [cfe] unspecified
+ covar1NullableVar == futureOrCovar1Var;
+ // ^^^^^^^^^^^^^^^^^
+ // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+ // [cfe] unspecified
+ covar1NullableVar == const AbstractCovar2();
+ // ^^^^^^^^^^^^^^^^^^^^^^
+ // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+ // [cfe] unspecified
+ covar1NullableVar == voidListVar;
+ // ^^^^^^^^^^^
+ // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+ // [cfe] unspecified
+ covar1NullableVar == voidVar;
+ // ^^^^^^^
+ // [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+ // [cfe] This expression has type 'void' and can't be used.
+
+ futureOrNullableIntVar == null;
+ futureOrNullableIntVar == true;
+ futureOrNullableIntVar == <int>{};
+ futureOrNullableIntVar == numVar;
+ futureOrNullableIntVar == aVar;
+ futureOrNullableIntVar == covar1Var;
+ futureOrNullableIntVar == aNullableVar;
+ futureOrNullableIntVar == covar1NullableVar;
+ futureOrNullableIntVar == futureOrNullableIntVar;
+ futureOrNullableIntVar == futureOrCovar1Var;
+ futureOrNullableIntVar == const AbstractCovar2();
+ futureOrNullableIntVar == voidListVar;
+ futureOrNullableIntVar == voidVar;
+ // ^^^^^^^
+ // [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+ // [cfe] This expression has type 'void' and can't be used.
+
+ futureOrCovar1Var == null;
+ futureOrCovar1Var == true;
+ futureOrCovar1Var == <int>{};
+ futureOrCovar1Var == numVar;
+ futureOrCovar1Var == aVar;
+ futureOrCovar1Var == covar1Var;
+ futureOrCovar1Var == aNullableVar;
+ futureOrCovar1Var == covar1NullableVar;
+ futureOrCovar1Var == futureOrNullableIntVar;
+ futureOrCovar1Var == futureOrCovar1Var;
+ futureOrCovar1Var == const AbstractCovar2();
+ futureOrCovar1Var == voidListVar;
+ futureOrCovar1Var == voidVar;
+ // ^^^^^^^
+ // [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+ // [cfe] This expression has type 'void' and can't be used.
+
+ const AbstractCovar2() == null;
+ const AbstractCovar2() == true;
+ // ^^^^
+ // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+ // [cfe] unspecified
+ const AbstractCovar2() == <int>{};
+ // ^^^^^^^
+ // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+ // [cfe] unspecified
+ const AbstractCovar2() == numVar;
+ // ^^^^^^
+ // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+ // [cfe] unspecified
+ const AbstractCovar2() == aVar;
+ // ^^^^
+ // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+ // [cfe] unspecified
+ const AbstractCovar2() == covar1Var;
+ // ^^^^^^^^^
+ // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+ // [cfe] unspecified
+ const AbstractCovar2() == aNullableVar;
+ // ^^^^^^^^^^^^
+ // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+ // [cfe] unspecified
+ const AbstractCovar2() == covar1NullableVar;
+ // ^^^^^^^^^^^^^^^^^
+ // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+ // [cfe] unspecified
+ const AbstractCovar2() == futureOrNullableIntVar;
+ // ^^^^^^^^^^^^^^^^^^^^^^
+ // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+ // [cfe] unspecified
+ const AbstractCovar2() == futureOrCovar1Var;
+ // ^^^^^^^^^^^^^^^^^
+ // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+ // [cfe] unspecified
+ const AbstractCovar2() == const AbstractCovar2();
+ const AbstractCovar2() == voidListVar;
+ // ^^^^^^^^^^^
+ // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+ // [cfe] unspecified
+ const AbstractCovar2() == voidVar;
+ // ^^^^^^^
+ // [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+ // [cfe] This expression has type 'void' and can't be used.
+
+ voidListVar == null;
+ voidListVar == true;
+ voidListVar == <int>{};
+ voidListVar == numVar;
+ voidListVar == aVar;
+ voidListVar == covar1Var;
+ voidListVar == aNullableVar;
+ voidListVar == covar1NullableVar;
+ voidListVar == futureOrNullableIntVar;
+ voidListVar == futureOrCovar1Var;
+ voidListVar == const AbstractCovar2();
+ voidListVar == voidListVar;
+ voidListVar == voidVar;
+ // ^^^^^^^
+ // [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+ // [cfe] This expression has type 'void' and can't be used.
+
+ voidVar == null;
+//^^^^^^^
+// [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+// [cfe] unspecified
+ voidVar == true;
+//^^^^^^^
+// [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+// [cfe] unspecified
+ voidVar == <int>{};
+//^^^^^^^
+// [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+// [cfe] unspecified
+ voidVar == numVar;
+//^^^^^^^
+// [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+// [cfe] unspecified
+ voidVar == aVar;
+//^^^^^^^
+// [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+// [cfe] unspecified
+ voidVar == covar1Var;
+//^^^^^^^
+// [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+// [cfe] unspecified
+ voidVar == aNullableVar;
+//^^^^^^^
+// [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+// [cfe] unspecified
+ voidVar == covar1NullableVar;
+//^^^^^^^
+// [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+// [cfe] unspecified
+ voidVar == futureOrNullableIntVar;
+//^^^^^^^
+// [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+// [cfe] unspecified
+ voidVar == futureOrCovar1Var;
+//^^^^^^^
+// [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+// [cfe] unspecified
+ voidVar == voidListVar;
+//^^^^^^^
+// [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+// [cfe] unspecified
+ voidVar == voidVar;
+//^^^^^^^
+// [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+// [cfe] This expression has type 'void' and can't be used.
+// ^^^^^^^
+// [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+// [cfe] This expression has type 'void' and can't be used.
+
+ void fun<X extends Covar1, Y extends Covar1?, Z extends FutureOr<Covar1>>(
+ X covar1Var, Y covar1NullableVar, Z futureOrCovar1Var) {
+ covar1Var == null;
+ covar1Var == true;
+ // ^^^^
+ // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+ // [cfe] unspecified
+ covar1Var == <int>{};
+ // ^^^^^^^
+ // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+ // [cfe] unspecified
+ covar1Var == numVar;
+ // ^^^^^^
+ // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+ // [cfe] unspecified
+ covar1Var == aVar;
+ // ^^^^
+ // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+ // [cfe] unspecified
+ covar1Var == covar1Var;
+ covar1Var == aNullableVar;
+ // ^^^^^^^^^^^^
+ // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+ // [cfe] unspecified
+ covar1Var == covar1NullableVar;
+ covar1Var == futureOrNullableIntVar;
+ // ^^^^^^^^^^^^^^^^^^^^^^
+ // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+ // [cfe] unspecified
+ covar1Var == futureOrCovar1Var;
+ // ^^^^^^^^^^^^^^^^^
+ // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+ // [cfe] unspecified
+ covar1Var == const AbstractCovar2();
+ // ^^^^^^^^^^^^^^^^^^^^^^
+ // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+ // [cfe] unspecified
+ covar1Var == voidListVar;
+ // ^^^^^^^^^^^
+ // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+ // [cfe] unspecified
+ covar1Var == voidVar;
+ // ^^^^^^^
+ // [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+ // [cfe] This expression has type 'void' and can't be used.
+
+ covar1NullableVar == null;
+ covar1NullableVar == true;
+ // ^^^^
+ // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+ // [cfe] unspecified
+ covar1NullableVar == <int>{};
+ // ^^^^^^^
+ // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+ // [cfe] unspecified
+ covar1NullableVar == numVar;
+ // ^^^^^^
+ // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+ // [cfe] unspecified
+ covar1NullableVar == aVar;
+ // ^^^^
+ // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+ // [cfe] unspecified
+ covar1NullableVar == covar1Var;
+ covar1NullableVar == aNullableVar;
+ // ^^^^^^^^^^^^
+ // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+ // [cfe] unspecified
+ covar1NullableVar == covar1NullableVar;
+ covar1NullableVar == futureOrNullableIntVar;
+ // ^^^^^^^^^^^^^^^^^^^^^^
+ // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+ // [cfe] unspecified
+ covar1NullableVar == futureOrCovar1Var;
+ // ^^^^^^^^^^^^^^^^^
+ // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+ // [cfe] unspecified
+ covar1NullableVar == const AbstractCovar2();
+ // ^^^^^^^^^^^^^^^^^^^^^^
+ // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+ // [cfe] unspecified
+ covar1NullableVar == voidListVar;
+ // ^^^^^^^^^^^
+ // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+ // [cfe] unspecified
+ covar1NullableVar == voidVar;
+ // ^^^^^^^
+ // [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+ // [cfe] This expression has type 'void' and can't be used.
+
+ futureOrCovar1Var == null;
+ futureOrCovar1Var == true;
+ futureOrCovar1Var == <int>{};
+ futureOrCovar1Var == numVar;
+ futureOrCovar1Var == aVar;
+ futureOrCovar1Var == covar1Var;
+ futureOrCovar1Var == aNullableVar;
+ futureOrCovar1Var == covar1NullableVar;
+ futureOrCovar1Var == futureOrNullableIntVar;
+ futureOrCovar1Var == futureOrCovar1Var;
+ futureOrCovar1Var == const AbstractCovar2();
+ futureOrCovar1Var == voidListVar;
+ futureOrCovar1Var == voidVar;
+ // ^^^^^^^
+ // [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+ // [cfe] This expression has type 'void' and can't be used.
+ }
+}
diff --git a/tests/language/regress/regress41890_test.dart b/tests/language/regress/regress41890_test.dart
new file mode 100644
index 0000000..c23e221
--- /dev/null
+++ b/tests/language/regress/regress41890_test.dart
@@ -0,0 +1,74 @@
+// Copyright (c) 2020, 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.
+
+// dart2jsOptions=--enable-asserts --disable-inlining --disable-type-inference --no-minify
+
+import 'dart:async';
+import 'package:expect/expect.dart';
+
+// This test contains many different Rti instances that are initialized at
+// startup.
+
+typedef F1 = String Function(String, {int opt1});
+typedef F2 = String Function(String, {required int req1, int opt1});
+
+class Thingy {
+ const Thingy();
+}
+
+class Generic<AA> {
+ const Generic();
+}
+
+bool isObject(o) => o is Object;
+bool isF1(o) => o is F1;
+bool isF2(o) => o is F2;
+bool isThingy(o) => o is Thingy;
+bool isGenericF1(o) => o is Generic<F1>;
+bool isGenericF2Q(o) => o is Generic<F2?>;
+bool isG3(o) => o is FutureOr<AA> Function<AA>(AA);
+
+String foo1(String s) => s;
+String foo2(String s, {int opt1 = 0}) => '$s $opt1';
+String foo3(String s, {int opt1 = 0, required int req1}) => '$s $req1 $opt1';
+Never foo4() => throw 'never';
+
+// TODO(sra): Use 'isStrongMode' from package:expect.
+final bool strong = () {
+ try {
+ int i = null as dynamic;
+ return false;
+ } catch (e) {
+ return true;
+ }
+}();
+
+void test() {
+ var items = [foo1, foo2, foo3, foo4, Thingy(), Generic<F1>()];
+
+ void check(String answers, bool Function(dynamic) predicate) {
+ Expect.equals(items.length, answers.length);
+ for (int i = 0; i < items.length; i++) {
+ var item = items[i];
+ String code = answers[i];
+ bool expected =
+ code == 'T' || (code == 'S' && strong) || (code == 'W' && !strong);
+ Expect.equals(expected, predicate(item), "$predicate '$code' $item");
+ }
+ }
+
+ // T = true, S = true only in strong mode, W = true only in weak mode.
+ check('TTTTTT', isObject);
+ check('.TW...', isF1);
+ check('..T...', isF2);
+ check('....T.', isThingy);
+ check('.....T', isGenericF1);
+ check('......', isGenericF2Q);
+ check('......', isG3);
+}
+
+void main() {
+ test();
+ test();
+}
diff --git a/tests/language_2/getter/setter2_runtime_test.dart b/tests/language_2/getter/setter2_runtime_test.dart
index c4e5b8b..85cbfa0 100644
--- a/tests/language_2/getter/setter2_runtime_test.dart
+++ b/tests/language_2/getter/setter2_runtime_test.dart
@@ -5,6 +5,8 @@
// 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.
+// [NNBD non-migrated]: This test relies on implicit downcasts which are an
+// error in NNBD, so has no version in language/.
import "package:expect/expect.dart";
// Tests classes with getters and setters that do not have the same type.
diff --git a/tests/language_2/getter/setter_type3_test.dart b/tests/language_2/getter/setter_type3_test.dart
index 2518fc1..3fa6ac6 100644
--- a/tests/language_2/getter/setter_type3_test.dart
+++ b/tests/language_2/getter/setter_type3_test.dart
@@ -4,6 +4,9 @@
// Getters and setters can have different types, and it is not a warning if the
// two types are assignable.
+// [NNBD non-migrated]: NNBD requires a getter's return type to be a subtype of
+// the corresponding setter's parameter type. So this test would be a static
+// error, and hence there is no corresponding NNBD version.
import "package:expect/expect.dart";
int bar = 499;
diff --git a/tests/language_2/identifier/known_usage_error_runtime_test.dart b/tests/language_2/identifier/known_usage_error_runtime_test.dart
index de3844b..51520d0 100644
--- a/tests/language_2/identifier/known_usage_error_runtime_test.dart
+++ b/tests/language_2/identifier/known_usage_error_runtime_test.dart
@@ -14,9 +14,8 @@
//
// The following exceptions apply:
//
-// It is a compile-time error to use `async`, `await`, or `yield` as an
-// identifier in the body of a function marked `async`, `async*`, or
-// `sync*`.
+// It is a compile-time error to use `await` or `yield` as an identifier in
+// the body of a function marked `async`, `async*`, or `sync*`.
//
// It is a compile-time error if an asynchronous for-in appears inside a
// synchronous function.
@@ -24,6 +23,7 @@
import 'dart:async';
Future<int> f1() async {
+ // Allowed:
int async = 1;
diff --git a/tests/language_2/identifier/known_usage_error_test.dart b/tests/language_2/identifier/known_usage_error_test.dart
index c4e36f3..a0f8866 100644
--- a/tests/language_2/identifier/known_usage_error_test.dart
+++ b/tests/language_2/identifier/known_usage_error_test.dart
@@ -11,9 +11,8 @@
//
// The following exceptions apply:
//
-// It is a compile-time error to use `async`, `await`, or `yield` as an
-// identifier in the body of a function marked `async`, `async*`, or
-// `sync*`.
+// It is a compile-time error to use `await` or `yield` as an identifier in
+// the body of a function marked `async`, `async*`, or `sync*`.
//
// It is a compile-time error if an asynchronous for-in appears inside a
// synchronous function.
@@ -21,6 +20,7 @@
import 'dart:async';
Future<int> f1() async {
+ // Allowed:
int async = 1;
int await = 1;
// ^^^^^
diff --git a/tests/language_2/number/identifier_test.dart b/tests/language_2/number/identifier_test.dart
index ff859b6..ce91927 100644
--- a/tests/language_2/number/identifier_test.dart
+++ b/tests/language_2/number/identifier_test.dart
@@ -36,6 +36,7 @@
// [analyzer] COMPILE_TIME_ERROR.REFERENCED_BEFORE_DECLARATION
// ^^^
// [analyzer] STATIC_WARNING.TYPE_TEST_WITH_NON_TYPE
+
// "a" will be part of hex literal, the following "s" is an error.
0x10as int;
//^^^^^
diff --git a/tests/legacy_status_dart2js.csv b/tests/legacy_status_dart2js.csv
index 8d779d6..416cb20 100644
--- a/tests/legacy_status_dart2js.csv
+++ b/tests/legacy_status_dart2js.csv
@@ -4,12 +4,9 @@
,codegen/logical_expression_test,Fail,Issue 17027,https://dartbug.com/17027,open
,codegen/side_effect_tdiv_regression_test,Fail,Issue 33050,https://dartbug.com/33050,open
,codegen/simple_function_subtype_test,Fail,simple_function_subtype_test is temporarily(?) disabled due to new method for building function type tests.,,
-,end_to_end/show_package_warnings_test,RuntimeError,missing errors from the FE,,
,inference/simple_inferrer_const_closure2_test,Fail,Issue 16507,https://dartbug.com/16507,open
,inference/simple_inferrer_const_closure_test,Fail,Issue 16507,https://dartbug.com/16507,open
,inference/simple_inferrer_global_field_closure_test,Fail,Issue 16507,https://dartbug.com/16507,open
-,sourcemaps/d2js_validity_test,RuntimeError,Issue 33072,https://dartbug.com/33072,open
-,sourcemaps/deferred_d2js_validity_test,RuntimeError,Issue 33072,https://dartbug.com/33072,open
$compiler == dart2js,bounds_check4a_test,RuntimeError,Issue 32741,https://dartbug.com/32741,open
$compiler == dart2js,bounds_check4b_test,RuntimeError,Issue 32741,https://dartbug.com/32741,open
$compiler == dart2js,generic_class_is_test,Fail,Issue 32004,https://dartbug.com/32004,open
diff --git a/tests/lib/html/interactive_media_test.dart b/tests/lib/html/interactive_media_test.dart
index eebae09..5a816aea 100644
--- a/tests/lib/html/interactive_media_test.dart
+++ b/tests/lib/html/interactive_media_test.dart
@@ -12,85 +12,81 @@
// NOTE: To test enable chrome://flags/#enable-experimental-web-platform-features
-main() async {
+testUserMediaAudio(Future userMediaFuture) async {
+ try {
+ var mediaStream = await userMediaFuture;
+ expect(mediaStream, isNotNull);
+ expect(mediaStream is MediaStream, true);
+ var devices = window.navigator.mediaDevices;
+ var enumDevices = await devices.enumerateDevices();
+ expect(enumDevices.length > 1, true);
+ for (var device in enumDevices) {
+ var goodDevLabel = device.label.endsWith('Built-in Output') ||
+ device.label.endsWith('Built-in Microphone');
+ expect(goodDevLabel, true);
+ }
+ } on DomException catch (e) {
+ // Could fail if bot machine doesn't support audio or video.
+ expect(e.name == DomException.NOT_FOUND, true);
+ }
+}
+
+testUserMediaVideo(Future userMediaFuture) async {
+ try {
+ var mediaStream = await userMediaFuture;
+ expect(mediaStream, isNotNull);
+
+ var url = Url.createObjectUrlFromStream(mediaStream);
+ expect(url, isNotNull);
+
+ var video = new VideoElement()..autoplay = true;
+
+ var completer = new Completer();
+ video.onError.listen((e) {
+ completer.completeError(e);
+ });
+ video.onPlaying.first.then((e) {
+ completer.complete(video);
+ });
+
+ document.body!.append(video);
+ video.src = url;
+
+ await completer.future;
+ } on DomException catch (e) {
+ // Could fail if bot machine doesn't support audio or video.
+ expect(e.name == DomException.NOT_FOUND, true);
+ }
+}
+
+main() {
if (MediaStream.supported) {
test('getUserMedia audio', () async {
- try {
- var mediaStream = await window.navigator.getUserMedia(audio: true);
- expect(mediaStream, isNotNull);
- expect(mediaStream is MediaStream, true);
- var devices = window.navigator.mediaDevices;
- var enumDevices = await devices.enumerateDevices();
- expect(enumDevices.length > 1, true);
- for (var device in enumDevices) {
- var goodDevLabel = device.label.endsWith('Built-in Output') ||
- device.label.endsWith('Built-in Microphone');
- expect(goodDevLabel, true);
- }
- } on DomException catch (e) {
- // Could fail if bot machine doesn't support audio or video.
- expect(e.name == DomException.NOT_FOUND, true);
- }
+ await testUserMediaAudio(window.navigator
+ .getUserMedia(audio: true)); // Deprecated way to get a media stream.
+ await testUserMediaAudio(
+ window.navigator.mediaDevices.getUserMedia({'audio': true}));
});
- test('getUserMedia', () {
- return window.navigator.getUserMedia(video: true).then((stream) {
- expect(stream, isNotNull);
-
- var url = Url.createObjectUrlFromStream(stream);
- expect(url, isNotNull);
-
- var video = new VideoElement()..autoplay = true;
-
- var completer = new Completer();
- video.onError.listen((e) {
- completer.completeError(e);
- });
- video.onPlaying.first.then((e) {
- completer.complete(video);
- });
-
- document.body!.append(video);
- video.src = url;
-
- return completer.future;
- }).catchError((dynamic e) {
- // Could fail if bot machine doesn't support audio or video.
- expect(e.name == DomException.NOT_FOUND, true);
- });
+ test('getUserMedia', () async {
+ await testUserMediaVideo(window.navigator
+ .getUserMedia(video: true)); // Deprecated way to get a media stream.
+ await testUserMediaVideo(
+ window.navigator.mediaDevices.getUserMedia({'video': true}));
});
- test('getUserMediaComplexConstructor', () {
- return window.navigator.getUserMedia(video: {
+ test('getUserMediaComplexConstructor', () async {
+ var videoOptions = {
'mandatory': {'minAspectRatio': 1.333, 'maxAspectRatio': 1.334},
'optional': [
{'minFrameRate': 60},
{'maxWidth': 640}
]
- }).then((stream) {
- expect(stream, isNotNull);
-
- var url = Url.createObjectUrlFromStream(stream);
- expect(url, isNotNull);
-
- var video = new VideoElement()..autoplay = true;
-
- var completer = new Completer();
- video.onError.listen((e) {
- completer.completeError(e);
- });
- video.onPlaying.first.then((e) {
- completer.complete(video);
- });
-
- document.body!.append(video);
- video.src = url;
-
- return completer.future;
- }).catchError((dynamic e) {
- // Could fail if bot machine doesn't support audio or video.
- expect(e.name == DomException.NOT_FOUND, true);
- });
+ };
+ await testUserMediaVideo(window.navigator.getUserMedia(
+ video: videoOptions)); // Deprecated way to get a media stream.
+ await testUserMediaVideo(
+ window.navigator.mediaDevices.getUserMedia({'video': videoOptions}));
});
}
}
diff --git a/tests/lib/isolate/package_config_getter_test.dart b/tests/lib/isolate/package_config_getter_test.dart
index 0b7d506..89b347a 100644
--- a/tests/lib/isolate/package_config_getter_test.dart
+++ b/tests/lib/isolate/package_config_getter_test.dart
@@ -14,20 +14,18 @@
// Make a folder structure that has both ".dart_tool/package_config.json" and
// ".packages" and ensure VM prefers to use ".packages".
await withTempDir((String tempDir) async {
- // Setup ".packages" with "foo -> ..." mapping.
+ // Setup bogus ".packages" with "foo -> ..." with invalid mapping.
final dotPackagesPath = path.join(tempDir, '.packages');
final dotPackagesFile = File(dotPackagesPath);
- await dotPackagesFile.writeAsString(buildDotPackages('foo'));
+ await dotPackagesFile.writeAsString(buildDotPackages('invalid'));
- // Setup bogus ".dart_tool/package_config.json" with "invalid -> ..."
- // mapping.
+ // Setup ".dart_tool/package_config.json".
final dotDartToolDir = path.join(tempDir, '.dart_tool');
await Directory(dotDartToolDir).create();
final packageConfigJsonPath =
path.join(dotDartToolDir, 'package_config.json');
final packageConfigJsonFile = File(packageConfigJsonPath);
- await packageConfigJsonFile
- .writeAsString(buildPackageConfig('invalid', true));
+ await packageConfigJsonFile.writeAsString(buildPackageConfig('foo', true));
final mainFile = path.join(tempDir, 'main.dart');
await File(mainFile).writeAsString('''
@@ -36,7 +34,7 @@
main() async {
final uri = await Isolate.packageConfig;
- final expectedUri = Uri.parse('${dotPackagesFile.uri}');
+ final expectedUri = Uri.parse('${packageConfigJsonFile.uri}');
if (uri != expectedUri) {
throw 'VM should use .packages file (but used \$uri).';
}
diff --git a/tests/lib_2/html/interactive_media_test.dart b/tests/lib_2/html/interactive_media_test.dart
index 95bce43..517057c 100644
--- a/tests/lib_2/html/interactive_media_test.dart
+++ b/tests/lib_2/html/interactive_media_test.dart
@@ -12,85 +12,81 @@
// NOTE: To test enable chrome://flags/#enable-experimental-web-platform-features
-main() async {
+testUserMediaAudio(Future userMediaFuture) async {
+ try {
+ var mediaStream = await userMediaFuture;
+ expect(mediaStream, isNotNull);
+ expect(mediaStream is MediaStream, true);
+ var devices = window.navigator.mediaDevices;
+ var enumDevices = await devices.enumerateDevices();
+ expect(enumDevices.length > 1, true);
+ for (var device in enumDevices) {
+ var goodDevLabel = device.label.endsWith('Built-in Output') ||
+ device.label.endsWith('Built-in Microphone');
+ expect(goodDevLabel, true);
+ }
+ } on DomException catch (e) {
+ // Could fail if bot machine doesn't support audio or video.
+ expect(e.name == DomException.NOT_FOUND, true);
+ }
+}
+
+testUserMediaVideo(Future userMediaFuture) async {
+ try {
+ var mediaStream = await userMediaFuture;
+ expect(mediaStream, isNotNull);
+
+ var url = Url.createObjectUrlFromStream(mediaStream);
+ expect(url, isNotNull);
+
+ var video = new VideoElement()..autoplay = true;
+
+ var completer = new Completer();
+ video.onError.listen((e) {
+ completer.completeError(e);
+ });
+ video.onPlaying.first.then((e) {
+ completer.complete(video);
+ });
+
+ document.body.append(video);
+ video.src = url;
+
+ await completer.future;
+ } on DomException catch (e) {
+ // Could fail if bot machine doesn't support audio or video.
+ expect(e.name == DomException.NOT_FOUND, true);
+ }
+}
+
+main() {
if (MediaStream.supported) {
test('getUserMedia audio', () async {
- try {
- var mediaStream = await window.navigator.getUserMedia(audio: true);
- expect(mediaStream, isNotNull);
- expect(mediaStream is MediaStream, true);
- var devices = window.navigator.mediaDevices;
- var enumDevices = await devices.enumerateDevices();
- expect(enumDevices.length > 1, true);
- for (var device in enumDevices) {
- var goodDevLabel = device.label.endsWith('Built-in Output') ||
- device.label.endsWith('Built-in Microphone');
- expect(goodDevLabel, true);
- }
- } catch (e) {
- // Could fail if bot machine doesn't support audio or video.
- expect(e.name == DomException.NOT_FOUND, true);
- }
+ await testUserMediaAudio(window.navigator
+ .getUserMedia(audio: true)); // Deprecated way to get a media stream.
+ await testUserMediaAudio(
+ window.navigator.mediaDevices.getUserMedia({'audio': true}));
});
- test('getUserMedia', () {
- return window.navigator.getUserMedia(video: true).then((stream) {
- expect(stream, isNotNull);
-
- var url = Url.createObjectUrlFromStream(stream);
- expect(url, isNotNull);
-
- var video = new VideoElement()..autoplay = true;
-
- var completer = new Completer();
- video.onError.listen((e) {
- completer.completeError(e);
- });
- video.onPlaying.first.then((e) {
- completer.complete(video);
- });
-
- document.body.append(video);
- video.src = url;
-
- return completer.future;
- }).catchError((e) {
- // Could fail if bot machine doesn't support audio or video.
- expect(e.name == DomException.NOT_FOUND, true);
- });
+ test('getUserMedia', () async {
+ await testUserMediaVideo(window.navigator
+ .getUserMedia(video: true)); // Deprecated way to get a media stream.
+ await testUserMediaVideo(
+ window.navigator.mediaDevices.getUserMedia({'video': true}));
});
- test('getUserMediaComplexConstructor', () {
- return window.navigator.getUserMedia(video: {
+ test('getUserMediaComplexConstructor', () async {
+ var videoOptions = {
'mandatory': {'minAspectRatio': 1.333, 'maxAspectRatio': 1.334},
'optional': [
{'minFrameRate': 60},
{'maxWidth': 640}
]
- }).then((stream) {
- expect(stream, isNotNull);
-
- var url = Url.createObjectUrlFromStream(stream);
- expect(url, isNotNull);
-
- var video = new VideoElement()..autoplay = true;
-
- var completer = new Completer();
- video.onError.listen((e) {
- completer.completeError(e);
- });
- video.onPlaying.first.then((e) {
- completer.complete(video);
- });
-
- document.body.append(video);
- video.src = url;
-
- return completer.future;
- }).catchError((e) {
- // Could fail if bot machine doesn't support audio or video.
- expect(e.name == DomException.NOT_FOUND, true);
- });
+ };
+ await testUserMediaVideo(window.navigator.getUserMedia(
+ video: videoOptions)); // Deprecated way to get a media stream.
+ await testUserMediaVideo(
+ window.navigator.mediaDevices.getUserMedia({'video': videoOptions}));
});
}
}
diff --git a/tests/lib_2/isolate/package_config_getter_test.dart b/tests/lib_2/isolate/package_config_getter_test.dart
index 0b7d506..89b347a 100644
--- a/tests/lib_2/isolate/package_config_getter_test.dart
+++ b/tests/lib_2/isolate/package_config_getter_test.dart
@@ -14,20 +14,18 @@
// Make a folder structure that has both ".dart_tool/package_config.json" and
// ".packages" and ensure VM prefers to use ".packages".
await withTempDir((String tempDir) async {
- // Setup ".packages" with "foo -> ..." mapping.
+ // Setup bogus ".packages" with "foo -> ..." with invalid mapping.
final dotPackagesPath = path.join(tempDir, '.packages');
final dotPackagesFile = File(dotPackagesPath);
- await dotPackagesFile.writeAsString(buildDotPackages('foo'));
+ await dotPackagesFile.writeAsString(buildDotPackages('invalid'));
- // Setup bogus ".dart_tool/package_config.json" with "invalid -> ..."
- // mapping.
+ // Setup ".dart_tool/package_config.json".
final dotDartToolDir = path.join(tempDir, '.dart_tool');
await Directory(dotDartToolDir).create();
final packageConfigJsonPath =
path.join(dotDartToolDir, 'package_config.json');
final packageConfigJsonFile = File(packageConfigJsonPath);
- await packageConfigJsonFile
- .writeAsString(buildPackageConfig('invalid', true));
+ await packageConfigJsonFile.writeAsString(buildPackageConfig('foo', true));
final mainFile = path.join(tempDir, 'main.dart');
await File(mainFile).writeAsString('''
@@ -36,7 +34,7 @@
main() async {
final uri = await Isolate.packageConfig;
- final expectedUri = Uri.parse('${dotPackagesFile.uri}');
+ final expectedUri = Uri.parse('${packageConfigJsonFile.uri}');
if (uri != expectedUri) {
throw 'VM should use .packages file (but used \$uri).';
}
diff --git a/tests/standalone/io/file_write_as_test.dart b/tests/standalone/io/file_write_as_test.dart
index db851c9..d1d2d0d 100644
--- a/tests/standalone/io/file_write_as_test.dart
+++ b/tests/standalone/io/file_write_as_test.dart
@@ -10,7 +10,7 @@
import "package:expect/expect.dart";
testWriteAsBytesSync(dir) {
- var f = new File('${dir.path}/bytes_sync.txt');
+ var f = new File('${dir.path}${Platform.pathSeparator}bytes_sync.txt');
var data = [50, 50, 50];
f.writeAsBytesSync(data);
Expect.listEquals(data, f.readAsBytesSync());
@@ -20,7 +20,7 @@
}
testWriteAsStringSync(dir) {
- var f = new File('${dir.path}/string_sync.txt');
+ var f = new File('${dir.path}${Platform.pathSeparator}string_sync.txt');
var data = 'asdf';
f.writeAsStringSync(data);
Expect.equals(data, f.readAsStringSync());
@@ -49,7 +49,7 @@
Future testWriteAsBytes(dir) {
var completer = new Completer();
- var f = new File('${dir.path}/bytes.txt');
+ var f = new File('${dir.path}${Platform.pathSeparator}bytes.txt');
var data = [50, 50, 50];
f.writeAsBytes(data).then((file) {
Expect.equals(f, file);
@@ -70,7 +70,7 @@
Future testWriteAsString(dir) {
var completer = new Completer();
- var f = new File('${dir.path}/strings.txt');
+ var f = new File('${dir.path}${Platform.pathSeparator}strings.txt');
var data = 'asdf';
f.writeAsString(data).then((file) {
Expect.equals(f, file);
@@ -88,12 +88,19 @@
return completer.future;
}
+testWriteAsSubtypeSync(dir) {
+ var f = new File('${dir.path}${Platform.pathSeparator}bytes_sync.txt');
+ f.writeAsBytesSync(UnmodifiableUint8ListView(Uint8List(10)));
+ Expect.equals(10, f.readAsBytesSync().length);
+}
+
main() {
asyncStart();
var tempDir = Directory.systemTemp.createTempSync('dart_file_write_as');
testWriteAsBytesSync(tempDir);
testWriteAsStringSync(tempDir);
testWriteWithLargeList(tempDir);
+ testWriteAsSubtypeSync(tempDir);
testWriteAsBytes(tempDir).then((_) {
return testWriteAsString(tempDir);
}).then((_) {
diff --git a/tests/standalone/io/regress_flutter_57125_test.dart b/tests/standalone/io/regress_flutter_57125_test.dart
new file mode 100644
index 0000000..dfe54c1
--- /dev/null
+++ b/tests/standalone/io/regress_flutter_57125_test.dart
@@ -0,0 +1,32 @@
+// Copyright (c) 2020, 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.
+
+/// Tests that an exception on a non-socket _NativeSocket, e.g. a pipe to
+/// another process, is properly thrown as a SocketException. This test confirms
+/// the absence of a regression during the dart:io null safety migration where
+/// the late localAddress field wasn't initialized in an error path, raising a
+/// LateInitializationError instead.
+///
+/// https://github.com/flutter/flutter/issues/57125
+
+import 'dart:io';
+
+Future<void> main() async {
+ final process = await Process.start("exit", [], runInShell: true);
+ process.stdout.drain();
+ process.stderr.drain();
+ bool finished = false;
+ // Ensure any other exception is unhandled and fails the test.
+ process.stdin.done.catchError((e) {
+ finished = true;
+ }, test: (e) => e is SocketException);
+ while (!finished) {
+ process.stdin.write("a");
+ await Future.delayed(new Duration(microseconds: 1));
+ }
+ process.stdin.close();
+ await process.exitCode;
+ // Windows hangs for some reason.
+ exit(0);
+}
diff --git a/tests/standalone_2/io/file_write_as_test.dart b/tests/standalone_2/io/file_write_as_test.dart
index db851c9..d1d2d0d 100644
--- a/tests/standalone_2/io/file_write_as_test.dart
+++ b/tests/standalone_2/io/file_write_as_test.dart
@@ -10,7 +10,7 @@
import "package:expect/expect.dart";
testWriteAsBytesSync(dir) {
- var f = new File('${dir.path}/bytes_sync.txt');
+ var f = new File('${dir.path}${Platform.pathSeparator}bytes_sync.txt');
var data = [50, 50, 50];
f.writeAsBytesSync(data);
Expect.listEquals(data, f.readAsBytesSync());
@@ -20,7 +20,7 @@
}
testWriteAsStringSync(dir) {
- var f = new File('${dir.path}/string_sync.txt');
+ var f = new File('${dir.path}${Platform.pathSeparator}string_sync.txt');
var data = 'asdf';
f.writeAsStringSync(data);
Expect.equals(data, f.readAsStringSync());
@@ -49,7 +49,7 @@
Future testWriteAsBytes(dir) {
var completer = new Completer();
- var f = new File('${dir.path}/bytes.txt');
+ var f = new File('${dir.path}${Platform.pathSeparator}bytes.txt');
var data = [50, 50, 50];
f.writeAsBytes(data).then((file) {
Expect.equals(f, file);
@@ -70,7 +70,7 @@
Future testWriteAsString(dir) {
var completer = new Completer();
- var f = new File('${dir.path}/strings.txt');
+ var f = new File('${dir.path}${Platform.pathSeparator}strings.txt');
var data = 'asdf';
f.writeAsString(data).then((file) {
Expect.equals(f, file);
@@ -88,12 +88,19 @@
return completer.future;
}
+testWriteAsSubtypeSync(dir) {
+ var f = new File('${dir.path}${Platform.pathSeparator}bytes_sync.txt');
+ f.writeAsBytesSync(UnmodifiableUint8ListView(Uint8List(10)));
+ Expect.equals(10, f.readAsBytesSync().length);
+}
+
main() {
asyncStart();
var tempDir = Directory.systemTemp.createTempSync('dart_file_write_as');
testWriteAsBytesSync(tempDir);
testWriteAsStringSync(tempDir);
testWriteWithLargeList(tempDir);
+ testWriteAsSubtypeSync(tempDir);
testWriteAsBytes(tempDir).then((_) {
return testWriteAsString(tempDir);
}).then((_) {
diff --git a/tests/standalone_2/io/regress_flutter_57125_test.dart b/tests/standalone_2/io/regress_flutter_57125_test.dart
new file mode 100644
index 0000000..dfe54c1
--- /dev/null
+++ b/tests/standalone_2/io/regress_flutter_57125_test.dart
@@ -0,0 +1,32 @@
+// Copyright (c) 2020, 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.
+
+/// Tests that an exception on a non-socket _NativeSocket, e.g. a pipe to
+/// another process, is properly thrown as a SocketException. This test confirms
+/// the absence of a regression during the dart:io null safety migration where
+/// the late localAddress field wasn't initialized in an error path, raising a
+/// LateInitializationError instead.
+///
+/// https://github.com/flutter/flutter/issues/57125
+
+import 'dart:io';
+
+Future<void> main() async {
+ final process = await Process.start("exit", [], runInShell: true);
+ process.stdout.drain();
+ process.stderr.drain();
+ bool finished = false;
+ // Ensure any other exception is unhandled and fails the test.
+ process.stdin.done.catchError((e) {
+ finished = true;
+ }, test: (e) => e is SocketException);
+ while (!finished) {
+ process.stdin.write("a");
+ await Future.delayed(new Duration(microseconds: 1));
+ }
+ process.stdin.close();
+ await process.exitCode;
+ // Windows hangs for some reason.
+ exit(0);
+}
diff --git a/tools/VERSION b/tools/VERSION
index 3b83bf6..6cc84a2 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -33,7 +33,7 @@
MAJOR 2
MINOR 9
PATCH 0
-PRERELEASE 9
+PRERELEASE 10
PRERELEASE_PATCH 0
-ABI_VERSION 33
-OLDEST_SUPPORTED_ABI_VERSION 33
+ABI_VERSION 34
+OLDEST_SUPPORTED_ABI_VERSION 34
diff --git a/tools/bots/flutter/compile_flutter.sh b/tools/bots/flutter/compile_flutter.sh
index 1aa049f..a65a5c3 100755
--- a/tools/bots/flutter/compile_flutter.sh
+++ b/tools/bots/flutter/compile_flutter.sh
@@ -63,8 +63,8 @@
mkdir flutter_patched_sdk
-$checkout/tools/sdks/dart-sdk/bin/dart --packages=$checkout/.packages $checkout/pkg/front_end/tool/_fasta/compile_platform.dart dart:core --single-root-scheme=org-dartlang-sdk --single-root-base=$checkout/ org-dartlang-sdk:///sdk/lib/libraries.json vm_outline_strong.dill vm_platform_strong.dill vm_outline_strong.dill
-$checkout/tools/sdks/dart-sdk/bin/dart --packages=$checkout/.packages $checkout/pkg/front_end/tool/_fasta/compile_platform.dart --target=flutter dart:core --single-root-scheme=org-dartlang-sdk --single-root-base=src org-dartlang-sdk:///flutter/lib/snapshot/libraries.json vm_outline_strong.dill flutter_patched_sdk/platform_strong.dill flutter_patched_sdk/outline_strong.dill
+$checkout/tools/sdks/dart-sdk/bin/dart --packages=$checkout/.packages $checkout/pkg/front_end/tool/_fasta/compile_platform.dart dart:core -Ddart.vm.product=false -Ddart.developer.causal_async_stacks=true -Ddart.isVM=true --enable-experiment=non-nullable --nnbd-agnostic --single-root-scheme=org-dartlang-sdk --single-root-base=$checkout/ org-dartlang-sdk:///sdk_nnbd/lib/libraries.json vm_outline_strong.dill vm_platform_strong.dill vm_outline_strong.dill
+$checkout/tools/sdks/dart-sdk/bin/dart --packages=$checkout/.packages $checkout/pkg/front_end/tool/_fasta/compile_platform.dart --enable-experiment=non-nullable --nnbd-weak --target=flutter dart:core --single-root-scheme=org-dartlang-sdk --single-root-base=src org-dartlang-sdk:///flutter/lib/snapshot/libraries.json vm_outline_strong.dill flutter_patched_sdk/platform_strong.dill flutter_patched_sdk/outline_strong.dill
popd
diff --git a/tools/bots/test_matrix.json b/tools/bots/test_matrix.json
index aa7fbec..18c86c5 100644
--- a/tools/bots/test_matrix.json
+++ b/tools/bots/test_matrix.json
@@ -4,7 +4,6 @@
"firefox": "67"
},
"branches": [
- "analyzer-stable",
"master"
],
"filesets": {
@@ -204,6 +203,7 @@
".dart_tool/package_config.json",
"out/ReleaseX64/dart",
"out/ReleaseX64/dart2js_platform.dill",
+ "out/ReleaseX64/dart2js_nnbd_strong_platform.dill",
"out/ReleaseX64/dart2js_platform_strong.dill",
"pkg/",
"runtime/tests/",
@@ -235,6 +235,7 @@
"tools/",
"xcodebuild/ReleaseX64/dart",
"xcodebuild/ReleaseX64/dart2js_platform.dill",
+ "xcodebuild/ReleaseX64/dart2js_nnbd_strong_platform.dill",
"xcodebuild/ReleaseX64/dart2js_platform_strong.dill"
],
"front-end": [
@@ -636,7 +637,7 @@
"non-nullable"
],
"dart2js-options": [
- "--no-null-safety"
+ "--no-sound-null-safety"
],
"use-sdk": true
}
@@ -707,7 +708,7 @@
"non-nullable"
],
"dart2js-options": [
- "--no-null-safety",
+ "--no-sound-null-safety",
"--libraries-spec=sdk_nnbd/lib/libraries.json",
"--platform-binaries=out/ReleaseX64/"
],
@@ -722,7 +723,7 @@
"non-nullable"
],
"dart2js-options": [
- "--no-null-safety",
+ "--no-sound-null-safety",
"--libraries-spec=sdk_nnbd/lib/libraries.json",
"--platform-binaries=xcodebuild/ReleaseX64/"
],
@@ -737,7 +738,7 @@
"non-nullable"
],
"dart2js-options": [
- "--null-safety",
+ "--sound-null-safety",
"--libraries-spec=sdk_nnbd/lib/libraries.json",
"--platform-binaries=out/ReleaseX64/"
],
@@ -752,7 +753,7 @@
"non-nullable"
],
"dart2js-options": [
- "--null-safety",
+ "--sound-null-safety",
"--libraries-spec=sdk_nnbd/lib/libraries.json",
"--platform-binaries=xcodebuild/ReleaseX64/"
],
@@ -1740,6 +1741,35 @@
},
{
"builders": [
+ "vm-kernel-gcc-linux"
+ ],
+ "meta": {
+ "description": "This configuration builds the VM with GCC."
+ },
+ "steps": [
+ {
+ "name": "configure dart",
+ "script": "tools/gn.py",
+ "arguments": [
+ "--mode=all",
+ "--arch=all",
+ "--no-clang",
+ "--no-goma"
+ ]
+ },
+ {
+ "name": "build dart",
+ "script": "tools/build.py",
+ "arguments": [
+ "--mode=all",
+ "--arch=all",
+ "runtime"
+ ]
+ }
+ ]
+ },
+ {
+ "builders": [
"vm-kernel-linux-release-simarm",
"vm-kernel-linux-release-simarm64",
"vm-kernel-linux-release-ia32",
@@ -2122,7 +2152,16 @@
"lib",
"dartdevc_native"
],
- "shards": 6,
+ "shards": 5,
+ "fileset": "dart2js_nnbd"
+ },
+ {
+ "name": "ddc nnbd weak co19 tests",
+ "arguments": [
+ "-ndartdevk-weak-linux-release-chrome",
+ "co19/LanguageFeatures/nnbd"
+ ],
+ "shards": 2,
"fileset": "dart2js_nnbd"
},
{
@@ -2936,10 +2975,7 @@
"builders": [
"analyzer-linux-release",
"analyzer-mac-release",
- "analyzer-win-release",
- "analyzer-linux-release-analyzer-stable",
- "analyzer-mac-release-analyzer-stable",
- "analyzer-win-release-analyzer-stable"
+ "analyzer-win-release"
],
"meta": {
"description": "This configuration is used by the analyzer builders."
@@ -3086,8 +3122,7 @@
},
{
"builders": [
- "analyzer-analysis-server-linux",
- "analyzer-analysis-server-linux-analyzer-stable"
+ "analyzer-analysis-server-linux"
],
"meta": {
"description": "Analyze analyzer related packages."
@@ -3342,14 +3377,6 @@
]
},
{
- "name": "analyze tools/gardening",
- "script": "out/ReleaseX64/dart-sdk/bin/dartanalyzer",
- "arguments": [
- "--fatal-warnings",
- "tools/gardening"
- ]
- },
- {
"name": "dartanalyzer --batch tests",
"arguments": [
"-nanalyzer-${system}"
@@ -3533,8 +3560,7 @@
},
{
"builders": [
- "flutter-analyze",
- "flutter-analyze-analyzer-stable"
+ "flutter-analyze"
],
"meta": {
"description": "This configuration is used for analyzing flutter."
diff --git a/tools/bots/try_benchmarks.sh b/tools/bots/try_benchmarks.sh
index 365df82..628f1b2 100755
--- a/tools/bots/try_benchmarks.sh
+++ b/tools/bots/try_benchmarks.sh
@@ -153,6 +153,7 @@
out/ReleaseIA32/gen_kernel_bytecode.dill \
out/ReleaseIA32/run_vm_tests \
sdk \
+ sdk_nnbd \
samples-dev/swarm \
third_party/pkg \
third_party/pkg_tested \
@@ -291,6 +292,7 @@
third_party/firefox_jsshell/linux/ \
out/ReleaseX64/dart_precompiled_runtime \
sdk \
+ sdk_nnbd \
samples-dev/swarm \
third_party/pkg \
third_party/pkg_tested \
diff --git a/tools/build.py b/tools/build.py
index 0d05cd9..895c698 100755
--- a/tools/build.py
+++ b/tools/build.py
@@ -351,8 +351,10 @@
if symbolizer_path:
symbolizer_path = str(os.path.join(DART_ROOT, symbolizer_path))
env['ASAN_SYMBOLIZER_PATH'] = symbolizer_path
+ env['LSAN_SYMBOLIZER_PATH'] = symbolizer_path
env['MSAN_SYMBOLIZER_PATH'] = symbolizer_path
env['TSAN_SYMBOLIZER_PATH'] = symbolizer_path
+ env['UBSAN_SYMBOLIZER_PATH'] = symbolizer_path
return env
diff --git a/tools/dom/idl/dart/dart.idl b/tools/dom/idl/dart/dart.idl
index d4f94297..4479d2d 100644
--- a/tools/dom/idl/dart/dart.idl
+++ b/tools/dom/idl/dart/dart.idl
@@ -316,15 +316,19 @@
};
[DartSupplemental]
-interface MediaDevices {
- [DartSuppress] Promise<MediaStream> getUserMedia(optional MediaStreamConstraints constraints);
-};
-
-[DartSupplemental]
interface Navigator {
[DartSuppress] void getUserMedia(MediaStreamConstraints constraints,
NavigatorUserMediaSuccessCallback successCallback,
NavigatorUserMediaErrorCallback errorCallback);
+ // Marked as nullable to address browser compatibility. See 41905.
+ [DartSuppress, MeasureAs=NavigatorDeviceMemory,RuntimeEnabled=NavigatorDeviceMemory,SecureContext]
+ readonly attribute float deviceMemory;
+ [MeasureAs=NavigatorDeviceMemory,RuntimeEnabled=NavigatorDeviceMemory,SecureContext]
+ readonly attribute float? deviceMemory;
+ // Defined as part of NavigatorNetworkInformation. Marked as nullable to
+ // address browser compatibility. See 41905.
+ [DartSuppress, MeasureAs=NetInfo] readonly attribute NetworkInformation connection;
+ [MeasureAs=NetInfo] readonly attribute NetworkInformation? connection;
};
[DartSupplemental,
@@ -576,6 +580,9 @@
[DartSuppress] void webkitClearResourceTimings();
[DartSuppress] void webkitSetResourceTimingBufferSize(unsigned long maxSize);
[DartSuppress] attribute EventHandler onwebkitresourcetimingbufferfull;
+ // Marked as nullable to address browser compatibility. See 41905.
+ [DartSuppress, Measure] readonly attribute MemoryInfo memory;
+ [Measure] readonly attribute MemoryInfo? memory;
};
[DartSupplemental]
@@ -628,3 +635,16 @@
[Custom] void addEventListener(DOMString type, EventListener? listener, optional boolean options);
[Custom] void removeEventListener(DOMString type, EventListener? listener, optional boolean options);
};
+
+[DartSupplemental]
+interface NetworkInformation : EventTarget {
+ // Marked as nullable to address browser compatibility. See 41905.
+ [DartSuppress, RuntimeEnabled=NetInfoDownlink, MeasureAs=NetInfoDownlink] readonly attribute unrestricted double downlink;
+ [RuntimeEnabled=NetInfoDownlink, MeasureAs=NetInfoDownlink] readonly attribute unrestricted double? downlink;
+};
+
+interface NoncedElement {
+ // Marked as nullable to address browser compatibility. See 41905.
+ [DartSuppress, CEReactions] attribute DOMString nonce;
+ [CEReactions] attribute DOMString? nonce;
+};
diff --git a/tools/dom/scripts/systemhtml.py b/tools/dom/scripts/systemhtml.py
index b017597..9befd7c 100644
--- a/tools/dom/scripts/systemhtml.py
+++ b/tools/dom/scripts/systemhtml.py
@@ -1501,7 +1501,6 @@
PROMISE_CALL=promiseCall,
NAME=html_name)
else:
- template = '\n $RENAME$(ANNOTATIONS)$STATIC final $TYPE $NAME;\n'
# Need to use a getter for list.length properties so we can
# add a setter which throws an exception, satisfying List
# API.
@@ -1541,11 +1540,12 @@
self._members_emitter.Emit(
'\n $RENAME'
'\n $METADATA'
- '\n $TYPE get $HTML_NAME native;'
+ '\n $STATIC $TYPE get $HTML_NAME native;'
'\n',
RENAME=rename if rename else '',
METADATA=metadata if metadata else '',
HTML_NAME=html_name,
+ STATIC='static' if attr.is_static else '',
TYPE=return_type)
def _AddRenamingSetter(self, attr, html_name, rename):
@@ -1561,10 +1561,11 @@
nullable_type = True
self._members_emitter.Emit(
'\n $RENAME'
- '\n set $HTML_NAME($TYPE value) native;'
+ '\n $STATIC set $HTML_NAME($TYPE value) native;'
'\n',
RENAME=rename if rename else '',
HTML_NAME=html_name,
+ STATIC='static ' if attr.is_static else '',
TYPE=self.SecureOutputType(attr.type.id, nullable=nullable_type))
def _AddConvertingGetter(self, attr, html_name, conversion):
diff --git a/tools/dom/templates/html/dart2js/html_dart2js.darttemplate b/tools/dom/templates/html/dart2js/html_dart2js.darttemplate
index 4af64a3..8cc778e 100644
--- a/tools/dom/templates/html/dart2js/html_dart2js.darttemplate
+++ b/tools/dom/templates/html/dart2js/html_dart2js.darttemplate
@@ -132,8 +132,8 @@
HtmlElement.created() : super.created();
// From NoncedElement
- String get nonce native;
- set nonce(String value) native;
+ String$NULLABLE get nonce native;
+ set nonce(String$NULLABLE value) native;
}
/**
diff --git a/tools/gardening/.gitignore b/tools/gardening/.gitignore
deleted file mode 100644
index d888d4c..0000000
--- a/tools/gardening/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-.packages
-temp
diff --git a/tools/gardening/README.md b/tools/gardening/README.md
deleted file mode 100644
index c9854d5..0000000
--- a/tools/gardening/README.md
+++ /dev/null
@@ -1,570 +0,0 @@
-# Gardening Tools
-
-This directory is created for gathering all tools doing gardening in one place.
-Every tool or script, big or small should go here, and over time, hopefully we
-will have a useful collection of tools that support every part of the gardening
-work.
-
-The current (working) tools are:
-
-- [results](#results)
-- [status_overlapping](#status_overlapping)
-- [compare_failures](#compare_failures)
-- [status_summary](#status_summary)
-- [current_summary](#current_summary)
-- [luci](#luci)
-
-All the tools have been created in an add-hoc manner, thus they solve specific
-tasks that may not match your workflow fully. Feel free to add functionality to
-these. Below is a detailed description of each of the tools.
-
-## results ##
-The results tool should be the primary tool for looking at failures and updating
-of status files. The tool fetches results.logs generated for each invocation of
-test.py on either the build bots or the CQ and matches the actual result for
-each test against the status files in your repository. Use it by calling:
-
-`dart results.dart get failures <argument>`
-
-The arguments can be one of the following:
-
-```console
- get failures <result.log> : for a local result.log file.
- get failures <uri_to_result_log> : for direct links to result.logs.
- get failures <uri_try_bot> : for links to try bot builders.
- get failures <commit_number> <patchset> : for links to try bot builders (see example below).
- get failures <builder> : for a builder name.
- get failures <builder> <build_number> : for a builder and build number.
- get failures <builder_group> : for a builder group.
-```
-
-Some common workflows are listed below.
-
-#### Finding failures on the CQ by link ####
-If a CQ job fails then you will receive an email about try jobs failing. There
-is a direct link in the email to the builder that observed a failure:
-
-`https://ci.chromium.org/swarming/task/<swarm_task_id>?server=chromium-swarm.appspot.com`
-
-Copy the link and paste it in the command below to see all failures for that
-builder:
-
-```console
-dart tools/gardening/bin/results.dart get failures <url>
-
-All result logs fetched.
-Calling test.py to find status files for the configuration and the expectation for 18298 tests. Estimated time remaining is 1 seconds...
- FAILED: analyzer/test/generated/strong_mode_kernel_test
- Result: RuntimeError
- Expected: {Slow, Pass}
- Configuration: mode=release, arch=x64, compiler=none, runtime=vm, checked, system=windows, use-sdk, builder-tag=win7
-
- To run locally (if you have the right architecture and runtime):
- tools/test.py --mode=release --arch=x64 --compiler=none --runtime=vm --checked --system=windows --use-sdk --builder-tag=win7 pkg/analyzer/test/generated/strong_mode_kernel_test
-
-```
-
-In the PolyGerrit interface under Tryjobs, for each try builder, you can obtain
-the link by right-clicking a builder-link and use copy link address.
-
-#### Finding failures on the CQ by CL number and patch set ####
-
-To get all failures from all builders in a try run, you can use the following
-command:
-
-```console
-dart tools/gardening/bin/results.dart get failures <CL number> <patch set>
-```
-
-The CL number is shown at the top of the page, and in the URL, and the patch set
-number is shown in the try jobs pane.
-
-#### Finding failures on the build bots ####
-
-There are a few ways to find failures on build bots.
-
-To find failures for an entire builder group use the following:
-```console
-dart tools/gardening/bin/results.dart get failures <group>
-```
-The groups are shown on the main waterfall: vm,vm-kernel,analyzer...
-
-To find failures for the latest build for a single build bot, use the following:
-
-```console
-dart tools/gardening/bin/results.dart get failures <builder_name>
-```
-
-If you want to check failures on a specific build on a builder, use the build
-number:
-```console
-dart tools/gardening/bin/results.dart get failures <builder_name> <build_no>
-```
-Remember, that statuses are tested against status files in your current
-repository. As a result, previous errors may not be reported, if the status
-files have changed.
-
-You can find failures directly from a result log from a run of test.py. You can
-pass the URL linking to a result log, or you can pass the file name of a local
-result log on the command line.
-```console
-dart tools/gardening/bin/results.dart get failures <url>
-```
-
-Finally, you can read the result log from a file by passing the file as so:
-```console
-dart tools/gardening/bin/results.dart get failures <file>
-```
-
-#### Updating the status files ####
-
-For now, the tool does not suggest any updates to status files, however, the
-tool can help to verify that changes to the status files has been done
-correctly.
-
-If a build is failing, the results tool will show which tests failed and how
-their results differed from the expectations.
-
-Update the status files appropriately, save the status files and run the tool
-again with the same arguments as before. If the changes are correct, the tool
-will now report that all test passes.
-
-Note, that changed test files are not rerun, and new status annotations are not
-picked up
-
-#### Generating result.log files for my own test runs ####
-
-If you, for some reason, would like to have a result.log output for a test.py
-invocation, just pass the flag --write-result-log to test.py. The default
-output-directory is `logs`, therefore the file would be written to
-`logs/result.log`. Be aware that existing files are overwritten.
-
-To change the output directory, use the `--output-directory` option.
-
-## status_overlapping ##
-
-If a test appears in multiple sections whose conditions are simultaneously true,
-the test's expectations is the union of the applicable entries. It's often
-unintended and undesirable to have overlapping sections for this reason. To find
-overlapping sections, run:
-
-```console
-dart tools/gardening/bin/status_overlapping.dart <suite>
-```
-
-or
-
-```console
-dart tools/gardening/bin/status_overlapping.dart <suite> <test>
-```
-
-Example output can be:
-```console
-...
-~/dart-sdk/sdk/tests/lib_2/lib_2_analyzer.status
- 5: [ $compiler == dart2analyzer ]
- 9: mirrors/deferred_mirrors_metadata_test: [Fail]
- 10: mirrors/deferred_type_test: [StaticWarning, OK]
- 11: mirrors/generic_f_bounded_mixin_application_test: [StaticWarning]
- 12: mirrors/mirrors_nsm_mismatch_test: [StaticWarning, OK]
- 13: mirrors/mirrors_nsm_test: [StaticWarning, OK]
- 14: mirrors/mirrors_nsm_test/dart2js: [StaticWarning, OK]
- 17: mirrors/repeated_private_anon_mixin_app_test: [StaticWarning, OK]
-
- 19: [ $compiler == dart2analyzer && $strong ]
- 21: mirrors/deferred_mirrors_metadata_test: [StaticWarning]
- 22: mirrors/deferred_type_test: [CompileTimeError, OK]
- 23: mirrors/generic_f_bounded_mixin_application_test: [CompileTimeError]
- 24: mirrors/mirrors_nsm_mismatch_test: [CompileTimeError, OK]
- 25: mirrors/mirrors_nsm_test: [CompileTimeError, OK]
- 26: mirrors/mirrors_nsm_test/dart2js: [CompileTimeError, OK]
- 28: mirrors/repeated_private_anon_mixin_app_test: [CompileTimeError, OK]
-...
-```
-
-Notice that the sections overlap, but there may not be any relationship between
-entries in a section or file, ex. line 9 and 21. This is easier to see if
-overlapping entries are grouped by tests. To divide overlapping sections and
-entries into tests, use --print-test.
-
-## compare_failures ##
-This tool compares a test log of a build step with previous builds. This is
-particularly useful to detect changes over time, such as flakiness of failures,
-timeouts or to find the build where a test started failing. The tool can be used
-for a single builder (vertically) or a builder-group (horizontally and
-vertically).
-
-The tool displays the result of the latest 10 runs, which can be modified by the
-option `--run-count=X` where `X` is the number of latest results to display.
-
-Some typical use-cases are shown below.
-
-#### Finding failing tests on one builder ####
-
-Say a builder is going red, which means, for a step in that builder, some tests
-have not met their expectation. One can then find stdout log of that step and
-pass to the tool, as such:
-
-Usage:
-
-```console
-dart bin/compare_failures.dart <stdio-url>
-```
-
-where `<stdio-url>` is a url for a test log ("https://.../logs/stdio") from the
-buildbot. Here is an example:
-
-```console
-dart bin/compare_failures.dart https://uberchromegw.corp.google.com/i/client.dart/builders/vm-linux-release-x64-optcounter-threshold-be/builds/6786/steps/checked%20vm%20tests/logs/stdio
-
-Errors for /builders/vm-linux-release-x64-optcounter-threshold-be/builds/6786/steps/checked vm tests :
-none-vm-checked release_x64 standalone/io/http_server_response_test
- 6786: Pass / Crash
- 6785: / -- OK --
- 6784: / -- OK --
- 6783: / -- OK --
- 6782: / -- OK --
- 6781: / -- OK --
- 6780: / -- OK --
- 6779: / -- OK --
- 6778: / -- OK --
- 6777: / -- OK --
- 6776: / -- OK --
-```
-
-#### Finding failing tests on a group of builders ####
-
-Sometimes it may be that a group of builders started to turn red. To find if
-there is any commonality between failing test, use the following command:
-
-Usage:
-
-```console
-dart bin/compare_failures.dart <build-group>
-```
-
-where `<build-group>` is the name of the build-group as shown in the console.
-Here is an example:
-
-```console
-dart bin/compare_failures.dart analyzer
-
-Timeouts for /builders/analyzer-win7-release-be/builds/7106/steps/analyzer unit tests :
-none-vm-checked release_x64 pkg/analyzer/test/generated/strong_mode_driver_test
- vm
- 7106: 0:00:21.086108
- 7105: 0:00:19.712000
- 7104: 0:01:00.774077
- 7103: 0:00:19.315931
- 7102: 0:00:21.380137
- 7101: 0:00:16.947695
- 7100: 0:00:13.226322
- 7099: 0:00:15.951636
- 7098: 0:00:19.665966
- 7097: 0:00:15.654565
- 7096: 0:00:24.775477
-
-Errors for /builders/analyzer-win7-release-be/builds/7106/steps/analyzer unit tests :
-none-vm-checked release_x64 pkg/analyzer/test/generated/non_error_resolver_kernel_test
- 7106: Pass Slow / RuntimeError
- 7105: Pass Slow / RuntimeError
- 7104: Pass Slow / RuntimeError
- 7103: / -- OK --
- 7102: / -- OK --
- 7101: / -- OK --
- 7100: / -- OK --
- 7099: / -- OK --
- 7098: / -- OK --
- 7097: / -- OK --
- 7096: / -- OK --
-
-Errors for /builders/analyzer-win7-release-strong-be/builds/3716/steps/analyzer unit tests :
-none-vm-checked release_x64 pkg/analyzer/test/generated/non_error_resolver_kernel_test
- 3716: Pass Slow / RuntimeError
- 3715: Pass Slow / RuntimeError
- 3714: Pass Slow / RuntimeError
- 3713: / -- OK --
- 3712: / -- OK --
- 3711: / -- OK --
- 3710: / -- OK --
- 3709: / -- OK --
- 3708: / -- OK --
- 3707: / -- OK --
- 3706: / -- OK --
-
-No errors found for the 52 remaining bots.
-```
-
-## status_summary ##
-Collects the configurations for all status files in the 'tests' folder that
-mention one of the test names given as argument. This is useful to see what the
-expectation of a particular test/group of tests have on different
-configurations.
-
-Usage:
-
-```console
-dart bin/status_summary.dart <test-name1> [<test-name2> ...]
-```
-where `<test-nameX>` are test names like `language/arithmetic_test` or `function_subtype_typearg2_test`.
-
-#### Finding a summary for a specific test ####
-Say that the test `function_subtype_typearg2_test` suddenly started to fail with
-a `RuntimeError` on Safari in the dart2js safari builder group. It may be that
-similar behavior was already spotted in the dart2js chrome builder group and had
-been resolved (the status file was changed). One could then use run the
-following command:
-
-```console
-dart bin/status_summary.dart function_subtype_typearg2_test
-
-function_subtype_typearg2_test
- file:///usr/local/google/home/mkroghj/dart-sdk/sdk/tests/language/language_dart2js.status
- Crash [ $compiler == dart2js && $dart2js_with_kernel && $host_checked ] NoSuchMethodError: The method 'hasSubclass' was called on null.
- Crash [ $compiler == dart2js && $dart2js_with_kernel && $minified ] NoSuchMethodError: The method 'hasSubclass' was called on null.
- file:///usr/local/google/home/mkroghj/dart-sdk/sdk/tests/language_strong/language_strong.status
- RuntimeError [ $compiler == dartdevc && $runtime != none ] Issue 29920
-```
-The output would then indicate if there are other expectations for the test
-`function_subtype_typearg2_test` in other configurations.
-
-## current_summary ##
-Collects the test results for all build bots in [buildGroups] (defined in
-lib/src/buildbot_data.dart) for tests that mention one of the test names given
-as argument.
-
-Usage:
-
-```console
-dart bin/current_summary.dart <test-name1> [<test-name2> ...]
-```
-
-where `<test-nameX>` are test names like `language/arithmetic_test`.
-
-The results are currently pulled from the second to last build since the last
-build might not have completed yet.
-
-#### Finding if a test fails on other configurations ####
-
-Say that a test `function_subtype_typearg2_test` is behaving strange and a few
-builders have started to turn red, and you suspect this particular test for
-being responsible. Running the following will provide an answer:
-
-```console
-dart bin/current_summary.dart function_subtype_typearg2_test
-
-Fetching "/builders/vm-mac-debug-simdbc64-be/builds/-1/steps/vm tests" + 33 more ...
-Fetching "/builders/app-linux-debug-x64-be/builds/-1/steps/vm tests" + 2 more ...
-Fetching "/builders/vm-kernel-linux-release-x64-be/builds/-1/steps/front-end tests" + 7 more ...
-Fetching "/builders/vm-win-debug-ia32-russian-be/builds/-1/steps/vm tests" + 11 more ...
-Fetching "/builders/vm-noopt-simarm64-mac-be/builds/-1/steps/test vm" + 9 more ...
-Fetching "/builders/vm-linux-product-x64-be/builds/-1/steps/vm tests" + 2 more ...
-Fetching "/builders/vm-linux-debug-x64-reload-be/builds/-1/steps/vm tests" + 11 more ...
-Fetching "/builders/dart2js-linux-d8-hostchecked-unittest-1-5-be/builds/-1/steps/dart2js-d8 tests" + 54 more ...
-Fetching "/builders/dart2js-linux-d8-minified-1-5-be/builds/-1/steps/dart2js-d8 tests" + 79 more ...
-Fetching "/builders/dart2js-linux-jsshell-1-4-be/builds/-1/steps/dart2js-jsshell tests" + 39 more ...
-Fetching "/builders/analyzer-mac10.11-release-be/builds/-1/steps/analyze tests" + 53 more ...
-Fetching "/builders/dart2js-linux-chromeff-1-4-be/builds/-1/steps/dart2js-chrome tests" + 79 more ...
-Fetching "/builders/dart2js-linux-drt-1-2-be/builds/-1/steps/dart2js-drt tests" + 39 more ...
-Fetching "/builders/dart2js-mac10.11-safari-1-3-be/builds/-1/steps/dart2js-safari tests" + 29 more ...
-Fetching "/builders/dart2js-win8-ie11-1-4-be/builds/-1/steps/dart2js ie11 tests" + 111 more ...
-Fetching "/builders/pkg-mac10.11-release-be/builds/-1/steps/package unit tests" + 5 more ...
-
-language/function_subtype_typearg2_test
- pass: none-vm vm-mac-debug-simdbc64-be/vm tests
- pass: none-vm-checked vm-mac-debug-simdbc64-be/checked vm tests
- ...
-language_2/function_subtype_typearg2_test
- pass: none-vm vm-mac-debug-simdbc64-be/vm tests
- pass: none-vm-checked vm-mac-debug-simdbc64-be/checked vm tests
- pass: none-vm vm-mac-release-simdbc64-be/vm tests
- pass: none-vm-checked vm-mac-release-simdbc64-be/checked vm tests
- pass: none-vm vm-linux-debug-x64-be/vm tests
- fail: dart2js-d8 dart2js-linux-d8-minified-1-5-be/dart2js-with-kernel-d8 tests
- ...
-```
-The above output has been truncated (shown as ...), to better indicate how the result of a test is shown. One can then grep for failing tests, as so:
-
-```console
-dart bin/current_summary.dart --group d8-minified language_2 | grep "fail:" -B 5 -A 5
-
- pass: dart2js-d8 dart2js-linux-d8-minified-1-5-be/dart2js-with-kernel-d8 tests
- pass: dart2js-d8 dart2js-linux-d8-minified-1-5-be/dart2js-d8-fast-startup tests
- pass: dart2js-d8-checked dart2js-linux-d8-minified-1-5-be/dart2js-d8-fast-startup-checked tests
-language_2/function_subtype_typearg2_test
- pass: dart2js-d8 dart2js-linux-d8-minified-1-5-be/dart2js-d8 tests
- fail: dart2js-d8 dart2js-linux-d8-minified-1-5-be/dart2js-with-kernel-d8 tests
- pass: dart2js-d8 dart2js-linux-d8-minified-1-5-be/dart2js-d8-fast-startup tests
- pass: dart2js-d8-checked dart2js-linux-d8-minified-1-5-be/dart2js-d8-fast-startup-checked tests
-language_2/class_codegen_test
- pass: dart2js-d8 dart2js-linux-d8-minified-1-5-be/dart2js-d8 tests
- pass: dart2js-d8 dart2js-linux-d8-minified-1-5-be/dart2js-with-kernel-d8 tests
---
- pass: dart2js-d8 dart2js-linux-d8-minified-1-5-be/dart2js-with-kernel-d8 tests
- pass: dart2js-d8 dart2js-linux-d8-minified-1-5-be/dart2js-d8-fast-startup tests
-...
-```
-
-
-## luci ##
-
-Luci is a tool made to query luci/logdog for information. The tool can be used
-to find the information about build-bots, build groups, build-details and
-commits across builds. There is nothing statically entered in the code files
-regarding the bots, thus this tool has all current information.
-
-Usage:
-
-```console
-dart bin/luci.dart <command>
-```
-
-To find help about each of the sub-tools, use `help` as `<command>`.
-
-#### Find build-bots ####
-The primary build-bots are those build-bots shown in the console view. To get
-them as list:
-
-```console
-dart bin/luci.dart --build-bots
-
-ddc-win-release-stable
-pkg-linux-release-dev
-dart2js-mac10.11-safari-3-3-be
-vm-mac-debug-x64-be
-vm-win-debug-ia32-russian-stable
-vm-win-debug-ia32-be
-dart2js-linux-drt-1-2-stable
-dart-sdk-linux-be
-pkg-win7-release-stable
-vm-kernel-mac-release-x64-be
-dart2js-linux-d8-hostchecked-unittest-5-5-stable
-...
-```
-
-Similarly, all build bots can be found by:
-```console
-dart bin/luci.dart --build-bots-all
-```
-
-#### Find build-groups ####
-
-The build groups can be shown as such:
-
-```console
-dart bin/luci.dart --build-groups
-
-safari
-vm
-dart-sdk
-vm-kernel
-ddc
-vm-product
-analyzer
-vm-misc
-vm-reload
-dart2js-jsshell
-vm-app
-pub-pkg
-chrome
-vm-precomp
-dart2js-windows
-dart2js-d8-minified
-dart2js-linux
-dart2js-d8-hostchecked
-misc
-```
-
-This should match the view of the console.
-
-#### Find builders in group ####
-
-The tool can show all the builders in a specific group:
-
-```console
-dart bin/luci.dart --builders-in-group <group>
-```
-
-where `<group>` is one of the groups shown above.
-
-To find all the builders of the `chrome` builder group, use the following:
-
-```console
-dart bin/luci.dart --builders-in-group chrome
-
-dart2js-mac10.11-chrome-be
-dart2js-linux-drt-1-2-be
-dart2js-linux-drt-2-2-be
-dart2js-linux-drt-csp-minified-be
-```
-
-#### Find detailed information about a build-bot ####
-
-To find detailed information about a build on a build-bot, the following command
-can be used. This essentially gives a view similar to the html-page that shows
-information about a specific build, since it will give information about the
-steps, files and commits.
-
-Usage:
-
-```console
-dart bin/luci.dart --build-details <builder> <number>
-```
-
-where `<builder>` is the name of the builder and `<number>` is the build number.
-It can be used in the following way:
-
-```console
-dart bin/luci.dart --build-details vm-linux-debug-x64-reload-be 2971
-```
-
-#### Builds with commit ####
-
-The buildbot assigns a build number to each build on a builder. To find the
-build numbers corresponding to a specific commit, use the --builds-with-commit
-option as follows:
-
-Usage:
-
-```console
-dart bin/luci.dart --builds-with-commit <commit_hash>
-```
-
-where `<commit_hash>` is the full hash of the specific commit. Since all bots
-have to be checked, and one normally wants to investigate the latest commits,
-the cache is only 15 minutes.
-
-To run it, fx, on the hash `4d55a6779e6430c382bf0e0e4b8c0d61bee5c92c`, one can
-run the following:
-
-```console
-dart bin/luci.dart --builds-with-commit 4d55a6779e6430c382bf0e0e4b8c0d61bee5c92c
-2017-09-18 14:42:04.977786 Info: Sorry - this is going to take some time, since we have to look into all 25 latest builds for all bots for client client.dart.
-Subsequent queries run faster if caching is not turned off...
-The commit '4d55a6779e6430c382bf0e0e4b8c0d61bee5c92c is used in the following builds:
-dart2js-mac10.11-safari-3-3-be: #6821 https://luci-milo.appspot.com/buildbot/client.dart/dart2js-mac10.11-safari-3-3-be/6821
-vm-mac-debug-x64-be: #13007 https://luci-milo.appspot.com/buildbot/client.dart/vm-mac-debug-x64-be/13007
-vm-win-debug-ia32-be: #5270 https://luci-milo.appspot.com/buildbot/client.dart/vm-win-debug-ia32-be/5270
-dart-sdk-linux-be: #15544 https://luci-milo.appspot.com/buildbot/client.dart/dart-sdk-linux-be/15544
-vm-kernel-mac-release-x64-be: #1441 https://luci-milo.appspot.com/buildbot/client.dart/vm-kernel-mac-release-x64-be/1441
-ddc-mac-release-be: #972 https://luci-milo.appspot.com/buildbot/client.dart/ddc-mac-release-be/972
-vm-win-product-x64-be: #8433 https://luci-milo.appspot.com/buildbot/client.dart/vm-win-product-x64-be/8433
-analyze-linux-be: #3696 https://luci-milo.appspot.com/buildbot/client.dart/analyze-linux-be/3696
-vm-win-debug-x64-be: #5096 https://luci-milo.appspot.com/buildbot/client.dart/vm-win-debug-x64-be/5096
-vm-win-debug-ia32-russian-be: #3836 https://luci-milo.appspot.com/buildbot/client.dart/vm-win-debug-ia32-russian-be/3836
-dart2js-mac10.11-safari-1-3-be: #6730 https://luci-milo.appspot.com/buildbot/client.dart/dart2js-mac10.11-safari-1-3-be/6730
-...
-```
-
-
-<!--
-#### find_timeouts ####
-Scans past `dart2js-windows` test steps for timeouts and reports the
-frequency of each test that has timed out.
-
-Usage:
-```console
-dart bin/find_timeouts.dart [<count>]
-```
-
-where `<count>` is the number past build that are scanned. -->
\ No newline at end of file
diff --git a/tools/gardening/analysis_options.yaml b/tools/gardening/analysis_options.yaml
deleted file mode 100644
index b5516058..0000000
--- a/tools/gardening/analysis_options.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-# Copyright (c) 2017, 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.
-
-analyzer:
- errors:
- # Allow having TODOs in the code
- todo: ignore
diff --git a/tools/gardening/bin/bot.dart b/tools/gardening/bin/bot.dart
deleted file mode 100644
index 7ee4027..0000000
--- a/tools/gardening/bin/bot.dart
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright (c) 2017, 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 'dart:io';
-
-import 'compare_failures.dart' as compare_failures;
-import 'current_summary.dart' as current_summary;
-import 'find_shard.dart' as find_shard;
-import 'status_summary.dart' as status_summary;
-import 'summary.dart' as summary;
-
-typedef Future MainFunction(List<String> args);
-
-Future help(List<String> args) async {
- if (args.length == 1 && args[0] == "--help") {
- print("This help");
- return null;
- }
-
- print("A script that combines multiple commands:\n");
-
- for (String command in commands.keys) {
- print(command);
- print('-' * command.length);
- await commands[command](["--help"]);
- print("");
- }
-}
-
-const Map<String, MainFunction> commands = const <String, MainFunction>{
- "help": help,
- "summary": summary.main,
- "compare-failures": compare_failures.main,
- "current-summary": current_summary.main,
- "status-summary": status_summary.main,
- "find-shard": find_shard.main,
-};
-
-main(List<String> args) async {
- if (args.isEmpty) {
- await help([]);
- exit(-1);
- }
- var command = commands[args[0]];
- if (command == null) {
- await help([]);
- exit(-1);
- }
- command(args.sublist(1));
-}
diff --git a/tools/gardening/bin/compare_failures.dart b/tools/gardening/bin/compare_failures.dart
deleted file mode 100644
index 0102534..0000000
--- a/tools/gardening/bin/compare_failures.dart
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright (c) 2017, 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.
-
-/// Compares the test log of a build step with previous builds.
-///
-/// Use this to detect flakiness of failures, especially timeouts.
-
-import 'dart:async';
-import 'dart:io';
-
-import 'package:args/args.dart';
-import 'package:gardening/src/bot.dart';
-import 'package:gardening/src/compare_failures_impl.dart';
-import 'package:gardening/src/util.dart';
-
-void help(ArgParser argParser) {
- print('Given a <log-uri> finds all failing tests in that stdout. Then ');
- print('fetches earlier runs of the same bot and compares the results.');
- print('This tool is particularly useful to detect flakes and their ');
- print('frequency.');
- print('Usage: compare_failures [options] ');
- print(' (<log-uri> [<log-uri> ...] | <build-group> [<build-group> ...] | '
- '<builder> [<builder> ...)');
- print('where <log-uri> is the uri the stdio output of a failing test step ');
- print('and <build-group> is the name of a buildbot group, for instance ');
- print('`vm-kernel`, and options are:');
- print(argParser.usage);
-}
-
-Future main(List<String> args) async {
- ArgParser argParser = createArgParser();
- argParser.addOption("run-count",
- defaultsTo: "10", help: "How many previous runs should be fetched");
- argParser.addFlag("force",
- abbr: "f", defaultsTo: false, help: "Force analysis of past results");
- argParser.addOption(Flags.commit,
- help: "Fetch result start from a given commit hash.");
- ArgResults argResults = argParser.parse(args);
- processArgResults(argResults);
-
- var runCount = int.parse(argResults['run-count'], onError: (_) => null);
-
- if (argResults.rest.length < 1 || argResults['help'] || runCount == null) {
- help(argParser);
- if (argResults['help']) return;
- exit(1);
- }
-
- Bot bot = new Bot(logdog: argResults[Flags.logdog]);
- await mainInternal(bot, argResults.rest,
- runCount: runCount,
- commit: argResults[Flags.commit],
- verbose: argResults[Flags.verbose],
- noCache: argResults[Flags.noCache],
- forcePastResults: argResults["force"]);
- bot.close();
-}
diff --git a/tools/gardening/bin/create_shard_data.dart b/tools/gardening/bin/create_shard_data.dart
deleted file mode 100644
index 179e11b..0000000
--- a/tools/gardening/bin/create_shard_data.dart
+++ /dev/null
@@ -1,109 +0,0 @@
-// Copyright (c) 2017, 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.
-
-// Outputs source code for `part` used by `shard2group.dart`. Usage:
-// `dart bin/create_shard_groups.dart source.html >lib/src/shard_data.dart`.
-
-import 'dart:io';
-import 'dart:math' as math;
-
-const String groupsStartMark = r"<td class='DevStatus Alt first";
-const String groupsEndMark = r"<tr class='DevStatusSpacing'>";
-
-List<String> findGroups(List<String> source) {
- List<String> result = <String>[];
- bool started = false;
-
- for (String line in source) {
- if (line.contains(groupsStartMark)) started = true;
- if (started) {
- if (line.contains(groupsEndMark)) break;
- String trimmed = line.trim();
- if (!trimmed.startsWith('<')) {
- result.add(trimmed);
- }
- }
- }
- return result;
-}
-
-const String shardsStartMark = groupsEndMark;
-const String shardsEndMark = r"<td class='DevStatusBox";
-const String shardsGroupStartMark = r"<td class='DevSlave Alt";
-const String shardMark = '/builders/';
-
-List<List<String>> findShards(List<String> source) {
- List<List<String>> result = <List<String>>[];
- List<String> shardResult;
- bool started = false;
-
- for (String line in source) {
- if (line.contains(shardsStartMark)) started = true;
- if (started) {
- if (line.contains(shardsEndMark)) {
- if (shardResult != null) result.add(shardResult);
- break;
- }
- String trimmed = line.trim();
- int buildersIndex = trimmed.indexOf(shardMark);
- if (buildersIndex >= 0) {
- int quoteIndex = trimmed.indexOf("'", buildersIndex);
- if (quoteIndex >= 0) {
- // Found a shard name, add it.
- shardResult.add(
- trimmed.substring(buildersIndex + shardMark.length, quoteIndex));
- } else {
- // Unexpected source formatting, skip.
- }
- } else if (trimmed.contains(shardsGroupStartMark)) {
- // This is a group separator, switch to next sublist.
- if (shardResult != null) result.add(shardResult);
- shardResult = <String>[];
- }
- }
- }
- return result;
-}
-
-void help() {
- print("Generates the 'shard_data.dart' file that is used by our gardening");
- print("tools. This tool needs to be run when the buildbot configuration");
- print("(shard) changes\n");
- print('Usage: dart create_shard_groups.dart <darto-source-file>');
-}
-
-main(List<String> args) {
- if (args.length != 1 || args[0] == "--help") {
- help();
- if (args.length == 1) return;
- exit(1);
- }
-
- File dartoSourceFile = new File(args[0]);
- List<String> dartoSource = dartoSourceFile.readAsLinesSync();
-
- List<String> groups = findGroups(dartoSource);
- List<List<String>> shards = findShards(dartoSource);
- int groupCount = math.min(groups.length, shards.length);
-
- // Print the resulting Dart declaration.
- print("""
-// Copyright (c) 2017, 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.
-//
-// ----- Generated by create_shard_groups.dart, do not edit! -----
-
-library gardening.shard_data;
-
-const Map<String, List<String>> shardGroups = const {""");
- for (int i = 0; i < groupCount; i++) {
- print(" '${groups[i]}': const <String>[");
- for (String shard in shards[i]) {
- print(" '$shard',");
- }
- print(" ],");
- }
- print('};');
-}
diff --git a/tools/gardening/bin/current_summary.dart b/tools/gardening/bin/current_summary.dart
deleted file mode 100644
index 0491e08..0000000
--- a/tools/gardening/bin/current_summary.dart
+++ /dev/null
@@ -1,120 +0,0 @@
-// Copyright (c) 2017, 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.
-
-/// Collects the test results for all build bots in [buildGroups] for tests
-/// that mention one of the test names given as argument.
-///
-/// The results are currently pulled from the second to last build since the
-/// last build might not have completed yet.
-
-import 'dart:async';
-import 'dart:math' hide log;
-import 'dart:io';
-
-import 'package:args/args.dart';
-import 'package:gardening/src/bot.dart';
-import 'package:gardening/src/buildbot_data.dart';
-import 'package:gardening/src/buildbot_structures.dart';
-import 'package:gardening/src/util.dart';
-
-void help(ArgParser argParser) {
- print('Displays the current status of specific tests on the buildbot');
- print('The test-names may be fully qualified (such as in ');
- print('"pkg/front_end/test/token_test") or just be a substring of the fully');
- print(' qualified name.');
- print('Usage: current_summary [options] <test-name1> [<test-name2> ...]');
- print('where options are:');
- print(argParser.usage);
-}
-
-Future main(List<String> args) async {
- ArgParser argParser = createArgParser();
- argParser.addOption('group',
- help: "Restricts the build groups\n"
- "to be searched for the results of the given test\n"
- "to those containing the given substring, case insensitive.");
- ArgResults argResults = argParser.parse(args);
- processArgResults(argResults);
-
- Bot bot = new Bot(logdog: argResults['logdog']);
-
- if (argResults.rest.length == 0 || argResults['help']) {
- help(argParser);
- if (argResults['help']) return;
- exit(1);
- }
- int maxStatusWidth = 0;
- int maxConfigWidth = 0;
-
- Map<String, Map<BuildUri, TestStatus>> resultMap =
- <String, Map<BuildUri, TestStatus>>{};
-
- bool testsFound = false;
- List<BuildGroup> notFoundGroups = <BuildGroup>[];
- for (BuildGroup group in buildGroups) {
- if (argResults['group'] != null &&
- !containsIgnoreCase(group.groupName, argResults['group'])) {
- log('Skipping group $group');
- continue;
- }
- List<BuildUri> uriList = group.createUris(bot.mostRecentBuildNumber);
- if (uriList.isEmpty) continue;
- print('Fetching "${uriList.first}" + ${uriList.length - 1} more ...');
- List<BuildResult> results = await bot.readResults(uriList);
- bool testsFoundInGroup = false;
- for (BuildResult buildResult in results) {
- if (buildResult == null) continue;
- var buildUri = buildResult.buildUri;
- for (TestStatus testStatus in buildResult.results) {
- String testName = testStatus.config.testName;
- for (String arg in argResults.rest) {
- if (testName.contains(arg) || arg.contains(testName)) {
- testsFoundInGroup = true;
- resultMap.putIfAbsent(testName, () => {})[buildUri] = testStatus;
- maxStatusWidth = max(maxStatusWidth, testStatus.status.length);
- maxConfigWidth =
- max(maxConfigWidth, testStatus.config.configName.length);
- }
- }
- }
- }
- if (testsFoundInGroup) {
- testsFound = true;
- } else {
- notFoundGroups.add(group);
- }
- }
- print('');
- if (testsFound) {
- resultMap.forEach((String testName, Map<BuildUri, TestStatus> statusMap) {
- print(testName);
- statusMap.forEach((BuildUri buildUri, TestStatus status) {
- print(' ${padRight(status.status, maxStatusWidth)}: '
- '${padRight(status.config.configName, maxConfigWidth)} '
- '${buildUri.shortBuildName}');
- });
- });
- if (notFoundGroups.isNotEmpty) {
- if (argResults.rest.length == 1) {
- print("Test pattern '${argResults.rest.single}' not found "
- "in these build bot groups:");
- } else {
- print("Test patterns '${argResults.rest.join("', '")}' not found "
- "in these build bot groups:");
- }
- for (BuildGroup group in notFoundGroups) {
- print(' $group');
- }
- }
- } else {
- if (argResults.rest.length == 1) {
- print("Test pattern '${argResults.rest.single}' not found "
- "in any build bot groups.");
- } else {
- print("Test patterns '${argResults.rest.join("', '")}' not found "
- "in any build bot groups.");
- }
- }
- bot.close();
-}
diff --git a/tools/gardening/bin/find_shard.dart b/tools/gardening/bin/find_shard.dart
deleted file mode 100755
index 3cefbe0..0000000
--- a/tools/gardening/bin/find_shard.dart
+++ /dev/null
@@ -1,99 +0,0 @@
-#!/usr/bin/env dart
-// Copyright (c) 2017, 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.
-
-// Translates a buildbot shard name to the corresponding column group name
-// on the buildbot site, such that it's easier to find the right column.
-//
-// Example: `bin/find_shard.dart precomp-linux-debug-x64-be`
-// prints `vm-precomp(5): precomp-linux-debug-x64-be`.
-
-import 'dart:async';
-import 'dart:io';
-import 'package:args/args.dart';
-import 'package:gardening/src/shard_data.dart';
-
-ArgParser createArgParser() {
- ArgParser argParser = new ArgParser(allowTrailingOptions: true);
- argParser.addFlag('help', help: "Help");
- return argParser;
-}
-
-bool INCLUDE_DEV =
- const bool.fromEnvironment('INCLUDE_DEV', defaultValue: false);
-bool INCLUDE_STABLE =
- const bool.fromEnvironment('INCLUDE_STABLE', defaultValue: false);
-bool INCLUDE_INTEGRATION =
- const bool.fromEnvironment('INCLUDE_INTEGRATION', defaultValue: false);
-
-void processArgResults(ArgResults argResults) {
- if (argResults['include-all']) {
- INCLUDE_DEV = INCLUDE_STABLE = INCLUDE_INTEGRATION = true;
- } else {
- if (argResults['include-dev']) INCLUDE_DEV = true;
- if (argResults['include-stable']) INCLUDE_STABLE = true;
- if (argResults['include-integration']) INCLUDE_INTEGRATION = true;
- }
-}
-
-void help(ArgParser argParser) {
- print('Given a shard name or a substring thereof, search all buildbot');
- print('shard names and print matching ones, along with their group.');
- print('E.g., searching "drt" will show that there are several matching');
- print('shards, all in the group "chrome", which may be helpful when');
- print('navigating the buildbot web page based on blame email etc.\n');
- print('Usage: find_shard [options] <shard>');
- print('where options are:');
- print(argParser.usage);
-}
-
-bool shard_enabled(String shard) {
- if (shard.endsWith('-dev')) return INCLUDE_DEV;
- if (shard.endsWith('-stable')) return INCLUDE_STABLE;
- if (shard.endsWith('-integration')) return INCLUDE_INTEGRATION;
- return true;
-}
-
-Future main(List<String> args) async {
- ArgParser argParser = createArgParser();
- argParser.addFlag("include-dev",
- abbr: "d",
- defaultsTo: false,
- negatable: false,
- help: "Include shards named *-dev");
- argParser.addFlag("include-stable",
- abbr: "s",
- defaultsTo: false,
- negatable: false,
- help: "Include shards named *-stable");
- argParser.addFlag("include-integration",
- abbr: "i",
- defaultsTo: false,
- negatable: false,
- help: "Include shards named *-integration");
- argParser.addFlag("include-all",
- abbr: "a",
- defaultsTo: false,
- negatable: false,
- help: "Include all shards");
- ArgResults argResults = argParser.parse(args);
- processArgResults(argResults);
-
- if (argResults.rest.length != 1 || argResults['help']) {
- help(argParser);
- if (argResults['help']) return;
- exit(1);
- }
-
- String arg = argResults.rest.first;
- for (String group in shardGroups.keys) {
- List<String> shardGroup = shardGroups[group];
- for (int i = 0; i < shardGroup.length; i++) {
- String shard = shardGroup[i];
- if (shard_enabled(shard) && shard.contains(arg)) {
- print("$group(${i+1}): $shard");
- }
- }
- }
-}
diff --git a/tools/gardening/bin/find_timeouts.dart b/tools/gardening/bin/find_timeouts.dart
deleted file mode 100644
index 83d3af3..0000000
--- a/tools/gardening/bin/find_timeouts.dart
+++ /dev/null
@@ -1,134 +0,0 @@
-// Copyright (c) 2017, 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.
-
-/// Scans past dart2js-windows test steps for timeouts and reports the
-/// frequency of each test that has timed out.
-
-import 'dart:async';
-import 'dart:io';
-import 'package:args/args.dart';
-import 'package:gardening/src/buildbot_data.dart';
-import 'package:gardening/src/buildbot_loading.dart';
-import 'package:gardening/src/buildbot_structures.dart';
-import 'package:gardening/src/client.dart';
-import 'package:gardening/src/logdog.dart';
-import 'package:gardening/src/util.dart';
-
-// TODO(johnniwinther): Adjustments needed: this script may run with
-// no output for a long time. Hence not yet run by bot.dart.
-main(List<String> args) async {
- ArgParser argParser = createArgParser();
- argParser.addOption('start',
- defaultsTo: '-2',
- help: "Start pulling from the specified <build-number>.\n"
- "Use negative numbers for the most recent builds;\n"
- "for instance -2 for the second-to-last build.'");
- ArgResults argResults = argParser.parse(args);
- processArgResults(argResults);
-
- BuildbotClient client = argResults['logdog']
- ? new LogdogBuildbotClient()
- : new HttpBuildbotClient();
-
- List<String> arguments = argResults.rest;
- if (arguments.length > 1) {
- print('Usage: find_timeouts.dart [options] [<count>]');
- print('Where <count> is the number of old builds that are scanned');
- print('and options are:');
- print(argParser.usage);
- exit(1);
- }
- int buildNumberCount = 10;
- if (arguments.length > 0) {
- buildNumberCount = int.parse(arguments[0]);
- }
- int buildNumberOffset;
- if (argResults.wasParsed('start')) {
- buildNumberOffset = int.parse(argResults['start']);
- } else {
- buildNumberOffset = client.mostRecentBuildNumber;
- }
-
- BuildGroup group =
- buildGroups.firstWhere((g) => g.groupName == 'dart2js-windows');
- Map<String, List<Timeout>> timeouts = <String, List<Timeout>>{};
- for (BuildSubgroup subgroup in group.subgroups) {
- await readBuildBotResults(client, subgroup, timeouts,
- buildNumberOffset: buildNumberOffset,
- buildNumberCount: buildNumberCount);
- }
-
- List<String> sorted = timeouts.keys.toList()
- ..sort((a, b) {
- return -timeouts[a].length.compareTo(timeouts[b].length);
- });
-
- sorted.forEach((String testName) {
- List<Timeout> list = timeouts[testName];
- print('${padLeft('${list.length}', 4)} $testName');
- for (Timeout timeout in list) {
- print(' - ${timeout.buildUri.botName}/${timeout.buildUri.stepName} '
- '${timeout.timeout.id} (${timeout.buildNumber})');
- }
- });
-
- client.close();
-}
-
-Future readLogDogResults(
- BuildSubgroup subgroup, Map<String, List<Timeout>> timeouts,
- {int buildNumberOffset, int buildNumberCount}) async {
- Map<String, String> subgroupPaths = subgroup.logDogPaths;
- for (String shardName in subgroupPaths.keys) {
- List<int> buildNumbers =
- await latestBuildNumbersForBuilder(shardName, buildNumberCount);
- int buildNumberIndex;
- if (buildNumberOffset < 0) {
- buildNumberIndex = -buildNumberOffset - 1;
- } else {
- buildNumberIndex = buildNumbers.firstWhere((n) => n <= buildNumberOffset,
- orElse: () => buildNumbers.length);
- }
- for (int i = 0; i < buildNumberCount; i++) {
- if (buildNumberIndex + i < buildNumbers.length) {
- int buildNumber = buildNumbers[buildNumberIndex + i];
- for (BuildUri buildUri
- in subgroup.createShardUris(shardName, buildNumber)) {
- BuildResult result = await readBuildResultFromLogDog(buildUri);
- for (TestFailure timeout in result.timeouts) {
- timeouts.putIfAbsent(timeout.id.testName, () => <Timeout>[]).add(
- new Timeout(subgroup, result.buildNumber, buildUri, timeout));
- }
- buildUri = buildUri.prev();
- }
- }
- }
- }
-}
-
-Future readBuildBotResults(BuildbotClient client, BuildSubgroup subgroup,
- Map<String, List<Timeout>> timeouts,
- {int buildNumberOffset, int buildNumberCount}) async {
- List<BuildUri> buildUris = subgroup.createUris(buildNumberOffset);
- for (BuildUri buildUri in buildUris) {
- for (int i = 0; i < buildNumberCount; i++) {
- BuildResult result = await client.readResult(buildUri);
- for (TestFailure timeout in result.timeouts) {
- timeouts
- .putIfAbsent(timeout.id.testName, () => <Timeout>[])
- .add(new Timeout(subgroup, result.buildNumber, buildUri, timeout));
- }
- buildUri = result.buildUri.prev();
- }
- }
-}
-
-class Timeout {
- final BuildSubgroup subgroup;
- final int buildNumber;
- final BuildUri buildUri;
- final TestFailure timeout;
-
- Timeout(this.subgroup, this.buildNumber, this.buildUri, this.timeout);
-}
diff --git a/tools/gardening/bin/luci.dart b/tools/gardening/bin/luci.dart
deleted file mode 100644
index 0327ba5..0000000
--- a/tools/gardening/bin/luci.dart
+++ /dev/null
@@ -1,193 +0,0 @@
-// Copyright (c) 2017, 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:gardening/src/luci_api.dart';
-import 'package:gardening/src/luci.dart';
-import 'package:gardening/src/logger.dart';
-import 'package:gardening/src/cache_new.dart';
-import 'package:gardening/src/util.dart';
-import 'package:args/args.dart';
-
-ArgParser setupArgs() {
- return new ArgParser()
- ..addOption("client",
- abbr: "c", defaultsTo: DART_CLIENT, help: "Set which client to use.")
- ..addFlag(Flags.verbose,
- abbr: "v", negatable: false, help: "Print debugging information.")
- ..addFlag(Flags.noCache,
- negatable: false,
- defaultsTo: false,
- help: "Use this flag to bypass caching. This may be slower.")
- ..addFlag(Flags.help,
- negatable: false,
- help: "Shows information on how to use the luci tool.")
- ..addFlag("build-bots",
- negatable: false,
- help: "Use this flag to see the primary build bots for --client.")
- ..addFlag("build-bots-all",
- negatable: false,
- help: "Use this flag to see all build bots for --client.")
- ..addFlag("builder-groups",
- negatable: false,
- help: "Use this flag to see all builder-groups not -dev, -stable "
- "or -integration for --client.")
- ..addFlag("builders-in-group",
- negatable: false,
- help: "Use this flag as `--build-bot-details <group>` to see all "
- "builders (incl. shards) for a build group <group>.")
- ..addFlag("build-bot-details",
- negatable: false,
- help: "Use this flag as `--build-bot-details <name>` where "
- "<name> is the name of the build bot, to see details of "
- "a specific build bot.")
- ..addFlag("build-details",
- negatable: false,
- help: "Use this option as `--build-details <name> <buildNo>` where "
- "<name> is the name of the bot and "
- "<buildNo> is the number of the build.")
- ..addFlag("builds-with-commit",
- negatable: false,
- help: "Fetches all builds with a specific commit. Use this flag as "
- "`--builds-with-commit <commit-hash>` where the <commit-hash> is "
- "the hash of the commit");
-}
-
-void printHelp(ArgParser parser) {
- print("This tool calls different pages on Luci and aggregate the information "
- "found. Below is stated information about flags and options:");
- print("");
- print(parser.usage);
-}
-
-main(List<String> args) async {
- var parser = setupArgs();
- var results = parser.parse(args);
-
- if (results["help"]) {
- printHelp(parser);
- return;
- }
-
- var luciApi = new LuciApi();
- Logger logger = createLogger(verbose: results[Flags.verbose]);
- CreateCacheFunction createCache =
- createCacheFunction(logger, disableCache: results[Flags.noCache]);
-
- if (results["build-bots"]) {
- await performBuildBotsPrimary(luciApi, createCache, results);
- } else if (results["build-bots-all"]) {
- await performBuildBotsAll(luciApi, createCache, results);
- } else if (results["builder-groups"]) {
- await performBuilderGroups(luciApi, createCache, results);
- } else if (results["builders-in-group"]) {
- await performBuildersInGroup(luciApi, createCache, results);
- } else if (results["build-bot-details"]) {
- await performBuildBotDetails(luciApi, createCache, results);
- } else if (results["build-details"]) {
- await performBuildDetails(luciApi, createCache, results);
- } else if (results["builds-with-commit"]) {
- await performFindBuildsForCommit(luciApi, createCache, logger, results);
- } else {
- printHelp(parser);
- }
-
- luciApi.close();
-}
-
-/// Get the primary build bots for a `results[client]` (not -dev, -stable etc.).
-Future performBuildBotsPrimary(
- LuciApi luciApi, CreateCacheFunction createCache, ArgResults results) {
- return getPrimaryBuilders(luciApi, results['client'],
- createCache(duration: new Duration(hours: 1)))
- .then((bots) => bots.forEach(print),
- onError: exceptionPrint("Could not perform command"));
-}
-
-/// Get all build bots for a `results[client]`.
-Future performBuildBotsAll(
- LuciApi luciApi, CreateCacheFunction cache, ArgResults results) {
- return getAllBuilders(
- luciApi, results['client'], cache(duration: new Duration(hours: 1)))
- .then((bots) => bots.forEach(print),
- onError: exceptionPrint("Could not perform command"));
-}
-
-/// Get build groups for a `results[client]`.
-Future performBuilderGroups(
- LuciApi luciApi, CreateCacheFunction cache, ArgResults results) {
- return getBuilderGroups(luciApi, results['client'],
- cache(duration: new Duration(minutes: 15)))
- .then((result) => result.forEach(print),
- onError: exceptionPrint("Could not perform command"));
-}
-
-/// Get builders in a group, passed in [results].
-Future performBuildersInGroup(
- LuciApi luciApi, CreateCacheFunction cache, ArgResults results) {
- if (results.rest.length == 0) {
- print("No argument given for <group>. To see help, use --help");
- return null;
- }
-
- return getBuildersInBuilderGroup(luciApi, results['client'],
- cache(duration: new Duration(minutes: 15)), results.rest[0])
- .then((result) => result.forEach(print),
- onError: exceptionPrint("Could not perform command"));
-}
-
-/// Get latest details of builds for a buildbot, passed in [results].
-Future performBuildBotDetails(
- LuciApi luciApi, CreateCacheFunction cache, ArgResults results) {
- if (results.rest.length == 0) {
- print("No argument given for <name>. To see help, use --help");
- return null;
- }
- return luciApi
- .getBuildBotDetails(results['client'], results.rest[0],
- cache(duration: new Duration(minutes: 15)))
- .then(print, onError: exceptionPrint("Could not perform command"));
-}
-
-/// Get build details for a build on a buildbot, passed in [results].
-Future performBuildDetails(
- LuciApi luciApi, CreateCacheFunction createCache, ArgResults results) {
- if (results.rest.length < 2) {
- print("Missing argument for <name> or <buildNo>. To see help, use --help");
- return null;
- }
- int buildNumber = int.parse(results.rest[1], onError: (source) => 0);
- if (buildNumber <= 0) {
- print("The buildnumber ${results['build-details']} must be a integer "
- "greater than zero");
- return null;
- }
-
- return luciApi
- .getBuildBotBuildDetails(results['client'], results.rest[0], buildNumber,
- createCache(duration: new Duration(minutes: 15)))
- .then(print, onError: exceptionPrint("Could not perform command"));
-}
-
-/// Find all builds for a commit hash, passed in [results].
-Future performFindBuildsForCommit(LuciApi luciApi,
- CreateCacheFunction createCache, Logger logger, ArgResults results) {
- if (results.rest.length == 0) {
- print("Missing argument for <commit>. To see help, use --help");
- return null;
- }
-
- int amount = 25;
-
- return fetchBuildsForCommmit(luciApi, logger, results['client'],
- results.rest[0], createCache, amount).then((List<BuildDetail> details) {
- print("The commit '${results.rest[0]} is used in the following builds:");
- details.forEach((detail) {
- String url = "https://luci-milo.appspot.com/buildbot/"
- "${detail.client}/${detail.botName}/${detail.buildNumber}";
- print("${detail.botName}: #${detail.buildNumber}\t$url");
- });
- }, onError: exceptionPrint("Could not perform command"));
-}
diff --git a/tools/gardening/bin/results.dart b/tools/gardening/bin/results.dart
deleted file mode 100644
index 02f2ee7..0000000
--- a/tools/gardening/bin/results.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2017, 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:io';
-import 'package:args/command_runner.dart';
-import 'results_get.dart';
-import 'results_list.dart';
-import 'results_status.dart';
-
-var runner = new CommandRunner("results", "Results from tests.")
- ..addCommand(new GetCommand())
- ..addCommand(new ListCommand())
- ..addCommand(new StatusCommand());
-
-main(List<String> args) {
- runner.run(args).catchError((error) {
- if (error is! UsageException) throw error;
- print(error);
- exit(64); // Exit code 64 indicates a usage error.
- });
-}
diff --git a/tools/gardening/bin/results_get.dart b/tools/gardening/bin/results_get.dart
deleted file mode 100644
index 9dccea4..0000000
--- a/tools/gardening/bin/results_get.dart
+++ /dev/null
@@ -1,255 +0,0 @@
-// Copyright (c) 2017, 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:args/command_runner.dart';
-import 'package:args/args.dart';
-import 'package:gardening/src/results/status_expectations.dart';
-import 'package:gardening/src/results/status_files.dart';
-import 'package:gardening/src/results/test_result_helper.dart';
-import 'package:gardening/src/results/test_result_service.dart';
-import 'package:gardening/src/util.dart';
-import 'package:gardening/src/console_table.dart';
-import 'package:gardening/src/results/result_json_models.dart' as models;
-import 'package:gardening/src/buildbucket.dart';
-import 'package:gardening/src/extended_printer.dart';
-
-/// Build standard arguments for input.
-void buildArgs(ArgParser argParser) {
- argParser.addFlag('scripting',
- defaultsTo: false,
- abbr: 's',
- negatable: false,
- help: "Use flag to remove templated output.");
-}
-
-/// Get output table based on arguments passed in [argResults].
-OutputTable getOutputTable(ArgResults argResults) {
- if (argResults["scripting"]) {
- return new ScriptTable();
- }
- return new ConsoleTable(template: rows);
-}
-
-String howToUse(String command) {
- return "Use by calling one of the following:\n\n"
- "\tget $command <file> : for a local result.log file.\n"
- "\tget $command <uri_to_result_log> : for direct links to result.logs.\n"
- "\tget $command <uri_try_bot> : for links to try bot builders.\n"
- "\tget $command <commit_number> <patchset> : for links to try bot builders.\n"
- "\tget $command <builder> : for a builder name.\n"
- "\tget $command <builder> <build> : for a builder and build number.\n"
- "\tget $command <builder_group> : for a builder group.\n";
-}
-
-/// [GetCommand] handles when given command 'get' and expect a sub-command.
-class GetCommand extends Command {
- @override
- String get description => "Get results for files and test-suites.";
-
- @override
- String get name => "get";
-
- GetCommand() {
- addSubcommand(new GetTestsWithResultCommand());
- addSubcommand(new GetTestsWithResultAndExpectationCommand());
- addSubcommand(new GetTestFailuresCommand());
- }
-}
-
-/// [GetTestsWithResultCommand] handles when given the sub-command 'tests' and
-/// returns a list of tests with their respective results.
-class GetTestsWithResultCommand extends Command {
- @override
- String get description => "Get a list of tests with their respective "
- "results from result.logs found from input.";
-
- @override
- String get name => "tests";
-
- GetTestsWithResultCommand() {
- buildArgs(argParser);
- }
-
- Future run() async {
- models.TestResult testResults =
- await getTestResultFromBuilder(argResults.rest);
- if (testResults == null) {
- print(howToUse("tests"));
- return;
- }
- var outputTable = getOutputTable(argResults)
- ..addHeader(new Column("Test", width: 60), (item) {
- return item.name;
- })
- ..addHeader(new Column("Result"), (item) {
- return item.result;
- });
- outputTable.print(testResults.results);
- }
-}
-
-/// [GetTestsWithResultAndExpectationCommand] handles when given the sub-command
-/// 'result' and returns a list of tests with their result and expectations.
-class GetTestsWithResultAndExpectationCommand extends Command {
- @override
- String get description => "Get a list of tests with their respective "
- "results and expectations from result.logs found from input.";
-
- @override
- String get name => "tests-with-expectations";
-
- GetTestsWithResultAndExpectationCommand() {
- buildArgs(argParser);
- }
-
- Future run() async {
- models.TestResult testResult = null;
-
- if (isCqInput(argResults.rest)) {
- Iterable<BuildBucketTestResult> buildBucketTestResults =
- await getTestResultsFromCq(argResults.rest);
- if (buildBucketTestResults != null) {
- testResult = buildBucketTestResults.fold<models.TestResult>(
- new models.TestResult(),
- (combined, buildResult) => combined..combineWith([buildResult]));
- }
- } else {
- testResult = await getTestResultFromBuilder(argResults.rest);
- }
-
- if (testResult == null) {
- print(howToUse("results"));
- return;
- }
-
- var statusExpectations = new StatusExpectations(testResult);
- await statusExpectations.loadStatusFiles();
- List<TestExpectationResult> withExpectations =
- statusExpectations.getTestResultsWithExpectation();
-
- var outputTable = getOutputTable(argResults)
- ..addHeader(new Column("Test", width: 38), (item) {
- return item.result.name;
- })
- ..addHeader(new Column("Result", width: 18), (item) {
- return item.result.result;
- })
- ..addHeader(new Column("Expected"), (item) {
- return item.entries.toString();
- })
- ..addHeader(new Column("Success", width: 4), (item) {
- return item.isSuccess() ? "OK" : "FAIL";
- });
- outputTable.print(withExpectations);
- }
-}
-
-/// [GetTestFailuresCommand] handles when given the sub-command 'failures' and
-/// returns only the failing tests.
-class GetTestFailuresCommand extends Command {
- @override
- String get description => "Get a list of tests with their respective "
- "results and expectations from result.logs found from input.";
-
- @override
- String get name => "failures";
-
- GetTestFailuresCommand() {
- buildArgs(argParser);
- }
-
- Future run() async {
- List<models.TestResult> testResults = [];
- if (isCqInput(argResults.rest)) {
- var buildBucketResults = await getTestResultsFromCq(argResults.rest);
- if (buildBucketResults == null) {
- print(howToUse("failures"));
- return;
- }
- testResults.addAll(buildBucketResults);
- } else {
- var testResult = await getTestResultFromBuilder(argResults.rest);
- if (testResult == null) {
- print(howToUse("failures"));
- return;
- }
- testResults.add(testResult);
- }
-
- print("All result logs fetched.");
- print("Calling test.py to find statuses for each test.");
- print("");
-
- for (var testResult in testResults) {
- if (testResult is BuildBucketTestResult) {
- printBuild(testResult.build);
- }
- var statusExpectations = new StatusExpectations(testResult);
- await statusExpectations.loadStatusFiles();
- List<TestExpectationResult> results =
- statusExpectations.getTestResultsWithExpectation();
- printFailingTestExpectationResults(results);
- print("");
- }
- }
-}
-
-/// Prints a test result.
-void printFailingTestExpectationResults(List<TestExpectationResult> results) {
- List<TestExpectationResult> failing =
- results.where((x) => !x.isSuccess()).toList();
- failing.sort((a, b) => a.result.name.compareTo(b.result.name));
- int index = 0;
- print("");
- failing.forEach((fail) => printFailingTest(fail, index++));
- if (index == 0) {
- print("\tNo failures found.");
- }
-}
-
-/// Prints a builder to stdout.
-void printBuild(BuildBucketBuild build) {
- new ExtendedPrinter()
- ..println("${build.builder}")
- ..printLinePattern("=");
-}
-
-/// Prints a failing test to stdout.
-void printFailingTest(TestExpectationResult result, int index) {
- var conf = result.configuration
- .toArgs(includeSelectors: false)
- .map((arg) => arg.replaceAll("--", ""));
-
- var extPrint = new ExtendedPrinter();
- if (index > 0) {
- extPrint.printLinePattern("*");
- extPrint.println("");
- }
- extPrint
- ..println("FAILED: ${getQualifiedNameForTest(result.result.name)}")
- ..printLinePattern("-")
- ..println("Result: ${result.result.result}")
- ..println("Expected: ${result.expectations()}");
- printStatusEntries(result.entries, extPrint);
- extPrint
- ..println("Configuration: ${conf.join(', ')}")
- ..println("")
- ..println(
- "To run locally (if you have the right architecture and runtime):")
- ..println(getReproductionCommand(result.configuration, result.result.name))
- ..println("");
-}
-
-void printStatusEntries(
- List<StatusSectionEntry> entries, ExtendedPrinter printer) {
- var oldPreceding = printer.preceding;
- printer.preceding = " ";
- for (StatusSectionEntry entry in entries) {
- printer.println("${entry.statusFile.path}");
- printer.println(" [ ${entry.section.condition} ]");
- printer.println(" line ${entry.entry.lineNumber}: ${entry.entry.path} : "
- "${entry.entry.expectations}");
- }
- printer.preceding = oldPreceding;
-}
diff --git a/tools/gardening/bin/results_list.dart b/tools/gardening/bin/results_list.dart
deleted file mode 100644
index e0baa1b..0000000
--- a/tools/gardening/bin/results_list.dart
+++ /dev/null
@@ -1,116 +0,0 @@
-// Copyright (c) 2017, 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:args/args.dart';
-import 'package:args/command_runner.dart';
-import 'package:gardening/src/results/configurations.dart';
-import 'package:gardening/src/results/result_json_models.dart' as models;
-import 'package:gardening/src/results/testpy_wrapper.dart';
-
-/// Helper function to add all standard arguments to the [argParser].
-void addStandardArguments(ArgParser argParser) {
- argParser.addOption("arch", allowed: Architecture.names);
- argParser.addOption("builder-tag", defaultsTo: '');
- argParser.addFlag("checked", negatable: false);
- argParser.addOption("compiler", allowed: Compiler.names);
- argParser.addFlag("csp", negatable: false);
- argParser.addFlag("fasta", negatable: false);
- argParser.addFlag("enable-asserts", negatable: false);
- argParser.addFlag("fast-startup", negatable: false);
- argParser.addFlag("host-checked", negatable: false);
- argParser.addFlag("hot-reload", negatable: false);
- argParser.addFlag("hot-reload-rollback", negatable: false);
- argParser.addFlag("minified", negatable: false);
- argParser.addOption("mode", allowed: Mode.names);
- argParser.addFlag("no-preview-dart-2", negatable: false);
- argParser.addFlag("preview-dart-2", negatable: false);
- argParser.addOption("runtime", allowed: Runtime.names);
- argParser.addFlag("strong", negatable: false);
- argParser.addOption("system", allowed: System.names);
- argParser.addFlag("use-sdk", negatable: false);
-}
-
-/// Helper function to get a configuration from [argResults].
-models.Configuration getConfigurationFromArguments(ArgResults argResults) {
- return new models.Configuration(
- argResults["mode"],
- argResults["arch"],
- argResults["compiler"],
- argResults["runtime"],
- argResults["checked"],
- argResults["strong"],
- argResults["host-checked"],
- argResults["minified"],
- argResults["csp"],
- argResults["fasta"],
- argResults["system"],
- [],
- argResults["use-sdk"],
- argResults["builder-tag"],
- argResults["fast-startup"],
- 0,
- argResults["enable-asserts"],
- argResults["hot-reload"],
- argResults["hot-reload-rollback"],
- argResults["preview-dart-2"],
- argResults.rest);
-}
-
-/// [ListCommand] handles listing of information about test suites when given a
-/// command 'list' and expect a sub-command.
-class ListCommand extends Command {
- @override
- String get description => "Lists information about test suites and "
- "status-files";
-
- @override
- String get name => "list";
-
- ListCommand() {
- addSubcommand(new ListTestsWithExpectationsForConfiguration());
- addSubcommand(new ListStatusFilesForConfiguration());
- }
-}
-
-/// [ListTestsWithExpectationsForConfiguration] calls test.py with the arguments
-/// passed directly.
-class ListTestsWithExpectationsForConfiguration extends Command {
- @override
- String get description => "Get all tests with the expectation for a "
- "desired configuration. This directly calls test.py with arguments.";
-
- @override
- String get name => "tests";
-
- ListTestsWithExpectationsForConfiguration() {
- addStandardArguments(argParser);
- }
-
- Future run() async {
- var result = await testLister(getConfigurationFromArguments(argResults));
- result.forEach(print);
- }
-}
-
-/// [ListStatusFilesForConfiguration] handles the sub-command 'status-files' and
-/// returns a list of status files that are found for the configuration passed.
-class ListStatusFilesForConfiguration extends Command {
- @override
- String get description => "Get all status files for the desired "
- "configuration. This directly calls test.py with arguments.";
-
- @override
- String get name => "status-files";
-
- ListStatusFilesForConfiguration() {
- addStandardArguments(argParser);
- }
-
- Future run() async {
- var result =
- await statusFileLister(getConfigurationFromArguments(argResults));
- result.forEach(print);
- }
-}
diff --git a/tools/gardening/bin/results_status.dart b/tools/gardening/bin/results_status.dart
deleted file mode 100644
index c5d5d5d..0000000
--- a/tools/gardening/bin/results_status.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (c) 2017, 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:args/command_runner.dart';
-import 'package:gardening/src/results_workflow/ask_for_logs.dart';
-import 'package:gardening/src/workflow.dart';
-
-/// Class [StatusCommand] handles the 'status' sub-command to edit status files
-/// for result logs.
-class StatusCommand extends Command {
- @override
- String get description => "Update status files, from failure data and "
- "existing status entries.";
-
- @override
- String get name => "status";
-
- Future run() async {
- var workflow = new Workflow();
- var askForLogs = new AskForLogs();
- for (var input in argResults.rest) {
- await askForLogs.processInput(input);
- }
- return workflow.start(askForLogs);
- }
-}
diff --git a/tools/gardening/bin/status_overlapping.dart b/tools/gardening/bin/status_overlapping.dart
deleted file mode 100644
index 36b6cd9..0000000
--- a/tools/gardening/bin/status_overlapping.dart
+++ /dev/null
@@ -1,223 +0,0 @@
-// Copyright (c) 2017, 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 'dart:io';
-
-import 'package:args/args.dart';
-import 'package:status_file/src/expression.dart';
-import 'package:status_file/src/disjunctive.dart';
-
-import 'package:gardening/src/extended_printer.dart';
-import 'package:gardening/src/results/status_files.dart';
-import 'package:gardening/src/results/testpy_wrapper.dart';
-import 'package:gardening/src/util.dart';
-
-ArgParser buildParser() {
- var argParser = new ArgParser();
- argParser.addFlag("print-test",
- negatable: false, help: "Print entries in status files for each test");
- argParser.addFlag("help",
- negatable: false, help: "Show information about the use of the tool.");
- return argParser;
-}
-
-void printHelp(ArgParser argParser) {
- print("Checks a suite of status files for duplicate "
- "entries. Usage: status.dart <suite> or status.dart <suite> <test>");
- print(argParser.usage);
-}
-
-Future main(List<String> args) async {
- var argParser = buildParser();
- var argResults = argParser.parse(args);
- if (argResults['help']) {
- printHelp(argParser);
- return;
- }
- if (argResults.rest.length == 0 || argResults.rest.length > 2) {
- print("Incorrect number of arguments.\n");
- printHelp(argParser);
- return;
- }
- var suite = argResults.rest.first;
- bool hasSpecificTest = argResults.rest.length == 2;
- String testArg = hasSpecificTest ? "$suite/${argResults.rest.last}" : suite;
-
- Map<String, Iterable<String>> statusFilesMap =
- await statusFileListerMapFromArgs([testArg]);
- var statusFilePaths = statusFilesMap[suite].map((file) {
- return "${PathHelper.sdkRepositoryRoot()}/$file";
- }).where((sf) {
- return new File(sf).existsSync();
- }).toList();
-
- StatusFiles statusFilesWrapper = StatusFiles.read(statusFilePaths);
-
- Map<String, List<StatusSectionEntry>> testsWithOverlappingSections = {};
- if (!hasSpecificTest) {
- // Get all tests from test.py and check every one.
- var suiteTests = await testsForSuite(suite);
- testsWithOverlappingSections = getTestsThatOverlap(
- suiteTests.map((test) => getQualifiedNameForTest(test)).toList(),
- statusFilesWrapper);
- } else {
- testsWithOverlappingSections =
- getTestsThatOverlap([argResults.rest.last], statusFilesWrapper);
- }
-
- if (testsWithOverlappingSections.isNotEmpty) {
- ExtendedPrinter printer = new ExtendedPrinter();
- if (argResults["print-test"]) {
- printOverlappingSectionsForTest(printer, testsWithOverlappingSections);
- } else {
- printOverlappingSectionsForTestsGrouped(
- printer, testsWithOverlappingSections);
- }
- } else {
- print("No overlapping sections.");
- print("");
- }
-}
-
-/// Checks if [source] is a subset of [target], which is the same as checking
-/// [target] implies [source]. An expression can be either [VariableExpression],
-/// [ComparisonExpression], [NegationExpression] or [LogicExpression].
-///
-/// The only non-unary is [LogicExpression].
-///
-/// We assume [source] and [target] are on disjunctive normal form.
-///
-/// If source is null or have no operands, it is trivially a subset since
-/// everything implies [source].
-/// If target is null (and source is not null) then [source] can never be a
-/// subset.
-///
-/// In all other cases, we check if source or target is LogicExpression and is
-/// joined by or and split these up into smaller tests.
-bool isSubset(Expression source, Expression target) {
- if (source == null || target == null) {
- // This happens for the default region, which is always true.
- return true;
- }
- if (source is LogicExpression && source.operands.isEmpty) {
- return true;
- }
- if (target is LogicExpression && target.operands.isEmpty) {
- return false;
- }
- if (source is LogicExpression && source.isOr) {
- return source.operands.any((exp) => isSubset(exp, target));
- }
- if (target is LogicExpression && target.isOr) {
- return target.operands.any((exp) => isSubsetNoDisjuncts(source, exp));
- }
- return isSubsetNoDisjuncts(source, target);
-}
-
-/// Should only be called if [source] and [target] is on disjunctive normal
-/// form and if the [LogicExpression] is not joined by or's.
-///
-/// It is easy to check if subset, by just casing.
-bool isSubsetNoDisjuncts(Expression source, Expression target) {
- if (source is! LogicExpression && target is! LogicExpression) {
- return source.compareTo(target) == 0;
- }
- if (source is! LogicExpression) {
- return (target as LogicExpression)
- .operands
- .any((exp) => source.compareTo(exp) == 0);
- }
- if (source is LogicExpression &&
- source.operands.length > 1 &&
- target is! LogicExpression) {
- return false;
- }
- if (source is LogicExpression &&
- target is LogicExpression &&
- source.operands.length > target.operands.length) {
- return false;
- }
- var sourceLogic = source as LogicExpression;
- var targetLogic = target as LogicExpression;
- return sourceLogic.operands.every(
- (exp1) => targetLogic.operands.any((exp2) => exp1.compareTo(exp2) == 0));
-}
-
-Map<String, List<StatusSectionEntry>> getTestsThatOverlap(
- List<String> tests, StatusFiles statusFiles) {
- var dnfExpressionsCache = <StatusSectionEntry, Expression>{};
- Map<String, List<StatusSectionEntry>> results = {};
- for (var test in tests) {
- var sectionEntries = statusFiles.sectionsWithTest(test);
- if (sectionEntries.length > 1) {
- // Find out if two sections overlap
- var overlapping = <StatusSectionEntry>[];
- for (var i = 0; i < sectionEntries.length; i++) {
- for (var j = i + 1; j < sectionEntries.length; j++) {
- var dnfFirst = dnfExpressionsCache.putIfAbsent(
- sectionEntries[i],
- () =>
- toDisjunctiveNormalForm(sectionEntries[i].section.condition));
- var dnfOther = dnfExpressionsCache.putIfAbsent(
- sectionEntries[j],
- () =>
- toDisjunctiveNormalForm(sectionEntries[j].section.condition));
- if (isSubset(dnfFirst, dnfOther) || isSubset(dnfOther, dnfFirst)) {
- overlapping.add(sectionEntries[i]);
- overlapping.add(sectionEntries[j]);
- }
- }
- if (overlapping.isNotEmpty) {
- results[test] = overlapping;
- }
- }
- }
- }
- return results;
-}
-
-void printOverlappingSectionsForTest(ExtendedPrinter printer,
- Map<String, List<StatusSectionEntry>> testSectionEntries) {
- for (var test in testSectionEntries.keys) {
- printer.println(test);
- printer.printLinePattern("*");
- printer.printIterable(testSectionEntries[test], (StatusSectionEntry entry) {
- return "${entry.section.lineNumber}: [ ${entry.section.condition} ]\n"
- "\t${entry.entry.lineNumber}: ${entry.entry.path}: "
- "${entry.entry.expectations}";
- }, header: (StatusSectionEntry entry) {
- return entry.statusFile.path;
- }, itemPreceding: "\t");
- }
-}
-
-void printOverlappingSectionsForTestsGrouped(ExtendedPrinter printer,
- Map<String, List<StatusSectionEntry>> testSectionEntries) {
- Iterable<StatusSectionEntry> expandedResult =
- testSectionEntries.values.expand((id) => id);
- var allFiles = expandedResult.map((result) => result.statusFile).toSet();
- for (var file in allFiles) {
- printer.preceding = "";
- printer.println(file.path);
- var all = expandedResult.where((x) => x.statusFile == file).toList();
- all.sort((a, b) => a.entry.lineNumber.compareTo(b.entry.lineNumber));
- var sections = all.map((entry) => entry.section).toSet();
- for (var section in sections) {
- printer.preceding = "\t";
- printer.println("${section.lineNumber}: [ ${section.condition} ]");
- var entries = all
- .where((entry) => entry.section == section)
- .map((entry) => entry.entry)
- .toSet();
- printer.preceding = "\t\t";
- for (var entry in entries) {
- printer.println("${entry.lineNumber}: "
- "${entry.path}: "
- "${entry.expectations}");
- }
- printer.println("");
- }
- }
-}
diff --git a/tools/gardening/bin/status_summary.dart b/tools/gardening/bin/status_summary.dart
deleted file mode 100644
index 2c0bcdf..0000000
--- a/tools/gardening/bin/status_summary.dart
+++ /dev/null
@@ -1,139 +0,0 @@
-// Copyright (c) 2017, 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.
-
-/// Collects the configurations for all status files in the 'tests' folder that
-/// mention one of the test names given as argument.
-
-import 'dart:async';
-import 'dart:math' hide log;
-import 'dart:io';
-
-import 'package:args/args.dart';
-import 'package:gardening/src/util.dart';
-
-void help(ArgParser argParser) {
- print('Prints all status-file entries for the given tests.');
- print('The test-names must be a substring (or full match) of the lines in ');
- print('the status file. They can not be fully qualified');
- print('Usage: status_summary [options] <test-name1> [<test-name2> ...]');
- print('where options are:');
- print(argParser.usage);
-}
-
-Future main(List<String> args) async {
- ArgParser argParser = createArgParser();
- ArgResults argResults = argParser.parse(args);
- processArgResults(argResults);
- if (argResults.rest.length == 0 || argResults['help']) {
- help(argParser);
- if (argResults['help']) return;
- exit(1);
- }
- int maxStatusWidth = 0;
- int maxConfigWidth = 0;
-
- Directory testDirectory = findTestDirectory('tests');
- List<Uri> statusFiles = await findStatusFiles(testDirectory);
- Directory pkgDirectory = findTestDirectory('pkg');
- statusFiles.addAll(await findStatusFiles(pkgDirectory));
- Directory runtimeDirectory = findTestDirectory('runtime');
- statusFiles.addAll(await findStatusFiles(runtimeDirectory));
- Map<String, List<StatusFile>> statusMap = <String, List<StatusFile>>{};
- for (Uri uri in statusFiles) {
- Map<String, StatusFile> currentMap = <String, StatusFile>{};
- log('Scanning $uri');
- String currentConfig = '';
- for (String line in new File.fromUri(uri).readAsLinesSync()) {
- if (line.startsWith('[')) {
- currentConfig = line;
- } else {
- int colonIndex = line.indexOf(':');
- if (colonIndex != -1) {
- String testName = line.substring(0, colonIndex).trim();
- int hashIndex = line.indexOf('#', colonIndex + 1);
- String status;
- String comment;
- if (hashIndex != -1) {
- status = line.substring(colonIndex + 1, hashIndex).trim();
- comment = line.substring(hashIndex + 1).trim();
- } else {
- status = line.substring(colonIndex + 1).trim();
- comment = '';
- }
-
- for (String arg in argResults.rest) {
- if (testName.contains(arg) || arg.contains(testName)) {
- StatusFile statusFile =
- currentMap.putIfAbsent(testName, () => new StatusFile(uri));
- statusFile.entries
- .add(new StatusEntry(currentConfig, status, comment));
-
- maxStatusWidth = max(maxStatusWidth, status.length);
- maxConfigWidth = max(maxConfigWidth, currentConfig.length);
- }
- }
- }
- }
- }
- currentMap.forEach((String testName, StatusFile configFile) {
- statusMap.putIfAbsent(testName, () => <StatusFile>[]).add(configFile);
- });
- }
- statusMap.forEach((String arg, List<StatusFile> statusFiles) {
- print('$arg');
- for (StatusFile statusFile in statusFiles) {
- print(' ${statusFile.uri}');
- statusFile.entries.forEach((StatusEntry entry) {
- print(' ${padRight(entry.status, maxStatusWidth)}'
- ' ${padRight(entry.config, maxConfigWidth)} ${entry.comment}');
- });
- }
- });
-}
-
-/// Finds the test directory.
-///
-/// First looks at a test-directory that is relative to the current
-Directory findTestDirectory(String directoryName) {
- var directory = new Directory(directoryName);
- if (directory.existsSync()) return directory;
- return new Directory.fromUri(
- Platform.script.resolve("../../../$directoryName"));
-}
-
-/// Returns the [Uri]s for all `.status` files in [path] and subdirectories.
-Future<List<Uri>> findStatusFiles(Directory testDirectory) async {
- List<Uri> statusFiles = <Uri>[];
- await for (FileSystemEntity entity in testDirectory.list(recursive: true)) {
- if (entity.path.endsWith('.status')) {
- statusFiles.add(entity.uri);
- }
- }
- return statusFiles;
-}
-
-/// The entries collected for a single status file.
-class StatusFile {
- final Uri uri;
- final List<StatusEntry> entries = <StatusEntry>[];
-
- StatusFile(this.uri);
-}
-
-/// A single entry in a status file.
-class StatusEntry {
- /// The preceding config line, if any. I.e. the `[...]` line that contained
- /// this entry, or the empty string otherwise.
- final String config;
-
- /// The status of the entry, e.g. `Pass, Slow`.
- final String status;
-
- /// The comment after the status, if any.
- final String comment;
-
- StatusEntry(this.config, this.status, this.comment);
-
- String toString() => '$status $config $comment';
-}
diff --git a/tools/gardening/bin/summary.dart b/tools/gardening/bin/summary.dart
deleted file mode 100644
index 2fa0189..0000000
--- a/tools/gardening/bin/summary.dart
+++ /dev/null
@@ -1,92 +0,0 @@
-// Copyright (c) 2017, 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:args/args.dart';
-import 'package:gardening/src/bot.dart';
-import 'package:gardening/src/buildbot_data.dart';
-import 'package:gardening/src/buildbot_structures.dart';
-import 'package:gardening/src/util.dart';
-
-void help(ArgParser argParser) {
- print('Summarizes the current status of the build bot.');
- print('Usage: summary [options] (<group> ...)');
- print(" where <group> is (part of) a build bot group, like 'vm-kernel', ");
- print(" and options are:");
- print(argParser.usage);
-}
-
-Future main(List<String> args) async {
- ArgParser argParser = createArgParser();
- ArgResults argResults = argParser.parse(args);
- processArgResults(argResults);
- if (argResults['help']) {
- help(argParser);
- return;
- }
-
- Bot bot = new Bot(logdog: argResults['logdog']);
- List<BuildResult> buildResultsWithoutFailures = <BuildResult>[];
- List<BuildResult> buildResultsWithFailures = <BuildResult>[];
- for (BuildGroup group in buildGroups) {
- if (argResults.rest.isNotEmpty) {
- if (!argResults.rest
- .any((arg) => containsIgnoreCase(group.groupName, arg))) {
- log('Skipping group $group');
- continue;
- }
- }
- // TODO(johnniwinther): Support reading a partially completed shard from
- // http, i.e. always use build number `-1`.
- List<BuildUri> uriList = group.createUris(bot.mostRecentBuildNumber);
- if (uriList.isEmpty) continue;
- print('Fetching "${uriList.first}" + ${uriList.length - 1} more ...');
- List<BuildResult> results = await bot.readResults(uriList);
- results.forEach((result) {
- if (result != null) {
- if (result.hasFailures) {
- buildResultsWithFailures.add(result);
- } else {
- buildResultsWithoutFailures.add(result);
- }
- }
- });
- }
- print('');
- if (buildResultsWithFailures.isEmpty && buildResultsWithoutFailures.isEmpty) {
- if (argResults.rest.isEmpty) {
- print('No test steps found.');
- } else {
- print("No test steps found for '${argResults.rest.join("', '")}'.");
- }
- } else {
- int totalCount =
- buildResultsWithFailures.length + buildResultsWithoutFailures.length;
- if (argResults.rest.isEmpty) {
- print('${totalCount} test steps analyzed.');
- } else {
- print("${totalCount} test steps analyzed for build bot groups matching "
- "'${argResults.rest.join("', '")}'.");
- }
- if (LOG) {
- print(' Found ${buildResultsWithoutFailures.length} '
- 'test steps without failures:');
- for (BuildResult result in buildResultsWithoutFailures) {
- print(' ${result.buildUri.toUri()}');
- }
- } else {
- print(' Found ${buildResultsWithoutFailures.length} '
- 'test steps without failures.');
- }
- if (buildResultsWithFailures.isNotEmpty) {
- print(' Found ${buildResultsWithFailures.length} '
- 'test steps with failures:');
- for (BuildResult result in buildResultsWithFailures) {
- print(' ${result.buildUri.toUri()}');
- }
- }
- }
-
- bot.close();
-}
diff --git a/tools/gardening/lib/src/bot.dart b/tools/gardening/lib/src/bot.dart
deleted file mode 100644
index d8893f9..0000000
--- a/tools/gardening/lib/src/bot.dart
+++ /dev/null
@@ -1,81 +0,0 @@
-// Copyright (c) 2017, 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 'buildbot_data.dart';
-import 'buildbot_structures.dart';
-import 'client.dart';
-import 'util.dart';
-
-class Bot {
- final BuildbotClient _client;
-
- /// Instantiates a Bot.
- ///
- /// Bots must be [close]d when they aren't needed anymore.
- Bot({bool logdog = false})
- : this.internal(
- logdog ? new LogdogBuildbotClient() : new HttpBuildbotClient());
-
- Bot.internal(this._client);
-
- int get mostRecentBuildNumber => _client.mostRecentBuildNumber;
-
- /// Reads the build result of [buildUri] and the [previousCount] earlier
- /// builds.
- Future<List<BuildResult>> readHistoricResults(BuildUri buildUri,
- {int previousCount = 0}) {
- log("Fetching $buildUri and $previousCount previous builds in parallel");
- var uris = [buildUri];
- for (int i = 0; i < previousCount; i++) {
- buildUri = buildUri.prev();
- uris.add(buildUri);
- }
- return readResults(uris);
- }
-
- Future<BuildResult> readResult(BuildUri buildUri) {
- return _client.readResult(buildUri);
- }
-
- /// Maximum number of [BuildResult]s read concurrently by [readResults].
- static const maxParallel = 20;
-
- /// Reads the build results of all given uris.
- ///
- /// Returns a list of the results. If a uri couldn't be read, then the entry
- /// in the list is `null`.
- Future<List<BuildResult>> readResults(List<BuildUri> buildUris) async {
- var result = <BuildResult>[];
- int i = 0;
- while (i < buildUris.length) {
- var end = i + maxParallel;
- if (end > buildUris.length) end = buildUris.length;
- var parallelChunk = buildUris.sublist(i, end);
- log("Fetching ${end - i} uris in parallel");
- result.addAll(await Future.wait(parallelChunk.map((uri) {
- var result = _client.readResult(uri);
- if (result == null) {
- log("Error while reading $uri");
- }
- return result;
- })));
- i = end;
- }
- return result;
- }
-
- /// Returns uris for the most recent build of all build groups.
- List<BuildUri> get mostRecentUris {
- List<BuildUri> result = [];
- for (BuildGroup group in buildGroups) {
- result.addAll(group.createUris(mostRecentBuildNumber));
- }
- return result;
- }
-
- /// Closes the bot.
- void close() => _client.close();
-}
diff --git a/tools/gardening/lib/src/buildbot_data.dart b/tools/gardening/lib/src/buildbot_data.dart
deleted file mode 100644
index ffd29e3..0000000
--- a/tools/gardening/lib/src/buildbot_data.dart
+++ /dev/null
@@ -1,955 +0,0 @@
-// Copyright (c) 2017, 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 'logdog.dart';
-import 'buildbot_structures.dart';
-
-/// Data describing the steps of the buildbots.
-const List<BuildGroup> buildGroups = const <BuildGroup>[
- const BuildGroup(
- groupName: 'vm',
- subgroups: const <BuildSubgroup>[
- const BuildSubgroup(shardNames: const <String>[
- 'vm-linux-debug-x64-be',
- ], testSteps: const <String>[
- 'vm tests',
- 'checked vm tests',
- ]),
- const BuildSubgroup(shardNames: const <String>[
- 'vm-linux-release-x64-be',
- ], testSteps: const <String>[
- 'vm tests',
- 'checked vm tests',
- ]),
- const BuildSubgroup(shardNames: const <String>[
- 'vm-linux-debug-ia32-be',
- ], testSteps: const <String>[
- 'vm tests',
- 'checked vm tests',
- ]),
- const BuildSubgroup(shardNames: const <String>[
- 'vm-linux-release-ia32-be',
- ], testSteps: const <String>[
- 'vm tests',
- 'checked vm tests',
- ]),
- const BuildSubgroup(shardNames: const <String>[
- 'vm-mac-debug-x64-be',
- ], testSteps: const <String>[
- 'vm tests',
- 'checked vm tests',
- ]),
- const BuildSubgroup(shardNames: const <String>[
- 'vm-mac-release-x64-be',
- ], testSteps: const <String>[
- 'vm tests',
- 'checked vm tests',
- ]),
- const BuildSubgroup(shardNames: const <String>[
- 'vm-mac-debug-ia32-be',
- ], testSteps: const <String>[
- 'vm tests',
- 'checked vm tests',
- ]),
- const BuildSubgroup(shardNames: const <String>[
- 'vm-mac-release-ia32-be',
- ], testSteps: const <String>[
- 'vm tests',
- 'checked vm tests',
- ]),
- const BuildSubgroup(shardNames: const <String>[
- 'vm-win-debug-x64-be',
- ], testSteps: const <String>[
- 'vm tests',
- 'checked vm tests',
- ]),
- const BuildSubgroup(shardNames: const <String>[
- 'vm-win-release-x64-be',
- ], testSteps: const <String>[
- 'vm tests',
- 'checked vm tests',
- ]),
- const BuildSubgroup(shardNames: const <String>[
- 'vm-win-debug-ia32-be',
- ], testSteps: const <String>[
- 'vm tests',
- 'checked vm tests',
- ]),
- const BuildSubgroup(shardNames: const <String>[
- 'vm-win-release-ia32-be',
- ], testSteps: const <String>[
- 'vm tests',
- 'checked vm tests',
- ]),
- const BuildSubgroup(shardNames: const <String>[
- 'vm-linux-debug-simarm-be',
- ], testSteps: const <String>[
- 'vm tests',
- 'checked vm tests',
- ]),
- const BuildSubgroup(shardNames: const <String>[
- 'vm-linux-release-simarm-be',
- ], testSteps: const <String>[
- 'vm tests',
- 'checked vm tests',
- ]),
- const BuildSubgroup(shardNames: const <String>[
- 'vm-linux-release-simarm64-be',
- ], testSteps: const <String>[
- 'vm tests',
- 'checked vm tests',
- ]),
- ],
- ),
- const BuildGroup(
- groupName: 'vm-app',
- subgroups: const <BuildSubgroup>[
- const BuildSubgroup(shardNames: const <String>[
- 'app-linux-debug-x64-be',
- ], testSteps: const <String>[
- 'vm tests',
- ]),
- const BuildSubgroup(shardNames: const <String>[
- 'app-linux-release-x64-be',
- ], testSteps: const <String>[
- 'vm tests',
- ]),
- const BuildSubgroup(shardNames: const <String>[
- 'app-linux-product-x64-be',
- ], testSteps: const <String>[
- 'vm tests',
- ]),
- ],
- ),
- const BuildGroup(
- groupName: 'vm-kernel',
- subgroups: const <BuildSubgroup>[
- const BuildSubgroup(shardNames: const <String>[
- 'vm-kernel-linux-release-x64-be',
- ], testSteps: const <String>[
- 'front-end tests',
- 'vm tests',
- ]),
- const BuildSubgroup(shardNames: const <String>[
- 'vm-kernel-linux-debug-x64-be',
- ], testSteps: const <String>[
- 'front-end tests',
- 'vm tests',
- ]),
- const BuildSubgroup(shardNames: const <String>[
- 'vm-kernel-mac-release-x64-be',
- ], testSteps: const <String>[
- 'front-end tests',
- 'vm tests',
- ]),
- const BuildSubgroup(shardNames: const <String>[
- 'vm-kernel-mac-debug-x64-be',
- ], testSteps: const <String>[
- 'front-end tests',
- 'vm tests',
- ]),
- ],
- ),
- const BuildGroup(
- groupName: 'vm-misc',
- subgroups: const <BuildSubgroup>[
- const BuildSubgroup(shardNames: const <String>[
- 'vm-win-debug-ia32-russian-be',
- ], testSteps: const <String>[
- 'vm tests',
- 'checked vm tests',
- ]),
- const BuildSubgroup(shardNames: const <String>[
- 'cross-arm64-vm-linux-release-be',
- ], testSteps: const <String>[
- // This subgroup triggers other tests.
- ]),
- const BuildSubgroup(shardNames: const <String>[
- 'vm-linux-release-ia32-asan-be',
- ], testSteps: const <String>[
- 'vm tests',
- 'checked vm tests',
- ]),
- const BuildSubgroup(shardNames: const <String>[
- 'vm-linux-release-x64-asan-be',
- ], testSteps: const <String>[
- 'vm tests',
- 'checked vm tests',
- ]),
- const BuildSubgroup(shardNames: const <String>[
- 'vm-linux-release-ia32-optcounter-threshold-be',
- ], testSteps: const <String>[
- 'vm tests',
- 'checked vm tests',
- ]),
- const BuildSubgroup(shardNames: const <String>[
- 'vm-linux-release-x64-optcounter-threshold-be',
- ], testSteps: const <String>[
- 'vm tests',
- 'checked vm tests',
- ]),
- const BuildSubgroup(shardNames: const <String>[
- 'target-arm64-vm-linux-release-be',
- ], testSteps: const <String>[
- 'vm tests',
- 'checked vm tests',
- ]),
- // TODO(dmitryas): add data for this subgroup
- // const BuildSubgroup(shardNames: const <String>[
- // '',
- // ], testSteps: const <String>[
- // '',
- // ]),
- ],
- ),
- const BuildGroup(
- groupName: 'vm-precomp',
- subgroups: const <BuildSubgroup>[
- const BuildSubgroup(shardNames: const <String>[
- 'vm-noopt-simarm64-mac-be',
- ], testSteps: const <String>[
- 'test vm',
- ]),
- const BuildSubgroup(shardNames: const <String>[
- 'vm-precomp-android-release-1-3-be',
- 'vm-precomp-android-release-2-3-be',
- 'vm-precomp-android-release-3-3-be',
- ], testSteps: const <String>[
- 'test vm',
- ]),
- const BuildSubgroup(shardNames: const <String>[
- 'precomp-linux-debug-x64-be',
- ], testSteps: const <String>[
- 'vm tests',
- ]),
- const BuildSubgroup(shardNames: const <String>[
- 'precomp-linux-product-x64-be',
- ], testSteps: const <String>[
- 'vm tests',
- ]),
- const BuildSubgroup(shardNames: const <String>[
- 'vm-precomp-win-simarm64-1-4-be',
- 'vm-precomp-win-simarm64-2-4-be',
- 'vm-precomp-win-simarm64-3-4-be',
- 'vm-precomp-win-simarm64-4-4-be',
- ], testSteps: const <String>[
- 'test vm',
- ]),
- ],
- ),
- const BuildGroup(
- groupName: 'vm-product',
- subgroups: const <BuildSubgroup>[
- const BuildSubgroup(shardNames: const <String>[
- 'vm-linux-product-x64-be',
- ], testSteps: const <String>[
- 'vm tests',
- ]),
- const BuildSubgroup(shardNames: const <String>[
- 'vm-win-product-x64-be',
- ], testSteps: const <String>[
- 'vm tests',
- ]),
- const BuildSubgroup(shardNames: const <String>[
- 'vm-mac-product-x64-be',
- ], testSteps: const <String>[
- 'vm tests',
- ]),
- ],
- ),
- const BuildGroup(
- groupName: 'vm-reload',
- subgroups: const <BuildSubgroup>[
- const BuildSubgroup(shardNames: const <String>[
- 'vm-linux-debug-x64-reload-be',
- ], testSteps: const <String>[
- 'vm tests',
- 'checked vm tests',
- ]),
- const BuildSubgroup(shardNames: const <String>[
- 'vm-linux-debug-x64-reload-rollback-be',
- ], testSteps: const <String>[
- 'vm tests',
- 'checked vm tests',
- ]),
- const BuildSubgroup(shardNames: const <String>[
- 'vm-linux-release-x64-reload-be',
- ], testSteps: const <String>[
- 'vm tests',
- 'checked vm tests',
- ]),
- const BuildSubgroup(shardNames: const <String>[
- 'vm-linux-release-x64-reload-rollback-be',
- ], testSteps: const <String>[
- 'vm tests',
- 'checked vm tests',
- ]),
- ],
- ),
- const BuildGroup(
- groupName: 'dart2js-d8-hostchecked',
- subgroups: const <BuildSubgroup>[
- const BuildSubgroup(shardNames: const <String>[
- 'dart2js-linux-d8-hostchecked-unittest-1-5-be',
- 'dart2js-linux-d8-hostchecked-unittest-2-5-be',
- 'dart2js-linux-d8-hostchecked-unittest-3-5-be',
- 'dart2js-linux-d8-hostchecked-unittest-4-5-be',
- 'dart2js-linux-d8-hostchecked-unittest-5-5-be',
- ], testSteps: const <String>[
- 'dart2js-d8 tests',
- 'dart2js-d8-package tests',
- 'dart2js-d8-observatory-ui tests',
- 'dart2js-d8-co19 tests',
- 'dart2js-d8-extra tests',
- 'dart2js-d8-checked tests',
- 'dart2js-d8-package-checked tests',
- 'dart2js-d8-observatory-ui-checked tests',
- 'dart2js-d8-co19-checked tests',
- 'dart2js-d8-extra-checked tests',
- 'dart2js-unit tests',
- ]),
- ],
- ),
- const BuildGroup(
- groupName: 'dart2js-d8-minified',
- subgroups: const <BuildSubgroup>[
- const BuildSubgroup(shardNames: const <String>[
- 'dart2js-linux-d8-minified-1-5-be',
- 'dart2js-linux-d8-minified-2-5-be',
- 'dart2js-linux-d8-minified-3-5-be',
- 'dart2js-linux-d8-minified-4-5-be',
- 'dart2js-linux-d8-minified-5-5-be',
- ], testSteps: const <String>[
- 'dart2js-d8 tests',
- 'dart2js-d8-observatory_ui tests',
- 'dart2js-d8-package tests',
- 'dart2js-d8-co19 tests',
- 'dart2js-d8-extra tests',
- 'dart2js-with-kernel-d8 tests',
- 'dart2js-d8-fast-startup tests',
- 'dart2js-d8-observatory_ui-fast-startup tests',
- 'dart2js-d8-package-fast-startup tests',
- 'dart2js-d8-co19-fast-startup tests',
- 'dart2js-d8-extra-fast-startup tests',
- 'dart2js-d8-fast-startup-checked tests',
- 'dart2js-d8-observatory_ui-fast-startup-checked tests',
- 'dart2js-d8-package-fast-startup-checked tests',
- 'dart2js-d8-co19-fast-startup-checked tests',
- 'dart2js-d8-extra-fast-startup-checked tests',
- ])
- ],
- ),
- const BuildGroup(
- groupName: 'dart2js-jsshell',
- subgroups: const <BuildSubgroup>[
- const BuildSubgroup(shardNames: const <String>[
- 'dart2js-linux-jsshell-1-4-be',
- 'dart2js-linux-jsshell-2-4-be',
- 'dart2js-linux-jsshell-3-4-be',
- 'dart2js-linux-jsshell-4-4-be',
- ], testSteps: const <String>[
- 'dart2js-jsshell tests',
- 'dart2js-jsshell-observatory_ui tests',
- 'dart2js-jsshell-package tests',
- 'dart2js-jsshell-co19 tests',
- 'dart2js-jsshell-extra tests',
- 'dart2js-jsshell-fast-startup tests',
- 'dart2js-jsshell-observatory_ui-fast-startup tests',
- 'dart2js-jsshell-package-fast-startup tests',
- 'dart2js-jsshell-co19-fast-startup tests',
- 'dart2js-jsshell-extra-fast-startup tests',
- ])
- ],
- ),
- const BuildGroup(
- groupName: 'dart2js',
- subgroups: const <BuildSubgroup>[
- const BuildSubgroup(shardNames: const <String>[
- 'dart2js-dump-info-be',
- ], testSteps: const <String>[
- 'annotated_steps',
- ], isActive: false),
- ],
- ),
- const BuildGroup(
- groupName: 'analyzer',
- subgroups: const <BuildSubgroup>[
- const BuildSubgroup(shardNames: const <String>[
- 'analyze-linux-be',
- ], testSteps: const <String>[]),
- const BuildSubgroup(shardNames: const <String>[
- 'analyzer-mac10.11-release-be',
- ], testSteps: const <String>[
- 'analyze tests',
- 'analyze pkg tests',
- 'analyze tests checked',
- 'analyze pkg tests checked',
- 'analyzer unit tests',
- 'analysis server unit tests',
- 'analyzer_cli unit tests',
- 'front end unit tests',
- ]),
- const BuildSubgroup(shardNames: const <String>[
- 'analyzer-linux-release-be',
- ], testSteps: const <String>[
- 'analyze tests',
- 'analyze pkg tests',
- 'analyze tests checked',
- 'analyze pkg tests checked',
- 'analyzer unit tests',
- 'analysis server unit tests',
- 'analyzer_cli unit tests',
- 'front end unit tests',
- ]),
- const BuildSubgroup(shardNames: const <String>[
- 'analyzer-win7-release-be',
- ], testSteps: const <String>[
- 'analyze tests',
- 'analyze pkg tests',
- 'analyze tests checked',
- 'analyze pkg tests checked',
- 'analyzer unit tests',
- 'analysis server unit tests',
- 'analyzer_cli unit tests',
- 'front end unit tests',
- ]),
- const BuildSubgroup(shardNames: const <String>[
- 'analyzer-mac10.11-release-strong-be',
- ], testSteps: const <String>[
- 'analyze tests',
- 'analyze pkg tests',
- 'analyze tests checked',
- 'analyze pkg tests checked',
- 'analyze strong tests',
- 'analyze strong tests checked',
- 'analyzer unit tests',
- 'analysis server unit tests',
- 'analyzer_cli unit tests',
- 'front end unit tests',
- ]),
- const BuildSubgroup(shardNames: const <String>[
- 'analyzer-linux-release-strong-be',
- ], testSteps: const <String>[
- 'analyze tests',
- 'analyze pkg tests',
- 'analyze tests checked',
- 'analyze pkg tests checked',
- 'analyze strong tests',
- 'analyze strong tests checked',
- 'analyzer unit tests',
- 'analysis server unit tests',
- 'analyzer_cli unit tests',
- 'front end unit tests',
- ]),
- const BuildSubgroup(shardNames: const <String>[
- 'analyzer-win7-release-strong-be',
- ], testSteps: const <String>[
- 'analyze tests',
- 'analyze pkg tests',
- 'analyze tests checked',
- 'analyze pkg tests checked',
- 'analyze strong tests',
- 'analyze strong tests checked',
- 'analyzer unit tests',
- 'analysis server unit tests',
- 'analyzer_cli unit tests',
- 'front end unit tests',
- ]),
- ],
- ),
- const BuildGroup(
- groupName: 'dart-sdk',
- subgroups: const <BuildSubgroup>[
- const BuildSubgroup(shardNames: const <String>[
- 'dart-sdk-linux-be',
- 'dart-sdk-windows-be',
- 'dart-sdk-mac-be',
- ], testSteps: const <String>[
- // This subgroup triggers other tests.
- ]),
- const BuildSubgroup(shardNames: const <String>[
- 'sdk-trigger-be',
- ], testSteps: const <String>[
- // This subgroup triggers other tests.
- ], isActive: false),
- ],
- ),
- const BuildGroup(
- groupName: 'ddc',
- subgroups: const <BuildSubgroup>[
- const BuildSubgroup(shardNames: const <String>[
- 'ddc-linux-release-be',
- 'ddc-mac-release-be',
- 'ddc-win-release-be',
- ], testSteps: const <String>[
- 'ddc tests',
- ]),
- ],
- ),
- const BuildGroup(
- groupName: 'dartium-inc',
- subgroups: const <BuildSubgroup>[
- const BuildSubgroup(shardNames: const <String>[
- 'dartium-linux-x64-inc-be',
- 'dartium-mac-x64-inc-be',
- 'dartium-win-ia32-inc-be',
- ], testSteps: const <String>[
- 'drt_layout_unchecked_tests',
- 'drt_layout_checked_tests',
- 'dartium_core_unchecked_tests',
- 'dartium_core_checked_tests',
- ], isActive: false),
- ],
- ),
- const BuildGroup(
- groupName: 'dart2js-linux',
- subgroups: const <BuildSubgroup>[
- const BuildSubgroup(shardNames: const <String>[
- 'dart2js-linux-chromeff-1-4-be',
- 'dart2js-linux-chromeff-2-4-be',
- 'dart2js-linux-chromeff-3-4-be',
- 'dart2js-linux-chromeff-4-4-be'
- ], testSteps: const <String>[
- 'dart2js-chrome tests',
- 'dart2js-chrome-observatory_ui tests',
- 'dart2js-chrome-package tests',
- 'dart2js-chrome-co19 tests',
- 'dart2js-chrome-extra tests',
- 'dart2js-chrome-fast-startup tests',
- 'dart2js-chrome-observatory_ui-fast-startup tests',
- 'dart2js-chrome-package-fast-startup tests',
- 'dart2js-chrome-co19-fast-startup tests',
- 'dart2js-chrome-extra-fast-startup tests',
- 'dart2js-ff tests',
- 'dart2js-ff-observatory_ui tests',
- 'dart2js-ff-package tests',
- 'dart2js-ff-co19 tests',
- 'dart2js-ff-extra tests',
- 'dart2js-ff-fast-startup tests',
- 'dart2js-ff-observatory_ui-fast-startup tests',
- 'dart2js-ff-package-fast-startup tests',
- 'dart2js-ff-co19-fast-startup tests',
- 'dart2js-ff-extra-fast-startup tests',
- ]),
- ],
- ),
- const BuildGroup(
- groupName: 'chrome',
- subgroups: const <BuildSubgroup>[
- const BuildSubgroup(shardNames: const <String>[
- 'dart2js-linux-drt-csp-minified-be'
- ], testSteps: const <String>[
- 'dart2js-drt tests',
- 'dart2js-drt-observatory_ui tests',
- 'dart2js-drt-package tests',
- 'dart2js-drt-co19 tests',
- 'dart2js-drt-extra tests',
- 'dart2js-drt-fast-startup tests',
- 'dart2js-drt-observatory_ui-fast-startup tests',
- 'dart2js-drt-package-fast-startup tests',
- 'dart2js-drt-co19-fast-startup tests',
- 'dart2js-drt-extra-fast-startup tests',
- 'dart2js-drt-fast-startup-checked tests',
- 'dart2js-drt-observatory_ui-fast-startup-checked tests',
- 'dart2js-drt-package-fast-startup-checked tests',
- 'dart2js-drt-co19-fast-startup-checked tests',
- 'dart2js-drt-extra-fast-startup-checked tests',
- ], isActive: false),
- const BuildSubgroup(shardNames: const <String>[
- 'dart2js-linux-drt-1-2-be',
- 'dart2js-linux-drt-2-2-be',
- ], testSteps: const <String>[
- 'dart2js-drt tests',
- 'dart2js-drt-observatory_ui tests',
- 'dart2js-drt-package tests',
- 'dart2js-drt-co19 tests',
- 'dart2js-drt-extra tests',
- 'dart2js-drt-fast-startup tests',
- 'dart2js-drt-observatory_ui-fast-startup tests',
- 'dart2js-drt-package-fast-startup tests',
- 'dart2js-drt-co19-fast-startup tests',
- 'dart2js-drt-extra-fast-startup tests',
- 'dart2js-drt-fast-startup-checked tests',
- 'dart2js-drt-observatory_ui-fast-startup-checked tests',
- 'dart2js-drt-package-fast-startup-checked tests',
- 'dart2js-drt-co19-fast-startup-checked tests',
- 'dart2js-drt-extra-fast-startup-checked tests',
- ]),
- const BuildSubgroup(shardNames: const <String>[
- 'dart2js-mac10.11-chrome-be'
- ], testSteps: const <String>[
- 'dart2js-chrome tests',
- 'dart2js-chrome-observatory_ui tests',
- 'dart2js-chrome-package tests',
- 'dart2js-chrome-co19 tests',
- 'dart2js-chrome-extra tests',
- 'dart2js-chrome-fast-startup tests',
- 'dart2js-chrome-observatory_ui-fast-startup tests',
- 'dart2js-chrome-package-fast-startup tests',
- 'dart2js-chrome-co19-fast-startup tests',
- 'dart2js-chrome-extra-fast-startup tests',
- ]),
- ],
- ),
- const BuildGroup(
- groupName: 'safari',
- subgroups: const <BuildSubgroup>[
- const BuildSubgroup(shardNames: const <String>[
- 'dart2js-mac10.11-safari-1-3-be',
- 'dart2js-mac10.11-safari-2-3-be',
- 'dart2js-mac10.11-safari-3-3-be'
- ], testSteps: const <String>[
- 'dart2js-safari tests',
- 'dart2js-safari-observatory_ui tests',
- 'dart2js-safari-package tests',
- 'dart2js-safari-co19 tests',
- 'dart2js-safari-extra tests',
- 'dart2js-safari-fast-startup tests',
- 'dart2js-safari-observatory_ui-fast-startup tests',
- 'dart2js-safari-package-fast-startup tests',
- 'dart2js-safari-co19-fast-startup tests',
- 'dart2js-safari-extra-fast-startup tests',
- ]),
- ],
- ),
- const BuildGroup(
- groupName: 'ie',
- subgroups: const <BuildSubgroup>[
- const BuildSubgroup(shardNames: const <String>[
- 'dart2js-win8-ie10-be'
- ], testSteps: const <String>[
- 'dart2js ie10 tests',
- 'dart2js ie10 co19 tests',
- 'dart2js ie10-fast-startup tests',
- 'dart2js ie10 co19-fast-startup tests',
- ], isActive: false),
- const BuildSubgroup(shardNames: const <String>[
- 'dart2js-win8-ie11-be'
- ], testSteps: const <String>[
- 'dart2js ie11 tests',
- 'dart2js ie11 co19 tests',
- 'dart2js ie11-fast-startup tests',
- 'dart2js ie11 co19-fast-startup tests',
- ], isActive: false),
- ],
- ),
- const BuildGroup(
- groupName: 'dart2js-windows',
- subgroups: const <BuildSubgroup>[
- const BuildSubgroup(shardNames: const <String>[
- 'dart2js-win7-ie10chrome-1-4-be',
- 'dart2js-win7-ie10chrome-2-4-be',
- 'dart2js-win7-ie10chrome-3-4-be',
- 'dart2js-win7-ie10chrome-4-4-be'
- ], testSteps: const <String>[
- 'dart2js ie10 tests',
- 'dart2js ie10 co19 tests',
- 'dart2js ie10 fast-startup tests',
- 'dart2js ie10 co19 fast-startup tests',
- 'dart2js chrome tests',
- 'dart2js chrome observatory_ui tests',
- 'dart2js chrome package tests',
- 'dart2js chrome co19 tests',
- 'dart2js chrome extra tests',
- ], isActive: false), // Replaced by 'win8-ie11' and 'win7-chrome'.
- const BuildSubgroup(shardNames: const <String>[
- 'dart2js-win8-ie11-1-4-be',
- 'dart2js-win8-ie11-2-4-be',
- 'dart2js-win8-ie11-3-4-be',
- 'dart2js-win8-ie11-4-4-be'
- ], testSteps: const <String>[
- 'dart2js ie11 tests',
- 'dart2js ie11 co19 tests',
- 'dart2js ie11-fast-startup tests',
- 'dart2js ie11 co19-fast-startup tests',
- ]),
- const BuildSubgroup(shardNames: const <String>[
- 'dart2js-win7-chrome-1-4-be',
- 'dart2js-win7-chrome-2-4-be',
- 'dart2js-win7-chrome-3-4-be',
- 'dart2js-win7-chrome-4-4-be'
- ], testSteps: const <String>[
- 'dart2js-chrome tests',
- 'dart2js-chrome-observatory_ui tests',
- 'dart2js-chrome-package tests',
- 'dart2js-chrome-co19 tests',
- 'dart2js-chrome-extra tests',
- 'dart2js-chrome-fast-startup tests',
- 'dart2js-chrome-observatory_ui-fast-startup tests',
- 'dart2js-chrome-package-fast-startup tests',
- 'dart2js-chrome-co19-fast-startup tests',
- 'dart2js-chrome-extra-fast-startup tests',
- ]),
- const BuildSubgroup(shardNames: const <String>[
- 'dart2js-win7-ie11ff-1-4-be',
- 'dart2js-win7-ie11ff-2-4-be',
- 'dart2js-win7-ie11ff-3-4-be',
- 'dart2js-win7-ie11ff-4-4-be'
- ], testSteps: const <String>[
- 'dart2js ie11 tests',
- 'dart2js ie11 co19 tests',
- 'dart2js ie11-fast-startup tests',
- 'dart2js ie11 co19-fast-startup tests',
- 'dart2js-ff tests',
- 'dart2js-ff-observatory_ui tests',
- 'dart2js-ff-package tests',
- 'dart2js-ff-co19 tests',
- 'dart2js-ff-extra tests',
- 'dart2js-ff-fast-startup tests',
- 'dart2js-ff-observatory_ui-fast-startup tests',
- 'dart2js-ff-package-fast-startup tests',
- 'dart2js-ff-co19-fast-startup tests',
- 'dart2js-ff-extra-fast-startup tests',
- ]),
- ],
- ),
- const BuildGroup(
- groupName: 'pub-pkg',
- subgroups: const <BuildSubgroup>[
- const BuildSubgroup(shardNames: const <String>[
- 'pub-mac-be',
- ], testSteps: const <String>[
- 'annotated_steps',
- ], isActive: false),
- const BuildSubgroup(shardNames: const <String>[
- 'pub-linux-be',
- ], testSteps: const <String>[
- 'annotated_steps',
- ], isActive: false),
- const BuildSubgroup(shardNames: const <String>[
- 'pkg-mac10.11-release-be',
- ], testSteps: const <String>[
- 'package unit tests',
- 'third_party pkg_tested unit tests',
- ]),
- const BuildSubgroup(shardNames: const <String>[
- 'pkg-linux-release-be',
- ], testSteps: const <String>[
- 'package unit tests',
- 'third_party pkg_tested unit tests',
- ]),
- const BuildSubgroup(shardNames: const <String>[
- 'pkg-win7-release-be',
- ], testSteps: const <String>[
- 'package unit tests',
- 'third_party pkg_tested unit tests',
- ]),
- ],
- ),
- const BuildGroup(
- groupName: 'dartium-full',
- subgroups: const <BuildSubgroup>[
- const BuildSubgroup(shardNames: const <String>[
- 'dartium-linux-x64-be',
- ], testSteps: const <String>[
- 'annotated steps',
- ], isActive: false),
- const BuildSubgroup(shardNames: const <String>[
- 'dartium-mac-x64-be',
- ], testSteps: const <String>[
- 'annotated steps',
- ], isActive: false),
- const BuildSubgroup(shardNames: const <String>[
- 'dartium-win-ia32-be',
- ], testSteps: const <String>[
- 'annotated steps',
- ], isActive: false),
- ],
- ),
- const BuildGroup(
- groupName: 'misc',
- subgroups: const <BuildSubgroup>[
- const BuildSubgroup(shardNames: const <String>[
- 'versionchecker-linux-be',
- ], testSteps: const <String>[]),
- const BuildSubgroup(shardNames: const <String>[
- 'debianpackage-linux-be',
- ], testSteps: const <String>[]),
- ],
- ),
- const BuildGroup(
- groupName: 'vm-app-dev',
- subgroups: const <BuildSubgroup>[
- const BuildSubgroup(shardNames: const <String>[
- 'app-linux-debug-x64-dev',
- ], testSteps: const <String>[
- 'vm tests',
- ], isActive: false),
- const BuildSubgroup(shardNames: const <String>[
- 'app-linux-release-x64-dev',
- ], testSteps: const <String>[
- 'vm tests',
- ], isActive: false),
- const BuildSubgroup(shardNames: const <String>[
- 'app-linux-product-x64-dev',
- ], testSteps: const <String>[
- 'vm tests',
- ], isActive: false),
- ],
- ),
-];
-
-/// Descriptor for a buildbot group, e.g. 'dart2js-linux', 'chrome' and
-/// 'safari'.
-class BuildGroup {
- /// The name of the group as display on the buildbot site.
- final String groupName;
-
- /// The subgroups, often shards, of the buildbot group.
- final List<BuildSubgroup> subgroups;
-
- const BuildGroup({this.groupName, this.subgroups});
-
- /// Returns the [BuildUri] corresponding to the build steps for shards in this
- /// group.
- List<BuildUri> createUris(int buildNumber, {bool includeInactive: false}) {
- List<BuildUri> uriList = <BuildUri>[];
- for (BuildSubgroup subgroup in subgroups) {
- if (!subgroup.isActive && !includeInactive) continue;
- uriList.addAll(subgroup.createUris(buildNumber));
- }
- return uriList;
- }
-
- String toString() => groupName;
-}
-
-/// A group of buildbot subgroups, often shards, that share their test steps,
-/// for instance all `dart2js-win7-ie10chrome-*-4-be` shards.
-class BuildSubgroup {
- /// The names of the shards in this, for instance
- /// `dart2js-win7-ie10chrome-1-4-be`, `dart2js-win7-ie10chrome-2-4-be`, etc.
- final List<String> shardNames;
-
- /// The names of the test steps for the shards in this subgroup, for instance
- /// `dart2js ie10 tests`, `dart2js ie10 co19 tests`, etc.
- final List<String> testSteps;
-
- /// Whether this subgroup is currently on the buildbot.
- ///
- /// Set this to `false` to preserve data for older build structures. The data
- /// will continuously be available through logdog.
- final bool isActive;
-
- const BuildSubgroup({this.shardNames, this.testSteps, this.isActive: true});
-
- Map<String, String> get logDogPaths {
- Map<String, String> paths = <String, String>{};
- for (String shardName in shardNames) {
- paths[shardName] = getLogDogPath(shardName);
- }
- return paths;
- }
-
- /// Returns the [BuildUri] corresponding to the build steps for all shards
- /// in this subgroup.
- List<BuildUri> createUris(int buildNumber) {
- List<BuildUri> uriList = <BuildUri>[];
- for (String shardName in shardNames) {
- uriList.addAll(createShardUris(shardName, buildNumber));
- }
- return uriList;
- }
-
- List<BuildUri> createShardUris(String shardName, int buildNumber) {
- List<BuildUri> uriList = <BuildUri>[];
- for (String testStep in testSteps) {
- uriList.add(new BuildUri.fromData(shardName, buildNumber, testStep));
- }
- return uriList;
- }
-}
-
-/// Computes the logdog path for a build bot with the given [botName].
-String getLogDogPath(String botName) {
- return 'bb/client.dart/$botName';
-}
-
-/// Pulls the list of the build numbers (in decreasing order) of the available
-/// builds for [botName] using logdog.
-Future<List<int>> lookupBotBuildNumbers(String botName, {int count = 20}) {
- return latestBuildNumbersForBuilder(botName, count);
-}
-
-/// Returns the index of [buildNumber] in the decreasing list of
-/// [absoluteBuildNumbers].
-///
-/// If [buildNumber] is negative it is interpreted as a relative number; -1
-/// is the last build number (the largest), -2 is the second-to-last build
-/// number etc.
-///
-/// If [buildNumber] is non-negative and not in [absoluteBuildNumbers], the
-/// index of the next available build number: looking up 3 in [5, 4, 2, 1]
-/// returns index 2 (the index of 2).
-///
-/// If no index is found, `null` is returned.
-int getBuildNumberIndex(List<int> absoluteBuildNumbers, int buildNumber) {
- if (buildNumber < 0) {
- int buildNumberIndex = -buildNumber - 1;
- if (buildNumberIndex < absoluteBuildNumbers.length) {
- return buildNumberIndex;
- } else {
- return null;
- }
- } else {
- for (int i = 0; i < absoluteBuildNumbers.length; i++) {
- if (absoluteBuildNumbers[i] <= buildNumber) return i;
- }
- return null;
- }
-}
-
-Future<int> lookupAbsoluteBuildNumber(
- String botName, int relativeBuildNumber) async {
- if (relativeBuildNumber >= 0) return relativeBuildNumber;
- List<int> absoluteBuildNumbers = await lookupBotBuildNumbers(botName);
- int buildNumberIndex =
- getBuildNumberIndex(absoluteBuildNumbers, relativeBuildNumber);
- return buildNumberIndex != null
- ? absoluteBuildNumbers[buildNumberIndex]
- : null;
-}
-
-Map<BuildSubgroup, List<String>> findSubgroupsByName(String name) {
- Map<BuildSubgroup, List<String>> subgroups = <BuildSubgroup, List<String>>{};
- for (BuildGroup group in buildGroups) {
- if (group.groupName == name) {
- for (BuildSubgroup subgroup in group.subgroups) {
- subgroups[subgroup] = subgroup.shardNames;
- }
- } else {
- for (BuildSubgroup subgroup in group.subgroups) {
- List<String> shardNames = <String>[];
- for (String shardName in subgroup.shardNames) {
- if (shardName.contains(name)) {
- shardNames.add(shardName);
- }
- }
- if (shardNames.isNotEmpty) {
- subgroups[subgroup] = shardNames;
- }
- }
- }
- }
- return subgroups;
-}
-
-Map<BuildSubgroup, List<String>> findSubgroupsByStep(String stepName) {
- Map<BuildSubgroup, List<String>> subgroups = <BuildSubgroup, List<String>>{};
- for (BuildGroup group in buildGroups) {
- for (BuildSubgroup subgroup in group.subgroups) {
- List<String> stepNames = <String>[];
- for (String step in subgroup.testSteps) {
- if (step.contains(stepName)) {
- stepNames.add(step);
- }
- }
- if (stepNames.isNotEmpty) {
- subgroups[subgroup] = stepNames;
- }
- }
- }
- return subgroups;
-}
diff --git a/tools/gardening/lib/src/buildbot_loading.dart b/tools/gardening/lib/src/buildbot_loading.dart
deleted file mode 100644
index 6a55fdc..0000000
--- a/tools/gardening/lib/src/buildbot_loading.dart
+++ /dev/null
@@ -1,156 +0,0 @@
-// Copyright (c) 2017, 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 'dart:io';
-import 'cache_new.dart';
-import 'logdog_rpc.dart';
-import 'util.dart';
-
-import 'buildbot_structures.dart';
-import 'cache.dart';
-
-const String BUILDBOT_BUILDNUMBER = ' BUILDBOT_BUILDNUMBER: ';
-const String BUILDBOT_REVISION = ' BUILDBOT_REVISION: ';
-
-/// Read the build result for [buildUri].
-///
-/// The data is loaded from the cache, if available, otherwise [read] is called
-/// to fetch the data and stored in the cache afterwards.
-Future<BuildResult> _readBuildResult(
- BuildUri buildUri, Future<String> read()) async {
- if (buildUri.buildNumber < 0) {
- String text = await read();
- BuildResult result = parseTestStepResult(buildUri, text);
- if (result.buildNumber != null) {
- cache.write(result.buildUri.logdogPath, text);
- }
- return result;
- } else {
- return parseTestStepResult(
- buildUri, await cache.read(buildUri.logdogPath, read));
- }
-}
-
-/// Fetches test data for [buildUri] through the buildbot stdio.
-Future<BuildResult> readBuildResultFromHttp(
- HttpClient client, BuildUri buildUri,
- [Duration timeout]) {
- Future<String> read() async {
- Uri uri = buildUri.toUri();
- log('Reading buildbot results: $uri');
- return readUriAsText(client, uri, timeout);
- }
-
- return _readBuildResult(buildUri, read);
-}
-
-/// Fetches test data for [buildUri] through logdog.
-///
-/// The build number of [buildUri] most be non-negative.
-Future<BuildResult> readBuildResultFromLogDog(BuildUri buildUri) {
- LogdogRpc logdog = new LogdogRpc();
- Future<String> read() {
- log('Reading logdog results: $buildUri');
- return logdog.get(BUILDER_PROJECT, buildUri.logdogPath, noCache()());
- }
-
- return _readBuildResult(buildUri, read);
-}
-
-/// Parses a test status line of the from
-/// `Done <config-name> <arch-name> <test-name>: <status>`.
-///
-/// If [line] is not of the correct form, `null` is returned.
-TestStatus parseTestStatus(String line) {
- try {
- List<String> parts = split(line, ['Done ', ' ', ' ', ': ']);
- String testName = parts[3];
- String configName = parts[1];
- String archName = parts[2];
- String status = parts[4];
- return new TestStatus(
- new TestConfiguration(configName, archName, testName), status);
- } catch (_) {
- return null;
- }
-}
-
-/// Parses the [buildUri] test log and creates a [BuildResult] for it.
-BuildResult parseTestStepResult(BuildUri buildUri, String text) {
- log('Parsing results: $buildUri (${text.length} bytes)');
- int buildNumber;
- String buildRevision;
- List<String> currentFailure;
- bool parsingTimingBlock = false;
-
- List<TestStatus> results = <TestStatus>[];
- List<TestFailure> failures = <TestFailure>[];
- List<Timing> timings = <Timing>[];
- List<String> strings = text.split('\n');
- for (String line in strings) {
- if (line.startsWith(BUILDBOT_BUILDNUMBER)) {
- buildNumber =
- int.parse(line.substring(BUILDBOT_BUILDNUMBER.length).trim());
- buildUri = buildUri.withBuildNumber(buildNumber);
- }
- if (line.startsWith(BUILDBOT_REVISION)) {
- buildRevision = line.substring(BUILDBOT_REVISION.length).trim();
- }
- if (currentFailure != null) {
- if (line.startsWith('Done ')) {
- TestStatus status = parseTestStatus(line);
- if (status != null) {
- results.add(status);
- failures.add(new TestFailure(buildUri, currentFailure));
- currentFailure = null;
- }
- } else {
- currentFailure.add(line);
- }
- } else if (line.startsWith('FAILED:')) {
- currentFailure = <String>[];
- currentFailure.add(line);
- } else if (line.startsWith('Done ')) {
- TestStatus status = parseTestStatus(line);
- if (status != null) {
- results.add(status);
- }
- }
- if (line.startsWith('--- Total time:')) {
- parsingTimingBlock = true;
- } else if (parsingTimingBlock) {
- if (line.startsWith('0:')) {
- timings.addAll(parseTimings(buildUri, line));
- } else {
- parsingTimingBlock = false;
- }
- }
- }
- return new BuildResult(buildUri, buildNumber ?? buildUri.absoluteBuildNumber,
- buildRevision, results, failures, timings);
-}
-
-/// Create the [Timing]s for the [line] as found in the top-20 timings of a
-/// build step stdio log.
-List<Timing> parseTimings(BuildUri uri, String line) {
- List<String> parts = split(line, [' - ', ' - ', ' ']);
- String time = parts[0];
- String stepName = parts[1];
- String configName = parts[2];
- String testNames = parts[3];
- List<Timing> timings = <Timing>[];
- for (String name in testNames.split(',')) {
- name = name.trim();
- int slashPos = name.indexOf('/');
- String archName = name.substring(0, slashPos);
- String testName = name.substring(slashPos + 1);
- timings.add(new Timing(
- uri,
- time,
- new TestStep(
- stepName, new TestConfiguration(configName, archName, testName))));
- }
- return timings;
-}
diff --git a/tools/gardening/lib/src/buildbot_structures.dart b/tools/gardening/lib/src/buildbot_structures.dart
deleted file mode 100644
index 4c52e93..0000000
--- a/tools/gardening/lib/src/buildbot_structures.dart
+++ /dev/null
@@ -1,238 +0,0 @@
-// Copyright (c) 2017, 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 'util.dart';
-
-/// The [Uri] of a build step stdio log split into its subparts.
-class BuildUri {
- final String botName;
- final int buildNumber;
- final String stepName;
-
- factory BuildUri(Uri uri) {
- if (uri.host == "logs.chromium.org") {
- RegExp logdogBuilderRegExp = new RegExp(
- r"^.*\/client\.dart\/(.*)\/(\d*)\/\+\/recipes\/steps\/(.*)\/0.*$");
- var match =
- logdogBuilderRegExp.firstMatch(Uri.decodeFull(uri.toString()));
- return new BuildUri.fromData(
- match.group(1), int.parse(match.group(2)), match.group(3));
- } else {
- List<String> parts = split(Uri.decodeFull(uri.path),
- ['/builders/', '/builds/', '/steps/', '/logs/']);
- String botName = parts[1];
- int buildNumber = int.parse(parts[2]);
- String stepName = parts[3];
- return new BuildUri.fromData(botName, buildNumber, stepName);
- }
- }
-
- factory BuildUri.fromUrl(String url) {
- if (!url.endsWith('/text') && !url.contains("logs.chromium.org")) {
- // Use the text version of the stdio log.
- url += '/text';
- }
- return new BuildUri(Uri.parse(url));
- }
-
- BuildUri.fromData(this.botName, this.buildNumber, this.stepName);
-
- BuildUri withBuildNumber(int buildNumber) {
- return new BuildUri.fromData(botName, buildNumber, stepName);
- }
-
- int get absoluteBuildNumber => buildNumber >= 0 ? buildNumber : null;
-
- String get shortBuildName => '$botName/$stepName';
-
- String get buildName =>
- '/builders/$botName/builds/$buildNumber/steps/$stepName';
-
- String get path => '/p/client.dart$buildName/logs/stdio/text';
-
- /// Returns the path used in logdog for this build uri.
- ///
- /// Since logdog only supports absolute build numbers, [buildNumber] must be
- /// non-negative. A [StateError] is thrown, otherwise.
- String get logdogPath {
- if (buildNumber < 0)
- throw new StateError('BuildUri $buildName must have a non-negative build '
- 'number to a valid logdog path.');
- return 'bb/client.dart/$botName/$buildNumber/+/recipes/steps/'
- '${stepName.replaceAll(' ', '_')}/0/stdout';
- }
-
- /// Creates the [Uri] for this build step stdio log.
- Uri toUri() {
- return new Uri(scheme: 'https', host: 'build.chromium.org', path: path);
- }
-
- /// Returns the [BuildUri] the previous build of this build step.
- BuildUri prev() {
- return new BuildUri.fromData(botName, buildNumber - 1, stepName);
- }
-
- String toString() {
- return buildName;
- }
-}
-
-/// Id for a test on a specific configuration, for instance
-/// `dart2js-chrome release_x64 co19/Language/Metadata/before_function_t07`.
-class TestConfiguration {
- final String configName;
- final String archName;
- final String testName;
-
- TestConfiguration(this.configName, this.archName, this.testName);
-
- String toString() {
- return '$configName $archName $testName';
- }
-
- int get hashCode =>
- configName.hashCode * 13 +
- archName.hashCode * 17 +
- testName.hashCode * 19;
-
- bool operator ==(other) {
- if (identical(this, other)) return true;
- if (other is! TestConfiguration) return false;
- return configName == other.configName &&
- archName == other.archName &&
- testName == other.testName;
- }
-}
-
-/// The results of a build step.
-class BuildResult {
- final BuildUri buildUri;
-
- /// The absolute build number, if found.
- ///
- /// The [buildUri] can be created with a relative build number, such as `-2`
- /// which means the second-to-last build. The absolute build number, a
- /// positive number, is read from the build results.
- final int buildNumber;
-
- final String buildRevision;
-
- final List<TestStatus> _results;
- final List<TestFailure> _failures;
- final List<Timing> _timings;
-
- BuildResult(this.buildUri, this.buildNumber, this.buildRevision,
- this._results, this._failures, this._timings);
-
- /// `true` of the build result has test failures.
- bool get hasFailures => _failures.isNotEmpty;
-
- /// Returns the top-20 timings found in the build log.
- Iterable<Timing> get timings => _timings;
-
- /// Returns the [TestStatus] for all tests.
- Iterable<TestStatus> get results => _results;
-
- /// Returns the [TestFailure]s for tests that timed out.
- Iterable<TestFailure> get timeouts {
- return _failures
- .where((TestFailure failure) => failure.actual == 'Timeout');
- }
-
- /// Returns the [TestFailure]s for failing tests that did not time out.
- Iterable<TestFailure> get errors {
- return _failures
- .where((TestFailure failure) => failure.actual != 'Timeout');
- }
-
- /// Returns all [TestFailure]s.
- Iterable<TestFailure> get failures => _failures;
-
- String toString() {
- StringBuffer sb = new StringBuffer();
- sb.write('$buildUri\n');
- sb.write('Failures:\n${_failures.join('\n-----\n')}\n');
- sb.write('\nTimings:\n${_timings.join('\n')}');
- return sb.toString();
- }
-}
-
-/// Test failure data derived from the test failure summary in the build step
-/// stdio log.
-class TestFailure {
- final BuildUri uri;
- final TestConfiguration id;
- final String expected;
- final String actual;
- final String text;
-
- factory TestFailure(BuildUri uri, List<String> lines) {
- List<String> parts = split(lines.first, ['FAILED: ', ' ', ' ']);
- String configName = parts[1];
- String archName = parts[2];
- String testName = parts[3];
- TestConfiguration id =
- new TestConfiguration(configName, archName, testName);
- String expected = split(lines[1], ['Expected: '])[1].trim();
- String actual = split(lines[2], ['Actual: '])[1].trim();
- return new TestFailure.internal(
- uri, id, expected, actual, lines.skip(3).join('\n'));
- }
-
- TestFailure.internal(
- this.uri, this.id, this.expected, this.actual, this.text);
-
- String toString() {
- StringBuffer sb = new StringBuffer();
- sb.write('FAILED: $id\n');
- sb.write('Expected: $expected\n');
- sb.write('Actual: $actual\n');
- sb.write(text);
- return sb.toString();
- }
-}
-
-/// Id for a single test step, for instance the compilation and run steps of
-/// a test.
-class TestStep {
- final String stepName;
- final TestConfiguration id;
-
- TestStep(this.stepName, this.id);
-
- String toString() {
- return '$stepName - $id';
- }
-
- int get hashCode => stepName.hashCode * 13 + id.hashCode * 17;
-
- bool operator ==(other) {
- if (identical(this, other)) return true;
- if (other is! TestStep) return false;
- return stepName == other.stepName && id == other.id;
- }
-}
-
-/// The timing result for a single test step.
-class Timing {
- final BuildUri uri;
- final String time;
- final TestStep step;
-
- Timing(this.uri, this.time, this.step);
-
- String toString() {
- return '$time - $step';
- }
-}
-
-/// The result of a single test for a single test step.
-class TestStatus {
- final TestConfiguration config;
- final String status;
-
- TestStatus(this.config, this.status);
-
- String toString() => '$config: $status';
-}
diff --git a/tools/gardening/lib/src/buildbucket.dart b/tools/gardening/lib/src/buildbucket.dart
deleted file mode 100644
index 681df1d..0000000
--- a/tools/gardening/lib/src/buildbucket.dart
+++ /dev/null
@@ -1,95 +0,0 @@
-// Copyright (c) 2017, 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 'dart:convert';
-import 'buildbucket_api.dart';
-
-/// Get builds from Gerrit with a [changeNumber] and [patchSet].
-Future<List<BuildBucketBuild>> buildsFromGerrit(
- int changeNumber, int patchset) {
- var api = new BuildBucketApi();
- var result = api.search("buildset:patch/gerrit/dart-review.googlesource.com/"
- "${changeNumber}/${patchset}");
- return result.then(jsonDecode).then(_buildsFromJson);
-}
-
-/// Get builds from a swarming task with [swarmingTaskId].
-Future<List<BuildBucketBuild>> buildsFromSwarmingTaskId(String swarmingTaskId) {
- var api = new BuildBucketApi();
- var result = api.search("swarming_task_id:$swarmingTaskId");
- return result.then(jsonDecode).then(_buildsFromJson);
-}
-
-/// Gets builds from a [builder] in descending order.
-Future<List<BuildBucketBuild>> buildsFromBuilder(String builder,
- {maxBuilds = 1, String bucket}) {
- var api = new BuildBucketApi();
- var result = api.searchExtended("builder:$builder",
- bucket: bucket,
- maxBuilds: maxBuilds,
- fields: "builds(id,tags)",
- status: "COMPLETED",
- result: "SUCCESS");
- return result.then(jsonDecode).then(_buildsFromJson);
-}
-
-/// Fetches all builders from a specific [clientBucket].
-Future<Iterable<Builder>> fetchBuilders(String clientBucket) async {
- BuildBucketApi api = new BuildBucketApi();
- String result = await api.builders();
- var json = jsonDecode(result);
- var buckets = json["buckets"].where((bucket) {
- return bucket["name"] == clientBucket;
- });
- if (buckets.length == 0) {
- return null;
- }
- return buckets.first["builders"].map((builder) {
- return new Builder(builder["category"], builder["name"]);
- });
-}
-
-List<BuildBucketBuild> _buildsFromJson(dynamic json) {
- if (json == null || !json.containsKey("builds")) {
- return null;
- }
- return json["builds"].map<BuildBucketBuild>((build) {
- var tags = build["tags"];
- return new BuildBucketBuild(
- build["id"],
- _valueFromTag("builder", tags),
- _valueFromTag("master", tags),
- _valueFromTag("swarming_tag:pool", tags),
- _valueFromTag("swarming_task_id", tags));
- }).toList();
-}
-
-String _valueFromTag(String tag, List tags) {
- String key = "${tag}:";
- for (var taggedValue in tags) {
- if (taggedValue.startsWith(key)) {
- return taggedValue.substring(key.length);
- }
- }
- return null;
-}
-
-/// [BuildBucketBuild] holds information about a specific swarming build.
-class BuildBucketBuild {
- final String id;
- final String builder;
- final String master;
- final String pool;
- final String swarmingTaskId;
- BuildBucketBuild(
- this.id, this.builder, this.master, this.pool, this.swarmingTaskId);
-}
-
-/// [Builder] holds information about a specific builder.
-class Builder {
- final String category;
- final String name;
- Builder(this.category, this.name);
-}
diff --git a/tools/gardening/lib/src/buildbucket_api.dart b/tools/gardening/lib/src/buildbucket_api.dart
deleted file mode 100644
index 9f6b13e..0000000
--- a/tools/gardening/lib/src/buildbucket_api.dart
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright (c) 2017, 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:io';
-import 'dart:async';
-import 'package:http/http.dart' as http;
-
-const String BUILD_BUCKET_HOST = "cr-buildbucket.appspot.com";
-const String BUILD_BUCKET_API = r"/_ah/api/buildbucket/v1";
-const String BUILD_BUCKET_SWARM = r"/_ah/api/swarmbucket/v1";
-
-/// Class to communicate with the build bucket (swarming) by calling the api.
-class BuildBucketApi {
- /// Searches the build bucket for a build with [tag].
- Future<String> search(String tag) {
- return searchExtended(tag);
- }
-
- /// Searches the build bucket for a build with [tag].
- Future<String> searchExtended(String tag,
- {int maxBuilds = 50,
- String bucket = "luci.dart.try",
- String fields = "builds(id,tags)",
- String status = "",
- String result = ""}) {
- String path = BUILD_BUCKET_API + "/search";
- String query =
- "tag=${Uri.encodeFull(tag)}&max_builds=$maxBuilds&fields=$fields";
- if (status.isNotEmpty) {
- query += "&status=$status";
- }
- if (result.isNotEmpty) {
- query += "&result=$result";
- }
- var uri = new Uri(
- scheme: 'https', host: BUILD_BUCKET_HOST, path: path, query: query);
- return _makeGetRequest(uri);
- }
-
- /// Request all builders for with masters in build-bucket (swarming), by
- /// calling the build-bucket api.
- Future<String> builders() {
- String path = BUILD_BUCKET_SWARM + "/builders";
- var uri = new Uri(scheme: 'https', host: BUILD_BUCKET_HOST, path: path);
- return _makeGetRequest(uri);
- }
-
- /// [_makeGetRequest] performs a get request to [uri].
- Future<String> _makeGetRequest(Uri uri) async {
- print(uri);
- var response = await http.get(uri);
- if (response.statusCode != 200) {
- throw new HttpException(response.reasonPhrase, uri: uri);
- }
- return response.body;
- }
-}
diff --git a/tools/gardening/lib/src/cache.dart b/tools/gardening/lib/src/cache.dart
deleted file mode 100644
index e9878bc..0000000
--- a/tools/gardening/lib/src/cache.dart
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright (c) 2017, 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 'dart:io';
-
-import 'util.dart';
-
-final Cache cache = new Cache(Uri.base.resolve('temp/gardening-cache/'));
-
-/// Simple cache for test step output.
-class Cache {
- Uri base;
-
- Cache(this.base);
-
- Map<String, String> memoryCache = <String, String>{};
-
- /// Load the cache text for [path] or call [ifAbsent] to fetch the data.
- Future<String> read(String path, Future<String> ifAbsent()) async {
- if (memoryCache.containsKey(path)) {
- log('Found $path in memory cache');
- return memoryCache[path];
- }
- if (base == null) {
- return ifAbsent();
- }
- File file = new File.fromUri(base.resolve(path));
- String text;
- if (file.existsSync()) {
- log('Found $path in file cache');
- text = file.readAsStringSync();
- memoryCache[path] = text;
- } else {
- log('Loading $path');
- text = await ifAbsent();
- write(path, text);
- }
- return text;
- }
-
- /// Store [text] as the cache data for [path].
- void write(String path, String text) {
- if (base == null) return;
- log('Creating $path in file cache');
- File file = new File.fromUri(base.resolve(path));
- file.createSync(recursive: true);
- file.writeAsStringSync(text);
- memoryCache[path] = text;
- }
-}
diff --git a/tools/gardening/lib/src/cache_new.dart b/tools/gardening/lib/src/cache_new.dart
deleted file mode 100644
index 4f8a60f..0000000
--- a/tools/gardening/lib/src/cache_new.dart
+++ /dev/null
@@ -1,152 +0,0 @@
-// Copyright (c) 2017, 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 'dart:io';
-import 'logger.dart';
-
-typedef Future<String> FetchDataFunction();
-typedef Future<String> WithCacheFunction(FetchDataFunction fetchData,
- [String key]);
-typedef WithCacheFunction CreateCacheFunction(
- {String overrideKey, Duration duration});
-
-CreateCacheFunction initCache(Uri baseUri, [Logger logger]) {
- final cache = new Cache(baseUri, logger);
- logger ??= new StdOutLogger(Level.warning);
-
- return ({String overrideKey, Duration duration}) {
- if (duration == null) {
- duration = new Duration(hours: 24);
- }
-
- return (FetchDataFunction call, [String key]) async {
- if (overrideKey != null) {
- key = overrideKey;
- }
- if (key == null || key.isEmpty) {
- logger.warning("Key is null or empty - cannot cache result");
- return null;
- }
- // format key
- key = key
- .replaceAll("/", "_")
- .replaceAll(":", "")
- .replaceAll(".", "_")
- .replaceAll("?", "")
- .replaceAll("%2F", "_")
- .replaceAll("*", "x");
-
- var cacheResult = await cache.read(key, duration);
- if (cacheResult.hasResult) {
- logger.debug("Found key $key in cache");
- return cacheResult.result;
- }
-
- logger.debug("Could not find key $key in cache");
-
- // we have to make a call
- String result = await call();
-
- // insert/update the cache
- if (key != null && !key.isEmpty) {
- await cache.write(key, result);
- }
-
- return result;
- };
- };
-}
-
-CreateCacheFunction noCache() {
- return ({String overrideKey, Duration duration}) {
- return (FetchDataFunction fetchData, [String key]) {
- return fetchData();
- };
- };
-}
-
-/// Simple cache for caching data.
-class Cache {
- // TODO(mkroghj) use this instead of cache.dart
- Uri base;
- Logger logger;
-
- Cache(this.base, this.logger);
-
- Map<String, String> memoryCache = <String, String>{};
-
- /// Checks if key [path] is in cache
- Future<bool> containsKey(String path, [Duration duration]) async {
- if (memoryCache.containsKey(path)) return true;
-
- File file = new File.fromUri(base.resolve(path));
- if (await file.exists()) {
- return duration == null
- ? true
- : new DateTime.now().difference(await file.lastModified()) <=
- duration;
- }
-
- return false;
- }
-
- /// Try reading [path] from cache
- Future<CacheResult> read(String path, [Duration duration]) async {
- if (memoryCache.containsKey(path)) {
- logger.debug('Found $path in memory cache');
- return new CacheResult(memoryCache[path]);
- }
-
- File file = new File.fromUri(base.resolve(path));
-
- if (!await file.exists()) {
- logger.debug('Could not find file $path in file cache');
- return new CacheResult.noResult();
- }
- if (duration != null &&
- new DateTime.now().difference(await file.lastModified()) > duration) {
- logger.debug('File $path was found but the information is too stale,'
- 'for the duration: $duration');
- return new CacheResult.noResult();
- }
-
- logger.debug('Found $path in file cache');
- try {
- String text = await file.readAsString();
- memoryCache[path] = text;
- return new CacheResult(text);
- } catch (error, st) {
- logger.error("Could not read $path:", error, st);
- return new CacheResult.noResult();
- }
- }
-
- /// Store [text] as the cache data for [path].
- Future write(String path, String text) async {
- logger.debug('Creating $path in file cache');
- File file = new File.fromUri(base.resolve(path));
- if (!await file.exists()) {
- await file.create(recursive: true);
- }
- await file.writeAsString(text);
- memoryCache[path] = text;
- }
-
- /// Clears the cache at [baseUri]
- Future clearCache(Uri baseUri) async {
- await new Directory(baseUri.toFilePath()).delete(recursive: true);
- }
-}
-
-class CacheResult {
- final bool hasResult;
- final String result;
-
- CacheResult.noResult()
- : hasResult = false,
- result = null {}
-
- CacheResult(this.result) : hasResult = true {}
-}
diff --git a/tools/gardening/lib/src/client.dart b/tools/gardening/lib/src/client.dart
deleted file mode 100644
index d2e1cdb..0000000
--- a/tools/gardening/lib/src/client.dart
+++ /dev/null
@@ -1,128 +0,0 @@
-// Copyright (c) 2017, 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 'dart:io' hide HttpException;
-
-import 'buildbot_data.dart';
-import 'buildbot_loading.dart';
-import 'buildbot_structures.dart';
-import 'util.dart';
-
-/// Interface for pulling build bot results.
-abstract class BuildbotClient {
- /// Reads the [BuildResult] for the [buildUri].
- Future<BuildResult> readResult(BuildUri buildUri);
-
- int get mostRecentBuildNumber;
-
- /// Closes the client and cleans up its state.
- void close();
-}
-
-/// Buildbot client that pulls build bot results through http.
-class HttpBuildbotClient implements BuildbotClient {
- final HttpClient _client = new HttpClient();
-
- static const int maxSkips = 3;
-
- @override
- Future<BuildResult> readResult(BuildUri buildUri) async {
- int skips = 0;
- Duration timeout;
- timeout = new Duration(seconds: 1);
-
- void skipToPreviousBuildNumber() {
- BuildUri prevBuildUri = buildUri.prev();
- String message =
- 'Skip build number on ${buildUri} -> ${prevBuildUri.buildNumber}';
- // Skipping is more serious with an absolute than a relative build.
- if (buildUri.buildNumber < 0) {
- log(message);
- } else {
- print(message);
- }
- buildUri = buildUri.prev();
- }
-
- while (true) {
- try {
- return await readBuildResultFromHttp(_client, buildUri, timeout);
- } on TimeoutException {
- if (timeout != null && skips < maxSkips) {
- skips++;
- skipToPreviousBuildNumber();
- continue;
- }
- return null;
- } on HttpException {
- if (timeout != null && skips < maxSkips) {
- skips++;
- skipToPreviousBuildNumber();
- continue;
- }
- return null;
- } on SocketException {
- return null;
- }
- }
- }
-
- int get mostRecentBuildNumber => -1;
-
- @override
- void close() {
- _client.close();
- }
-}
-
-/// Buildbot client that pulls build bot results through logdog.
-class LogdogBuildbotClient implements BuildbotClient {
- Map<String, List<int>> _botBuildNumberCache = <String, List<int>>{};
-
- int get mostRecentBuildNumber => -1;
-
- Future<List<int>> _getAbsoluteBuildNumbers(BuildUri buildUri) async {
- List<int> absoluteBuildNumbers = _botBuildNumberCache[buildUri.botName];
- if (absoluteBuildNumbers == null) {
- absoluteBuildNumbers = await lookupBotBuildNumbers(buildUri.botName);
- _botBuildNumberCache[buildUri.botName] = absoluteBuildNumbers;
- }
- return absoluteBuildNumbers;
- }
-
- @override
- Future<BuildResult> readResult(BuildUri buildUri) async {
- List<int> absoluteBuildNumbers;
- int buildNumberIndex;
- if (buildUri.buildNumber < 0) {
- absoluteBuildNumbers = await _getAbsoluteBuildNumbers(buildUri);
- int buildNumberIndex =
- getBuildNumberIndex(absoluteBuildNumbers, buildUri.buildNumber);
- if (buildNumberIndex == null) return null;
- buildUri =
- buildUri.withBuildNumber(absoluteBuildNumbers[buildNumberIndex]);
- }
- while (true) {
- try {
- return await readBuildResultFromLogDog(buildUri);
- } catch (e) {
- absoluteBuildNumbers ??= await _getAbsoluteBuildNumbers(buildUri);
- buildNumberIndex =
- getBuildNumberIndex(absoluteBuildNumbers, buildUri.buildNumber);
- if (buildNumberIndex == null) return null;
- buildNumberIndex++;
- if (buildNumberIndex >= absoluteBuildNumbers.length) return null;
- int buildNumber = absoluteBuildNumbers[buildNumberIndex];
- log('Skip build number ${buildUri.buildNumber} -> ${buildNumber}');
- buildUri = buildUri.withBuildNumber(buildNumber);
- }
- }
- }
-
- @override
- void close() {
- // Nothing to do.
- }
-}
diff --git a/tools/gardening/lib/src/compare_failures_impl.dart b/tools/gardening/lib/src/compare_failures_impl.dart
deleted file mode 100644
index b24968b..0000000
--- a/tools/gardening/lib/src/compare_failures_impl.dart
+++ /dev/null
@@ -1,292 +0,0 @@
-// Copyright (c) 2017, 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.
-
-/// Compares the test log of a build step with previous builds.
-///
-/// Use this to detect flakiness of failures, especially timeouts.
-
-import 'dart:async';
-
-import 'bot.dart';
-import 'buildbot_structures.dart';
-import 'buildbot_data.dart';
-import 'cache_new.dart';
-import 'logger.dart';
-import 'luci_api.dart' hide Timing;
-import 'luci.dart';
-import 'util.dart';
-
-Future mainInternal(Bot bot, List<String> args,
- {int runCount: 10,
- String commit,
- bool verbose: false,
- bool noCache: false,
- bool forcePastResults: false}) async {
- printBuildResultsSummary(
- await loadBuildResults(bot, args,
- runCount: runCount,
- commit: commit,
- verbose: verbose,
- noCache: noCache,
- forcePastResults: forcePastResults),
- args);
-}
-
-RegExp logdogUrlRegexp = new RegExp(r'https://logs.chromium.org/.*client.dart');
-
-/// Loads [BuildResult]s for the [runCount] last builds for the build(s) in
-/// [args]. [args] can be a list of [BuildGroup] names or a list of log uris.
-Future<Map<BuildUri, List<BuildResult>>> loadBuildResults(
- Bot bot, List<String> args,
- {int runCount: 10,
- String commit,
- bool verbose: false,
- bool noCache: false,
- bool forcePastResults: false}) async {
- List<BuildUri> buildUriList = <BuildUri>[];
- List<BuildDetail> buildDetails;
- if (commit != null) {
- LuciApi luci = new LuciApi();
- Logger logger = createLogger(verbose: verbose);
- CreateCacheFunction createCache =
- createCacheFunction(logger, disableCache: noCache);
- buildDetails = await fetchBuildsForCommmit(
- luci, logger, DART_CLIENT, commit, createCache, 25);
- if (buildDetails.isEmpty) {
- print('No builds found for $commit');
- } else if (verbose) {
- log('Found builds for commit $commit:');
- buildDetails.forEach((b) => log(' ${b.botName}: ${b.buildNumber}'));
- } else {
- print('Found ${buildDetails.length} builds for commit $commit.');
- }
- }
-
- BuildUri updateWithCommit(BuildUri buildUri) {
- if (buildDetails == null) return buildUri;
- for (BuildDetail buildDetail in buildDetails) {
- if (buildDetail.botName == buildUri.botName) {
- return buildUri.withBuildNumber(buildDetail.buildNumber);
- }
- }
- print('No build number for $commit found for $buildUri.');
- return buildUri;
- }
-
- for (BuildGroup buildGroup in buildGroups) {
- if (args.contains(buildGroup.groupName)) {
- buildUriList.addAll(buildGroup
- .createUris(bot.mostRecentBuildNumber)
- .map(updateWithCommit));
- } else {
- for (BuildSubgroup subGroup in buildGroup.subgroups) {
- for (String arg in args) {
- if (subGroup.shardNames.contains(arg)) {
- buildUriList.addAll(subGroup
- .createUris(bot.mostRecentBuildNumber)
- .map(updateWithCommit));
- // Break out to not include more from same group.
- break;
- }
- }
- }
- }
- }
- if (buildUriList.isEmpty) {
- for (String url in args) {
- try {
- buildUriList.add(updateWithCommit(new BuildUri.fromUrl(url)));
- } catch (e) {
- print("'$url' is not a valid build bot url: $e");
- }
- }
- }
-
- Map<BuildUri, List<BuildResult>> pastResultsMap =
- <BuildUri, List<BuildResult>>{};
- List<BuildResult> buildResults = await bot.readResults(buildUriList);
- if (buildResults.length != buildUriList.length) {
- print('Result mismatch: Pulled ${buildUriList.length} uris, '
- 'received ${buildResults.length} results.');
- }
- for (int index = 0; index < buildResults.length; index++) {
- BuildUri buildUri = buildUriList[index];
- BuildResult buildResult = buildResults[index];
- List<BuildResult> results = await readPastResults(
- bot, buildUri, buildResult, runCount,
- forcePastResults: forcePastResults);
- pastResultsMap[buildUri] = results;
- }
- return pastResultsMap;
-}
-
-/// Prints summaries for the [buildResults].
-void printBuildResultsSummary(
- Map<BuildUri, List<BuildResult>> buildResults, List<String> args) {
- List<Summary> emptySummaries = <Summary>[];
- List<Summary> nonEmptySummaries = <Summary>[];
- buildResults.forEach((BuildUri buildUri, List<BuildResult> results) {
- Summary summary = new Summary(buildUri, results);
- if (summary.isEmpty) {
- emptySummaries.add(summary);
- } else {
- nonEmptySummaries.add(summary);
- }
- });
- StringBuffer sb = new StringBuffer();
- if (nonEmptySummaries.isEmpty) {
- if (emptySummaries.isNotEmpty) {
- if (LOG || emptySummaries.length < 3) {
- if (emptySummaries.length == 1) {
- sb.writeln('No errors found for build bot:');
- sb.write(emptySummaries.single.name);
- } else {
- sb.writeln('No errors found for any of these build bots:');
- for (Summary summary in emptySummaries) {
- sb.writeln('${summary.name}');
- }
- }
- } else {
- sb.write('No errors found for any of the '
- '${emptySummaries.length} bots.');
- }
- } else {
- sb.write('No build bot results found for args: ${args}');
- }
- } else {
- for (Summary summary in nonEmptySummaries) {
- summary.printOn(sb);
- }
- if (emptySummaries.isNotEmpty) {
- if (LOG || emptySummaries.length < 3) {
- sb.writeln('No errors found for the remaining build bots:');
- for (Summary summary in emptySummaries) {
- sb.writeln('${summary.name}');
- }
- } else {
- sb.write(
- 'No errors found for the ${emptySummaries.length} remaining bots.');
- }
- }
- }
- print(sb);
-}
-
-/// Creates a [BuildResult] for [buildUri] and, if it contains failures, the
-/// [BuildResult]s for the previous [runCount] builds.
-Future<List<BuildResult>> readPastResults(
- Bot bot, BuildUri buildUri, BuildResult summary, int runCount,
- {bool forcePastResults: false}) async {
- List<BuildResult> summaries = <BuildResult>[];
- if (summary == null) {
- print('No result found for $buildUri');
- return summaries;
- }
- summaries.add(summary);
- if (summary.hasFailures || forcePastResults) {
- summaries.addAll(await bot.readHistoricResults(summary.buildUri.prev(),
- previousCount: runCount - 1));
- }
- return summaries;
-}
-
-class Summary {
- final BuildUri buildUri;
- final List<BuildResult> results;
- final Set<TestConfiguration> timeoutIds = new Set<TestConfiguration>();
- final Set<TestConfiguration> errorIds = new Set<TestConfiguration>();
-
- Summary(this.buildUri, this.results) {
- for (BuildResult result in results) {
- if (result == null) continue;
- timeoutIds
- .addAll(result.timeouts.map((TestFailure failure) => failure.id));
- errorIds.addAll(result.errors.map((TestFailure failure) => failure.id));
- }
- }
-
- bool get isEmpty => timeoutIds.isEmpty && errorIds.isEmpty;
-
- /// Generate a summary of the timeouts and other failures in [results].
- void printOn(StringBuffer sb) {
- if (timeoutIds.isNotEmpty) {
- Map<TestConfiguration, Map<int, Map<String, Timing>>> map =
- <TestConfiguration, Map<int, Map<String, Timing>>>{};
- Set<String> stepNames = new Set<String>();
- for (BuildResult result in results) {
- for (Timing timing in result.timings) {
- Map<int, Map<String, Timing>> builds = map.putIfAbsent(
- timing.step.id, () => <int, Map<String, Timing>>{});
- stepNames.add(timing.step.stepName);
- builds.putIfAbsent(timing.uri.buildNumber, () => <String, Timing>{})[
- timing.step.stepName] = timing;
- }
- }
- sb.write('Timeouts for ${name} :\n');
- map.forEach(
- (TestConfiguration id, Map<int, Map<String, Timing>> timings) {
- if (!timeoutIds.contains(id)) return;
- sb.write('$id\n');
- sb.write(
- '${' ' * 8} ${stepNames.map((t) => padRight(t, 14)).join(' ')}\n');
- for (BuildResult result in results) {
- int buildNumber = result.buildUri.buildNumber;
- Map<String, Timing> steps = timings[buildNumber] ?? const {};
- sb.write(padRight(' ${buildNumber}: ', 8));
- for (String stepName in stepNames) {
- Timing timing = steps[stepName];
- if (timing != null) {
- sb.write(' ${timing.time}');
- } else {
- sb.write(' --------------');
- }
- }
- sb.write('\n');
- }
- sb.write('\n');
- });
- }
- if (errorIds.isNotEmpty) {
- Map<TestConfiguration, Map<int, TestFailure>> map =
- <TestConfiguration, Map<int, TestFailure>>{};
- for (BuildResult result in results) {
- for (TestFailure failure in result.errors) {
- map.putIfAbsent(failure.id, () => <int, TestFailure>{})[
- failure.uri.buildNumber] = failure;
- }
- }
- sb.write('Errors for ${name} :\n');
- // TODO(johnniwinther): Improve comparison of non-timeouts.
- map.forEach((TestConfiguration id, Map<int, TestFailure> failures) {
- if (!errorIds.contains(id)) return;
- sb.write('$id\n');
- for (BuildResult result in results) {
- int buildNumber = result.buildUri.buildNumber;
- TestFailure failure = failures[buildNumber];
- sb.write(padRight(' ${buildNumber}: ', 8));
- if (failure != null) {
- sb.write(padRight(failure.expected, 10));
- sb.write(' / ');
- sb.write(padRight(failure.actual, 10));
- } else {
- sb.write(' ' * 10);
- sb.write(' / ');
- sb.write(padRight('-- OK --', 10));
- }
- sb.write('\n');
- }
- sb.write('\n');
- });
- }
- if (timeoutIds.isEmpty && errorIds.isEmpty) {
- sb.write('No errors found for ${name}');
- }
- }
-
- String get name => results.isNotEmpty
- // Use the first result as name since it most likely has an absolute build
- // number.
- ? results.first.buildUri.toString()
- : buildUri.toString();
-}
diff --git a/tools/gardening/lib/src/console_table.dart b/tools/gardening/lib/src/console_table.dart
deleted file mode 100644
index 355c650..0000000
--- a/tools/gardening/lib/src/console_table.dart
+++ /dev/null
@@ -1,363 +0,0 @@
-// Copyright (c) 2017, 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:io' as io;
-import 'dart:math';
-
-typedef String CellTextCallback(dynamic item);
-
-enum ALIGNMENT { left, center, right }
-enum TEXTBEHAVIOUR { truncateLeft, truncateRight, wrap }
-
-/// [OutputTable] defines a base class for outputting tabular data to outputs.
-abstract class OutputTable {
- void addHeader(Column column, CellTextCallback callback);
- void print(List items);
- void printToSink(List items, StringSink sink);
-}
-
-/// [ScripTable] outputs items without any formatting except tabs for
-/// separators.
-class ScriptTable extends OutputTable {
- final Map<Column, CellTextCallback> _columns = {};
- @override
- void addHeader(Column column, CellTextCallback callback) {
- _columns[column] = callback;
- }
-
- @override
- void print(List items) {
- printToSink(items, io.stdout);
- }
-
- @override
- void printToSink(List items, StringSink sink) {
- if (_columns.length == 0) {
- return;
- }
- // Print headers.
- var columns = _columns.keys.toList();
- columns.forEach((column) {
- if (column != columns[0]) {
- sink.write("\t");
- }
- sink.write(column.header);
- });
- sink.writeln("");
-
- // Print items.
- items.forEach((item) {
- columns.forEach((column) {
- if (column != columns[0]) {
- sink.write("\t");
- }
- sink.write(_columns[column](item));
- });
- sink.writeln("");
- });
- }
-}
-
-/// [ConsoleTable] outputs a list of items as a table, width a default width of
-/// 80 units. Column sizes can be set individually. If zero-width for a column
-/// is specified, the free available space is distributed equally amongst these.
-/// The table can be styled by giving it a custom template.
-class ConsoleTable extends OutputTable {
- final int width;
- final Template template;
-
- final Map<Column, CellTextCallback> _columns = {};
-
- ConsoleTable({this.width = 80, this.template = minimal});
-
- /// [addHeader] adds a new column to the table. When a row is processed the
- /// callback given will be invoked with the item for the row.
- @override
- void addHeader(Column column, CellTextCallback callback) {
- _columns[column] = callback;
- }
-
- /// Prints the [items] as a table in columns given by [addHeader] to stdout.
- @override
- void print(List items) {
- printToSink(items, io.stdout);
- }
-
- /// Prints the [items] as a table in columns given by [addHeader] to [sink].
- @override
- void printToSink(List items, StringSink sink) {
- if (_columns.length == 0) {
- return;
- }
-
- // Precompute allocated width.
- var allocatedWidth = 0;
- var zeroWidthColumns = 0;
-
- _columns.keys.forEach((column) {
- if (column.width == 0) {
- zeroWidthColumns++;
- } else {
- allocatedWidth += column.width;
- }
- });
-
- // Free width is the default width, subtracted by the already allocated
- // width and the column separators.
- var freeWidth = width -
- allocatedWidth -
- (_columns.length - 1) * template.columnDivider.length -
- 2 * template.leftRightFrame.length;
- if (zeroWidthColumns > 0 && freeWidth > 0) {
- // Distribute free width among columns with 0 width;
- var cellWidth = (freeWidth / zeroWidthColumns).round();
- _columns.keys.forEach((column) {
- if (column.width != 0) {
- return;
- }
- if (zeroWidthColumns == 1) {
- column._computedWidth = freeWidth;
- } else {
- column._computedWidth = cellWidth;
- freeWidth -= cellWidth;
- zeroWidthColumns--;
- }
- });
- }
- // At this point, all column widths are either calculated or should not be
- // rendered.
- _printTopBottomDivider(sink);
- _printHeader(sink);
- _printHeaderDivider(sink);
- bool isFirst = true;
- items.forEach((item) {
- if (!isFirst) {
- _printRowDivider(sink);
- }
- var cellStrings = _columns.keys
- .where((column) => column._computedWidth > 0)
- .map((column) {
- var strings = _breakText(_columns[column](item) ?? "",
- column._computedWidth, column.headerBehaviour);
- return strings
- .map((str) =>
- _alignPadText(str, column._computedWidth, column.alignment))
- .toList();
- }).toList();
- _printRowAlignTop(cellStrings, sink);
- isFirst = false;
- });
- _printTopBottomDivider(sink);
- }
-
- void _printTopBottomDivider(StringSink sink) {
- if (template.topBottomFrame.length > 0) {
- sink.writeln("${template.cornerJoin}"
- "${template.topBottomFrame * (width - 2 * template.cornerJoin.length)}"
- "${template.cornerJoin}");
- }
- }
-
- void _printHeaderDivider(StringSink sink) {
- if (template.headerDivider.length > 0) {
- sink.writeln("${template.rowJoin}"
- "${template.headerDivider * (width - 2 * template.rowJoin.length)}"
- "${template.rowJoin}");
- }
- }
-
- void _printRowDivider(StringSink sink) {
- if (template.rowDivider.length > 0) {
- sink.write(template.rowJoin);
- bool isFirst = true;
- _columns.keys.forEach((column) {
- if (column._computedWidth > 0) {
- if (!isFirst) {
- sink.write(template.cellJoin);
- }
- sink.write(template.rowDivider * column._computedWidth);
- isFirst = false;
- }
- });
- sink.writeln(template.rowJoin);
- }
- }
-
- void _printHeader(StringSink sink) {
- var cellStrings = _columns.keys
- .where((column) => column._computedWidth > 0)
- .map((column) {
- var strings = _breakText(
- column.header ?? "", column._computedWidth, column.headerBehaviour);
- var cellStrings = strings
- .map((str) =>
- _alignPadText(str, column._computedWidth, column.alignment))
- .toList();
- return cellStrings;
- }).toList();
- _printRowAlignBase(cellStrings, sink);
- }
-
- void _printRowAlignBase(List<List<String>> strings, StringSink sink) {
- var height = strings.fold(
- 0, (prevValue, strings) => max<int>(prevValue, strings.length));
- for (var i = 0; i < height; i++) {
- for (var j = 0; j < _columns.length; j++) {
- sink.write(j == 0 ? template.leftRightFrame : template.columnDivider);
- if (height - i - 1 >= strings[j].length) {
- sink.write(' ' * strings[j][0].length);
- } else {
- var index = i - (height - strings[j].length);
- sink.write(strings[j][index]);
- }
- }
- sink.writeln(template.leftRightFrame);
- }
- }
-
- void _printRowAlignTop(List<List<String>> strings, StringSink sink) {
- var height = strings.fold(
- 0, (prevValue, strings) => max<int>(prevValue, strings.length));
- for (var i = 0; i < height; i++) {
- for (var j = 0; j < _columns.length; j++) {
- sink.write(j == 0 ? template.leftRightFrame : template.columnDivider);
- if (i >= strings[j].length) {
- sink.write(' ' * strings[j][0].length);
- } else {
- sink.write(strings[j][i]);
- }
- }
- sink.writeln(template.leftRightFrame);
- }
- }
-
- List<String> _breakText(String text, int width, TEXTBEHAVIOUR textBehaviour) {
- if (text.length <= width) {
- return [text];
- }
-
- if (textBehaviour == TEXTBEHAVIOUR.truncateLeft ||
- textBehaviour == TEXTBEHAVIOUR.truncateRight) {
- String truncateString = width <= 4 ? ".." : "...";
- int substringLength = (width - truncateString.length);
- String truncatedString = textBehaviour == TEXTBEHAVIOUR.truncateLeft
- ? "${truncateString}${text.substring(text.length - substringLength)}"
- : "${text.substring(0, substringLength)}${truncateString}";
- if (truncatedString.length > width) {
- return [text.substring(0, 1)];
- }
- return [truncatedString];
- }
-
- // We have to wrap - see if we can find any good places to break.
- List<String> wrappedStrings = [];
- int finger = 0;
- var regexpBlank = new RegExp(r"[ ]");
- var regexpIncludeChars = new RegExp(r"[\-_]");
- while (finger + width < text.length) {
- var nicerIndex = text.lastIndexOf(regexpBlank, finger + width);
- if (nicerIndex > finger) {
- wrappedStrings.add(text.substring(finger, nicerIndex));
- finger = nicerIndex + 1; // change space for return;
- continue;
- }
- nicerIndex = text.lastIndexOf(regexpIncludeChars, finger + width - 1);
- if (nicerIndex > finger) {
- wrappedStrings.add(text.substring(finger, nicerIndex + 1));
- finger = nicerIndex + 1;
- continue;
- }
- wrappedStrings.add(text.substring(finger, finger + width));
- finger = finger + width;
- }
- var lastSubString = text.substring(finger);
- if (!lastSubString.isEmpty) {
- wrappedStrings.add(lastSubString);
- }
- return wrappedStrings;
- }
-
- String _alignPadText(String text, int width, ALIGNMENT alignment) {
- switch (alignment) {
- case ALIGNMENT.left:
- return text.padRight(width);
- case ALIGNMENT.right:
- return text.padLeft(width);
- case ALIGNMENT.center:
- int half = ((width / 2) + (text.length) / 2).round();
- String str = text.padLeft(half);
- str = str.padRight(width);
- return str;
- }
- return ""; // Stupid type-checker.
- }
-}
-
-/// [Column] defines a column in a table and should be given a descriptive
-/// header.
-class Column {
- final String header;
- final int width;
- final ALIGNMENT alignment;
- final TEXTBEHAVIOUR headerBehaviour;
- final TEXTBEHAVIOUR cellBehaviour;
- int _computedWidth;
-
- Column(this.header,
- {this.width = 0,
- this.alignment = ALIGNMENT.left,
- this.headerBehaviour = TEXTBEHAVIOUR.wrap,
- this.cellBehaviour = TEXTBEHAVIOUR.wrap})
- : _computedWidth = width;
-}
-
-/// A minimal template with a single hyphon as row-divider.
-const Template minimal = const Template();
-
-/// A minimal template with a single hyphon as row-divider.
-const Template rows =
- const Template(headerDivider: '=', rowDivider: "-", cellJoin: "-");
-
-/// [Template] holds styling information for a table. Each parameter assumes
-/// either the empty string or a single character. Let:
-///
-/// headerDivider - 'h'
-/// columnDivider - 'i'
-/// rowDivider - 'r'
-/// topBottomFrame - '='
-/// leftRightFrame - 'I'
-/// rowJoin - 'R'
-/// cornerJoin 'C'
-/// cellJoin - 'X'
-///
-/// The below shows an example with the characters used
-///
-/// C===================================================C
-/// I column 1 i column 2 i column 3 I
-/// RhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhR
-/// I row 1 i row 1 i row 1 I
-/// RrrrrrrrrrrXrrrrrrrrrrXrrrrrrrrrrrrrrrrrrrrrrrrrrrrrR
-/// I row 2 i row 2 i row 2 I
-/// RrrrrrrrrrrXrrrrrrrrrrXrrrrrrrrrrrrrrrrrrrrrrrrrrrrrR
-///
-class Template {
- final String headerDivider;
- final String columnDivider;
- final String rowDivider;
- final String topBottomFrame;
- final String leftRightFrame;
- final String rowJoin;
- final String cornerJoin;
- final String cellJoin;
-
- const Template(
- {this.headerDivider = "-",
- this.columnDivider = " ",
- this.rowDivider = "",
- this.topBottomFrame = "",
- this.leftRightFrame = "",
- this.cornerJoin = "",
- this.rowJoin = "",
- this.cellJoin = " "});
-}
diff --git a/tools/gardening/lib/src/extended_printer.dart b/tools/gardening/lib/src/extended_printer.dart
deleted file mode 100644
index c92846b..0000000
--- a/tools/gardening/lib/src/extended_printer.dart
+++ /dev/null
@@ -1,65 +0,0 @@
-// Copyright (c) 2017, 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:io';
-
-typedef String ItemCallBack<T>(T item);
-
-/// [ExtendedPrinter] provides helper and utility methods around print
-/// functions.
-class ExtendedPrinter {
- String preceding;
- final int width;
-
- ExtendedPrinter({this.preceding = "", this.width = 80});
-
- /// Prints to stdout. All preeceding characters will be placed before.
- void print(Object obj) {
- stdout.write(preceding);
- stdout.write(obj);
- }
-
- /// Prints to stdout followed by a line break. All preeceding characters will
- /// be placed before.
- void println(Object obj) {
- stdout.write(preceding);
- stdout.writeln(obj);
- }
-
- /// Prints a block by cutting at new lines and calls [println] for each line.
- void printBlock(String block) {
- block.split("\n").forEach(println);
- }
-
- /// Prints the [pattern] to stdout by writing the pattern as many times it can
- /// before width is reached.
- void printLinePattern(String pattern) {
- if (pattern.length == 0) {
- stdout.writeln();
- }
- stdout.writeln(pattern * (width ~/ pattern.length));
- }
-
- /// Prints an iterable while maintaining state for index and preceding.
- void printIterable<T>(Iterable<T> items, ItemCallBack<T> cb,
- {ItemCallBack<T> header,
- String separatorPattern: "",
- String itemPreceding: ""}) {
- bool isFirst = true;
- String previousPreceding = this.preceding;
- items.forEach((item) {
- if (isFirst && separatorPattern != null && separatorPattern.isNotEmpty) {
- printLinePattern(separatorPattern);
- }
- if (header != null) {
- println(header(item));
- }
- this.preceding = itemPreceding;
- printBlock(cb(item));
- println("");
- this.preceding = previousPreceding;
- isFirst = false;
- });
- }
-}
diff --git a/tools/gardening/lib/src/logdog.dart b/tools/gardening/lib/src/logdog.dart
deleted file mode 100644
index f76f5d74..0000000
--- a/tools/gardening/lib/src/logdog.dart
+++ /dev/null
@@ -1,74 +0,0 @@
-// Copyright (c) 2017, 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 'logdog_rpc.dart';
-import 'cache_new.dart';
-
-/// Gets latest build numbers of completed runs from the last completed runs.
-/// This works if one assumes that the bots we are interested in also completes
-/// runs regularly.
-Future<Map<String, int>> latestBuildNumbers(WithCacheFunction withCache) async {
- var logdog = new LogdogRpc();
- // This queries logdog for all logs that wrote recipe_result, which is the
- // last step of any recipe. The ** searches the last incoming commits that
- // fits the scheme.
- // TODO(mkroghj): Give project as an option to allow for FYI.
- var streams = await logdog.query(
- "chromium",
- "bb/client.dart/**/+/recipes/steps/recipe_result/0/logs/result/0",
- withCache);
- // All logs have the build-number in their path, so we just get it out.
- var builderAndNumberInPathRegExp = new RegExp(r"^.*\/.*\/(.*)\/(\d*)\/\+");
- var map = <String, int>{};
- streams.forEach((stream) {
- var match = builderAndNumberInPathRegExp.firstMatch(stream.path);
- map.putIfAbsent(match.group(1), () => int.parse(match.group(2)));
- });
- return map;
-}
-
-/// Gets latest build number for each builder in [builders].
-Future<Map<String, int>> latestBuildNumbersForBuilders(
- Iterable<String> builders) {
- var logdog = new LogdogRpc();
- // This queries logdog for all logs that wrote recipe_result, which is the
- // last step of any recipe. The ** searches the last incoming commits that
- // fits the scheme.
- // TODO(mkroghj): Give project as an option to allow for FYI.
- return Future.wait(builders.map((String builder) {
- return logdog
- .query(
- "chromium",
- "bb/client.dart/${builder}/**/+/recipes/steps/recipe_result/0/logs/result/0",
- noCache()(),
- maxResults: 1)
- .then((logdogStream) {
- // All logs have the build-number in their path, so we just get it out.
- return _buildNumberFromLogdogPath(logdogStream.first.path);
- }).catchError((e) => 0);
- })).then((List<int> numbers) => new Map.fromIterables(builders, numbers));
-}
-
-Future<List<int>> latestBuildNumbersForBuilder(String name, int maxResults) {
- var logdog = new LogdogRpc();
- // This queries logdog for all logs that wrote recipe_result, which is the
- // last step of any recipe. The ** searches the last incoming commits that
- // fits the scheme.
- // TODO(mkroghj): Give project as an option to allow for FYI.
- return logdog
- .query(
- "chromium",
- "bb/client.dart/${name}/**/+/recipes/steps/recipe_result/0/logs/result/0",
- noCache()(),
- maxResults: maxResults)
- .then((List<LogdogStream> logdogStreams) =>
- logdogStreams.map((logdogStream) {
- return _buildNumberFromLogdogPath(logdogStream.path);
- }).toList());
-}
-
-int _buildNumberFromLogdogPath(String path) {
- return int.parse(path.split('/')[3]);
-}
diff --git a/tools/gardening/lib/src/logdog_rpc.dart b/tools/gardening/lib/src/logdog_rpc.dart
deleted file mode 100644
index f38ab09..0000000
--- a/tools/gardening/lib/src/logdog_rpc.dart
+++ /dev/null
@@ -1,80 +0,0 @@
-// Copyright (c) 2017, 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:io';
-import 'dart:convert';
-import 'dart:async';
-import 'package:http/http.dart' as http;
-import 'cache_new.dart';
-
-const String LOGDOG_HOST = "logs.chromium.org";
-
-/// Class for communicating with logdog over rpc.
-class LogdogRpc {
- Future<String> get(String project, String path, WithCacheFunction withCache) {
- var uri = new Uri(
- scheme: "https", host: LOGDOG_HOST, path: "prpc/logdog.Logs/Get");
- var body = {"project": project, "path": path};
- return withCache(
- () => _makePostRequest(uri, jsonEncode(body), {
- HttpHeaders.CONTENT_TYPE: "application/json",
- HttpHeaders.ACCEPT: "application/json"
- }),
- "logdog-get-$path")
- .then(jsonDecode)
- .then((json) {
- StringBuffer buffer = new StringBuffer();
- json["logs"].forEach((log) {
- log["text"]["lines"].forEach((line) {
- buffer.writeln(line["value"]);
- });
- });
- return buffer.toString();
- });
- }
-
- Future<List<LogdogStream>> query(
- String project, String path, WithCacheFunction withCache,
- {maxResults = 1000}) {
- var uri = new Uri(
- scheme: "https", host: LOGDOG_HOST, path: "prpc/logdog.Logs/Query");
- var body = {"project": project, "path": path, "maxResults": maxResults};
- return withCache(
- () => _makePostRequest(uri, jsonEncode(body), {
- HttpHeaders.CONTENT_TYPE: "application/json",
- HttpHeaders.ACCEPT: "application/json"
- }),
- "logdog-query-$path")
- .then(jsonDecode)
- .then((json) {
- if (json["streams"] == null) {
- return <LogdogStream>[];
- }
- return json["streams"]
- .map<LogdogStream>((stream) => new LogdogStream(stream["path"]))
- .toList();
- });
- }
-
- /// [_makePostRequest] performs a post request to [uri], where the posted
- /// body is the string representation of [body]. For adding custom headers
- /// use the map [headers].
- Future<String> _makePostRequest(
- Uri uri, Object body, Map<String, String> headers) async {
- var response = await http.post(uri, body: body, headers: headers);
- if (response.statusCode != 200) {
- throw new HttpException(response.reasonPhrase, uri: uri);
- }
- // Prpc outputs a prefix to combat vulnerability.
- if (response.body.startsWith(")]}'")) {
- return response.body.substring(4);
- }
- return response.body;
- }
-}
-
-class LogdogStream {
- final String path;
- LogdogStream(this.path);
-}
diff --git a/tools/gardening/lib/src/logger.dart b/tools/gardening/lib/src/logger.dart
deleted file mode 100644
index 4fa5d25..0000000
--- a/tools/gardening/lib/src/logger.dart
+++ /dev/null
@@ -1,116 +0,0 @@
-// Copyright (c) 2017, 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:io';
-import 'package:path/path.dart' as path;
-
-enum Level { debug, info, warning, error }
-
-abstract class Logger {
- Level level;
-
- Logger(this.level);
-
- void info(String msg, [error, StackTrace stackTrace]);
- void warning(String msg, [error, StackTrace stackTrace]);
- void error(String msg, [error, StackTrace stackTrace]);
- void debug(String msg, [error, StackTrace stackTrace]);
-
- void destroy();
-}
-
-String _formatMessage(String msg, error, [StackTrace stackTrace]) {
- if (error == null) return msg;
- if (stackTrace == null) return "$msg: $error";
- return "$msg: $error\n$stackTrace";
-}
-
-class StdOutLogger extends Logger {
- StdOutLogger(Level level) : super(level);
-
- @override
- void info(String msg, [error, stackTrace]) {
- msg = _formatMessage(msg, error, stackTrace);
- _print(Level.info, "$_datetime Info: $msg");
- }
-
- @override
- void warning(String msg, [error, stackTrace]) {
- msg = _formatMessage(msg, error, stackTrace);
- _print(Level.warning, "$_datetime Warning: $msg");
- }
-
- @override
- void error(String msg, [error, stackTrace]) {
- msg = _formatMessage(msg, error, stackTrace);
- _print(Level.error, "$_datetime Error: $msg");
- }
-
- @override
- void debug(String msg, [error, stackTrace]) {
- msg = _formatMessage(msg, error, stackTrace);
- _print(Level.debug, "$_datetime Debug: $msg");
- }
-
- void _print(Level logLevel, String msg) {
- if (logLevel.index >= level.index) {
- print(msg);
- }
- }
-
- @override
- void destroy() {
- // nothing to do
- }
-
- String get _datetime => "${new DateTime.now()}";
-}
-
-class FileLogger extends Logger {
- IOSink _sink;
-
- FileLogger(String fileName, Level level, {bool append: false})
- : super(level) {
- var mode = append ? FileMode.APPEND : FileMode.WRITE;
- _sink = new File(path.absolute(fileName)).openWrite(mode: mode);
- }
-
- @override
- void destroy() {
- if (_sink != null) {
- _sink.close();
- _sink = null;
- }
- }
-
- @override
- void info(String msg, [error, stackTrace]) {
- msg = _formatMessage(msg, error, stackTrace);
- _print(Level.info, "$_datetime Info: $msg");
- }
-
- @override
- void warning(String msg, [error, stackTrace]) {
- msg = _formatMessage(msg, error, stackTrace);
- _print(Level.warning, "$_datetime Warning: $msg");
- }
-
- @override
- void error(String msg, [error, stackTrace]) {
- msg = _formatMessage(msg, error, stackTrace);
- _print(Level.error, "$_datetime Error: $msg");
- }
-
- @override
- void debug(String msg, [error, stackTrace]) {
- msg = _formatMessage(msg, error, stackTrace);
- _print(Level.debug, "$_datetime Debug: $msg");
- }
-
- void _print(Level logLevel, String msg) {
- if (logLevel.index >= level.index && _sink != null) _sink.writeln(msg);
- }
-
- static String get _datetime => "${new DateTime.now()}";
-}
diff --git a/tools/gardening/lib/src/luci.dart b/tools/gardening/lib/src/luci.dart
deleted file mode 100644
index f686419..0000000
--- a/tools/gardening/lib/src/luci.dart
+++ /dev/null
@@ -1,104 +0,0 @@
-// Copyright (c) 2017, 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 'logger.dart';
-import 'cache_new.dart';
-import 'luci_api.dart';
-import 'util.dart';
-
-const UNINTERESTING_BUILDER_SUFFIXES = const [
- "-dev",
- "-stable",
- "-integration"
-];
-
-const String DART_CLIENT = 'client.dart';
-
-/// Fetches all builds for a given [commit]-hash, by searching the latest
-/// [amount] builds.
-Future<List<BuildDetail>> fetchBuildsForCommmit(LuciApi luciApi, Logger logger,
- String client, String commit, CreateCacheFunction createCache,
- [int amount = 1]) {
- logger.info(
- "Sorry - this is going to take some time, since we have to look into all "
- "$amount latest builds for all bots for client ${client}.\n"
- "Subsequent queries run faster if caching is not turned off...");
-
- logger.debug("Finding primary bots for client $client");
- var futureBuildBots = getPrimaryBuilders(
- luciApi, client, createCache(duration: new Duration(minutes: 30)));
-
- var cache = createCache(duration: new Duration(minutes: 30));
-
- return futureBuildBots.then((buildBots) {
- var buildBotBuilds = new List<List<BuildDetail>>();
- var futureDetails = buildBots.map((buildBot) {
- return luciApi
- .getBuildBotDetails(client, buildBot, cache, amount)
- .then(buildBotBuilds.add)
- .catchError(
- errorLogger(logger, "Could not get details for $buildBot", []));
- });
- return Future.wait(futureDetails).then((details) {
- return buildBotBuilds.expand((id) => id);
- }).then((details) {
- return details.where((buildDetail) {
- return buildDetail.allChanges
- .any((change) => change.revision.startsWith(commit));
- }).toList();
- });
- });
-}
-
-/// [getBuilderGroups] fetches all builder groups not in -dev, -stable and
-/// -integration from CBE.
-Future<List<String>> getBuilderGroups(
- LuciApi luciApi, String client, WithCacheFunction withCache) {
- var result = luciApi.getJsonFromChromeBuildExtract(client, withCache);
- return result.then((json) {
- var builders = json["builders"];
- return builders.keys.fold<Map<String, Object>>({},
- (Map<String, Object> map, builderKey) {
- if (UNINTERESTING_BUILDER_SUFFIXES.any((x) => builderKey.contains(x))) {
- return map;
- }
- map[sanitizeCategory(builders[builderKey]["category"])] = true;
- return map;
- }).keys;
- });
-}
-
-/// [getAllBuilders] fetches all builders from CBE.
-Future<List<String>> getAllBuilders(
- LuciApi luciApi, String client, WithCacheFunction withCache) {
- var result = luciApi.getJsonFromChromeBuildExtract(client, withCache);
- return result.then((json) {
- return json["builders"].keys;
- });
-}
-
-/// [getPrimaryBuilders] fetches all primary builders from CBE.
-Future<List<String>> getPrimaryBuilders(
- LuciApi luciApi, String client, WithCacheFunction withCache) {
- var result = getAllBuilders(luciApi, client, withCache);
- return result.then((builders) {
- return builders
- .where((builderKey) =>
- !UNINTERESTING_BUILDER_SUFFIXES.any((x) => builderKey.contains(x)))
- .toList();
- });
-}
-
-/// [getPrimaryBuilders] gets all builders in builder group [builderGroup].
-Future<List<String>> getBuildersInBuilderGroup(LuciApi luciApi, String client,
- WithCacheFunction withCache, String builderGroup) {
- var result = luciApi.getJsonFromChromeBuildExtract(client, withCache);
- return result.then((json) {
- var builders = json["builders"];
- return builders.keys.where((builder) {
- return sanitizeCategory(builders[builder]["category"]) == builderGroup;
- }).toList();
- });
-}
diff --git a/tools/gardening/lib/src/luci_api.dart b/tools/gardening/lib/src/luci_api.dart
deleted file mode 100644
index 93d9b6f..0000000
--- a/tools/gardening/lib/src/luci_api.dart
+++ /dev/null
@@ -1,310 +0,0 @@
-// Copyright (c) 2017, 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:io';
-import 'dart:async';
-import 'dart:convert';
-import 'package:http/http.dart' as http;
-import 'cache_new.dart';
-
-const String LUCI_HOST = "luci-milo.appspot.com";
-const String CBE_HOST = "chrome-build-extract.appspot.com";
-
-typedef void ModifyRequestFunction(HttpClientRequest request);
-
-/// Base class for communicating with [Luci]
-/// Some information is found through the api
-/// <https://luci-milo.appspot.com/rpcexplorer/services/milo.Buildbot/>,
-/// some information is found via Cbe
-/// <https://chrome-build-extract.appspot.com/get_master/<client>> and
-/// and some raw log files is found via [Luci]/log/raw.
-class LuciApi {
- final HttpClient _client = new HttpClient();
-
- LuciApi();
-
- /// [getJsonFromChromeBuildExtract] gets json from Cbe, with information
- /// about all bots and current builds.
- Future<dynamic> getJsonFromChromeBuildExtract(
- String client, WithCacheFunction withCache) async {
- return withCache(
- () => _makeGetRequest(new Uri(
- scheme: 'https',
- host: CBE_HOST,
- path: "/get_master/${client}")),
- "cbe")
- .then(jsonDecode);
- }
-
- /// Calling the Milo Api to get latest builds for this bot,
- /// where the field [amount] is the number of recent builds to fetch.
- Future<List<BuildDetail>> getBuildBotDetails(
- String client, String botName, WithCacheFunction withCache,
- [int amount = 20]) async {
- var uri = new Uri(
- scheme: "https",
- host: LUCI_HOST,
- path: "prpc/milo.Buildbot/GetBuildbotBuildsJSON");
- var body = {
- "master": client,
- "builder": botName,
- "limit": amount,
- "includeCurrent": true
- };
- return withCache(
- () => _makePostRequest(uri, jsonEncode(body), {
- HttpHeaders.CONTENT_TYPE: "application/json",
- HttpHeaders.ACCEPT: "application/json"
- }),
- '${uri.path}_${botName}_$amount')
- .then(jsonDecode)
- .then((json) {
- return json["builds"].map((b) {
- var build = jsonDecode(utf8.decode(base64Decode(b["data"])));
- return getBuildDetailFromJson(client, botName, build);
- }).toList();
- });
- }
-
- /// Calling the Milo Api to get information about a specific build
- /// where the field [buildNumber] is the build number to fetch.
- Future<BuildDetail> getBuildBotBuildDetails(String client, String botName,
- int buildNumber, WithCacheFunction withCache) async {
- var uri = new Uri(
- scheme: "https",
- host: LUCI_HOST,
- path: "prpc/milo.Buildbot/GetBuildbotBuildJSON");
- var body = {"master": client, "builder": botName, "buildNum": buildNumber};
- return withCache(
- () => _makePostRequest(uri, jsonEncode(body), {
- HttpHeaders.CONTENT_TYPE: "application/json",
- HttpHeaders.ACCEPT: "application/json"
- }),
- '${uri.path}_${botName}_$buildNumber')
- .then(jsonDecode)
- .then((json) {
- var build = jsonDecode(utf8.decode(base64Decode(json["data"])));
- return getBuildDetailFromJson(client, botName, build);
- });
- }
-
- /// [_makeGetRequest] performs a get request to [uri].
- Future<String> _makeGetRequest(Uri uri) async {
- var request = await _client.getUrl(uri);
- var response = await request.close();
- if (response.statusCode != 200) {
- response.drain();
- throw new HttpException(response.reasonPhrase, uri: uri);
- }
- return response.cast<List<int>>().transform(utf8.decoder).join();
- }
-
- /// [_makePostRequest] performs a post request to [uri], where the posted
- /// body is the string representation of [body]. For adding custom headers
- /// use the map [headers].
- Future<String> _makePostRequest(
- Uri uri, Object body, Map<String, String> headers) async {
- var response = await http.post(uri, body: body, headers: headers);
- if (response.statusCode != 200) {
- throw new HttpException(response.reasonPhrase, uri: uri);
- }
- // Prpc outputs a prefix to combat vulnerability.
- if (response.body.startsWith(")]}'")) {
- return response.body.substring(4);
- }
- return response.body;
- }
-
- /// Closes the Http client connection
- void close() {
- _client.close();
- }
-}
-
-/// [getBuildDetailFromJson] parses json [build] to a class [BuildDetail]
-BuildDetail getBuildDetailFromJson(
- String client, String botName, dynamic build) {
- List<GitCommit> changes = build["sourceStamp"]["changes"].map((change) {
- return new GitCommit(
- change["revision"],
- change["revLink"],
- change["who"],
- change["comments"],
- change["files"].map((file) => file["name"]).toList());
- }).toList();
-
- List<BuildProperty> properties = build["properties"].map((prop) {
- return new BuildProperty(prop[0], prop[1].toString(), prop[2]);
- }).toList();
-
- DateTime parseDateTime(num value) {
- if (value == null) return null;
- return new DateTime.fromMillisecondsSinceEpoch((value * 1000).round());
- }
-
- List<BuildStep> steps = build["steps"].map((Map step) {
- DateTime start = parseDateTime(step["times"][0]);
- DateTime end = parseDateTime(step["times"][1]);
- return new BuildStep(
- step["name"],
- step["text"].join(', '),
- step["results"].toString(),
- start,
- end,
- step["step_number"],
- step["isStarted"],
- step["isFinished"],
- step["logs"].map((log) => new BuildLog(log[0], log[1])).toList());
- }).toList();
-
- Timing timing = new Timing(
- parseDateTime(build["times"][0]), parseDateTime(build["times"][1]));
-
- return new BuildDetail(
- client,
- botName,
- build["number"],
- build["text"].join(' '),
- build["finished"],
- steps,
- properties,
- build["blame"],
- timing,
- changes);
-}
-
-/// [BuildDetail] holds data detailing a specific build
-class BuildDetail {
- final String client;
- final String botName;
- final int buildNumber;
- final String results;
- final bool finished;
- final List<BuildStep> steps;
- final List<BuildProperty> buildProperties;
- final List<String> blameList;
- final Timing timing;
- final List<GitCommit> allChanges;
-
- BuildDetail(
- this.client,
- this.botName,
- this.buildNumber,
- this.results,
- this.finished,
- this.steps,
- this.buildProperties,
- this.blameList,
- this.timing,
- this.allChanges);
-
- @override
- String toString() {
- StringBuffer buffer = new StringBuffer();
- buffer.writeln("--------------------------------------");
- buffer.writeln(results);
- buffer.writeln(timing);
- buffer.writeln("----------------STEPS-----------------");
- if (steps != null) steps.forEach(buffer.writeln);
- buffer.writeln("----------BUILD PROPERTIES------------");
- if (buildProperties != null) buildProperties.forEach(buffer.writeln);
- buffer.writeln("-------------BLAME LIST---------------");
- if (blameList != null) blameList.forEach(buffer.writeln);
- buffer.writeln("------------ALL CHANGES---------------");
- if (allChanges != null) allChanges.forEach(buffer.writeln);
- return buffer.toString();
- }
-}
-
-/// [BuildStep] holds data detailing a specific build
-class BuildStep {
- final String name;
- final String description;
- final String result;
- final DateTime start;
- final DateTime end;
- final int number;
- final bool isStarted;
- final bool isFinished;
- final List<BuildLog> logs;
-
- BuildStep(this.name, this.description, this.result, this.start, this.end,
- this.number, this.isStarted, this.isFinished, this.logs);
-
- @override
- String toString() {
- StringBuffer buffer = new StringBuffer();
- buffer.writeln("${result == '[0, []]' ? 'SUCCESS' : result}: "
- "$name - $description ($start, $end)");
- logs.forEach((subLink) {
- buffer.writeln("\t${subLink}");
- });
- return buffer.toString();
- }
-}
-
-/// [BuildLog] holds log-information for a specific build.
-class BuildLog {
- final String name;
- final String url;
-
- BuildLog(this.name, this.url);
-
- @override
- String toString() {
- return "$name | $url";
- }
-}
-
-/// [BuildProperty] descibes build properties of a specific build.
-class BuildProperty {
- final String name;
- final String value;
- final String source;
-
- BuildProperty(this.name, this.value, this.source);
-
- @override
- String toString() {
- return "$name\t$value\t$source";
- }
-}
-
-/// [Timing] is a class to hold timing information for builds and steps.
-class Timing {
- final DateTime start;
- final DateTime end;
-
- Timing(this.start, this.end);
-
- @override
- String toString() {
- return "start: $start\tend: $end";
- }
-}
-
-/// [GitCommit] holds data about a specific commit.
-class GitCommit {
- final String revision;
- final String commitUrl;
- final String changedBy;
- final String comments;
- final List<String> changedFiles;
-
- GitCommit(this.revision, this.commitUrl, this.changedBy, this.comments,
- this.changedFiles);
-
- @override
- String toString() {
- StringBuffer buffer = new StringBuffer();
- buffer.writeln("revision: $revision");
- buffer.writeln("commitUrl: $commitUrl");
- buffer.writeln("changedBy: $changedBy");
- buffer.write("\n");
- buffer.writeln(comments);
- buffer.write("\nfiles:\n");
- changedFiles.forEach(buffer.writeln);
- return buffer.toString();
- }
-}
diff --git a/tools/gardening/lib/src/results/configuration_environment.dart b/tools/gardening/lib/src/results/configuration_environment.dart
deleted file mode 100644
index 9f35774..0000000
--- a/tools/gardening/lib/src/results/configuration_environment.dart
+++ /dev/null
@@ -1,128 +0,0 @@
-// Copyright (c) 2017, 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.
-
-// Most of the code from tools/testing/dart/environment.dart.
-// TODO(mkroghj) add package with all settings, such as these
-// and also information about test-suites.
-
-import 'package:status_file/environment.dart';
-import 'result_json_models.dart';
-import 'configurations.dart';
-
-typedef String _LookUpFunction(Configuration configuration);
-typedef bool _BoolLookUpFunction(Configuration configuration);
-
-// TODO(29756): Instead of synthesized negated variables like "unchecked",
-// consider adding support for "!" to status expressions.
-final _variables = {
- "analyzer":
- new _Variable.bool((c) => c.compiler == Compiler.dart2analyzer.name),
- "arch": new _Variable((c) => c.arch, Architecture.names),
- "browser": new _Variable.bool((c) {
- var runtime = runtimeFromName(c.runtime);
- return runtime != null ? runtime.isBrowser : false;
- }),
- "builder_tag": new _Variable((c) => c.builderTag ?? "", const []),
- "checked": new _Variable.bool((c) => c.checked),
- "compiler": new _Variable((c) => c.compiler, Compiler.names),
- "csp": new _Variable.bool((c) => c.csp),
- "fasta": new _Variable.bool((c) => c.fasta),
- "fast_startup": new _Variable.bool((c) => c.fastStartup),
- "enable_asserts": new _Variable.bool((c) => c.enableAsserts),
- "host_checked": new _Variable.bool((c) => c.hostChecked),
- "host_unchecked": new _Variable.bool((c) => !c.hostChecked),
- "hot_reload": new _Variable.bool((c) => c.hotReload),
- "hot_reload_rollback": new _Variable.bool((c) => c.hotReloadRollback),
- "ie": new _Variable.bool((c) {
- var runtime = runtimeFromName(c.runtime);
- return runtime != null ? runtime.isIE : false;
- }),
- "jscl": new _Variable.bool((c) {
- var runtime = runtimeFromName(c.runtime);
- return runtime != null ? runtime.isJSCommandLine : false;
- }),
- "minified": new _Variable.bool((c) => c.minified),
- "mode": new _Variable((c) => c.mode, Mode.names),
- "no_preview_dart_2": new _Variable.bool((c) => c.noPreviewDart2),
- "runtime": new _Variable(_runtimeName, Runtime.names),
- "spec_parser": new _Variable.bool((c) => c.compiler == Compiler.specParser),
- "strong": new _Variable.bool((c) => c.strong),
- "system": new _Variable((c) => c.system, System.names),
- "use_sdk": new _Variable.bool((c) => c.useSdk)
-};
-
-/// Gets the name of the runtime as it appears in status files.
-String _runtimeName(Configuration configuration) {
- if (configuration.runtime == Runtime.firefox.name) return 'ff';
- return configuration.runtime;
-}
-
-/// Defines the variables that are available for use inside a status file
-/// section header.
-///
-/// These mostly map to command line arguments with the same name, though this
-/// is only a subset of the full set of command line arguments.
-class ConfigurationEnvironment implements Environment {
- /// The configuration where variable data is found.
- final Configuration _configuration;
-
- ConfigurationEnvironment(this._configuration);
-
- /// Validates that the variable with [name] exists and can be compared
- /// against [value].
- ///
- /// If any errors are found, adds them to [errors].
- void validate(String name, String value, List<String> errors) {
- var variable = _variables[name];
- if (variable == null) {
- errors.add('Unknown variable "$name".');
- return;
- }
-
- // The "builder_tag" variable doesn't have an enumerated set of values.
- if (variable.allowedValues.isEmpty) return;
-
- if (!variable.allowedValues.contains(value)) {
- errors.add(
- 'Variable "$name" cannot have value "$value". Allowed values are:\n' +
- variable.allowedValues.join(', ') +
- '.');
- }
- }
-
- /// Looks up the value of the variable with [name].
- String lookUp(String name) {
- var variable = _variables[name];
- if (variable == null) {
- // This shouldn't happen since we validate variables before evaluating
- // expressions.
- throw new ArgumentError('Unknown variable "$name".');
- }
-
- return variable.lookUp(_configuration);
- }
-}
-
-// TODO(rnystrom): There's some overlap between these and _Option in
-// options.dart. Unify?
-/// Describes a variable name whose value can be tested in a status file.
-///
-/// Each variable is an enumerated string type that only accepts a limited range
-/// of values. Each instance of this class defines one variable, the values it
-/// permits, and the logic needed to look up the variable's value from a
-/// [Configuration]
-class _Variable {
- final _LookUpFunction _lookUp;
- final List<String> allowedValues;
-
- _Variable(this._lookUp, Iterable<String> allowed)
- : allowedValues = allowed.toList();
-
- /// Creates a Boolean variable with allowed values "true" and "false".
- _Variable.bool(_BoolLookUpFunction lookUp)
- : _lookUp = ((configuration) => lookUp(configuration).toString()),
- allowedValues = const ["true", "false"];
-
- String lookUp(Configuration configuration) => _lookUp(configuration);
-}
diff --git a/tools/gardening/lib/src/results/configurations.dart b/tools/gardening/lib/src/results/configurations.dart
deleted file mode 100644
index 7d20657..0000000
--- a/tools/gardening/lib/src/results/configurations.dart
+++ /dev/null
@@ -1,386 +0,0 @@
-// Copyright (c) 2017, 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.
-
-Runtime runtimeFromName(name) {
- return Runtime._all[name];
-}
-
-// Code from tools/testing/dart/configuration.dart starting with Architecture
-// TODO(mkroghj) add package with all settings, such as these
-// and also information about test-suites
-
-class Architecture {
- static const ia32 = const Architecture._('ia32');
- static const x64 = const Architecture._('x64');
- static const arm = const Architecture._('arm');
- static const armv6 = const Architecture._('armv6');
- static const arm64 = const Architecture._('arm64');
- static const simarm = const Architecture._('simarm');
- static const simarmv6 = const Architecture._('simarmv6');
- static const simarm64 = const Architecture._('simarm64');
-
- static final List<String> names = _all.keys.toList();
-
- static final _all = new Map<String, Architecture>.fromIterable([
- ia32,
- x64,
- arm,
- armv6,
- arm64,
- simarm,
- simarmv6,
- simarm64,
- ], key: (architecture) => (architecture as Architecture).name);
-
- static Architecture find(String name) {
- var architecture = _all[name];
- if (architecture != null) return architecture;
-
- throw new ArgumentError('Unknown architecture "$name".');
- }
-
- final String name;
-
- const Architecture._(this.name);
-
- String toString() => "Architecture($name)";
-}
-
-class Compiler {
- static const none = const Compiler._('none');
- static const precompiler = const Compiler._('precompiler');
- static const dart2js = const Compiler._('dart2js');
- static const dart2analyzer = const Compiler._('dart2analyzer');
- static const dartdevc = const Compiler._('dartdevc');
- static const dartdevk = const Compiler._('dartdevk');
- static const appJit = const Compiler._('app_jit');
- static const dartk = const Compiler._('dartk');
- static const dartkp = const Compiler._('dartkp');
- static const specParser = const Compiler._('spec_parser');
-
- static final List<String> names = _all.keys.toList();
-
- static final _all = new Map<String, Compiler>.fromIterable([
- none,
- precompiler,
- dart2js,
- dart2analyzer,
- dartdevc,
- dartdevk,
- appJit,
- dartk,
- dartkp,
- specParser,
- ], key: (compiler) => (compiler as Compiler).name);
-
- static Compiler find(String name) {
- var compiler = _all[name];
- if (compiler != null) return compiler;
-
- throw new ArgumentError('Unknown compiler "$name".');
- }
-
- final String name;
-
- const Compiler._(this.name);
-
- /// Gets the runtimes this compiler can target.
- List<Runtime> get supportedRuntimes {
- switch (this) {
- case Compiler.dart2js:
- // Note: by adding 'none' as a configuration, if the user
- // runs test.py -c dart2js -r drt,none the dart2js_none and
- // dart2js_drt will be duplicating work. If later we don't need 'none'
- // with dart2js, we should remove it from here.
- return const [
- Runtime.d8,
- Runtime.jsshell,
- Runtime.drt,
- Runtime.none,
- Runtime.firefox,
- Runtime.chrome,
- Runtime.safari,
- Runtime.ie9,
- Runtime.ie10,
- Runtime.ie11,
- Runtime.opera,
- Runtime.chromeOnAndroid,
- ];
-
- case Compiler.dartdevc:
- case Compiler.dartdevk:
- // TODO(rnystrom): Expand to support other JS execution environments
- // (other browsers, d8) when tested and working.
- return const [
- Runtime.none,
- Runtime.drt,
- Runtime.chrome,
- ];
-
- case Compiler.dart2analyzer:
- return const [Runtime.none];
- case Compiler.appJit:
- case Compiler.dartk:
- return const [Runtime.vm, Runtime.selfCheck];
- case Compiler.precompiler:
- case Compiler.dartkp:
- return const [Runtime.dartPrecompiled];
- case Compiler.specParser:
- return const [Runtime.none];
- case Compiler.none:
- return const [
- Runtime.vm,
- Runtime.flutter,
- Runtime.drt,
- Runtime.contentShellOnAndroid
- ];
- }
-
- throw "unreachable";
- }
-
- /// The preferred runtime to use with this compiler if no other runtime is
- /// specified.
- Runtime get defaultRuntime {
- switch (this) {
- case Compiler.dart2js:
- return Runtime.d8;
- case Compiler.dartdevc:
- case Compiler.dartdevk:
- return Runtime.chrome;
- case Compiler.dart2analyzer:
- return Runtime.none;
- case Compiler.appJit:
- case Compiler.dartk:
- return Runtime.vm;
- case Compiler.precompiler:
- case Compiler.dartkp:
- return Runtime.dartPrecompiled;
- case Compiler.specParser:
- return Runtime.none;
- case Compiler.none:
- return Runtime.vm;
- }
-
- throw "unreachable";
- }
-
- String toString() => "Compiler($name)";
-}
-
-class Mode {
- static const debug = const Mode._('debug');
- static const product = const Mode._('product');
- static const release = const Mode._('release');
-
- static final List<String> names = _all.keys.toList();
-
- static final _all = new Map<String, Mode>.fromIterable(
- [debug, product, release],
- key: (mode) => (mode as Mode).name);
-
- static Mode find(String name) {
- var mode = _all[name];
- if (mode != null) return mode;
-
- throw new ArgumentError('Unknown mode "$name".');
- }
-
- final String name;
-
- const Mode._(this.name);
-
- bool get isDebug => this == debug;
-
- String toString() => "Mode($name)";
-}
-
-class Progress {
- static const compact = const Progress._('compact');
- static const color = const Progress._('color');
- static const line = const Progress._('line');
- static const verbose = const Progress._('verbose');
- static const silent = const Progress._('silent');
- static const status = const Progress._('status');
- static const buildbot = const Progress._('buildbot');
- static const diff = const Progress._('diff');
-
- static final List<String> names = _all.keys.toList();
-
- static final _all = new Map<String, Progress>.fromIterable(
- [compact, color, line, verbose, silent, status, buildbot, diff],
- key: (progress) => (progress as Progress).name);
-
- static Progress find(String name) {
- var progress = _all[name];
- if (progress != null) return progress;
-
- throw new ArgumentError('Unknown progress type "$name".');
- }
-
- final String name;
-
- const Progress._(this.name);
-
- String toString() => "Progress($name)";
-}
-
-class Runtime {
- static const vm = const Runtime._('vm');
- static const flutter = const Runtime._('flutter');
- static const dartPrecompiled = const Runtime._('dart_precompiled');
- static const d8 = const Runtime._('d8');
- static const jsshell = const Runtime._('jsshell');
- static const drt = const Runtime._('drt');
- static const firefox = const Runtime._('firefox');
- static const chrome = const Runtime._('chrome');
- static const safari = const Runtime._('safari');
- static const ie9 = const Runtime._('ie9');
- static const ie10 = const Runtime._('ie10');
- static const ie11 = const Runtime._('ie11');
- static const opera = const Runtime._('opera');
- static const chromeOnAndroid = const Runtime._('chromeOnAndroid');
- static const contentShellOnAndroid = const Runtime._('ContentShellOnAndroid');
- static const selfCheck = const Runtime._('self_check');
- static const none = const Runtime._('none');
-
- static final List<String> names = _all.keys.toList()..add("ff");
-
- static final _all = new Map<String, Runtime>.fromIterable([
- vm,
- flutter,
- dartPrecompiled,
- d8,
- jsshell,
- drt,
- firefox,
- chrome,
- safari,
- ie9,
- ie10,
- ie11,
- opera,
- chromeOnAndroid,
- contentShellOnAndroid,
- selfCheck,
- none
- ], key: (runtime) => (runtime as Runtime).name);
-
- static Runtime find(String name) {
- // Allow "ff" as a synonym for Firefox.
- if (name == "ff") return firefox;
-
- var runtime = _all[name];
- if (runtime != null) return runtime;
-
- throw new ArgumentError('Unknown runtime "$name".');
- }
-
- final String name;
-
- const Runtime._(this.name);
-
- bool get isBrowser => const [
- drt,
- ie9,
- ie10,
- ie11,
- safari,
- opera,
- chrome,
- firefox,
- chromeOnAndroid,
- contentShellOnAndroid
- ].contains(this);
-
- bool get isIE => name.startsWith("ie");
- bool get isSafari => name.startsWith("safari");
-
- /// Whether this runtime is a command-line JavaScript environment.
- bool get isJSCommandLine => const [d8, jsshell].contains(this);
-
- /// If the runtime doesn't support `Window.open`, we use iframes instead.
- bool get requiresIFrame => !const [ie11, ie10].contains(this);
-
- /// The preferred compiler to use with this runtime if no other compiler is
- /// specified.
- Compiler get defaultCompiler {
- switch (this) {
- case vm:
- case flutter:
- case drt:
- return Compiler.none;
-
- case dartPrecompiled:
- return Compiler.precompiler;
-
- case d8:
- case jsshell:
- case firefox:
- case chrome:
- case safari:
- case ie9:
- case ie10:
- case ie11:
- case opera:
- case chromeOnAndroid:
- case contentShellOnAndroid:
- return Compiler.dart2js;
-
- case selfCheck:
- return Compiler.dartk;
-
- case none:
- // If we aren't running it, we probably just want to analyze it.
- return Compiler.dart2analyzer;
- }
-
- throw "unreachable";
- }
-
- String toString() => "Runtime($name)";
-}
-
-class System {
- static const android = const System._('android');
- static const fuchsia = const System._('fuchsia');
- static const linux = const System._('linux');
- static const macos = const System._('macos');
- static const windows = const System._('windows');
-
- static final List<String> names = _all.keys.toList();
-
- static final _all = new Map<String, System>.fromIterable(
- [android, fuchsia, linux, macos, windows],
- key: (system) => (system as System).name);
-
- static System find(String name) {
- var system = _all[name];
- if (system != null) return system;
-
- throw new ArgumentError('Unknown operating system "$name".');
- }
-
- final String name;
-
- const System._(this.name);
-
- /// The root directory name for build outputs on this system.
- String get outputDirectory {
- switch (this) {
- case android:
- case fuchsia:
- case linux:
- case windows:
- return 'out/';
-
- case macos:
- return 'xcodebuild/';
- }
-
- throw "unreachable";
- }
-
- String toString() => "System($name)";
-}
diff --git a/tools/gardening/lib/src/results/failing_test.dart b/tools/gardening/lib/src/results/failing_test.dart
deleted file mode 100644
index e8ff1f1..0000000
--- a/tools/gardening/lib/src/results/failing_test.dart
+++ /dev/null
@@ -1,285 +0,0 @@
-// Copyright (c) 2017, 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 'package:status_file/canonical_status_file.dart';
-
-import 'result_json_models.dart';
-import '../results/configurations.dart';
-import '../results/status_expectations.dart';
-import '../results/status_files.dart';
-import '../util.dart';
-
-typedef SectionsSuggestion ComputeSectionsFunc(
- List<Configuration> failingConfigurations,
- List<Configuration> passingConfigurations,
- StatusExpectations expectations,
- String testName);
-
-/// [FailingTest] captures the essential information of a failing test, to
-/// suggest sections to be updated.
-class FailingTest {
- /// [result] holds data from the actual running of the test, such as name and
- /// outcome.
- final Result result;
-
- /// [TestResult] is the combined result for all tests in all configurations,
- /// gathered from the result.logs.
- final TestResult testResult;
- final List<Configuration> failingConfigurations;
- final List<Configuration> passingConfigurations;
-
- FailingTest(this.result, this.testResult, this.failingConfigurations,
- this.passingConfigurations);
-
- // There are multiple strategies for finding candidate sections, which will
- // then be presented to the user.
- List<SectionsSuggestion> computeSections(StatusExpectations expectations) {
- var computeSectionStrategies = <ComputeSectionsFunc>[
- _findExistingFailingEntriesStrategy,
- _failingSectionsIntersectionStrategy,
- _statusSectionDifferenceStrategy
- ];
-
- // We remember all the sections already found by previous strategies. The
- // most precise strategies should be called first, so a section is printed
- // with the most accurate description of why it is a good candidate..
- var seenSections = new Set<StatusSectionWithFile>();
-
- var computedList = <SectionsSuggestion>[];
- computeSectionStrategies.forEach((strategy) {
- var suggestion = strategy(failingConfigurations, passingConfigurations,
- expectations, result.name);
- suggestion.sections = suggestion.sections
- .where((section) => !seenSections.contains(section))
- .toList();
- if (suggestion != null && suggestion.sections.isNotEmpty) {
- computedList.add(suggestion);
- seenSections.addAll(suggestion.sections);
- }
- });
- return computedList;
- }
-
- /// Checks, from [expectations], if the failing test is still failing.
- bool stillFailing(StatusExpectations expectations) {
- var testExpectations = expectations.getTestResultsWithExpectation();
- return testExpectations
- .where((expectation) =>
- !expectation.isSuccess() && expectation.result == result)
- .isNotEmpty;
- }
-
- /// Gets the status files for the suite this test belongs to.
- List<StatusFile> statusFiles(StatusExpectations expectations) {
- var testSuite = getSuiteNameForTest(result.name);
- return expectations.statusFilesMaps[testSuite].statusFiles;
- }
-
- /// Gets all failing status entries. Test can still fail without having any
- /// entries.
- List<StatusSectionEntry> failingStatusEntries(
- StatusExpectations expectations) {
- var entries = _sectionEntriesForTestInConfigurations(
- expectations, failingConfigurations, result.name,
- success: false);
- return new Set.of(entries).toList();
- }
-
- /// Gets the failing configurations not covered by expressions in [sections].
- List<Configuration> failingConfigurationsNotCovered(
- StatusExpectations expectations, List<StatusSectionWithFile> sections) {
- return _configurationsNotCovered(
- expectations, sections, this.failingConfigurations);
- }
-
- /// Gets the passing configurations not covered by expressions in [sections].
- List<Configuration> passingConfigurationsNotCovered(
- StatusExpectations expectations, List<StatusSectionWithFile> sections) {
- return _configurationsNotCovered(
- expectations, sections, this.passingConfigurations);
- }
-
- List<Configuration> _configurationsNotCovered(
- StatusExpectations expectations,
- List<StatusSectionWithFile> sections,
- List<Configuration> configurations) {
- List<Configuration> notCovered = [];
- for (var configuration in configurations) {
- var environment = expectations.configurationEnvironments[configuration];
- if (!sections
- .any((section) => section.section.condition.evaluate(environment))) {
- notCovered.add(configuration);
- }
- }
- return notCovered;
- }
-}
-
-/// Finds status section entries (entries with a path and expectation), where
-/// the path matches the test name, in [statusExpectations] for the
-/// [configurations]. [success] can be used to further filter on the entries, by
-/// specifying if the status section entry should be successful, failing or both
-/// (null), when compared with the result from the test, in one of the
-/// configurations.
-List<StatusSectionEntry> _sectionEntriesForTestInConfigurations(
- StatusExpectations statusExpectations,
- List<Configuration> configurations,
- String testName,
- {bool success: null}) {
- var expectations = statusExpectations.getTestResultsWithExpectation();
- return expectations
- .where((expectation) =>
- configurations.contains(expectation.configuration) &&
- expectation.result.name == testName &&
- (success == null || expectation.isSuccess() == success))
- .expand((testResult) => testResult.entries)
- .toList();
-}
-
-/*********************************
- * Strategies to find sections
- *********************************/
-
-/// Strategy that returns all status headers that have a failing status entry
-/// for this test. For tests going from some failure to passing, this would be
-/// the preferred option.
-/// We are not guaranteed that any sections will cover all failing sections.
-SectionsSuggestion _findExistingFailingEntriesStrategy(
- List<Configuration> failingConfigurations,
- List<Configuration> passingConfigurations,
- StatusExpectations expectations,
- String testName) {
- String description = "These sections already already have entries for this "
- "test, that apply to at least one failing configuration";
- var allEntries = new Set<StatusSectionEntry>.from(
- _sectionEntriesForTestInConfigurations(
- expectations, failingConfigurations, testName,
- success: false));
- var sections = allEntries
- .map(
- (entry) => new StatusSectionWithFile(entry.statusFile, entry.section))
- .toList();
- return new SectionsSuggestion(description, sections);
-}
-
-/// The [_failingSectionsIntersectionStrategy] will hopefully be the bread and
-/// butter strategy for most. It takes the intersection of all failing
-/// configurations enabled sections and subtracts the set of all sections
-/// enabled for the passing configurations.
-/// If a result is found, it is guaranteed to cover all the failing
-/// configurations and none of the passing configurations.
-SectionsSuggestion _failingSectionsIntersectionStrategy(
- List<Configuration> failingConfigurations,
- List<Configuration> passingConfigurations,
- StatusExpectations expectations,
- String testName) {
- String description = "Every section listed here covers all failing"
- "configurations and none of the passing configurations.";
- var testSuite = getSuiteNameForTest(testName);
- var configurationSections = <StatusSectionWithFile, List<Configuration>>{};
- for (var configuration in failingConfigurations) {
- var sections =
- _sectionsFromConfiguration(expectations, configuration, testSuite);
- for (var section in _filterSections(sections, testSuite, configuration)) {
- configurationSections.putIfAbsent(section, () => [])..add(configuration);
- }
- }
- var sections = new Set<StatusSectionWithFile>.from(configurationSections.keys
- .where((key) =>
- failingConfigurations.length == configurationSections[key].length));
- if (sections.isEmpty) {
- return new SectionsSuggestion(description, []);
- }
- for (var configuration in passingConfigurations) {
- var sectionsToRemove =
- _sectionsFromConfiguration(expectations, configuration, testSuite);
- sections.removeAll(sectionsToRemove);
- }
- var sortedSections = sections.toList()
- ..sort((a, b) => a.section.condition.compareTo(b.section.condition));
- return new SectionsSuggestion(description, sortedSections);
-}
-
-/// The [_statusSectionDifferenceStrategy] takes the union of all enabled
-/// failing sections and subtracts all the enabled passing sections. We are
-/// guaranteed to not select a section that is enabled in a passing
-/// configuration, however, it is not guaranteed that a combination of the
-/// sections will cover all failing configurations.
-SectionsSuggestion _statusSectionDifferenceStrategy(
- List<Configuration> failingConfigurations,
- List<Configuration> passingConfigurations,
- StatusExpectations expectations,
- String testName) {
- String description = "All sections cover one or more failing "
- "configuration but none of the passing configurations.";
- var configurationSections = <Configuration, Set<StatusSectionWithFile>>{};
- var testSuite = getSuiteNameForTest(testName);
- for (var configuration in failingConfigurations) {
- var sections = _filterSections(
- _sectionsFromConfiguration(expectations, configuration, testSuite),
- testSuite,
- configuration);
- configurationSections[configuration] = new Set.from(sections);
- }
- for (var configuration in passingConfigurations) {
- var sectionsToRemove =
- _sectionsFromConfiguration(expectations, configuration, testSuite);
- for (var failingSections in configurationSections.values) {
- failingSections.removeAll(sectionsToRemove);
- }
- }
- var sortedSections = configurationSections.values
- .reduce((a, b) => a..addAll(b))
- .toList()
- ..sort((a, b) => a.section.condition.compareTo(b.section.condition));
- return new SectionsSuggestion(description, sortedSections);
-}
-
-List<StatusSectionWithFile> _sectionsFromConfiguration(
- StatusExpectations expectations,
- Configuration configuration,
- String testSuite) {
- var environment = expectations.configurationEnvironments[configuration];
- return expectations.statusFilesMaps[testSuite]
- .sectionsForConfiguration(environment);
-}
-
-/// Filters section by not taking the default section, and also exclude status
-/// files of other compilers.
-List<StatusSectionWithFile> _filterSections(
- List<StatusSectionWithFile> statusSections,
- String suite,
- Configuration configuration) {
- String specificStatusFile =
- configuration.compiler == Compiler.none ? "" : configuration.compiler;
- if (configuration.compiler == Compiler.dartdevk.name) {
- specificStatusFile = Compiler.dartdevc.name;
- }
- if (configuration.compiler == Compiler.dartk ||
- configuration.compiler == Compiler.dartkp) {
- specificStatusFile = "kernel";
- }
- if (specificStatusFile.isEmpty) {
- return statusSections
- .where((statusSection) => statusSection.section.condition != null);
- } else {
- return statusSections
- .where((statusSection) =>
- statusSection.section.condition != null &&
- (statusSection.statusFile.path.endsWith("$suite.status") ||
- statusSection.statusFile.path
- .endsWith("${suite}-$specificStatusFile.status") ||
- statusSection.statusFile.path
- .endsWith("${suite}_$specificStatusFile.status")))
- .toList();
- }
-}
-
-/// A [SectionsSuggestion] object holds all the sections suggested by a
-/// strategy, and a description of that strategy.
-class SectionsSuggestion {
- final String strategy;
- List<StatusSectionWithFile> sections;
- SectionsSuggestion(this.strategy, this.sections);
-}
diff --git a/tools/gardening/lib/src/results/result_json_models.dart b/tools/gardening/lib/src/results/result_json_models.dart
deleted file mode 100644
index 7a55a89..0000000
--- a/tools/gardening/lib/src/results/result_json_models.dart
+++ /dev/null
@@ -1,239 +0,0 @@
-// Copyright (c) 2017, 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.
-
-/// [Configuration] holds information about a specific configuration, parsed
-/// from a JSON result.log file.
-/// TODO(mkroghj): Needs a shared package to keep information in sync with
-/// test.py.
-class Configuration {
- final String mode;
- final String arch;
- final String compiler;
- final String runtime;
- final bool checked;
- final bool strong;
- final bool hostChecked;
- final bool minified;
- final bool csp;
- final bool fasta;
- final String system;
- final List<String> vmOptions;
- final bool useSdk;
- final String builderTag;
- final bool fastStartup;
- final int timeout;
- final bool enableAsserts;
- final bool hotReload;
- final bool hotReloadRollback;
- final bool noPreviewDart2;
- final List<String> selectors;
-
- Configuration(
- this.mode,
- this.arch,
- this.compiler,
- this.runtime,
- this.checked,
- this.strong,
- this.hostChecked,
- this.minified,
- this.csp,
- this.fasta,
- this.system,
- this.vmOptions,
- this.useSdk,
- this.builderTag,
- this.fastStartup,
- this.timeout,
- this.enableAsserts,
- this.hotReload,
- this.hotReloadRollback,
- this.noPreviewDart2,
- this.selectors);
-
- static Configuration getFromJson(dynamic json) {
- var isStrong = !(json["no_preview_dart_2"] ?? false);
- return new Configuration(
- json["mode"],
- json["arch"],
- json["compiler"],
- json["runtime"],
- json["checked"],
- isStrong,
- json["host_checked"],
- json["minified"],
- json["csp"],
- json["fasta"],
- json["system"],
- json["vm_options"].cast<String>(),
- json["use_sdk"],
- json["builder_tag"],
- json["fast_startup"],
- json["timeout"],
- json["enable_asserts"] ?? false,
- json["hot_reload"] ?? false,
- json["hot_reload_rollback"] ?? false,
- !isStrong,
- json["selectors"].cast<String>() ?? <String>[]);
- }
-
- /// Returns the arguments needed for running test.py with the arguments
- /// corresponding to this configuration.
- List<String> toArgs({includeSelectors: true}) {
- var args = [
- _stringToArg("mode", mode),
- _stringToArg("arch", arch),
- _stringToArg("compiler", compiler),
- _stringToArg("runtime", runtime),
- _boolToArg("checked", checked),
- _boolToArg("strong", strong),
- _boolToArg("host-checked", hostChecked),
- _boolToArg("minified", minified),
- _boolToArg("csp", csp),
- // We don't create a --fasta arg because fasta is synthesized variable.
- _stringToArg("system", system),
- _listToArg("vm-options", vmOptions),
- _boolToArg("use-sdk", useSdk),
- _stringToArg("builder-tag", builderTag),
- _boolToArg("fast-startup", fastStartup),
- _boolToArg("enable-asserts", enableAsserts),
- _boolToArg("hot-reload", hotReload),
- _boolToArg("hot-reload-rollback", hotReloadRollback),
- _boolToArg("no-preview-dart-2", noPreviewDart2)
- ].where((x) => x != null).toList();
- if (includeSelectors && selectors != null && selectors.length > 0) {
- args.addAll(selectors);
- }
- return args;
- }
-
- String toCsvString() {
- return "$mode;$arch;$compiler;$runtime;$checked;$strong;$hostChecked;"
- "$minified;$csp;$fasta;$system;$vmOptions;$useSdk;$builderTag;$fastStartup;"
- "$enableAsserts;$hotReload;"
- "$hotReloadRollback;$noPreviewDart2;$selectors";
- }
-
- String _stringToArg(String name, String value) {
- if (value == null || value.length == 0) {
- return null;
- }
- return "--$name=$value";
- }
-
- String _boolToArg(String name, bool value) {
- return value == true ? "--$name" : null;
- }
-
- String _listToArg(String name, List<String> strings) {
- if (strings == null || strings.length == 0) {
- return null;
- }
- return "--$name=${strings.join(',')}";
- }
-}
-
-/// [Result] contains the [result] of executing a single test on a specified
-/// [configuration].
-class Result {
- // Not final since we have to update it when combining test results.
- String configuration;
- final String name;
- final String result;
- final bool flaky;
- final bool negative;
- final List<String> testExpectations;
- final List<Command> commands;
-
- Result(this.configuration, this.name, this.result, this.flaky, this.negative,
- this.testExpectations, this.commands);
-
- static Result getFromJson(dynamic json) {
- var commands =
- json["commands"].map<Command>((x) => Command.getFromJson(x)).toList();
- var testExpectations = json["test_expectation"].cast<String>();
- return new Result(json["configuration"], json["name"], json["result"],
- json["flaky"], json["negative"], testExpectations, commands);
- }
-}
-
-/// [Command] used to get a result for a test.
-class Command {
- final String name;
- final int exitCode;
- final bool timeout;
- final int duration;
-
- Command(this.name, this.exitCode, this.timeout, this.duration);
-
- static Command getFromJson(dynamic json) {
- return new Command(
- json["name"], json["exitCode"], json["timeout"], json["duration"]);
- }
-}
-
-/// [TestResult] is a collection of configurations and test results,
-/// corresponding to the information found in a result.log json file.
-class TestResult {
- final dynamic jsonObject;
-
- TestResult() : jsonObject = null {
- _configurations = {};
- _results = [];
- }
-
- TestResult.fromJson(this.jsonObject);
-
- Map<String, Configuration> _configurations;
- Map<String, Configuration> get configurations {
- if (_configurations != null) {
- return _configurations;
- }
- _configurations = {};
- this.jsonObject["configurations"].forEach((key, value) {
- _configurations[key] = Configuration.getFromJson(value);
- });
- return _configurations;
- }
-
- List<Result> _results;
- List<Result> get results {
- return _results ??= this
- .jsonObject["results"]
- .map<Result>((x) => Result.getFromJson(x))
- .toList();
- }
-
- /// Combines multiple test-results into a single test-result, potentially by
- /// giving new names to later configurations.
- void combineWith(Iterable<TestResult> results) {
- results.forEach((tr) {
- Map<String, String> translatedConfigurations = {};
- for (var confKey in tr.configurations.keys) {
- var newKey = _findExistingConfiguration(
- tr.configurations[confKey], this.configurations);
- newKey ??= "conf${this.configurations.length + 1}";
- translatedConfigurations[confKey] = newKey;
- this.configurations[newKey] = tr.configurations[confKey];
- }
- this.results.addAll(tr.results.map((res) {
- res.configuration = translatedConfigurations[res.configuration];
- return res;
- }));
- });
- }
-
- /// Finds an existing configuration based on the arguments passed to test.py.
- String _findExistingConfiguration(Configuration configurationToFind,
- Map<String, Configuration> existingConfigurations) {
- String thisArgs = configurationToFind.toArgs().join();
- for (var confKey in existingConfigurations.keys) {
- String confArgs = existingConfigurations[confKey].toArgs().join();
- if (confArgs == thisArgs) {
- return confKey;
- }
- }
- return null;
- }
-}
diff --git a/tools/gardening/lib/src/results/status_expectations.dart b/tools/gardening/lib/src/results/status_expectations.dart
deleted file mode 100644
index 58bd4e8..0000000
--- a/tools/gardening/lib/src/results/status_expectations.dart
+++ /dev/null
@@ -1,147 +0,0 @@
-// Copyright (c) 2017, 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:io';
-import 'dart:async';
-import 'package:gardening/src/results/configuration_environment.dart';
-import 'package:gardening/src/results/status_files.dart';
-
-import 'result_json_models.dart';
-import 'testpy_wrapper.dart';
-import '../util.dart';
-import 'package:status_file/expectation.dart';
-
-class StatusExpectations {
- final TestResult testResult;
-
- final Map<Configuration, ConfigurationEnvironment> configurationEnvironments =
- {};
- final Map<String, StatusFiles> statusFilesMaps = {};
-
- bool _isLoaded = false;
-
- StatusExpectations(this.testResult);
-
- /// Build expectations from configurations. Each configuration may test
- /// multiple test suites.
- Future loadStatusFiles() async {
- if (_isLoaded) {
- return;
- }
-
- Map<String, Iterable<String>> suiteStatusFiles = {};
-
- await Future.wait(testResult.configurations.keys.map((key) async {
- Configuration configuration = testResult.configurations[key];
- if (!configurationEnvironments.containsKey(key)) {
- configurationEnvironments[configuration] =
- new ConfigurationEnvironment(configuration);
- }
- // We allow overwriting, since status files for a suite does not change.
- suiteStatusFiles.addAll(await statusFileListerMap(configuration));
- }));
-
- suiteStatusFiles.keys.forEach((suite) {
- var statusFilePaths = suiteStatusFiles[suite].map((file) {
- return "${PathHelper.sdkRepositoryRoot()}/$file";
- }).where((sf) {
- return new File(sf).existsSync();
- }).toList();
- statusFilesMaps[suite] = StatusFiles.read(statusFilePaths);
- });
-
- _isLoaded = true;
- }
-
- /// Finds the expectation for each test found in the [testResult] results and
- /// outputs if the test succeeded or failed. The status files must have been
- /// loaded.
- List<TestExpectationResult> getTestResultsWithExpectation() {
- assert(_isLoaded);
- List<TestExpectationResult> expectationResults = [];
- testResult.results.forEach((result) {
- try {
- Configuration configuration =
- testResult.configurations[result.configuration];
- ConfigurationEnvironment environment =
- configurationEnvironments[configuration];
- var testSuite = getSuiteNameForTest(result.name);
- StatusFiles expectationSuite = statusFilesMaps[testSuite];
- var qualifiedName = getQualifiedNameForTest(result.name);
- var statusFileEntries = expectationSuite
- .sectionsWithTestForConfiguration(environment, qualifiedName);
- expectationResults.add(new TestExpectationResult(
- statusFileEntries, result, configuration));
- } catch (ex) {}
- });
-
- return expectationResults;
- }
-}
-
-/// [TestExpectationResult] contains information about the result of running a
-/// test, along with the expectation.
-class TestExpectationResult {
- final List<StatusSectionEntry> entries;
- final Result result;
- final Configuration configuration;
-
- TestExpectationResult(this.entries, this.result, this.configuration);
-
- bool _isSuccess;
-
- /// Gets all expectations from status file entries as a set.
- Set<Expectation> expectations() {
- Set<Expectation> expectationsFromEntries = entries
- .map((expectation) => expectation.entry.expectations)
- .expand((expectation) => expectation)
- .toSet();
- if (expectationsFromEntries.isEmpty) {
- expectationsFromEntries.add(Expectation.pass);
- }
- return expectationsFromEntries;
- }
-
- /// Determines if a result matches its expectation.
- bool isSuccess() {
- if (_isSuccess != null) {
- return _isSuccess;
- }
- Expectation outcome = Expectation.find(result.result);
- Set<Expectation> testExpectations =
- expectationsFromTest(result.testExpectations);
- Set<Expectation> expectationSet = expectations();
- final allowedWithoutRuntime = [
- Expectation.runtimeError,
- Expectation.missingRuntimeError,
- Expectation.timeout
- ];
- _isSuccess = testExpectations.contains(outcome) ||
- expectationSet.contains(Expectation.skip) ||
- expectationSet.contains(Expectation.skipByDesign) ||
- outcome == Expectation.pass &&
- configuration.runtime == "none" &&
- allowedWithoutRuntime.any(expectationSet.contains) ||
- expectationSet.any((expectation) {
- return outcome.canBeOutcomeOf(expectation);
- });
- return _isSuccess;
- }
-}
-
-Set<Expectation> expectationsFromTest(List<String> testExpectations) {
- if (testExpectations == null) {
- return new Set<Expectation>();
- }
- return testExpectations.map((exp) {
- if (exp == "static-type-warning") {
- return Expectation.staticWarning;
- } else if (exp == "runtime-error") {
- return Expectation.runtimeError;
- } else if (exp == "compile-time-error") {
- return Expectation.compileTimeError;
- }
- return null;
- }).toSet();
-}
diff --git a/tools/gardening/lib/src/results/status_files.dart b/tools/gardening/lib/src/results/status_files.dart
deleted file mode 100644
index 2494605..0000000
--- a/tools/gardening/lib/src/results/status_files.dart
+++ /dev/null
@@ -1,118 +0,0 @@
-// Copyright (c) 2017, 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 'package:gardening/src/results/configuration_environment.dart';
-import 'package:status_file/canonical_status_file.dart';
-
-class StatusFiles {
- Map<String, List<StatusSectionEntry>> _exactEntries = {};
- Map<StatusSectionEntry, List<RegExp>> _wildcardEntries = {};
- List<StatusSectionWithFile> _sections = [];
- final List<StatusFile> statusFiles;
-
- /// Constructs a [StatusFiles] from a list of status file paths.
- static StatusFiles read(Iterable<String> files) {
- var distinctFiles = new Set.from(files).toList();
- return new StatusFiles(distinctFiles.map((file) {
- return new StatusFile.read(file);
- }).toList());
- }
-
- StatusFiles(this.statusFiles) {
- for (var file in statusFiles) {
- for (var section in file.sections) {
- _sections.add(new StatusSectionWithFile(file, section));
- for (StatusEntry entry
- in section.entries.where((entry) => entry is StatusEntry)) {
- var sectionEntry = new StatusSectionEntry(file, section, entry);
- if (entry.path.contains("*")) {
- _wildcardEntries[sectionEntry] = _processForMatching(entry.path);
- } else {
- _exactEntries.putIfAbsent(entry.path, () => []).add(sectionEntry);
- }
- }
- }
- }
- }
-
- /// Gets all section entries with test-expectations for a configuration
- /// environment.
- List<StatusSectionWithFile> sectionsForConfiguration(
- ConfigurationEnvironment environment) {
- return _sections.where((s) => s.section.isEnabled(environment)).toList();
- }
-
- /// Gets all section entries with test-expectations for a configuration
- /// environment.
- List<StatusSectionEntry> sectionsWithTestForConfiguration(
- ConfigurationEnvironment environment, String testPath) {
- return sectionsWithTest(testPath)
- .where((entry) => entry.section.isEnabled(environment))
- .toList();
- }
-
- /// Gets all section entries with test-expectations for a configuration
- /// environment.
- List<StatusSectionEntry> sectionsWithTest(String testPath) {
- List<StatusSectionEntry> matchingEntries = <StatusSectionEntry>[];
- if (_exactEntries.containsKey(testPath)) {
- matchingEntries.addAll(_exactEntries[testPath]);
- }
- // Test if it is a multi test by matching finding the name of the test
- // (either by the test name ending with _test/ or _t<nr>/ and cutting out
- // the remaining, as long as it does not contain the word _test
- RegExp isMultiTestMatcher = new RegExp(r"^((.*)_(test|t\d+))\/(.+)$");
- Match isMultiTestMatch = isMultiTestMatcher.firstMatch(testPath);
- if (isMultiTestMatch != null) {
- String testFile = isMultiTestMatch.group(1);
- if (_exactEntries.containsKey(testFile)) {
- matchingEntries.addAll(_exactEntries[testFile]);
- }
- var multiTestParts = isMultiTestMatch.group(4).split('/');
- for (var part in multiTestParts) {
- testFile = "$testFile/$part";
- if (_exactEntries.containsKey(testFile)) {
- matchingEntries.addAll(_exactEntries[testFile]);
- }
- }
- }
-
- var parts = testPath.split('/');
- _wildcardEntries.forEach((entry, regExps) {
- if (regExps.length > parts.length) return;
- for (var i = 0; i < regExps.length; i++) {
- if (!regExps[i].hasMatch(parts[i])) return;
- }
- matchingEntries.add(entry);
- });
-
- return matchingEntries;
- }
-
- /// Processes the expectations for matching against filenames. Generates
- /// lists of regular expressions once and for all for a key.
- List<RegExp> _processForMatching(String key) {
- return key
- .split('/')
- .map((part) => new RegExp("^${part}\$".replaceAll('*', '.*')))
- .toList();
- }
-}
-
-/// [StatusSectionEntry] is a result from looking up a test, and holds
-/// information about the status file, the section and the specific entry.
-class StatusSectionEntry {
- final StatusFile statusFile;
- final StatusSection section;
- final StatusEntry entry;
- StatusSectionEntry(this.statusFile, this.section, this.entry);
-}
-
-/// [StatusSectionWithFile] holds information about a section and the status
-/// file it belongs to.
-class StatusSectionWithFile {
- final StatusFile statusFile;
- final StatusSection section;
- StatusSectionWithFile(this.statusFile, this.section);
-}
diff --git a/tools/gardening/lib/src/results/test_result_helper.dart b/tools/gardening/lib/src/results/test_result_helper.dart
deleted file mode 100644
index 7304fed..0000000
--- a/tools/gardening/lib/src/results/test_result_helper.dart
+++ /dev/null
@@ -1,106 +0,0 @@
-// Copyright (c) 2017, 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 'dart:io';
-
-import '../luci.dart';
-import '../luci_api.dart';
-import '../util.dart';
-import 'result_json_models.dart';
-import 'test_result_service.dart';
-
-Future<TestResult> getTestResult(List<String> arguments) async {
- if (isCqInput(arguments)) {
- Iterable<BuildBucketTestResult> buildBucketTestResults =
- await getTestResultsFromCq(arguments);
- if (buildBucketTestResults != null) {
- return buildBucketTestResults.fold<TestResult>(new TestResult(),
- (combined, buildResult) => combined..combineWith([buildResult]));
- }
- } else {
- return await getTestResultFromBuilder(arguments);
- }
- return null;
-}
-
-/// Utility method to get a single test-result no matter what has been passed in
-/// as arguments. The test-result can either be from a builder-group, a single
-/// build on a builder or from a log.
-Future<TestResult> getTestResultFromBuilder(List<String> arguments) async {
- if (arguments.isEmpty) {
- print("No result.log file given as argument.");
- return null;
- }
-
- var logger = createLogger();
- var cache = createCacheFunction(logger);
- var testResultService = new TestResultService(logger, cache);
-
- String firstArgument = arguments.first;
-
- var luciApi = new LuciApi();
- bool isBuilderGroup = (await getBuilderGroups(luciApi, DART_CLIENT, cache()))
- .any((builder) => builder == firstArgument);
- bool isBuilder = (await getAllBuilders(luciApi, DART_CLIENT, cache()))
- .any((builder) => builder == firstArgument);
-
- if (arguments.length == 1) {
- if (arguments.first.startsWith("http")) {
- return testResultService.fromLogdog(firstArgument);
- } else if (isBuilderGroup) {
- return testResultService.forBuilderGroup(firstArgument);
- } else if (isBuilder) {
- return testResultService.latestForBuilder(BUILDER_PROJECT, firstArgument);
- }
- }
-
- var file = new File(arguments.first);
- if (await file.exists()) {
- return testResultService.getFromFile(file);
- }
-
- if (arguments.length == 2 && isBuilder && isNumber(arguments.last)) {
- var buildNumber = int.parse(arguments.last);
- return testResultService.forBuild(
- BUILDER_PROJECT, firstArgument, buildNumber);
- }
-
- print("Too many arguments passed to command or arguments were incorrect.");
- return null;
-}
-
-/// Utility method to get test results from the CQ.
-Future<Iterable<BuildBucketTestResult>> getTestResultsFromCq(
- List<String> arguments) async {
- if (arguments.isEmpty) {
- print("No result.log file given as argument.");
- return null;
- }
-
- var logger = createLogger();
- var createCache = createCacheFunction(logger);
- var testResultService = new TestResultService(logger, createCache);
-
- String firstArgument = arguments.first;
-
- if (arguments.length == 1) {
- if (!isSwarmingTaskUrl(firstArgument)) {
- print("URI does not match "
- "`https://<hostname>/swarming/task/<taskid>`.");
- return null;
- }
- String swarmingTaskId = getSwarmingTaskId(firstArgument);
- return await testResultService.getFromSwarmingTaskId(swarmingTaskId);
- }
-
- if (arguments.length == 2 && areNumbers(arguments)) {
- int changeNumber = int.parse(firstArgument);
- int patchset = int.parse(arguments.last);
- return await testResultService.fromGerrit(changeNumber, patchset);
- }
-
- print("Too many arguments passed to command or arguments were incorrect.");
- return null;
-}
diff --git a/tools/gardening/lib/src/results/test_result_service.dart b/tools/gardening/lib/src/results/test_result_service.dart
deleted file mode 100644
index 9d9326a..0000000
--- a/tools/gardening/lib/src/results/test_result_service.dart
+++ /dev/null
@@ -1,240 +0,0 @@
-// Copyright (c) 2017, 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:io';
-import 'dart:async';
-import 'dart:convert';
-import 'dart:core';
-import 'result_json_models.dart';
-import '../logger.dart';
-import '../cache_new.dart';
-import '../logdog.dart';
-import '../logdog_rpc.dart';
-import '../luci_api.dart';
-import '../luci.dart';
-import '../buildbucket.dart';
-import '../util.dart';
-
-/// [TestResultService] provides functions to obtain [TestResult]s from logs.
-class TestResultService {
- final Logger logger;
- final CreateCacheFunction standardCache;
-
- TestResultService(this.logger, this.standardCache);
-
- /// Gets the latest result from a builder with [name] in a [project].
- Future<TestResult> latestForBuilder(String project, String name,
- {CreateCacheFunction createCache}) async {
- int buildNumber = (await latestBuildNumbersForBuilders([name]))[name];
- if (buildNumber == 0) {
- print("Could not get any results for builder with name $name.");
- return new TestResult();
- }
- return forBuild(project, name, buildNumber, createCache: createCache);
- }
-
- /// Get a test result from logdog by massaging the [uri] passed in, if it is
- /// not in the correct format.
- Future<TestResult> fromLogdog(String uri, {CreateCacheFunction createCache}) {
- String logName;
- // If it is an (invalid) buildbot url:
- // https://uberchromegw.corp.google.com/i/client.dart/builders/.....log
- if (uri.contains("uberchrome")) {
- logger.debug("Assuming that $uri is an uberchrome url.");
- uri = Uri.decodeFull(uri);
- var reg = new RegExp(r"^https:\/\/uberchromegw\.corp\.google\.com\/i\/"
- r"(.*)\/builders\/(.*)\/builds\/(\d*)(.*)\/logs\/result.log$");
- var match = reg.firstMatch(uri);
- if (match != null) {
- logName = "bb/${match.group(1)}/${match.group(2)}/"
- "${match.group(3)}/+/recipes${match.group(4).replaceAll(' ', '_')}"
- "/0/logs/result.log/0";
- }
- } else if (uri.contains("build.chromium.org")) {
- // If it is an (invalid) public buildbot url:
- // https://build.chromium.org/p/client.dart/builders/....log
- logger.debug("Assuming that $uri is an build.chromium.org url.");
- uri = Uri.decodeFull(uri);
- var reg = new RegExp(r"^https:\/\/build\.chromium\.org\/p\/(.*)\/"
- r"builders\/(.*)\/builds\/(\d*)(.*)\/logs\/result.log$");
- var match = reg.firstMatch(uri);
- if (match != null) {
- logName = "bb/${match.group(1)}/${match.group(2)}/"
- "${match.group(3)}/+/recipes${match.group(4).replaceAll(' ', '_')}"
- "/0/logs/result.log/0";
- }
- } else if (uri.contains("luci-logdog")) {
- // If it is an luci log-dog url:
- // https://luci-logdog.appspot.com/v/?s=chromium%2Fbb%2Fclient.dart%...log
- logger.debug("Assuming that $uri is a luci-logdog url.");
- logName = "${Uri.decodeFull(uri.substring(48))}";
- } else if (uri.contains("logs.chromium")) {
- // If it is a logs.chromium.org url
- // https://logs.chromium.org/v/?s=chromium%2Fbb%2Fclient.dart%...log
- logger.debug("Assuming that $uri is a logs.chromium url.");
- logName = "${Uri.decodeFull(uri.substring(42))}";
- } else {
- logger.debug(
- "Assuming that $uri is a logdog url that can be used directly");
- // Assume it is a logdog url and use it directly.
- logName = uri;
- }
-
- if (logName == null) {
- throw new Exception("Could not identify URL $uri");
- }
-
- var logdog = new LogdogRpc();
- var cache = createCache ?? standardCache;
- return logdog
- .get(BUILDER_PROJECT, logName, cache(duration: new Duration(days: 365)))
- .then((json) => new TestResult.fromJson(jsonDecode(json)));
- }
-
- /// Gets result logs from logdog streams.
- Future<List<TestResult>> fromStreams(
- String project, List<LogdogStream> streams, WithCacheFunction cache) {
- var logdog = new LogdogRpc();
- return Future.wait(streams.map((stream) {
- logger.debug('Getting the log ${stream.path}...');
- return logdog.get(project, stream.path, cache).then((log) {
- return new TestResult.fromJson(jsonDecode(log));
- }).catchError(
- errorLogger(logger, "Could not get a log.", new TestResult()));
- }));
- }
-
- /// Get test results for a build [buildNumber] on a builder with [name] in a
- /// [project].
- Future<TestResult> forBuild(String project, String name, int buildNumber,
- {CreateCacheFunction createCache}) async {
- logger.info('Querying $name for logs in $buildNumber...');
- Iterable<BuildStepTestResult> steps = await fromPrefix(
- "chromium", "bb/client.dart/$name/$buildNumber", false,
- createCache: createCache);
- return steps.fold<TestResult>(new TestResult(), (acc, buildStep) {
- return acc..combineWith([buildStep.testResult]);
- });
- }
-
- /// Get latest test-result for a builder group with [name].
- /// TODO(mkroghj): Needs project to allow for FYI.
- Future<TestResult> forBuilderGroup(String name,
- {CreateCacheFunction createCache}) async {
- var cacheCreater = createCache ?? standardCache;
- var cache = cacheCreater(duration: new Duration(days: 1));
-
- LuciApi luciApi = new LuciApi();
- logger.info("Getting builders in builder-group $name.");
- List<String> builders =
- await getBuildersInBuilderGroup(luciApi, "client.dart", cache, name)
- .whenComplete(() => luciApi.close());
- var buildNumbers = await latestBuildNumbersForBuilders(builders);
- var testResults = await Future.wait(builders.map((builder) {
- int buildNumber = buildNumbers[builder];
- if (buildNumber == 0) {
- return new Future.value(new TestResult());
- }
- return forBuild(BUILDER_PROJECT, builder, buildNumber,
- createCache: createCache)
- .catchError(errorLogger(
- logger,
- "Could not get log for builder $builder "
- "with build number $buildNumber",
- new TestResult()));
- }));
- return new TestResult()..combineWith(testResults);
- }
-
- /// Gets [BuildBucketTestResult]s by querying logdog for information, coming
- /// from [builds].
- Future<Iterable<BuildBucketTestResult>> fromBuildBucketBuilds(
- Iterable<BuildBucketBuild> builds,
- {CreateCacheFunction createCache}) async {
- Iterable<Iterable<BuildStepTestResult>> testResults =
- await Future.wait(builds.map((build) {
- logger.debug('Querying ${build.builder} for logs...');
- String prefix = "buildbucket/cr-buildbucket.appspot.com/${build.id}";
- return fromPrefix("dart", prefix, true, createCache: createCache)
- .catchError(errorLogger(logger, null, []));
- }));
-
- return zipWith(builds, testResults,
- (BuildBucketBuild build, Iterable<BuildStepTestResult> steps) {
- TestResult result = steps.fold(new TestResult(), (acc, buildStep) {
- return acc..combineWith([buildStep.testResult]);
- });
- return new BuildBucketTestResult(build)..combineWith([result]);
- });
- }
-
- /// Gets [BuildStepTestResult]s by querying logdog for information from
- /// a given [prefix].
- Future<Iterable<BuildStepTestResult>> fromPrefix(
- String project, String prefix, bool buildBucket,
- {CreateCacheFunction createCache}) async {
- var cacheCreater = createCache ?? standardCache;
- var cache = cacheCreater(duration: new Duration(minutes: 1));
- var longCache = cacheCreater(duration: new Duration(days: 365));
- LogdogRpc logdog = new LogdogRpc();
- String recipes = buildBucket ? "" : "recipes/";
- List<LogdogStream> streams = await logdog.query(
- project, "$prefix/+/${recipes}steps/**/result.log/0", cache);
- RegExp stepNameRegExp = new RegExp(
- r"^.*\/steps\/read_results_of_(.*)\/0\/logs\/result.log\/.*");
- RegExp stepNameShardRegExp =
- new RegExp(r"^.*\/steps\/(.*)\/0\/logs\/result.log\/.*");
- return await Future.wait(streams.map((stream) async {
- try {
- var match = stepNameRegExp.firstMatch(stream.path);
- match ??= stepNameShardRegExp.firstMatch(stream.path);
- String name = match.group(1);
- List<TestResult> results =
- await fromStreams(project, [stream], longCache);
- return new BuildStepTestResult(name.replaceAll("_", " "), results[0]);
- } catch (ex) {
- return new BuildStepTestResult("TEST", new TestResult());
- }
- }));
- }
-
- /// Gets [BuildBucketTestResult]s from a specific from [swarmTaskId].
- Future<Iterable<BuildBucketTestResult>> getFromSwarmingTaskId(
- String swarmTaskId,
- {CreateCacheFunction createCache}) {
- return buildsFromSwarmingTaskId(swarmTaskId).then(
- (builds) => fromBuildBucketBuilds(builds, createCache: createCache));
- }
-
- /// Gets [BuildBucketTestResult]s from a Gerrit CL with [changeNumber] and
- /// [patchset].
- Future<Iterable<BuildBucketTestResult>> fromGerrit(
- int changeNumber, int patchset,
- {CreateCacheFunction createCache}) {
- // First get builds from the buildbucket.
- return buildsFromGerrit(changeNumber, patchset).then(
- (builds) => fromBuildBucketBuilds(builds, createCache: createCache));
- }
-
- /// Reads the test result from a [file].
- Future<TestResult> getFromFile(File file) {
- return file
- .readAsString()
- .then(jsonDecode)
- .then((json) => new TestResult.fromJson(json));
- }
-}
-
-/// Class that keeps track of a try build and the corresponding test result.
-class BuildBucketTestResult extends TestResult {
- final BuildBucketBuild build;
- BuildBucketTestResult(this.build);
-}
-
-/// Class that keeps track of a test step and test result.
-class BuildStepTestResult {
- final String name;
- final TestResult testResult;
- BuildStepTestResult(this.name, this.testResult);
-}
diff --git a/tools/gardening/lib/src/results/testpy_wrapper.dart b/tools/gardening/lib/src/results/testpy_wrapper.dart
deleted file mode 100644
index 29fb99d..0000000
--- a/tools/gardening/lib/src/results/testpy_wrapper.dart
+++ /dev/null
@@ -1,78 +0,0 @@
-// Copyright (c) 2017, 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:path/path.dart' as path;
-import 'result_json_models.dart';
-import '../util.dart';
-
-/// Calls test.py with arguments gathered from a specific [configuration] and
-/// lists all tests included for that particular configuration.
-Future<Iterable<String>> testLister(Configuration configuration) async {
- var args = configuration.toArgs()..add("--list");
- return (await callTestPy(args))
- .map((line) => line.trim())
- .where((name) => name.isNotEmpty);
-}
-
-/// Calls test.py with arguments gathered from a specific [configuration] and
-/// lists all status files included for that particular configuration.
-Future<Iterable<String>> statusFileLister(Configuration configuration) async {
- List<String> args = configuration.toArgs()..add("--list-status-files");
- return (await callTestPy(args)).where((name) => name.isNotEmpty);
-}
-
-/// Calls test.py with arguments and returns the result.
-Future<Iterable<String>> callTestPy(List<String> args) async {
- var testPyPath = path.absolute(PathHelper.testPyPath());
- var result = await runPython(testPyPath, args);
- if (result.exitCode != 0) {
- throw "Failed to call test.py: "
- "'${PathHelper.testPyPath()} ${args.join(' ')}'. "
- "Process exited with ${result.exitCode}";
- }
- return (result.stdout as String).split(newLine).skip(1);
-}
-
-/// Calls test.py with arguments gathered from a specific [configuration] and
-/// returns a map from test-suite to a list of status-files.
-Future<Map<String, Iterable<String>>> statusFileListerMap(
- Configuration configuration) {
- return statusFileListerMapFromArgs(configuration.toArgs());
-}
-
-/// Calls test.py with arguments [args] and returns a map from test-suite to a
-/// list of status-files.
-Future<Map<String, Iterable<String>>> statusFileListerMapFromArgs(
- List<String> args) async {
- args.add("--list-status-files");
- Map<String, List<String>> returnMap = {};
- var suitesWithStatusFiles = await callTestPy(args);
- String currentSuite = "";
- for (var line in suitesWithStatusFiles) {
- if (line.isEmpty) {
- continue;
- }
- bool isSuiteLine = !line.startsWith("\t");
- if (isSuiteLine) {
- currentSuite = line;
- returnMap[currentSuite] = [];
- }
- if (!isSuiteLine) {
- returnMap[currentSuite].add(line.trim());
- }
- }
- return returnMap;
-}
-
-/// Get tests for a suite.
-Future<Iterable<String>> testsForSuite(String suite) async {
- Iterable<String> tests = await callTestPy(["--list", suite]);
- return tests
- .skip(3)
- .takeWhile((testName) => testName.isNotEmpty)
- .map((testInfo) {
- return testInfo.substring(0, testInfo.indexOf(" ")).trim();
- });
-}
diff --git a/tools/gardening/lib/src/results_workflow/ask_for_logs.dart b/tools/gardening/lib/src/results_workflow/ask_for_logs.dart
deleted file mode 100644
index 24197b9..0000000
--- a/tools/gardening/lib/src/results_workflow/ask_for_logs.dart
+++ /dev/null
@@ -1,86 +0,0 @@
-// Copyright (c) 2017, 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:gardening/src/results/test_result_helper.dart';
-
-import 'present_failures.dart';
-import '../results/result_json_models.dart';
-import '../workflow.dart';
-
-class AskForLogs extends WorkflowStep {
- List<TestResult> testResults = [];
-
- @override
- Future<WorkflowAction> onShow(payload) async {
- // This is the first step, so payload is disregarded.
- if (testResults.isEmpty) {
- askForInputFirstTime();
- // prefetch builders
- } else {
- askForInputOtherTimes();
- }
- return new WaitForInputWorkflowAction();
- }
-
- @override
- Future<WorkflowAction> input(String input) async {
- // No input entered.
- if (input == null || input.isEmpty && testResults.length == 0) {
- print("ERROR: Needs to add at least one result log.");
- return new Future.value(new WaitForInputWorkflowAction());
- }
- // Navigate to next step.
- if (input == null || input.isEmpty) {
- return new Future.value(
- new NavigateStepWorkflowAction(new PresentFailures(), testResults));
- }
- await processInput(input);
- print("Add another log or press <Enter> to continue.");
- return new Future.value(new WaitForInputWorkflowAction());
- }
-
- Future<TestResult> processInput(String input) async {
- return getTestResult(input.split(' ')).then((testResult) {
- if (testResult == null) {
- print("ERROR: The input '$input' is invalid.");
- } else {
- testResults.add(testResult);
- }
- });
- }
-
- @override
- Future<bool> onLeave() {
- return new Future.value(false);
- }
-
- void askForInputFirstTime() {
- print("The tool needs to lookup tests and their expectations to make "
- "suggestions. The more data-points the tool can find, the better it "
- "can report on potential changes to status files.");
- print("");
- print("IMPORTANT: If you experience failures on builders, the tool needs a "
- "dimensionally close passing configuration, to compute a significant "
- "difference. ");
- print("For tests failures discovered locally, a similar configuration with "
- "non-failing tests will often be available, confusing the tool. If you "
- "are only relying on local changes, just add that single log and "
- "continue.");
- print("You can add test results by the following commands:");
- print("<file> : for a local result.log file.\n"
- "<uri_to_result_log> : for direct links to result.logs.\n"
- "<uri_try_bot> : for links to try bot builders.\n"
- "<commit_number> <patchset> : for links to try bot builders.\n"
- "<builder> : for a builder name.\n"
- "<builder> <build> : for a builder and build number.\n"
- "<builder_group> : for a builder group.\n");
- print("Input one of the above commands to add a log:");
- }
-
- void askForInputOtherTimes() {
- print("Add additional logs or write <Enter> to continue.");
- }
-}
diff --git a/tools/gardening/lib/src/results_workflow/fix_failing_test.dart b/tools/gardening/lib/src/results_workflow/fix_failing_test.dart
deleted file mode 100644
index 6e50760..0000000
--- a/tools/gardening/lib/src/results_workflow/fix_failing_test.dart
+++ /dev/null
@@ -1,478 +0,0 @@
-// Copyright (c) 2017, 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 'dart:io';
-
-import 'package:status_file/canonical_status_file.dart';
-import 'package:status_file/expectation.dart';
-import 'package:status_file/status_file_normalizer.dart';
-import 'package:status_file/src/expression.dart';
-
-import 'present_failures.dart';
-import '../results/result_json_models.dart';
-import '../results/failing_test.dart';
-import '../results/status_expectations.dart';
-import '../results/status_files.dart';
-import '../util.dart';
-import '../workflow.dart';
-
-final RegExp toggleSectionRegExp = new RegExp(r"^(\d+)$");
-
-/// This is the main workflow step, where the user is asked what to do with the
-/// failure and input comments etc. For every test, [onShow] is called with the
-/// remaining tests including the one to work on.
-class FixFailingTest extends WorkflowStep<List<FailingTest>> {
- final TestResult _testResult;
- FixWorkingItem _currentWorkingItem;
- List<FailingTest> _remainingTests;
-
- // These fields are mutated to persist user input.
- String _lastComment;
- Set<_CustomSection> _customSections = new Set<_CustomSection>();
- FixWorkingItem _lastWorkingItem;
- StatusExpectations _statusExpectations;
-
- FixFailingTest(this._testResult);
-
- @override
- Future<WorkflowAction> onShow(List<FailingTest> payload) async {
- if (payload.isEmpty) {
- print("Finished updating status files from failing tests.");
- print("Trying to find if any new errors have arised from the fixes.");
- return new NavigateStepWorkflowAction(
- new PresentFailures(), [_testResult]);
- }
- // We have to compute status files on every show, because we modify the
- // status files on every fix.
- _statusExpectations = new StatusExpectations(_testResult);
- await _statusExpectations.loadStatusFiles();
-
- _remainingTests = payload.sublist(1);
- var failingTest = payload.first;
-
- if (!failingTest.stillFailing(_statusExpectations)) {
- return new NavigateStepWorkflowAction(this, _remainingTests);
- }
-
- _currentWorkingItem = new FixWorkingItem(failingTest.result.name,
- failingTest, _statusExpectations, _lastComment, _customSections);
- _currentWorkingItem.init();
- print("");
- print("${_remainingTests.length + 1} tests remaining.");
- askAboutTest();
-
- return new WaitForInputWorkflowAction();
- }
-
- @override
- Future<WorkflowAction> input(String input) async {
- bool error = false;
- if (input.isEmpty) {
- await fixFailingTest();
- return new NavigateStepWorkflowAction(this, _remainingTests);
- } else if (input == "a") {
- // Add expression.
- var expression = getNewExpressionFromCommandLine();
- if (expression != null) {
- var statusFile = getStatusFile(_currentWorkingItem);
- addExpressionToCustomSections(expression, statusFile.path);
- }
- } else if (input == "c") {
- // Change comment.
- _currentWorkingItem.comment = getNewComment();
- _lastComment = _currentWorkingItem.comment;
- } else if (input == "f") {
- // Fix failing tests and try to fix the coming ones.
- await fixFailingTest();
- return _fixAllSimilarTests();
- } else if (input == "o") {
- // Case change new outcome.
- _currentWorkingItem.newOutcome = getNewOutcome();
- } else if (input == "r") {
- // Case reset.
- _currentWorkingItem.init();
- } else if (input == "s") {
- // Case reset.
- return new NavigateStepWorkflowAction(this, _remainingTests);
- } else {
- error = true;
- }
- var toggleMatch = toggleSectionRegExp.firstMatch(input);
- if (toggleMatch != null) {
- var index = int.parse(toggleMatch.group(1));
- error = !_currentWorkingItem.toggleSection(index);
- }
- if (error) {
- print("Input was not correct. Please try again.");
- } else {
- askAboutTest();
- }
- return new WaitForInputWorkflowAction();
- }
-
- Future<WorkflowAction> _fixAllSimilarTests() async {
- var unhandledTests = <FailingTest>[];
- for (FailingTest similarTest in _remainingTests) {
- _currentWorkingItem = new FixWorkingItem(similarTest.result.name,
- similarTest, _statusExpectations, _lastComment, this._customSections);
- _currentWorkingItem.init();
- // Outcome may be larger from the previous one, but current newOutcome
- // will always be a singleton list. So we check by matching first
- // element.
- var outcomeIsSame = _currentWorkingItem.newOutcome.first ==
- _lastWorkingItem.newOutcome.first;
- var lastConfigurations =
- _lastWorkingItem.failingTest.failingConfigurations;
- var currentConfigurations =
- _currentWorkingItem.failingTest.failingConfigurations;
- var sameConfigurations = lastConfigurations.length ==
- currentConfigurations.length &&
- lastConfigurations.every(
- (configuration) => currentConfigurations.contains(configuration));
- var sameFiles = _lastWorkingItem.statusFiles().every((last) {
- return _currentWorkingItem.statusFiles().any((current) {
- return current.path == last.path;
- });
- });
- if (outcomeIsSame && sameConfigurations && sameFiles) {
- _currentWorkingItem.currentSections = _lastWorkingItem.currentSections;
- print("Auto-fixing ${_currentWorkingItem.name}");
- var realLast = _lastWorkingItem;
- await fixFailingTest(); // Sets _lastWorkingItem to _currentWorkingItem
- _lastWorkingItem = realLast; // Might not be needed
- } else {
- unhandledTests.add(similarTest);
- }
- }
- return new NavigateStepWorkflowAction(this, unhandledTests);
- }
-
- @override
- Future<bool> onLeave() {
- return new Future.value(false);
- }
-
- /// Prints up to date data about [currentWorkItem] and gives information about
- /// the commands that can be used.
- void askAboutTest() {
- _currentWorkingItem.printInfo();
- print("");
- print("To modify the above data, the following commands are available:");
- print("<Enter> : Write new outcome to selected sections in status files.");
- print("a : Add/Create section.");
- print("c : Modify the comment.");
- print("f : Write new outcome to selected sections in status files "
- "and try to fix remaining tests 'the same way'.");
- print("o : Modify outcomes.");
- print("r : Reset to initial state.");
- print("s : Skip this failure.");
- print("<n> : Toggle selection of the section with the index <n>.");
- }
-
- /// Fixes the failing test based on the data in [_currentWorkingItem].
- Future fixFailingTest() async {
- // Delete all existing entries that are wrong.
- var changedFiles = new Set<StatusFile>();
- for (var statusEntry in _currentWorkingItem.statusEntries) {
- statusEntry.section.entries.remove(statusEntry.entry);
- changedFiles.add(statusEntry.statusFile);
- }
- // Add new expectations to status sections.
- var path = getQualifiedNameForTest(_currentWorkingItem.name);
- var expectations = _currentWorkingItem.newOutcome
- .map((outcome) => Expectation.find(outcome))
- .toList();
- var comment = _currentWorkingItem.comment == null
- ? null
- : new Comment(_currentWorkingItem.comment);
- var statusEntry = new StatusEntry(path, 0, expectations, comment);
- for (var currentSection in _currentWorkingItem.currentSections) {
- if (!currentSection.statusFile.sections
- .contains(currentSection.section)) {
- currentSection.statusFile.sections.add(currentSection.section);
- }
- currentSection.section.entries.insert(0, statusEntry);
- changedFiles.add(currentSection.statusFile);
- }
- // Save the modified status files.
- for (var file in changedFiles) {
- await new File(file.path)
- .writeAsString(normalizeStatusFile(file).toString());
- }
- _lastWorkingItem = _currentWorkingItem;
- }
-
- /// Tries to find a section with the [expression] in [statusFilePath]. If it
- /// cannot find a section, it will create a new section. It selects the new
- /// section on the [currentWorkItem].
- void addExpressionToCustomSections(
- Expression expression, String statusFilePath) {
- expression = expression.normalize();
- var statusFile = _currentWorkingItem
- .statusFiles()
- .firstWhere((statusFile) => statusFile.path == statusFilePath);
- var sectionToAdd = statusFile.sections.firstWhere(
- (section) =>
- section.condition != null &&
- section.condition.normalize().compareTo(expression) == 0,
- orElse: () => null);
- sectionToAdd ??= new StatusSection(expression, 0, [])
- ..entries.add(new EmptyEntry(0));
- var section = new StatusSectionWithFile(statusFile, sectionToAdd);
- _customSections.add(new _CustomSection(section));
- _currentWorkingItem.currentSections.add(section);
- }
-}
-
-/// Gets a new [Expression] from the commandline. The expression is parsed to
-/// make sure it is syntactically correct. If no input is added it returns
-/// [null].
-Expression getNewExpressionFromCommandLine() {
- print("Write a new status header expression - <Enter> to cancel:");
- String input = stdin.readLineSync();
- if (input.isEmpty) {
- return null;
- }
- try {
- return Expression.parse(input);
- } catch (e) {
- print(e);
- return getNewExpressionFromCommandLine();
- }
-}
-
-/// Gets a status file by finding the suite from [workingItem] and asks the
-/// user to pick the correct file.
-StatusFile getStatusFile(FixWorkingItem workingItem) {
- var statusFiles = workingItem.statusFiles();
- if (statusFiles.length == 1) {
- return statusFiles.first;
- }
- print("Which status file should the section be added to/exists in?");
- int i = 0;
- for (var statusFile in statusFiles) {
- print(" ${i++}: ${statusFile.path}");
- }
- var input = stdin.readLineSync();
- var index = int.parse(input, onError: (_) => -1);
- if (index >= 0 && index < statusFiles.length) {
- return statusFiles[index];
- }
- print("Input was not between 0-$i. Please try again");
- return getStatusFile(workingItem);
-}
-
-/// Gets a new outcome from the user. The input is a list of strings, but every
-/// element has been parsed to check if it is an expectation.
-List<String> getNewOutcome() {
- print("Write new outcomes, separate by ',':");
- String input = stdin.readLineSync();
- try {
- var newOutcomes =
- input.split(",").map((outcome) => outcome.trim()).toList();
- newOutcomes.forEach((name) => Expectation.find(name));
- return newOutcomes;
- } catch (e) {
- print(e);
- return getNewOutcome();
- }
-}
-
-/// Gets a comment from the user. It automatically adds # if it is not entered
-/// and checks if the input is a number, by which it assumes it is an issue.
-String getNewComment() {
- print("Write a new comment or github issue. Empty for no comment:");
- String newComment = stdin.readLineSync();
- if (newComment.isEmpty) {
- return null;
- }
- if (int.parse(newComment, onError: (input) => null) != null) {
- return "# Issue $newComment";
- }
- if (!newComment.startsWith("#")) {
- newComment = "# $newComment";
- }
- return newComment;
-}
-
-/// [FixWorkingItem] holds the current data about what sections to update,
-/// what configurations are covered, the comment, the outcomes etc.
-class FixWorkingItem {
- final String name;
- final FailingTest failingTest;
- final StatusExpectations statusExpectations;
-
- Iterable<StatusSectionWithFile> customSections;
- List<StatusSectionWithFile> currentSections;
- List<SectionsSuggestion> suggestedSections;
- List<String> newOutcome;
- List<StatusSectionEntry> statusEntries;
- String comment;
-
- FixWorkingItem(this.name, this.failingTest, this.statusExpectations,
- this.comment, Iterable<_CustomSection> customSections) {
- var files = statusFiles();
- this.customSections = customSections.expand((customSection) {
- var sectionWithFile = customSection._findSection(currentSections);
- if (sectionWithFile != null) {
- return [sectionWithFile];
- }
- var file = customSection._findStatusFile(files);
- if (file != null) {
- var section = customSection._findSectionInFile(file);
- section ??= new StatusSection(customSection.condition, 0, [])
- ..entries.add(new EmptyEntry(0));
- return [new StatusSectionWithFile(file, section)];
- }
- return [];
- });
- }
-
- /// init resets all custom data to the standard values from the failing test,
- /// except the comment and custom added sections.
- void init() {
- newOutcome = [failingTest.result.result];
- statusEntries = failingTest.failingStatusEntries(statusExpectations);
- suggestedSections = failingTest.computeSections(statusExpectations);
- currentSections = [];
- }
-
- /// Gets the status files for the failing test.
- List<StatusFile> statusFiles() {
- return failingTest.statusFiles(statusExpectations);
- }
-
- /// Toggles the selection of a section by [index].
- bool toggleSection(int index) {
- var sections =
- suggestedSections.expand((suggested) => suggested.sections).toList();
- sections.addAll(customSections);
- if (index < 0 || index >= sections.length) {
- return false;
- }
- var section = sections[index];
- if (currentSections.contains(section)) {
- currentSections.remove(section);
- } else {
- currentSections.add(section);
- }
- return true;
- }
-
- /// Prints all information about the current working item.
- void printInfo() {
- print("");
- print("--- ${name} ---");
- print("New (o)utcome: ${newOutcome}");
- print("Failing configurations (covered configurations marked by *):");
- var failingNotCovered = failingTest.failingConfigurationsNotCovered(
- statusExpectations, currentSections);
- failingTest.failingConfigurations.forEach((configuration) {
- String selected = !failingNotCovered.contains(configuration) ? "* " : "";
- print(" $selected${configuration.toArgs(includeSelectors: false)}");
- });
- if (failingTest.passingConfigurations.isEmpty) {
- print("Passing configurations: None");
- } else {
- var passingNotCovered = failingTest.failingConfigurationsNotCovered(
- statusExpectations, currentSections);
- print("Passing configurations (covered configurations marked by x - this "
- "is generally not what you want):");
- failingTest.passingConfigurations.forEach((configuration) {
- String selected = passingNotCovered.contains(configuration) ? "x " : "";
- print(" $selected${configuration.toArgs(includeSelectors: false)}");
- });
- }
- var defaultExpectations =
- expectationsFromTest(failingTest.result.testExpectations);
- defaultExpectations.add(Expectation.pass);
- // Is the outcome the default expectation, i.e. should all entries should be
- // removed.
- bool isDefaultExpectation = newOutcome.length == 1 &&
- defaultExpectations.contains(Expectation.find(newOutcome.first));
- if (isDefaultExpectation) {
- print("The new outcome is the default expectation of the test file.");
- } else {
- _printSections();
- }
- if (statusEntries.isNotEmpty) {
- print("Status entries to be deleted:");
- _printStatusEntries(statusEntries);
- }
- print("Status entry (c)omment:");
- if (comment != null) {
- print(" ${comment}");
- }
- }
-
- void _printSections() {
- print("Sections to add the new outcome to. The selected sections are "
- "marked by *:");
- int groupCounter = "A".codeUnitAt(0);
- int sectionCounter = 0;
- suggestedSections.forEach((suggestedSection) {
- print(" ${new String.fromCharCode(groupCounter++)} "
- "(${suggestedSection.strategy}):");
- suggestedSection.sections
- .forEach((section) => _printSection(section, sectionCounter++));
- });
- print(" ${new String.fromCharCode(groupCounter)}: Added/Used sections");
- customSections
- .forEach((section) => _printSection(section, sectionCounter++));
- }
-
- void _printSection(StatusSectionWithFile section, int index) {
- String selected = currentSections.contains(section) ? "* " : "";
- print(" $selected${index}: ${section.statusFile.path}: "
- "[ ${section.section.condition.toString()} ]");
- }
-
- void _printStatusEntries(List<StatusSectionEntry> entries) {
- for (StatusSectionEntry entry in entries) {
- print(" ${entry.statusFile.path}");
- print(" [ ${entry.section.condition} ]");
- print(" line ${entry.entry.lineNumber}: ${entry.entry.path} : "
- "${entry.entry.expectations} ${entry.entry.comment ?? ""}");
- }
- }
-}
-
-class _CustomSection {
- final String path;
- final Expression condition;
-
- _CustomSection(StatusSectionWithFile section)
- : path = section.statusFile.path,
- condition = section.section.condition;
-
- StatusFile _findStatusFile(Iterable<StatusFile> files) {
- return files.firstWhere((f) => f.path == path, orElse: () => null);
- }
-
- StatusSection _findSectionInFile(StatusFile file) {
- return file.sections
- .firstWhere((s) => s.condition == condition, orElse: () => null);
- }
-
- StatusSectionWithFile _findSection(Iterable<StatusSectionWithFile> sections) {
- return sections.firstWhere((s) => s.section.condition == condition,
- orElse: () => null);
- }
-
- @override
- String toString() {
- return "{$path} [{$condition}]";
- }
-
- @override
- bool operator ==(other) {
- return other is _CustomSection && toString() == other.toString();
- }
-
- @override
- int get hashCode {
- return toString().hashCode;
- }
-}
diff --git a/tools/gardening/lib/src/results_workflow/present_failures.dart b/tools/gardening/lib/src/results_workflow/present_failures.dart
deleted file mode 100644
index 8fc562a..0000000
--- a/tools/gardening/lib/src/results_workflow/present_failures.dart
+++ /dev/null
@@ -1,94 +0,0 @@
-// Copyright (c) 2017, 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 'fix_failing_test.dart';
-import '../results/result_json_models.dart';
-import '../results/status_expectations.dart';
-import '../results/failing_test.dart';
-import '../workflow.dart';
-
-class PresentFailures extends WorkflowStep {
- PresentFailures();
-
- TestResult testResult;
- List<FailingTest> failingTests;
-
- @override
- Future<WorkflowAction> onShow(payload) async {
- testResult =
- (payload as List<TestResult>).reduce((t1, t2) => t1..combineWith([t2]));
-
- failingTests = await groupFailingTests(testResult);
-
- if (failingTests.isEmpty) {
- print("No errors found.. Do you want to add more logs? (y)es or (n)o.");
- return new WaitForInputWorkflowAction();
- } else {
- print("Found ${failingTests.length} status failures. If this number "
- "seems weird or you find tests that seems to pass, check if your "
- "branch is up to date.");
- print("");
- print("It can take some time navigating from tests to tests, since we "
- "modify status files for each fix and have to reload them again.");
- return new Future.value(new NavigateStepWorkflowAction(
- new FixFailingTest(testResult), failingTests));
- }
- }
-
- @override
- Future<WorkflowAction> input(String input) async {
- if (input == "y") {
- return new BackWorkflowAction();
- }
- return null;
- }
-
- @override
- Future<bool> onLeave() {
- return new Future.value(false);
- }
-}
-
-/// Every failing test is converted to a [FailingTest] to allow grouping passing
-/// and failing configurations.
-Future<List<FailingTest>> groupFailingTests(TestResult testResult) async {
- var statusExpectations = new StatusExpectations(testResult);
- await statusExpectations.loadStatusFiles();
- List<TestExpectationResult> results =
- statusExpectations.getTestResultsWithExpectation();
-
- List<TestExpectationResult> failing =
- results.where((x) => !x.isSuccess()).toList();
-
- // We group failing by their name and their new outcome.
- var grouped = <String, List<FailingTest>>{};
-
- // Add all failing tests configurations first.
- for (var test in failing) {
- var key = "${test.result.name}";
- var failingTests = grouped.putIfAbsent(key, () => []);
- var failingTest = failingTests.firstWhere(
- (ft) => ft.result.result == test.result.result,
- orElse: () => null);
- if (failingTest == null) {
- failingTest = new FailingTest(test.result, testResult, [], []);
- failingTests.add(failingTest);
- }
- failingTest.failingConfigurations.add(test.configuration);
- }
-
- // Then add all other configurations, to tighten the bound on the failing
- // configurations.
- for (var result in results) {
- if (result.isSuccess() && grouped.containsKey(result.result.name)) {
- grouped[result.result.name].forEach((failingTest) =>
- failingTest.passingConfigurations.add(result.configuration));
- }
- }
-
- return grouped.values.expand((failingTests) => failingTests).toList()
- ..sort((a, b) => a.result.name.compareTo(b.result.name));
-}
diff --git a/tools/gardening/lib/src/shard_data.dart b/tools/gardening/lib/src/shard_data.dart
deleted file mode 100644
index dcb012f..0000000
--- a/tools/gardening/lib/src/shard_data.dart
+++ /dev/null
@@ -1,473 +0,0 @@
-// Copyright (c) 2017, 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.
-//
-// ----- Generated by create_shard_groups.dart, do not edit! -----
-
-library gardening.shard_data;
-
-const Map<String, List<String>> shardGroups = const {
- 'vm': const <String>[
- 'vm-linux-debug-x64-be',
- 'vm-linux-release-x64-be',
- 'vm-linux-debug-ia32-be',
- 'vm-linux-release-ia32-be',
- 'vm-mac-debug-x64-be',
- 'vm-mac-release-x64-be',
- 'vm-mac-debug-ia32-be',
- 'vm-mac-release-ia32-be',
- 'vm-win-debug-x64-be',
- 'vm-win-release-x64-be',
- 'vm-win-debug-ia32-be',
- 'vm-win-release-ia32-be',
- 'vm-linux-debug-simarm-be',
- 'vm-linux-release-simarm-be',
- 'vm-linux-release-simarm64-be',
- ],
- 'vm-app': const <String>[
- 'app-linux-debug-x64-be',
- 'app-linux-release-x64-be',
- 'app-linux-product-x64-be',
- ],
- 'vm-kernel': const <String>[
- 'vm-kernel-linux-release-x64-be',
- 'vm-kernel-linux-debug-x64-be',
- 'vm-kernel-mac-release-x64-be',
- 'vm-kernel-mac-debug-x64-be',
- 'vm-kernel-precomp-linux-release-x64-1-6-be',
- 'vm-kernel-precomp-linux-release-x64-2-6-be',
- 'vm-kernel-precomp-linux-release-x64-3-6-be',
- 'vm-kernel-precomp-linux-release-x64-4-6-be',
- 'vm-kernel-precomp-linux-release-x64-5-6-be',
- 'vm-kernel-precomp-linux-release-x64-6-6-be',
- 'vm-kernel-precomp-linux-debug-x64-1-8-be',
- 'vm-kernel-precomp-linux-debug-x64-2-8-be',
- 'vm-kernel-precomp-linux-debug-x64-3-8-be',
- 'vm-kernel-precomp-linux-debug-x64-4-8-be',
- 'vm-kernel-precomp-linux-debug-x64-5-8-be',
- 'vm-kernel-precomp-linux-debug-x64-6-8-be',
- 'vm-kernel-precomp-linux-debug-x64-7-8-be',
- 'vm-kernel-precomp-linux-debug-x64-8-8-be',
- ],
- 'vm-misc': const <String>[
- 'cross-arm64-vm-linux-release-be',
- 'vm-linux-release-ia32-optcounter-threshold-be',
- 'vm-linux-release-x64-optcounter-threshold-be',
- 'vm-linux-release-x64-asan-be',
- 'target-arm64-vm-linux-release-be',
- ],
- 'vm-precomp': const <String>[
- 'vm-noopt-simarm64-mac-be',
- 'vm-precomp-android-release-1-3-be',
- 'vm-precomp-android-release-2-3-be',
- 'vm-precomp-android-release-3-3-be',
- 'precomp-linux-debug-x64-1-3-be',
- 'precomp-linux-debug-x64-2-3-be',
- 'precomp-linux-debug-x64-3-3-be',
- 'precomp-linux-product-x64-be',
- 'vm-precomp-win-simarm64-1-4-be',
- 'vm-precomp-win-simarm64-2-4-be',
- 'vm-precomp-win-simarm64-3-4-be',
- 'vm-precomp-win-simarm64-4-4-be',
- ],
- 'vm-product': const <String>[
- 'vm-linux-product-x64-be',
- 'vm-win-product-x64-be',
- 'vm-mac-product-x64-be',
- ],
- 'vm-reload': const <String>[
- 'vm-linux-debug-x64-reload-be',
- 'vm-linux-debug-x64-reload-rollback-be',
- 'vm-linux-release-x64-reload-be',
- 'vm-linux-release-x64-reload-rollback-be',
- ],
- 'dart2js-d8-hostchecked': const <String>[
- 'dart2js-linux-d8-hostchecked-unittest-1-5-be',
- 'dart2js-linux-d8-hostchecked-unittest-2-5-be',
- 'dart2js-linux-d8-hostchecked-unittest-3-5-be',
- 'dart2js-linux-d8-hostchecked-unittest-4-5-be',
- 'dart2js-linux-d8-hostchecked-unittest-5-5-be',
- ],
- 'dart2js-d8-minified': const <String>[
- 'dart2js-linux-d8-minified-1-5-be',
- 'dart2js-linux-d8-minified-2-5-be',
- 'dart2js-linux-d8-minified-3-5-be',
- 'dart2js-linux-d8-minified-4-5-be',
- 'dart2js-linux-d8-minified-5-5-be',
- ],
- 'dart2js-jsshell': const <String>[
- 'dart2js-linux-jsshell-1-4-be',
- 'dart2js-linux-jsshell-2-4-be',
- 'dart2js-linux-jsshell-3-4-be',
- 'dart2js-linux-jsshell-4-4-be',
- ],
- 'analyzer': const <String>[
- 'analyze-linux-be',
- 'analyzer-mac10.11-release-be',
- 'analyzer-linux-release-be',
- 'analyzer-win7-release-be',
- 'analyzer-mac10.11-release-strong-be',
- 'analyzer-linux-release-strong-be',
- 'analyzer-win7-release-strong-be',
- ],
- 'dart-sdk': const <String>[
- 'dart-sdk-linux-be',
- 'dart-sdk-windows-be',
- 'dart-sdk-mac-be',
- ],
- 'ddc': const <String>[
- 'ddc-linux-release-be',
- 'ddc-mac-release-be',
- 'ddc-win-release-be',
- ],
- 'dart2js-linux': const <String>[
- 'dart2js-linux-chromeff-1-4-be',
- 'dart2js-linux-chromeff-2-4-be',
- 'dart2js-linux-chromeff-3-4-be',
- 'dart2js-linux-chromeff-4-4-be',
- ],
- 'chrome': const <String>[
- 'dart2js-linux-chrome-csp-minified-be',
- 'dart2js-mac10.11-chrome-be',
- ],
- 'safari': const <String>[
- 'dart2js-mac10.11-safari-1-3-be',
- 'dart2js-mac10.11-safari-2-3-be',
- 'dart2js-mac10.11-safari-3-3-be',
- ],
- 'dart2js-windows': const <String>[
- 'dart2js-win8-ie11-1-4-be',
- 'dart2js-win8-ie11-2-4-be',
- 'dart2js-win8-ie11-3-4-be',
- 'dart2js-win8-ie11-4-4-be',
- 'dart2js-win7-chrome-1-4-be',
- 'dart2js-win7-chrome-2-4-be',
- 'dart2js-win7-chrome-3-4-be',
- 'dart2js-win7-chrome-4-4-be',
- 'dart2js-win7-ie11ff-1-4-be',
- 'dart2js-win7-ie11ff-2-4-be',
- 'dart2js-win7-ie11ff-3-4-be',
- 'dart2js-win7-ie11ff-4-4-be',
- ],
- 'pub-pkg': const <String>[
- 'pkg-mac10.11-release-be',
- 'pkg-linux-release-be',
- 'pkg-win7-release-be',
- ],
- 'misc': const <String>[
- 'versionchecker-linux-be',
- 'debianpackage-linux-be',
- ],
- 'vm-app-dev': const <String>[
- 'app-linux-debug-x64-dev',
- 'app-linux-release-x64-dev',
- 'app-linux-product-x64-dev',
- ],
- 'vm-dev': const <String>[
- 'vm-linux-debug-x64-dev',
- 'vm-linux-release-x64-dev',
- 'vm-linux-debug-ia32-dev',
- 'vm-linux-release-ia32-dev',
- 'vm-mac-debug-x64-dev',
- 'vm-mac-release-x64-dev',
- 'vm-mac-debug-ia32-dev',
- 'vm-mac-release-ia32-dev',
- 'vm-win-debug-x64-dev',
- 'vm-win-release-x64-dev',
- 'vm-win-debug-ia32-dev',
- 'vm-win-release-ia32-dev',
- 'vm-linux-debug-simarm-dev',
- 'vm-linux-release-simarm-dev',
- 'vm-linux-release-simarm64-dev',
- ],
- 'vm-kernel-dev': const <String>[
- 'vm-kernel-linux-release-x64-dev',
- 'vm-kernel-linux-debug-x64-dev',
- 'vm-kernel-mac-release-x64-dev',
- 'vm-kernel-mac-debug-x64-dev',
- 'vm-kernel-precomp-linux-release-x64-1-6-dev',
- 'vm-kernel-precomp-linux-release-x64-2-6-dev',
- 'vm-kernel-precomp-linux-release-x64-3-6-dev',
- 'vm-kernel-precomp-linux-release-x64-4-6-dev',
- 'vm-kernel-precomp-linux-release-x64-5-6-dev',
- 'vm-kernel-precomp-linux-release-x64-6-6-dev',
- 'vm-kernel-precomp-linux-debug-x64-1-8-dev',
- 'vm-kernel-precomp-linux-debug-x64-2-8-dev',
- 'vm-kernel-precomp-linux-debug-x64-3-8-dev',
- 'vm-kernel-precomp-linux-debug-x64-4-8-dev',
- 'vm-kernel-precomp-linux-debug-x64-5-8-dev',
- 'vm-kernel-precomp-linux-debug-x64-6-8-dev',
- 'vm-kernel-precomp-linux-debug-x64-7-8-dev',
- 'vm-kernel-precomp-linux-debug-x64-8-8-dev',
- ],
- 'vm-misc-dev': const <String>[
- 'cross-arm64-vm-linux-release-dev',
- 'vm-linux-release-ia32-optcounter-threshold-dev',
- 'vm-linux-release-x64-optcounter-threshold-dev',
- 'vm-linux-release-x64-asan-dev',
- 'target-arm64-vm-linux-release-dev',
- ],
- 'vm-precomp-dev': const <String>[
- 'vm-noopt-simarm64-mac-dev',
- 'vm-precomp-android-release-1-3-dev',
- 'vm-precomp-android-release-2-3-dev',
- 'vm-precomp-android-release-3-3-dev',
- 'precomp-linux-debug-x64-1-3-dev',
- 'precomp-linux-debug-x64-2-3-dev',
- 'precomp-linux-debug-x64-3-3-dev',
- 'precomp-linux-product-x64-dev',
- 'vm-precomp-win-simarm64-1-4-dev',
- 'vm-precomp-win-simarm64-2-4-dev',
- 'vm-precomp-win-simarm64-3-4-dev',
- 'vm-precomp-win-simarm64-4-4-dev',
- ],
- 'vm-product-dev': const <String>[
- 'vm-linux-product-x64-dev',
- 'vm-win-product-x64-dev',
- 'vm-mac-product-x64-dev',
- ],
- 'vm-reload-dev': const <String>[
- 'vm-linux-debug-x64-reload-dev',
- 'vm-linux-debug-x64-reload-rollback-dev',
- 'vm-linux-release-x64-reload-dev',
- 'vm-linux-release-x64-reload-rollback-dev',
- ],
- 'dart2js-d8-hostchecked-dev': const <String>[
- 'dart2js-linux-d8-hostchecked-unittest-1-5-dev',
- 'dart2js-linux-d8-hostchecked-unittest-2-5-dev',
- 'dart2js-linux-d8-hostchecked-unittest-3-5-dev',
- 'dart2js-linux-d8-hostchecked-unittest-4-5-dev',
- 'dart2js-linux-d8-hostchecked-unittest-5-5-dev',
- ],
- 'dart2js-d8-minified-dev': const <String>[
- 'dart2js-linux-d8-minified-1-5-dev',
- 'dart2js-linux-d8-minified-2-5-dev',
- 'dart2js-linux-d8-minified-3-5-dev',
- 'dart2js-linux-d8-minified-4-5-dev',
- 'dart2js-linux-d8-minified-5-5-dev',
- ],
- 'dart2js-jsshell-dev': const <String>[
- 'dart2js-linux-jsshell-1-4-dev',
- 'dart2js-linux-jsshell-2-4-dev',
- 'dart2js-linux-jsshell-3-4-dev',
- 'dart2js-linux-jsshell-4-4-dev',
- ],
- 'analyzer-dev': const <String>[
- 'analyze-linux-dev',
- 'analyzer-mac10.11-release-dev',
- 'analyzer-linux-release-dev',
- 'analyzer-win7-release-dev',
- 'analyzer-mac10.11-release-strong-dev',
- 'analyzer-linux-release-strong-dev',
- 'analyzer-win7-release-strong-dev',
- ],
- 'dart-sdk-dev': const <String>[
- 'dart-sdk-linux-dev',
- 'dart-sdk-windows-dev',
- 'dart-sdk-mac-dev',
- ],
- 'ddc-dev': const <String>[
- 'ddc-linux-release-dev',
- 'ddc-mac-release-dev',
- 'ddc-win-release-dev',
- ],
- 'dart2js-linux-dev': const <String>[
- 'dart2js-linux-chromeff-1-4-dev',
- 'dart2js-linux-chromeff-2-4-dev',
- 'dart2js-linux-chromeff-3-4-dev',
- 'dart2js-linux-chromeff-4-4-dev',
- ],
- 'chrome-dev': const <String>[
- 'dart2js-linux-chrome-csp-minified-dev',
- 'dart2js-mac10.11-chrome-dev',
- ],
- 'safari-dev': const <String>[
- 'dart2js-mac10.11-safari-1-3-dev',
- 'dart2js-mac10.11-safari-2-3-dev',
- 'dart2js-mac10.11-safari-3-3-dev',
- ],
- 'dart2js-windows-dev': const <String>[
- 'dart2js-win8-ie11-1-4-dev',
- 'dart2js-win8-ie11-2-4-dev',
- 'dart2js-win8-ie11-3-4-dev',
- 'dart2js-win8-ie11-4-4-dev',
- 'dart2js-win7-chrome-1-4-dev',
- 'dart2js-win7-chrome-2-4-dev',
- 'dart2js-win7-chrome-3-4-dev',
- 'dart2js-win7-chrome-4-4-dev',
- 'dart2js-win7-ie11ff-1-4-dev',
- 'dart2js-win7-ie11ff-2-4-dev',
- 'dart2js-win7-ie11ff-3-4-dev',
- 'dart2js-win7-ie11ff-4-4-dev',
- ],
- 'pub-pkg-dev': const <String>[
- 'pkg-mac10.11-release-dev',
- 'pkg-linux-release-dev',
- 'pkg-win7-release-dev',
- ],
- 'misc-dev': const <String>[
- 'versionchecker-linux-dev',
- 'debianpackage-linux-dev',
- ],
- 'vm-app-stable': const <String>[
- 'app-linux-debug-x64-stable',
- 'app-linux-release-x64-stable',
- 'app-linux-product-x64-stable',
- ],
- 'vm-kernel-stable': const <String>[
- 'vm-kernel-linux-release-x64-stable',
- 'vm-kernel-linux-debug-x64-stable',
- 'vm-kernel-mac-release-x64-stable',
- 'vm-kernel-mac-debug-x64-stable',
- 'vm-kernel-precomp-linux-release-x64-1-6-stable',
- 'vm-kernel-precomp-linux-release-x64-2-6-stable',
- 'vm-kernel-precomp-linux-release-x64-3-6-stable',
- 'vm-kernel-precomp-linux-release-x64-4-6-stable',
- 'vm-kernel-precomp-linux-release-x64-5-6-stable',
- 'vm-kernel-precomp-linux-release-x64-6-6-stable',
- 'vm-kernel-precomp-linux-debug-x64-1-8-stable',
- 'vm-kernel-precomp-linux-debug-x64-2-8-stable',
- 'vm-kernel-precomp-linux-debug-x64-3-8-stable',
- 'vm-kernel-precomp-linux-debug-x64-4-8-stable',
- 'vm-kernel-precomp-linux-debug-x64-5-8-stable',
- 'vm-kernel-precomp-linux-debug-x64-6-8-stable',
- 'vm-kernel-precomp-linux-debug-x64-7-8-stable',
- 'vm-kernel-precomp-linux-debug-x64-8-8-stable',
- ],
- 'vm-misc-stable': const <String>[
- 'cross-arm64-vm-linux-release-stable',
- 'vm-linux-release-ia32-optcounter-threshold-stable',
- 'vm-linux-release-x64-optcounter-threshold-stable',
- 'vm-linux-release-x64-asan-stable',
- 'target-arm64-vm-linux-release-stable',
- ],
- 'vm-precomp-stable': const <String>[
- 'vm-noopt-simarm64-mac-stable',
- 'vm-precomp-android-release-1-3-stable',
- 'vm-precomp-android-release-2-3-stable',
- 'vm-precomp-android-release-3-3-stable',
- 'precomp-linux-debug-x64-1-3-stable',
- 'precomp-linux-debug-x64-2-3-stable',
- 'precomp-linux-debug-x64-3-3-stable',
- 'precomp-linux-product-x64-stable',
- 'vm-precomp-win-simarm64-1-4-stable',
- 'vm-precomp-win-simarm64-2-4-stable',
- 'vm-precomp-win-simarm64-3-4-stable',
- 'vm-precomp-win-simarm64-4-4-stable',
- ],
- 'vm-product-stable': const <String>[
- 'vm-linux-product-x64-stable',
- 'vm-win-product-x64-stable',
- 'vm-mac-product-x64-stable',
- ],
- 'vm-reload-stable': const <String>[
- 'vm-linux-debug-x64-reload-stable',
- 'vm-linux-debug-x64-reload-rollback-stable',
- 'vm-linux-release-x64-reload-stable',
- 'vm-linux-release-x64-reload-rollback-stable',
- ],
- 'vm-stable': const <String>[
- 'vm-linux-debug-x64-stable',
- 'vm-linux-release-x64-stable',
- 'vm-linux-debug-ia32-stable',
- 'vm-linux-release-ia32-stable',
- 'vm-mac-debug-x64-stable',
- 'vm-mac-release-x64-stable',
- 'vm-mac-debug-ia32-stable',
- 'vm-mac-release-ia32-stable',
- 'vm-win-debug-x64-stable',
- 'vm-win-release-x64-stable',
- 'vm-win-debug-ia32-stable',
- 'vm-win-release-ia32-stable',
- 'vm-linux-debug-simarm-stable',
- 'vm-linux-release-simarm-stable',
- 'vm-linux-release-simarm64-stable',
- ],
- 'dart2js-d8-hostchecked-stable': const <String>[
- 'dart2js-linux-d8-hostchecked-unittest-1-5-stable',
- 'dart2js-linux-d8-hostchecked-unittest-2-5-stable',
- 'dart2js-linux-d8-hostchecked-unittest-3-5-stable',
- 'dart2js-linux-d8-hostchecked-unittest-4-5-stable',
- 'dart2js-linux-d8-hostchecked-unittest-5-5-stable',
- ],
- 'dart2js-d8-minified-stable': const <String>[
- 'dart2js-linux-d8-minified-1-5-stable',
- 'dart2js-linux-d8-minified-2-5-stable',
- 'dart2js-linux-d8-minified-3-5-stable',
- 'dart2js-linux-d8-minified-4-5-stable',
- 'dart2js-linux-d8-minified-5-5-stable',
- ],
- 'dart2js-jsshell-stable': const <String>[
- 'dart2js-linux-jsshell-1-4-stable',
- 'dart2js-linux-jsshell-2-4-stable',
- 'dart2js-linux-jsshell-3-4-stable',
- 'dart2js-linux-jsshell-4-4-stable',
- ],
- 'analyzer-stable': const <String>[
- 'analyze-linux-stable',
- 'analyzer-mac10.11-release-stable',
- 'analyzer-linux-release-stable',
- 'analyzer-win7-release-stable',
- 'analyzer-mac10.11-release-strong-stable',
- 'analyzer-linux-release-strong-stable',
- 'analyzer-win7-release-strong-stable',
- ],
- 'dart-sdk-stable': const <String>[
- 'dart-sdk-linux-stable',
- 'dart-sdk-windows-stable',
- 'dart-sdk-mac-stable',
- ],
- 'ddc-stable': const <String>[
- 'ddc-linux-release-stable',
- 'ddc-mac-release-stable',
- 'ddc-win-release-stable',
- ],
- 'dart2js-linux-stable': const <String>[
- 'dart2js-linux-chromeff-1-4-stable',
- 'dart2js-linux-chromeff-2-4-stable',
- 'dart2js-linux-chromeff-3-4-stable',
- 'dart2js-linux-chromeff-4-4-stable',
- ],
- 'chrome-stable': const <String>[
- 'dart2js-linux-chrome-csp-minified-stable',
- 'dart2js-mac10.11-chrome-stable',
- ],
- 'safari-stable': const <String>[
- 'dart2js-mac10.11-safari-1-3-stable',
- 'dart2js-mac10.11-safari-2-3-stable',
- 'dart2js-mac10.11-safari-3-3-stable',
- ],
- 'dart2js-windows-stable': const <String>[
- 'dart2js-win8-ie11-1-4-stable',
- 'dart2js-win8-ie11-2-4-stable',
- 'dart2js-win8-ie11-3-4-stable',
- 'dart2js-win8-ie11-4-4-stable',
- 'dart2js-win7-chrome-1-4-stable',
- 'dart2js-win7-chrome-2-4-stable',
- 'dart2js-win7-chrome-3-4-stable',
- 'dart2js-win7-chrome-4-4-stable',
- 'dart2js-win7-ie11ff-1-4-stable',
- 'dart2js-win7-ie11ff-2-4-stable',
- 'dart2js-win7-ie11ff-3-4-stable',
- 'dart2js-win7-ie11ff-4-4-stable',
- ],
- 'pub-pkg-stable': const <String>[
- 'pkg-mac10.11-release-stable',
- 'pkg-linux-release-stable',
- 'pkg-win7-release-stable',
- ],
- 'misc-stable': const <String>[
- 'versionchecker-linux-stable',
- 'debianpackage-linux-stable',
- ],
- 'dartium-inc-integration': const <String>[
- 'dartium-linux-x64-inc-integration',
- 'dartium-mac-x64-inc-integration',
- 'dartium-win-ia32-inc-integration',
- ],
- 'dartium-full-integration': const <String>[
- 'dartium-linux-x64-integration',
- 'dartium-mac-x64-integration',
- 'dartium-win-ia32-integration',
- ],
-};
diff --git a/tools/gardening/lib/src/try.dart b/tools/gardening/lib/src/try.dart
deleted file mode 100644
index 32b47f2..0000000
--- a/tools/gardening/lib/src/try.dart
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright (c) 2017, 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.
-
-/// [Try] is similar to Haskell monad, where
-/// a computation may throw an exception.
-/// There is no checking of passing null into
-/// the value, so be mindful.
-class Try<T> {
- final T _val;
- final StackTrace _stackTrace;
- final dynamic _err;
-
- Try.from(this._val)
- : _err = null,
- _stackTrace = null;
-
- Try.fail(this._err, this._stackTrace) : _val = null;
-
- Try<S> bind<S>(S f(T x)) {
- if (_err != null) {
- return new Try.fail(_err, _stackTrace);
- }
- try {
- return new Try<S>.from(f(_val));
- } catch (ex, stackTrace) {
- return new Try<S>.fail(ex, stackTrace);
- }
- }
-
- void fold(void caseErr(dynamic ex, StackTrace st), void caseVal(T x)) {
- if (_err != null) {
- caseErr(_err, _stackTrace);
- } else {
- caseVal(_val);
- }
- }
-
- bool get isError => _err != null;
-
- Error get error => _err;
- StackTrace get stackTrace => _stackTrace;
-
- T get value => _val;
-
- T getOrDefault(T defval) => _err != null ? defval : _val;
-}
-
-Try<T> tryStart<T>(T action()) {
- return new Try<int>.from(0).bind<T>((dummy) => action());
-}
diff --git a/tools/gardening/lib/src/util.dart b/tools/gardening/lib/src/util.dart
deleted file mode 100644
index 0cee8c7..0000000
--- a/tools/gardening/lib/src/util.dart
+++ /dev/null
@@ -1,351 +0,0 @@
-// Copyright (c) 2017, 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 'dart:convert';
-import 'dart:io';
-
-import 'package:args/args.dart';
-import 'results/result_json_models.dart';
-
-import 'cache.dart';
-import 'cache_new.dart';
-import 'logger.dart';
-
-/// Checks that [haystack] contains substring [needle], case insensitive.
-/// Throws an exception if either parameter is `null`.
-bool containsIgnoreCase(String haystack, String needle) {
- if (haystack == null) {
- throw "Unexpected null as the first paramter value of containsIgnoreCase";
- }
- if (needle == null) {
- throw "Unexpected null as the second parameter value of containsIgnoreCase";
- }
- return haystack.toLowerCase().contains(needle.toLowerCase());
-}
-
-/// Split [text] using [infixes] as infix markers.
-List<String> split(String text, List<String> infixes) {
- List<String> result = <String>[];
- int start = 0;
- for (String infix in infixes) {
- int index = text.indexOf(infix, start);
- if (index == -1)
- throw "'$infix' not found in '$text' from offset ${start}.";
- result.add(text.substring(start, index));
- start = index + infix.length;
- }
- result.add(text.substring(start));
- return result;
-}
-
-/// Pad [text] with spaces to the right to fit [length].
-String padRight(String text, int length) {
- if (text.length < length) return '${text}${' ' * (length - text.length)}';
- return text;
-}
-
-/// Pad [text] with spaces to the left to fit [length].
-String padLeft(String text, int length) {
- if (text.length < length) return '${' ' * (length - text.length)}${text}';
- return text;
-}
-
-bool LOG = const bool.fromEnvironment('LOG', defaultValue: false);
-
-void log(Object text) {
- if (LOG) print(text);
-}
-
-Logger createLogger({bool verbose: false}) {
- return new StdOutLogger(verbose ? Level.debug : Level.info);
-}
-
-CreateCacheFunction createCacheFunction(Logger logger,
- {bool disableCache: false}) {
- return disableCache
- ? noCache()
- : initCache(Uri.base.resolve('temp/gardening-cache/'), logger);
-}
-
-class HttpException implements Exception {
- final Uri uri;
- final int statusCode;
-
- HttpException(this.uri, this.statusCode);
-
- String toString() => '$uri: $statusCode';
-}
-
-/// Reads the content of [uri] as text.
-Future<String> readUriAsText(
- HttpClient client, Uri uri, Duration timeout) async {
- HttpClientRequest request = await client.getUrl(uri);
- HttpClientResponse response = await request.close();
- if (response.statusCode != 200) {
- response.drain();
- throw new HttpException(uri, response.statusCode);
- }
- if (timeout != null) {
- return response
- .timeout(timeout)
- .cast<List<int>>()
- .transform(utf8.decoder)
- .join();
- } else {
- return response.cast<List<int>>().transform(utf8.decoder).join();
- }
-}
-
-class Flags {
- static const String cache = 'cache';
- static const String commit = 'commit';
- static const String help = 'help';
- static const String logdog = 'logdog';
- static const String noCache = 'no-cache';
- static const String verbose = 'verbose';
-}
-
-ArgParser createArgParser() {
- ArgParser argParser = new ArgParser(allowTrailingOptions: true);
- argParser.addFlag(Flags.help, help: "Help");
- argParser.addFlag(Flags.verbose,
- abbr: 'v', negatable: false, help: "Turn on logging output.");
- argParser.addFlag(Flags.noCache, help: "Disable caching.");
- argParser.addOption(Flags.cache,
- help: "Use <dir> for caching test output.\n"
- "Defaults to 'temp/gardening-cache/'.");
- argParser.addFlag(Flags.logdog,
- negatable: true,
- defaultsTo: true,
- help: "Pull test results from logdog.");
- return argParser;
-}
-
-void processArgResults(ArgResults argResults) {
- if (argResults[Flags.verbose]) {
- LOG = true;
- }
- if (argResults[Flags.cache] != null) {
- cache.base = Uri.base.resolve('${argResults[Flags.cache]}/');
- }
- if (argResults[Flags.noCache]) {
- cache.base = null;
- }
-}
-
-/// Strips un-wanted characters from string [category] from CBE json.
-String sanitizeCategory(String category) {
- var reg = new RegExp(r"^[0-9]+(.*)\|all$");
- var match = reg.firstMatch(category);
- return match != null ? match.group(1) : category;
-}
-
-/// Returns a function (dynamic, StackTrace) -> Void, useful for printing
-/// exceptions.
-exceptionPrint(String message) {
- return (dynamic ex, {StackTrace st}) {
- if (message != null) {
- print(message);
- }
- print(ex);
- if (st != null) {
- print(st);
- } else if (ex is Error) {
- print(ex.stackTrace);
- }
- };
-}
-
-/// Zips two iterables to a new list, by calling [f]. [second] has to be at
-/// least the same length as [first].
-Iterable<T> zipWith<T, X, Y>(
- Iterable<X> first, Iterable<Y> second, T f(X x, Y y)) sync* {
- var yIterator = second.iterator;
- for (var x in first) {
- if (!yIterator.moveNext()) {
- throw new Exception("second have to be at least the same length of xs.");
- }
- yield f(x, yIterator.current);
- }
-}
-
-typedef T ErrorLogger<T>(error, StackTrace s);
-
-/// errorLogger with a return-value, which can be used for onError and
-/// catchError in futures.
-ErrorLogger<T> errorLogger<T>(Logger logger, String message, T returnValue) {
- return (dynamic e, StackTrace s) {
- // TODO(mkroghj,johnniwinther): Pass [s] to [Logger.error] when in developer
- // mode.
- logger.error(message, e);
- return returnValue;
- };
-}
-
-/// Iterates over [items] and spawns [concurrent] x futures, by calling [f].d
-/// When a future completes it will try to take the next in the list. The
-/// function will complete when all items has been processed.
-Future<Iterable<S>> waitWithThrottle<T, S>(
- Iterable items, int concurrent, Future<S> f(T item)) async {
- // Listify the items, to make sure length is constant.
- var inputs = items.toList();
- List<S> results = new List<S>(inputs.length);
- var current = 0;
-
- await Future.wait(new Iterable.generate(
- concurrent,
- (int _) => Future.doWhile(() async {
- if (current >= inputs.length) {
- return false;
- }
- int index = current++;
- results[index] = await f(inputs[index]);
- return true;
- })));
-
- return results;
-}
-
-/// Iterates over [items] and spawns [concurrent] x futures, by calling [f].
-/// When a future completes it will try to take the next in the list. The
-/// function will complete when all items has been processed.
-Future<Iterable<S>> waitWithThrottle2<T, S>(
- Iterable items, int concurrent, Future<S> f(T item)) async {
- // Listify the items, to make sure length is constant.
- var remainingList = items.toList();
- List<S> resultList = new List<S>(remainingList.length);
- var finger = 0;
- var doWork = (continuation) async {
- if (finger >= remainingList.length) {
- return;
- }
- int thisFinger = finger++;
- resultList[thisFinger] = await f(remainingList[thisFinger]);
- await continuation(continuation);
- };
- await Future.wait(new Iterable.generate(concurrent, (_) => doWork(doWork)));
- return resultList;
-}
-
-/// Similar to Iterable.where, except, the function [f] returns a future boolean.
-Future<Iterable<T>> futureWhere<T>(
- Iterable<T> items, Future<bool> f(T item)) async {
- List<bool> results =
- (await Future.wait(items.map((item) => f(item)))).toList();
- var index = 0;
- return items.where((item) => results[index++]).toList();
-}
-
-/// Run the python [script] with the provided [args].
-Future<ProcessResult> runPython(String script, List<String> args) {
- if (Platform.isWindows) {
- args = []
- ..add(script)
- ..addAll(args);
- script = 'python.exe';
- }
- return Process.run(script, args);
-}
-
-/// Regular expression matches a Linux or Windows new line character.
-final RegExp newLine = new RegExp(r'\r\n|\n');
-
-/// Determine if arguments is a CQ url or commit-number + patchset.
-bool isCqInput(List<String> arguments) {
- if (arguments.length == 1) {
- return isSwarmingTaskUrl(arguments.first);
- }
- if (arguments.length == 2) {
- return areNumbers(arguments);
- }
- return false;
-}
-
-const String BUILDER_PROJECT = "chromium";
-
-/// [PathHelper] is a utility class holding information about static paths.
-class PathHelper {
- static String testPyPath() {
- var root = sdkRepositoryRoot();
- return "${root}/tools/test.py";
- }
-
- static String _sdkRepositoryRoot;
- static String sdkRepositoryRoot() {
- return _sdkRepositoryRoot ??=
- _findRoot(new Directory.fromUri(Platform.script));
- }
-
- static String _findRoot(Directory current) {
- if (current.path.endsWith("sdk")) {
- return current.path;
- }
- if (current.parent == null) {
- print("Could not find the dart sdk folder. "
- "Please run the tool in the root of the dart-sdk local repository.");
- exit(1);
- }
- return _findRoot(current.parent);
- }
-}
-
-/// Tests if all strings passed in [stringsToTest] are integers.
-bool areNumbers(Iterable<String> stringsToTest) {
- RegExp isNumberRegExp = new RegExp(r"^\d+$");
- return stringsToTest
- .every((string) => isNumberRegExp.firstMatch(string) != null);
-}
-
-bool isNumber(String stringToTest) {
- bool succeeded = true;
- int.parse(stringToTest, onError: (String) {
- succeeded = false;
- return 0;
- });
- return succeeded;
-}
-
-/// Gets if the [url] is a swarming task url.
-bool isSwarmingTaskUrl(String url) {
- return url.startsWith(new RegExp(r"https:\/\/.*\/swarming\/task\/"));
-}
-
-/// Gets the swarming task id from the [url].
-String getSwarmingTaskId(String url) {
- RegExp swarmingTaskIdInPathRegExp =
- new RegExp(r"https:\/\/.*\/swarming\/task\/(.*)");
- url = url?.split("?")[0];
- Match swarmingTaskIdMatch = swarmingTaskIdInPathRegExp.firstMatch(url);
- if (swarmingTaskIdMatch == null) {
- return null;
- }
- return swarmingTaskIdMatch.group(1);
-}
-
-/// Returns the test-suite for [name].
-String getSuiteNameForTest(String name) {
- var reg = new RegExp(r"^(.*?)\/.*$");
- var match = reg.firstMatch(name);
- if (match == null) {
- return null;
- }
- return match.group(1);
-}
-
-/// Returns the qualified name (what to use in status-files) for a test with
-/// [name].
-String getQualifiedNameForTest(String name) {
- if (name.startsWith("cc/")) {
- return name;
- }
- return name.substring(name.indexOf("/") + 1);
-}
-
-/// Returns the reproduction command for test.py based on the [configuration]
-/// and [name].
-String getReproductionCommand(Configuration configuration, String name) {
- var allArgs = configuration.toArgs(includeSelectors: false)..add(name);
- return "${PathHelper.testPyPath()} ${allArgs.join(' ')}";
-}
diff --git a/tools/gardening/lib/src/workflow.dart b/tools/gardening/lib/src/workflow.dart
deleted file mode 100644
index 434572e..0000000
--- a/tools/gardening/lib/src/workflow.dart
+++ /dev/null
@@ -1,139 +0,0 @@
-// Copyright (c) 2017, 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:io';
-import 'dart:async';
-
-/// An abstract class describing a workflow action.
-abstract class WorkflowAction {}
-
-/// [WaitForInputWorkflowAction] signals to the workflow engine that the current
-/// step is waiting for user input.
-class WaitForInputWorkflowAction extends WorkflowAction {}
-
-/// [NavigateStepWorkflowAction] signals to the workflow engine that a
-/// transition to a new step [nextStep] should happen. It is possible to send
-/// state along by using the [payload].
-class NavigateStepWorkflowAction<T> extends WorkflowAction {
- WorkflowStep nextStep;
- T payload;
- NavigateStepWorkflowAction(this.nextStep, this.payload);
-}
-
-/// [BackWorkflowAction] signals to the workflow engine that it should pop the
-/// current step and return focus to the previous step.
-class BackWorkflowAction extends WorkflowAction {}
-
-/// Base class for a single step in a larger [Workflow].
-abstract class WorkflowStep<T> {
- /// The [onShow] is called whenever the step receives focus from the workflow
- /// engine. This happens both when transitioning and when going back. When
- /// going back [payload] is null.
- Future<WorkflowAction> onShow(T payload);
-
- /// The [onLeave] is called on the current step, before the workflow engine
- /// transitions to a new step. The transition can be cancelled by returning
- /// true.
- Future<bool> onLeave();
-
- /// Input received by the workflow engine. The step should return what
- /// workflow action to take after processing the input.
- Future<WorkflowAction> input(String input);
-}
-
-/// [Workflow] is a class that makes it easy to create workflows. A workflow is
-/// a collection of steps, with transitions between the steps to complete the
-/// workflow. Viewed steps are kept track of by a stack, which makes it easy for
-/// steps to transition back.
-///
-/// All access to navigation is hidden, thereby making steps unaware of the
-/// workflow it is in. Navigation can only be changed by workflow actions.
-class Workflow {
- final List<WorkflowStep> _lastSteps = [];
-
- WorkflowStep get currentStep {
- return _lastSteps.length > 0 ? _lastSteps.last : null;
- }
-
- /// Start the workflow by providing the first step to show.
- Future start(WorkflowStep firstStep) {
- return _navigate(firstStep, null);
- }
-
- /// Handling the leaving of a step and asks the step if it is ok to leave.
- Future _navigateLeave() async {
- if (currentStep != null) {
- var result = await currentStep.onLeave();
- if (result == true) {
- // Cancel the navigation. We should wait for input.
- return _handleWorkflowAction(new WaitForInputWorkflowAction());
- }
- }
- }
-
- /// Handling the navigation to a step and adding the new step as the current.
- Future _navigate<T>(WorkflowStep navigateTo, T payload) async {
- await _navigateLeave();
- _lastSteps.add(navigateTo);
- await _handleWorkflowAction(await currentStep.onShow(payload));
- }
-
- /// Handling the workflow actions a feedback recursive loop.
- Future _handleWorkflowAction(WorkflowAction action) async {
- if (action is WaitForInputWorkflowAction) {
- String input = stdin.readLineSync();
- return _handleWorkflowAction(await currentStep.input(input));
- } else if (action is NavigateStepWorkflowAction) {
- return _navigate(action.nextStep, action.payload);
- } else if (action is BackWorkflowAction) {
- await _navigateLeave();
- _lastSteps.removeLast();
- var lastStep = _lastSteps.last;
- while (_lastSteps.isNotEmpty && lastStep is ComputeStep) {
- lastStep = _lastSteps.removeLast();
- }
- if (lastStep != null) {
- return _handleWorkflowAction(await lastStep.onShow(null));
- }
- }
- }
-}
-
-/// [ComputeStepPayload] is the payload for doing [ComputeStep].
-class ComputeStepPayload {
- final Future action;
- final String message;
- final WorkflowStep completedStep;
- ComputeStepPayload(this.action, this.message, this.completedStep);
-}
-
-/// [ComputeStep] is similar to a loading screen, showing a dot every second
-/// until the computation in the future [action] in the payload is completed.
-/// When completed, it will ask for a transition by returning
-/// [NavigateStepWorkflowAction].
-class ComputeStep extends WorkflowStep<ComputeStepPayload> {
- @override
- Future<bool> onLeave() async {
- // Do nothing.
- return false;
- }
-
- @override
- Future<WorkflowAction> onShow(ComputeStepPayload payload) async {
- stdout.write(payload.message);
- var timer = new Timer(new Duration(seconds: 1), () {
- stdout.write(".");
- });
- var result = await payload.action;
- timer.cancel();
- stdout.write("\n");
- return new NavigateStepWorkflowAction(payload.completedStep, result);
- }
-
- @override
- Future<WorkflowAction> input(String input) {
- // Do nothing.
- return null;
- }
-}
diff --git a/tools/gardening/pubspec.yaml b/tools/gardening/pubspec.yaml
deleted file mode 100644
index dc6fcca..0000000
--- a/tools/gardening/pubspec.yaml
+++ /dev/null
@@ -1,16 +0,0 @@
-# This pubspec is currently mainly used to make it easier to develop on the
-# gardening by making it a package.
-name: gardening
-#version: do-not-upload
-environment:
- sdk: "^2.7.0"
-dependencies:
- args:
- http:
- path:
- status_file:
- path: ../../pkg/status_file/
- expect:
- path: ../../pkg/expect/
- testing:
- path: ../../pkg/testing/
diff --git a/tools/gardening/test/bot_test.dart b/tools/gardening/test/bot_test.dart
deleted file mode 100644
index 43bb243..0000000
--- a/tools/gardening/test/bot_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2017, 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 'package:expect/expect.dart';
-import 'package:gardening/src/bot.dart';
-import 'package:gardening/src/buildbot_data.dart';
-import 'package:gardening/src/buildbot_structures.dart';
-import 'test_client.dart';
-
-main() async {
- Bot bot = new Bot.internal(new DummyClient());
- List<BuildUri> buildUriList = buildGroups
- .firstWhere((g) => g.groupName == 'dart2js-linux')
- .createUris(bot.mostRecentBuildNumber);
- Expect.isTrue(buildUriList.length > Bot.maxParallel);
- List<BuildResult> buildResults = await bot.readResults(buildUriList);
- Expect.equals(buildUriList.length, buildResults.length);
- bot.close();
-}
diff --git a/tools/gardening/test/buildbot_data_test.dart b/tools/gardening/test/buildbot_data_test.dart
deleted file mode 100644
index 3f6788a..0000000
--- a/tools/gardening/test/buildbot_data_test.dart
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright (c) 2017, 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.
-
-/// Checks that all active test steps in [buildGroups] can be read from http.
-
-import 'package:args/args.dart';
-import 'package:expect/expect.dart';
-import 'package:gardening/src/bot.dart';
-import 'package:gardening/src/buildbot_data.dart';
-import 'package:gardening/src/buildbot_structures.dart';
-import 'package:gardening/src/util.dart';
-
-main(List<String> args) async {
- ArgParser argParser = createArgParser();
- ArgResults argResults = argParser.parse(args);
- processArgResults(argResults);
- bool useLogdog = argResults['logdog'];
-
- Bot bot = new Bot(logdog: useLogdog);
-
- List<String> failingUris = <String>[];
- List<String> missingBuildNumbers = <String>[];
- List<BuildUri> buildUris = <BuildUri>[];
- for (BuildGroup buildGroup in buildGroups) {
- for (BuildSubgroup buildSubgroup in buildGroup.subgroups) {
- if (!useLogdog && !buildSubgroup.isActive) continue;
- buildUris.addAll(buildSubgroup.createUris(bot.mostRecentBuildNumber));
- }
- }
- List<BuildResult> buildResults = await bot.readResults(buildUris);
- for (int index = 0; index < buildResults.length; index++) {
- BuildUri buildUri = buildUris[index];
- BuildResult result = buildResults[index];
- if (result == null) {
- failingUris.add('$buildUri');
- } else {
- if (result.buildNumber == null) {
- missingBuildNumbers.add('$buildUri');
- }
- Expect.isNotNull(result.buildRevision, "No build revision in $buildUri");
- }
- }
- // TODO(johnniwinther): Find out why these steps cannot be read.
- Expect.setEquals([
- '/builders/pkg-mac10.11-release-be/builds/-1/'
- 'steps/third_party pkg_tested unit tests',
- '/builders/pkg-linux-release-be/builds/-1/steps/'
- 'third_party pkg_tested unit tests',
- '/builders/pkg-win7-release-be/builds/-1/steps/'
- 'third_party pkg_tested unit tests',
- ], failingUris,
- "Unexpected failing buildbot uris:\n ${failingUris.join('\n ')}");
-
- Expect.setEquals(
- [],
- missingBuildNumbers,
- "Unexpected missing build numbers in:\n "
- "${missingBuildNumbers.join('\n ')}");
-
- bot.close();
-}
diff --git a/tools/gardening/test/compare_failures_test.dart b/tools/gardening/test/compare_failures_test.dart
deleted file mode 100644
index d4a3860..0000000
--- a/tools/gardening/test/compare_failures_test.dart
+++ /dev/null
@@ -1,122 +0,0 @@
-// Copyright (c) 2017, 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.
-
-/// Compares the test log of a build step with previous builds.
-///
-/// Use this to detect flakiness of failures, especially timeouts.
-
-import 'dart:async';
-
-import 'package:args/args.dart';
-import 'package:expect/expect.dart';
-import 'package:gardening/src/bot.dart';
-import 'package:gardening/src/buildbot_structures.dart';
-import 'package:gardening/src/client.dart';
-import 'package:gardening/src/compare_failures_impl.dart';
-import 'package:gardening/src/util.dart';
-
-import 'test_client.dart';
-
-main(List<String> args) async {
- ArgParser argParser = createArgParser();
- argParser.addFlag('force', abbr: 'f');
- ArgResults argResults = argParser.parse(args);
- processArgResults(argResults);
-
- await runSingleTests(argResults);
- await runGroupTests(argResults);
-}
-
-Future runGroupTests(ArgResults argResults) async {
- BuildbotClient client = argResults['logdog']
- ? new LogdogBuildbotClient()
- : new HttpBuildbotClient();
- Bot bot = new Bot.internal(client);
- await runGroupTest(bot, 'vm-kernel');
- bot.close();
-}
-
-Future runGroupTest(Bot bot, String testGroup) async {
- print('Testing group compare-failures: $testGroup runCount=1');
- Map<BuildUri, List<BuildResult>> buildResults =
- await loadBuildResults(bot, [testGroup], runCount: 1);
- print('- checking results for ${buildResults.keys}');
- buildResults.forEach((BuildUri buildUri, List<BuildResult> results) {
- Expect.isTrue(buildUri.buildNumber < 0,
- "Expected relative build number for $buildUri");
- for (BuildResult result in results) {
- Expect.isTrue(
- result.buildUri.buildNumber > 0,
- "Expected absolute build number for build result "
- "${result.buildUri}.");
- for (TestFailure failure in result.failures) {
- Expect.equals(
- result.buildUri.buildNumber,
- failure.uri.buildNumber,
- "Expected absolute build number for test failure "
- "'${failure.id}' from ${failure.uri}.");
- }
- }
- });
-}
-
-Future runSingleTests(ArgResults argResults) async {
- bool force = argResults['force'];
-
- BuildbotClient client = argResults['logdog']
- ? new LogdogBuildbotClient()
- : new TestClient(force: force);
- Bot bot = new Bot.internal(client);
-
- await runSingleTest(
- bot,
- 'https://build.chromium.org/p/client.dart/builders/'
- 'vm-kernel-linux-debug-x64-be/builds/1884/steps/'
- 'vm%20tests/logs/stdio',
- 1,
- {
- 1884: {
- 'dartk-vm debug_x64 corelib_2/map_keys2_test': 'RuntimeError/Pass',
- },
- 1883: {
- 'dartk-vm debug_x64 corelib_2/map_keys2_test': 'RuntimeError/Pass',
- 'dartk-vm debug_x64 corelib_2/package_resource_test':
- 'Pass/CompileTimeError',
- },
- });
-
- bot.close();
-}
-
-testSingleResults(
- Map<int, Map<String, String>> expected, List<BuildResult> results) {
- Expect.equals(expected.length, results.length);
- int i = 0;
- expected.forEach((int buildNumber, Map<String, String> failures) {
- BuildResult result = results[i++];
- Expect.equals(failures.length, result.errors.length);
- failures.forEach((String testName, String resultText) {
- List<String> nameParts = split(testName, [' ', ' ']);
- TestConfiguration id =
- new TestConfiguration(nameParts[0], nameParts[1], nameParts[2]);
- List<String> resultParts = split(resultText, ['/']);
- TestFailure failure = result.errors.singleWhere((t) => t.id == id);
- Expect.equals(failure.expected, resultParts[0]);
- Expect.equals(failure.actual, resultParts[1]);
- });
- });
-}
-
-Future runSingleTest(Bot bot, String testUri, int runCount,
- Map<int, Map<String, String>> expectedResult) async {
- print('Testing single compare-failures: $testUri runCount=$runCount');
- Map<BuildUri, List<BuildResult>> buildResults =
- await loadBuildResults(bot, [testUri], runCount: runCount);
- print('- checking results for ${buildResults.keys}');
- if (LOG) {
- printBuildResultsSummary(buildResults, [testUri]);
- }
- Expect.equals(1, buildResults.length);
- testSingleResults(expectedResult, buildResults.values.first);
-}
diff --git a/tools/gardening/test/console_table_tests.dart b/tools/gardening/test/console_table_tests.dart
deleted file mode 100644
index f832ff5..0000000
--- a/tools/gardening/test/console_table_tests.dart
+++ /dev/null
@@ -1,331 +0,0 @@
-// Copyright (c) 2017, 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 'package:gardening/src/console_table.dart';
-import 'package:expect/expect.dart';
-
-void main() {
- testEmpty();
- testHeaderSingle();
- testHeaderSingleRightAlign();
- testHeaderSingleCenter();
- testColumnWrap();
- testColumnWrapAllAlignments();
- testRowWrapAllAlignments();
- testRowWrapAllAlignmentsWithDividers();
- testTruncateAllAlignmentsWithDividers();
-}
-
-void testEmpty() {
- var printTable = new ConsoleTable();
- StringBuffer buffer = new StringBuffer();
- printTable.printToSink([], buffer);
- Expect.equals("", buffer.toString());
-}
-
-void testHeaderSingle() {
- var printTable = new ConsoleTable()
- ..addHeader(new Column("test 1"), (item) => "");
- StringBuffer buffer = new StringBuffer();
- printTable.printToSink([], buffer);
- String expected =
- "test 1 \n"
- "--------------------------------------------------------------------------------\n";
- Expect.equals(expected, buffer.toString());
-}
-
-void testHeaderSingleRightAlign() {
- var printTable = new ConsoleTable()
- ..addHeader(new Column("test 1", alignment: ALIGNMENT.right), (item) => "");
- StringBuffer buffer = new StringBuffer();
- printTable.printToSink([], buffer);
- String expected =
- " test 1\n"
- "--------------------------------------------------------------------------------\n";
- Expect.equals(expected, buffer.toString());
-}
-
-void testHeaderSingleCenter() {
- var printTable = new ConsoleTable()
- ..addHeader(
- new Column("test 1", alignment: ALIGNMENT.center), (item) => "");
- StringBuffer buffer = new StringBuffer();
- printTable.printToSink([], buffer);
- String expected =
- " test 1 \n"
- "--------------------------------------------------------------------------------\n";
- Expect.equals(expected, buffer.toString());
-}
-
-void testColumnWrap() {
- var printTable = new ConsoleTable()
- ..addHeader(
- new Column(
- "This is a very-very-long text_that should fit in a smallersmaller window",
- alignment: ALIGNMENT.left,
- width: 10),
- (item) => "")
- ..addHeader(new Column("this should not wrap", alignment: ALIGNMENT.left),
- (item) => "");
- StringBuffer buffer = new StringBuffer();
- printTable.printToSink([], buffer);
-
- var expected =
- "This is a \n"
- "very-very- \n"
- "long \n"
- "text_that \n"
- "should fit \n"
- "in a \n"
- "smallersma \n"
- "ller \n"
- "window this should not wrap \n"
- "--------------------------------------------------------------------------------\n";
- Expect.equals(expected, buffer.toString());
-}
-
-void testColumnWrapAllAlignments() {
- var printTable = new ConsoleTable()
- ..addHeader(
- new Column("This is a very long text that should fit in a small window",
- alignment: ALIGNMENT.left, width: 10),
- (item) => "")
- ..addHeader(
- new Column("This is a not as long a text",
- alignment: ALIGNMENT.center, width: 10),
- (item) => "")
- ..addHeader(
- new Column("this is a short text",
- alignment: ALIGNMENT.right, width: 10),
- (item) => "")
- ..addHeader(new Column("this should not wrap", alignment: ALIGNMENT.left),
- (item) => "");
-
- StringBuffer buffer = new StringBuffer();
- printTable.printToSink([], buffer);
-
- var expected =
- "This is a \n"
- "very long \n"
- "text that This is a \n"
- "should fit not as \n"
- "in a small long a this is a \n"
- "window text short text this should not wrap \n"
- "--------------------------------------------------------------------------------\n";
- Expect.equals(expected, buffer.toString());
-}
-
-void testRowWrapAllAlignments() {
- var printTable = new ConsoleTable()
- ..addHeader(
- new Column("This is a very long text that should fit in a small window",
- alignment: ALIGNMENT.left, width: 10),
- (item) => item["text1"])
- ..addHeader(
- new Column("This is a not as long a text",
- alignment: ALIGNMENT.center, width: 10),
- (item) => item["text2"])
- ..addHeader(
- new Column("test of a short text",
- alignment: ALIGNMENT.right, width: 10),
- (item) => item["text3"])
- ..addHeader(new Column("this should not wrap", alignment: ALIGNMENT.left),
- (item) => item["text4"]);
- StringBuffer buffer = new StringBuffer();
- printTable.printToSink([
- {
- "text1": "A this is a long text with a veryveryverybigword.",
- "text2": "B This is a short text",
- "text3": "C This is a longer text",
- "text4": "D This is a longer text"
- },
- {
- "text1": "A this is a long text with a veryveryverybigword.",
- "text2": "B This is a short text",
- "text3": "C This is a longer text",
- "text4": "D This is a longer text"
- },
- {
- "text1": "A this is a long text with a veryveryverybigword.",
- "text2": "B This is a short text",
- "text3": "C This is a longer text",
- "text4": "D This is a longer text"
- },
- ], buffer);
-
- var expected =
- "This is a \n"
- "very long \n"
- "text that This is a \n"
- "should fit not as \n"
- "in a small long a test of a \n"
- "window text short text this should not wrap \n"
- "--------------------------------------------------------------------------------\n"
- "A this is B This is C This is D This is a longer text \n"
- "a long a short a longer \n"
- "text with text text \n"
- "a \n"
- "veryveryve \n"
- "rybigword. \n"
- "A this is B This is C This is D This is a longer text \n"
- "a long a short a longer \n"
- "text with text text \n"
- "a \n"
- "veryveryve \n"
- "rybigword. \n"
- "A this is B This is C This is D This is a longer text \n"
- "a long a short a longer \n"
- "text with text text \n"
- "a \n"
- "veryveryve \n"
- "rybigword. \n";
- Expect.equals(expected, buffer.toString());
-}
-
-void testRowWrapAllAlignmentsWithDividers() {
- var printTable = new ConsoleTable(
- template: new Template(
- columnDivider: "|",
- rowDivider: "-",
- headerDivider: "*",
- cornerJoin: "|",
- rowJoin: "|",
- cellJoin: "+",
- leftRightFrame: "|",
- topBottomFrame: "="))
- ..addHeader(
- new Column("This is a very long text that should fit in a small window",
- alignment: ALIGNMENT.left, width: 10),
- (item) => item["text1"])
- ..addHeader(
- new Column("This is a not as long a text",
- alignment: ALIGNMENT.center, width: 10),
- (item) => item["text2"])
- ..addHeader(
- new Column("test is a short text",
- alignment: ALIGNMENT.right, width: 10),
- (item) => item["text3"])
- ..addHeader(new Column("this should not wrap", alignment: ALIGNMENT.left),
- (item) => item["text4"]);
- StringBuffer buffer = new StringBuffer();
- printTable.printToSink([
- {
- "text1": "A this is a long text with a veryveryverybigword.",
- "text2": "B This is a short text",
- "text3": "C This is a longer text",
- "text4": "D This is a longer text"
- },
- {
- "text1": "A this is a long text with a veryveryverybigword.",
- "text2": "B This is a short text",
- "text3": "C This is a longer text",
- "text4": "D This is a longer text"
- },
- {
- "text1": "A this is a long text with a veryveryverybigword.",
- "text2": "B This is a short text",
- "text3": "C This is a longer text",
- "text4": "D This is a longer text"
- },
- ], buffer);
-
- var expected =
- "|==============================================================================|\n"
- "|This is a | | | |\n"
- "|very long | | | |\n"
- "|text that | This is a| | |\n"
- "|should fit| not as | | |\n"
- "|in a small| long a | test is a| |\n"
- "|window | text |short text|this should not wrap |\n"
- "|******************************************************************************|\n"
- "|A this is | B This is| C This is|D This is a longer text |\n"
- "|a long | a short | a longer| |\n"
- "|text with | text | text| |\n"
- "|a | | | |\n"
- "|veryveryve| | | |\n"
- "|rybigword.| | | |\n"
- "|----------+----------+----------+---------------------------------------------|\n"
- "|A this is | B This is| C This is|D This is a longer text |\n"
- "|a long | a short | a longer| |\n"
- "|text with | text | text| |\n"
- "|a | | | |\n"
- "|veryveryve| | | |\n"
- "|rybigword.| | | |\n"
- "|----------+----------+----------+---------------------------------------------|\n"
- "|A this is | B This is| C This is|D This is a longer text |\n"
- "|a long | a short | a longer| |\n"
- "|text with | text | text| |\n"
- "|a | | | |\n"
- "|veryveryve| | | |\n"
- "|rybigword.| | | |\n"
- "|==============================================================================|\n";
- Expect.equals(expected, buffer.toString());
-}
-
-void testTruncateAllAlignmentsWithDividers() {
- var printTable = new ConsoleTable(
- template: new Template(
- columnDivider: " ",
- rowDivider: "-",
- headerDivider: "=",
- cellJoin: "/"))
- ..addHeader(
- new Column("This is a very long text that should fit in a small window",
- alignment: ALIGNMENT.left,
- cellBehaviour: TEXTBEHAVIOUR.truncateLeft,
- headerBehaviour: TEXTBEHAVIOUR.truncateRight,
- width: 10),
- (item) => item["text1"])
- ..addHeader(
- new Column("This is a not as long a text",
- alignment: ALIGNMENT.center,
- cellBehaviour: TEXTBEHAVIOUR.truncateRight,
- headerBehaviour: TEXTBEHAVIOUR.truncateLeft,
- width: 10),
- (item) => item["text2"])
- ..addHeader(
- new Column("test is a short text",
- alignment: ALIGNMENT.right, width: 10),
- (item) => item["text3"])
- ..addHeader(new Column("this should not wrap", alignment: ALIGNMENT.left),
- (item) => item["text4"]);
- StringBuffer buffer = new StringBuffer();
- printTable.printToSink([
- {
- "text1": "A this is a long text with a veryveryverybigword.",
- "text2": "B This is a short text",
- "text3": "C This is a longer text",
- "text4": "D This is a longer text"
- },
- {
- "text1": "A this is a long text with a veryveryverybigword.",
- "text2": "B This is a short text",
- "text3": "C This is a longer text",
- "text4": "D This is a longer text"
- },
- {
- "text1": "A this is a long text with a veryveryverybigword.",
- "text2": "B This is a short text",
- "text3": "C This is a longer text",
- "text4": "D This is a longer text"
- },
- ], buffer);
-
- var expected =
- " test is a \n"
- "This is... ... a text short text this should not wrap \n"
- "================================================================================\n"
- "A this ... ...rt text C This is D This is a longer text \n"
- " a longer \n"
- " text \n"
- "----------/----------/----------/-----------------------------------------------\n"
- "A this ... ...rt text C This is D This is a longer text \n"
- " a longer \n"
- " text \n"
- "----------/----------/----------/-----------------------------------------------\n"
- "A this ... ...rt text C This is D This is a longer text \n"
- " a longer \n"
- " text \n";
- Expect.equals(expected, buffer.toString());
-}
diff --git a/tools/gardening/test/data/vm-kernel-linux-debug-x64-be/1883/vm_tests.log b/tools/gardening/test/data/vm-kernel-linux-debug-x64-be/1883/vm_tests.log
deleted file mode 100644
index 9c57959..0000000
--- a/tools/gardening/test/data/vm-kernel-linux-debug-x64-be/1883/vm_tests.log
+++ /dev/null
@@ -1,15937 +0,0 @@
-@@@STEP_CURSOR@vm tests@@@
-@@@STEP_STARTED@@@
-python -u /b/build/slave/vm-kernel-linux-debug-x64-be/build/sdk/tools/test.py -mdebug '--arch=x64' '--progress=line' --report --time --write-debug-log --write-test-outcome-log --copy-coredumps --append_logs -cdartk -rvm '--builder-tag=no_ipv6' '--vm-options=--no-enable-malloc-hooks'
-@@@STEP_LINK@stdout-->stdio@https://luci-logdog.appspot.com/v/?s=chromium%2Fbb%2Fclient.dart%2Fvm-kernel-linux-debug-x64-be%2F1883%2F%2B%2Frecipes%2Fsteps%2Fvm_tests%2F0%2Fstdout@@@
-in dir /b/build/slave/vm-kernel-linux-debug-x64-be/build/sdk:
- allow_subannotations: False
- base_name: 'vm tests'
- cmd: ['python',
- '-u',
- '/b/build/slave/vm-kernel-linux-debug-x64-be/build/sdk/tools/test.py',
- '-mdebug',
- '--arch=x64',
- '--progress=line',
- '--report',
- '--time',
- '--write-debug-log',
- '--write-test-outcome-log',
- '--copy-coredumps',
- '--append_logs',
- '-cdartk',
- '-rvm',
- '--builder-tag=no_ipv6',
- '--vm-options=--no-enable-malloc-hooks']
- cwd: '/b/build/slave/vm-kernel-linux-debug-x64-be/build/sdk'
- env: {}
- env_prefixes: {}
- infra_step: False
- name: 'vm tests'
- nest_level: 0
- ok_ret: frozenset([0])
- trigger_specs: ()
-full environment:
- AWS_CREDENTIAL_FILE: /b/build/site_config/.boto
- BOTO_CONFIG: /b/build/site_config/.boto
- BUILDBOT_BLAMELIST: [u'alexmarkov@google.com', u'bkonyi@google.com', u'jmesserly@google.com', u'jwren@google.com', u'scheglov@google.com', u'sigmund@google.com', u'sra@google.com']
- BUILDBOT_BRANCH: master
- BUILDBOT_BUILDBOTURL: None
- BUILDBOT_BUILDERNAME: vm-kernel-linux-debug-x64-be
- BUILDBOT_BUILDNUMBER: 1883
- BUILDBOT_CLOBBER:
- BUILDBOT_GOT_REVISION: None
- BUILDBOT_MASTERNAME: client.dart
- BUILDBOT_REVISION: 232a6330d8ac87487209167fa5b3d062d6a445c6
- BUILDBOT_SCHEDULER: main-be
- BUILDBOT_SLAVENAME: slave146-c3
- CHROME_HEADLESS: 1
- CIPD_CACHE_DIR: /b/c/cipd
- DISPLAY: :0.0
- GIT_USER_AGENT: linux2 git/2.10.2 slave146-c3.c.chromecompute.google.com.internal
- HOME: /home/chrome-bot
- LANG: en_US.UTF-8
- LOGDOG_COORDINATOR_HOST: luci-logdog.appspot.com
- LOGDOG_STREAM_PREFIX: bb/client.dart/vm-kernel-linux-debug-x64-be/1883
- LOGDOG_STREAM_PROJECT: chromium
- LOGDOG_STREAM_SERVER_PATH: unix:/b/build/.recipe_runtime/tmp1T_OXX/butler.sock
- PAGER: cat
- PATH: /b/cipd_path_tools:/b/cipd_client:/home/chrome-bot/slavebin:/b/depot_tools:/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
- PWD: /b/build/slave/vm-kernel-linux-debug-x64-be/build
- PYTHONIOENCODING: UTF-8
- PYTHONPATH: /b/build/site_config:/b/build/scripts:/b/build/scripts/release:/b/build/third_party:/b/build/third_party/requests_2_10_0:/b/build_internal/site_config:/b/build_internal/symsrc:/b/build/slave:/b/build/third_party/buildbot_slave_8_4:/b/build/third_party/twisted_10_2:
- PYTHONUNBUFFERED: 1
- TESTING_SLAVENAME: slave146-c3
- USER: chrome-bot
- USERNAME: chrome-bot
- VPYTHON_VIRTUALENV_ROOT: /b/c/vpython
-
-Test configurations: dartk_vm_debug_x64 dartk_vm_debug_x64
-Done dartk-vm debug_x64 vm/dart/error_stacktrace_test: pass
-Done dartk-vm debug_x64 vm/dart/double_materialize_test: pass
-Done dartk-vm debug_x64 vm/dart/optimized_stacktrace_line_test: pass
-Done dartk-vm debug_x64 vm/dart/truncating_ints_test: pass
-Done dartk-vm debug_x64 vm/dart/optimized_stacktrace_line_and_column_test: pass
-Done dartk-vm debug_x64 vm/dart/regress29620_test: pass
-Done dartk-vm debug_x64 vm/dart/double_to_smi_test: pass
-Done dartk-vm debug_x64 vm/dart/snapshot_version_test: pass
-Done dartk-vm debug_x64 vm/dart/data_uri_import_test/percentencoded: pass
-Total: 19756 tests
- * 3999 tests will be skipped (3587 skipped by design)
- * 26 tests are expected to be flaky but not crash
- * 14 tests are expected to flaky crash
- * 14964 tests are expected to pass
- * 37 tests are expected to fail that we won't fix
- * 590 tests are expected to fail that we should fix
- * 109 tests are expected to crash that we should fix
- * 0 tests are allowed to timeout
- * 0 tests are skipped on browsers due to compile-time error
- * 17 could not be categorized or are in multiple categories
-
-Done dartk-vm debug_x64 vm/dart/data_uri_import_test/wrongmime: pass
-Done dartk-vm debug_x64 vm/dart/inline_stack_frame_test: pass
-Done dartk-vm debug_x64 vm/dart/regress29846_test: pass
-Done dartk-vm debug_x64 vm/dart/hello_fuchsia_test: pass
-Done dartk-vm debug_x64 vm/dart/data_uri_spawn_test: pass
-Done dartk-vm debug_x64 vm/dart/spawn_infinite_loop_test: pass
-Done dartk-vm debug_x64 vm/dart/data_uri_import_test/nomime: pass
-Done dartk-vm debug_x64 vm/dart/data_uri_import_test/utf16: pass
-Done dartk-vm debug_x64 vm/dart/data_uri_import_test/base64: pass
-Done dartk-vm debug_x64 vm/dart/data_uri_import_test/nocharset: pass
-Done dartk-vm debug_x64 vm/dart/data_uri_import_test/badencodeddate: pass
-Done dartk-vm debug_x64 vm/dart/byte_array_optimized_test: pass
-Done dartk-vm debug_x64 vm/dart/byte_array_test: pass
-Done dartk-vm debug_x64 vm/dart/redirection_type_shuffling_test/none: pass
-Done dartk-vm debug_x64 vm/dart/redirection_type_shuffling_test/00: pass
-Done dartk-vm debug_x64 service/next_through_call_on_field_in_class_test: pass
-Done dartk-vm debug_x64 service/get_instances_rpc_test: pass
-Done dartk-vm debug_x64 service/issue_25465_test: pass
-Done dartk-vm debug_x64 service/causal_async_stack_contents_test: pass
-Done dartk-vm debug_x64 service/gc_test: pass
-Done dartk-vm debug_x64 service/object_graph_user_test: pass
-Done dartk-vm debug_x64 service/steal_breakpoint_test: pass
-Done dartk-vm debug_x64 service/get_isolate_after_stack_overflow_error_test: pass
-Done dartk-vm debug_x64 service/get_user_level_retaining_path_rpc_test: pass
-Done dartk-vm debug_x64 service/type_arguments_test: pass
-Done dartk-vm debug_x64 service/pause_on_start_and_exit_test: pass
-Done dartk-vm debug_x64 service/dev_fs_http_put_weird_char_test: pass
-Done dartk-vm debug_x64 service/get_object_rpc_test: pass
-Done dartk-vm debug_x64 service/tcp_socket_service_test: pass
-Done dartk-vm debug_x64 service/issue_27238_test: pass
-Done dartk-vm debug_x64 service/get_allocation_samples_test: pass
-Done dartk-vm debug_x64 service/pause_on_exceptions_test: pass
-Done dartk-vm debug_x64 service/external_service_asynchronous_invocation_test: pass
-Done dartk-vm debug_x64 service/allocations_test: pass
-Done dartk-vm debug_x64 service/native_metrics_test: pass
-Done dartk-vm debug_x64 service/get_zone_memory_info_rpc_test: pass
-Done dartk-vm debug_x64 service/next_through_function_expression_test: pass
-Done dartk-vm debug_x64 service/local_variable_declaration_test: pass
-Done dartk-vm debug_x64 service/dev_fs_spawn_test: pass
-Done dartk-vm debug_x64 service/crash_dump_test: pass
-Done dartk-vm debug_x64 service/dominator_tree_user_test: pass
-Done dartk-vm debug_x64 service/issue_27287_test: pass
-Done dartk-vm debug_x64 service/next_through_assign_int_test: pass
-Done dartk-vm debug_x64 service/set_name_rpc_test: pass
-Done dartk-vm debug_x64 service/causal_async_stack_presence_test: pass
-Done dartk-vm debug_x64 service/next_through_is_and_as_test: pass
-Done dartk-vm debug_x64 service/get_flag_list_rpc_test: pass
-Done dartk-vm debug_x64 service/weak_properties_test: pass
-Done dartk-vm debug_x64 service/pause_on_start_then_step_test: pass
-Done dartk-vm debug_x64 service/next_through_call_on_field_test: pass
-Done dartk-vm debug_x64 service/regress_28980_test: pass
-Done dartk-vm debug_x64 service/object_graph_vm_test: pass
-Done dartk-vm debug_x64 service/awaiter_async_stack_contents_test: pass
-Done dartk-vm debug_x64 service/debugger_location_second_test: pass
-Done dartk-vm debug_x64 service/library_dependency_test: pass
-Done dartk-vm debug_x64 service/address_mapper_test: pass
-Done dartk-vm debug_x64 service/next_through_catch_test: pass
-Done dartk-vm debug_x64 service/vm_test: pass
-Done dartk-vm debug_x64 service/set_library_debuggable_test: pass
-Done dartk-vm debug_x64 service/observatory_assets_test: pass
-Done dartk-vm debug_x64 service/get_isolate_after_language_error_test: pass
-Done dartk-vm debug_x64 service/developer_service_get_isolate_id_test: pass
-Done dartk-vm debug_x64 service/auth_token_test: pass
-Done dartk-vm debug_x64 service/inbound_references_test: pass
-Done dartk-vm debug_x64 service/get_allocation_profile_rpc_test: pass
-Done dartk-vm debug_x64 service/get_version_rpc_test: pass
-Done dartk-vm debug_x64 service/debugger_inspect_test: pass
-Done dartk-vm debug_x64 service/parameters_in_scope_at_entry_test: pass
-Done dartk-vm debug_x64 service/step_through_switch_test: pass
-Done dartk-vm debug_x64 service/mirror_references_test: pass
-Done dartk-vm debug_x64 service/pause_on_unhandled_async_exceptions2_test: pass
-Done dartk-vm debug_x64 service/pause_on_unhandled_async_exceptions2_test: pass
-Done dartk-vm debug_x64 service/set_library_debuggable_rpc_test: pass
-Done dartk-vm debug_x64 service/next_through_simple_linear_2_test: pass
-Done dartk-vm debug_x64 service/command_test: pass
-Done dartk-vm debug_x64 service/regexp_function_test: pass
-Done dartk-vm debug_x64 service/regexp_function_test: pass
-Done dartk-vm debug_x64 service/field_script_test: pass
-Done dartk-vm debug_x64 service/step_through_arithmetic_test: pass
-Done dartk-vm debug_x64 service/external_service_registration_via_notification_test: pass
-Done dartk-vm debug_x64 service/caching_test: pass
-Done dartk-vm debug_x64 service/read_stream_test: pass
-Done dartk-vm debug_x64 service/capture_stdio_test: pass
-Done dartk-vm debug_x64 service/dev_fs_weird_char_test: pass
-Done dartk-vm debug_x64 service/malformed_test: pass
-Done dartk-vm debug_x64 service/get_cpu_profile_timeline_rpc_test: pass
-Done dartk-vm debug_x64 service/next_through_new_test: pass
-Done dartk-vm debug_x64 service/async_scope_test: pass
-Done dartk-vm debug_x64 service/pause_on_unhandled_exceptions_test: pass
-Done dartk-vm debug_x64 service/logging_test: pass
-Done dartk-vm debug_x64 service/async_next_test: pass
-Done dartk-vm debug_x64 service/instance_field_order_rpc_test: pass
-Done dartk-vm debug_x64 service/next_through_for_each_loop_test: pass
-Done dartk-vm debug_x64 service/string_escaping_test: pass
-Done dartk-vm debug_x64 service/step_test: pass
-Done dartk-vm debug_x64 service/dev_fs_uri_test: pass
-Done dartk-vm debug_x64 service/step_through_function_2_test: pass
-Done dartk-vm debug_x64 service/async_single_step_into_test: pass
-Done dartk-vm debug_x64 service/positive_token_pos_test: pass
-Done dartk-vm debug_x64 service/regress_28443_test: pass
-Done dartk-vm debug_x64 service/typed_data_test: pass
-Done dartk-vm debug_x64 service/next_through_simple_linear_test: pass
-Done dartk-vm debug_x64 service/break_on_function_test: pass
-Done dartk-vm debug_x64 service/step_through_property_get_test: pass
-Done dartk-vm debug_x64 service/vm_timeline_events_test: pass
-Done dartk-vm debug_x64 service/async_single_step_out_test: pass
-Done dartk-vm debug_x64 service/external_service_disappear_test: pass
-Done dartk-vm debug_x64 service/debugging_test: pass
-Done dartk-vm debug_x64 service/get_object_store_rpc_test: pass
-Done dartk-vm debug_x64 service/collect_all_garbage_test: pass
-Done dartk-vm debug_x64 service/developer_server_control_test: pass
-Done dartk-vm debug_x64 service/step_through_getter_test: pass
-Done dartk-vm debug_x64 service/step_through_setter_test: pass
-Done dartk-vm debug_x64 service/process_service_test: pass
-Done dartk-vm debug_x64 service/get_heap_map_rpc_test: pass
-Done dartk-vm debug_x64 service/udp_socket_service_test: pass
-Done dartk-vm debug_x64 service/debugger_location_test: pass
-Done dartk-vm debug_x64 service/get_retaining_path_rpc_test: pass
-Done dartk-vm debug_x64 service/external_service_registration_test: pass
-Done dartk-vm debug_x64 service/get_ports_rpc_test: pass
-Done dartk-vm debug_x64 service/contexts_test: pass
-Done dartk-vm debug_x64 service/developer_extension_test: pass
-Done dartk-vm debug_x64 service/auth_token1_test: pass
-Done dartk-vm debug_x64 service/next_through_simple_async_with_returns_test: pass
-Done dartk-vm debug_x64 service/implicit_getter_setter_test: pass
-Done dartk-vm debug_x64 service/get_vm_rpc_test: pass
-Done dartk-vm debug_x64 service/tcp_socket_closing_service_test: pass
-Done dartk-vm debug_x64 service/causal_async_star_stack_contents_test: pass
-Done dartk-vm debug_x64 service/add_breakpoint_rpc_kernel_test: pass
-Done dartk-vm debug_x64 service/vm_timeline_flags_test: pass
-Done dartk-vm debug_x64 service/pause_on_unhandled_async_exceptions_test: pass
-Done dartk-vm debug_x64 service/get_vm_timeline_rpc_test: pass
-Done dartk-vm debug_x64 service/step_over_await_test: pass
-Done dartk-vm debug_x64 service/bad_web_socket_address_test: pass
-Done dartk-vm debug_x64 service/dominator_tree_vm_test: pass
-Done dartk-vm debug_x64 service/get_isolate_rpc_test: pass
-Done dartk-vm debug_x64 service/external_service_notification_invocation_test: pass
-Done dartk-vm debug_x64 service/debugging_inlined_finally_test: pass
-Done dartk-vm debug_x64 service/step_through_property_set_test: pass
-Done dartk-vm debug_x64 service/get_isolate_after_sync_error_test: pass
-Done dartk-vm debug_x64 service/async_star_step_out_test: pass
-Done dartk-vm debug_x64 service/step_through_constructor_calls_test: pass
-Done dartk-vm debug_x64 service/object_graph_stack_reference_test: pass
-Done dartk-vm debug_x64 service/rewind_test: pass
-Done dartk-vm debug_x64 service/rewind_optimized_out_test: pass
-Done dartk-vm debug_x64 service/next_through_create_list_and_map_test: pass
-Done dartk-vm debug_x64 service/external_service_synchronous_invocation_test: pass
-Done dartk-vm debug_x64 service/step_through_function_test: pass
-Done dartk-vm debug_x64 service/next_through_assign_call_test: pass
-Done dartk-vm debug_x64 service/async_step_out_test: pass
-Done dartk-vm debug_x64 service/next_through_closure_test: pass
-Done dartk-vm debug_x64 service/step_into_async_no_await_test: pass
-Done dartk-vm debug_x64 service/get_isolate_after_async_error_test: pass
-Done dartk-vm debug_x64 service/file_service_test: pass
-Done dartk-vm debug_x64 service/next_through_simple_async_test: pass
-Done dartk-vm debug_x64 service/async_star_single_step_into_test: pass
-Done dartk-vm debug_x64 service/next_through_for_loop_with_break_and_continue_test: pass
-Done dartk-vm debug_x64 service/get_retained_size_rpc_test: pass
-Done dartk-vm debug_x64 service/next_through_call_on_static_field_in_class_test: pass
-Done dartk-vm debug_x64 service/causal_async_star_stack_presence_test: pass
-Done dartk-vm debug_x64 service/breakpoint_two_args_checked_test: pass
-Done dartk-vm debug_x64 service/reachable_size_test: pass
-Done dartk-vm debug_x64 service/dev_fs_test: pass
-Done dartk-vm debug_x64 service/get_stack_rpc_test: pass
-Done dartk-vm debug_x64 service/dev_fs_http_put_test: pass
-Done dartk-vm debug_x64 service/code_test: pass
-Done dartk-vm debug_x64 service/break_on_activation_test: pass
-Done dartk-vm debug_x64 service/set_vm_name_rpc_test: pass
-Done dartk-vm debug_x64 samples/build_dart_simple/test/build_dart_simple_test: pass
-Done dartk-vm debug_x64 service/reload_sources_test: pass
-Done dartk-vm debug_x64 service/eval_test: pass
-Done dartk-vm debug_x64 samples/sample_extension/test/sample_extension_script_snapshot_test: pass
-Done dartk-vm debug_x64 service/echo_test: pass
-Done dartk-vm debug_x64 samples/sample_extension/test/sample_extension_app_snapshot_test: pass
-Done dartk-vm debug_x64 service/get_source_report_test: pass
-Done dartk-vm debug_x64 service/async_single_step_exception_test: pass
-Done dartk-vm debug_x64 samples/sample_extension/test/sample_extension_test: pass
-Done dartk-vm debug_x64 service/metrics_test: pass
-Done dartk-vm debug_x64 samples/build_dart/test/build_dart_test: pass
-Done dartk-vm debug_x64 corelib/growable_list_test: pass
-Done dartk-vm debug_x64 corelib/list_set_all_test: pass
-Done dartk-vm debug_x64 corelib/iterable_first_where_test: pass
-Done dartk-vm debug_x64 corelib/iterable_first_test: pass
-Done dartk-vm debug_x64 corelib/linked_hash_map_from_iterables_test: pass
-Done dartk-vm debug_x64 corelib/duration2_test: pass
-Done dartk-vm debug_x64 corelib/iterable_expand_test: pass
-Done dartk-vm debug_x64 corelib/double_truncate_to_double_test: pass
-Done dartk-vm debug_x64 corelib/errors_test: pass
-Done dartk-vm debug_x64 corelib/list_sublist_test: pass
-Done dartk-vm debug_x64 corelib/format_exception_test: pass
-Done dartk-vm debug_x64 corelib/linked_hash_map_from_iterable_test: pass
-Done dartk-vm debug_x64 corelib/list_insert_test: pass
-Done dartk-vm debug_x64 corelib/double_round_to_double2_test: pass
-Done dartk-vm debug_x64 corelib/error_stack_trace1_test: pass
-Done dartk-vm debug_x64 corelib/error_stack_trace2_test: pass
-Done dartk-vm debug_x64 corelib/list_replace_range_test: pass
-Done dartk-vm debug_x64 corelib/iterable_tostring_test: pass
-Done dartk-vm debug_x64 corelib/double_round_to_double_test: pass
-Done dartk-vm debug_x64 corelib/list_map_test: pass
-Done dartk-vm debug_x64 corelib/list_last_test: pass
-Done dartk-vm debug_x64 corelib/duration_big_num_test: pass
-Done dartk-vm debug_x64 corelib/iterable_take_test: pass
-Done dartk-vm debug_x64 corelib/list_index_of_test: pass
-Done dartk-vm debug_x64 corelib/list_index_of2_test: pass
-Done dartk-vm debug_x64 corelib/double_ceil2_test: pass
-Done dartk-vm debug_x64 corelib/list_fill_range_test: pass
-Done dartk-vm debug_x64 corelib/int_to_int_test: pass
-Done dartk-vm debug_x64 corelib/duration_double_multiplication_test: pass
-Done dartk-vm debug_x64 corelib/expression_test: pass
-Done dartk-vm debug_x64 corelib/exception_implementation_test: pass
-Done dartk-vm debug_x64 corelib/int_truncate_to_double_test: pass
-Done dartk-vm debug_x64 corelib/regexp/compile-crash_test: pass
-Done dartk-vm debug_x64 corelib/regexp/early-acid3-86_test: pass
-Done dartk-vm debug_x64 corelib/regexp/constructor_test: pass
-Done dartk-vm debug_x64 corelib/regexp/indexof_test: pass
-Done dartk-vm debug_x64 corelib/regexp/extended-characters-match_test: pass
-Done dartk-vm debug_x64 corelib/regexp/extended-characters-more_test: pass
-Done dartk-vm debug_x64 corelib/regexp/dotstar_test: pass
-Done dartk-vm debug_x64 corelib/regexp/find-first-asserted_test: pass
-Done dartk-vm debug_x64 corelib/regexp/ecma-regex-examples_test: pass
-Done dartk-vm debug_x64 corelib/regexp/default_arguments_test: pass
-Done dartk-vm debug_x64 corelib/regexp/compile_test: pass
-Done dartk-vm debug_x64 corelib/iterable_test: pass
-Done dartk-vm debug_x64 corelib/error_stack_trace_test: pass
-Done dartk-vm debug_x64 corelib/int_truncate_test: pass
-Done dartk-vm debug_x64 corelib/is_operator_basic_types_test: pass
-Done dartk-vm debug_x64 corelib/iterable_fold_test: pass
-Done dartk-vm debug_x64 corelib/double_round3_test: pass
-Done dartk-vm debug_x64 corelib/list_set_range_test: pass
-Done dartk-vm debug_x64 corelib/int_round_test: pass
-Done dartk-vm debug_x64 corelib/iterable_reduce_test: pass
-Done dartk-vm debug_x64 corelib/int_parse_radix_bad_handler_test: pass
-Done dartk-vm debug_x64 corelib/list_to_string2_test: pass
-Done dartk-vm debug_x64 corelib/iterable_single_test: pass
-Done dartk-vm debug_x64 corelib/list_contains_argument_order_test: pass
-Done dartk-vm debug_x64 corelib/iterable_generate_test/none: pass
-Done dartk-vm debug_x64 corelib/for_in_test: pass
-Done dartk-vm debug_x64 corelib/iterable_generate_test/01: pass
-Done dartk-vm debug_x64 corelib/integer_to_string_test/none: pass
-Done dartk-vm debug_x64 corelib/integer_to_string_test/01: pass
-Done dartk-vm debug_x64 corelib/iterable_to_list_test/none: pass
-Done dartk-vm debug_x64 corelib/iterable_to_list_test/01: pass
-Done dartk-vm debug_x64 corelib/int_parse_radix_test/none: pass
-Done dartk-vm debug_x64 corelib/linked_hash_map_test: pass
-Done dartk-vm debug_x64 corelib/int_parse_radix_test/01: pass
-Done dartk-vm debug_x64 corelib/int_parse_radix_test/02: pass
-Done dartk-vm debug_x64 corelib/iterable_skip_test: pass
-Done dartk-vm debug_x64 corelib/list_removeat_test: pass
-Done dartk-vm debug_x64 corelib/iterable_element_at_test: pass
-Done dartk-vm debug_x64 corelib/iterable_contains2_test: pass
-Done dartk-vm debug_x64 corelib/iterable_join_test: pass
-Done dartk-vm debug_x64 corelib/list_get_range_test: pass
-Done dartk-vm debug_x64 corelib/iterable_take_while_test: pass
-Done dartk-vm debug_x64 corelib/list_literal_is_growable_test: pass
-Done dartk-vm debug_x64 corelib/stacktrace_current_test: pass
-Done dartk-vm debug_x64 corelib/list_sort_test: pass
-Done dartk-vm debug_x64 corelib/has_next_iterator_test: pass
-Done dartk-vm debug_x64 corelib/list_to_string_test: pass
-Done dartk-vm debug_x64 corelib/list_insert_all_test: pass
-Done dartk-vm debug_x64 corelib/double_round_to_double3_test: pass
-Done dartk-vm debug_x64 corelib/json_map_test: pass
-Done dartk-vm debug_x64 corelib/expando_test: pass
-Done dartk-vm debug_x64 corelib/list_literal_test: pass
-Done dartk-vm debug_x64 corelib/duration_test: pass
-Done dartk-vm debug_x64 corelib/iterable_last_where_test: pass
-Done dartk-vm debug_x64 corelib/list_for_each_test: pass
-Done dartk-vm debug_x64 corelib/list_as_map_test: pass
-Done dartk-vm debug_x64 corelib/list_fixed_test: pass
-Done dartk-vm debug_x64 corelib/double_truncate2_test: pass
-Done dartk-vm debug_x64 corelib/iterable_single_where_test: pass
-Done dartk-vm debug_x64 corelib/iterable_to_set_test: pass
-Done dartk-vm debug_x64 corelib/double_round2_test: pass
-Done dartk-vm debug_x64 corelib/int_round_to_double_test: pass
-Done dartk-vm debug_x64 corelib/list_iterators_test: pass
-Done dartk-vm debug_x64 corelib/list_filled_type_argument_test: pass
-Done dartk-vm debug_x64 corelib/set_test: pass
-Done dartk-vm debug_x64 corelib/iterable_mapping_test: pass
-Done dartk-vm debug_x64 corelib/iterable_contains_test: pass
-Done dartk-vm debug_x64 corelib/iterable_skip_while_test: pass
-Done dartk-vm debug_x64 corelib/double_truncate_test: pass
-Done dartk-vm debug_x64 corelib/iterable_length_test: pass
-Done dartk-vm debug_x64 corelib/hash_map2_test: pass
-Done dartk-vm debug_x64 corelib/double_round4_test: pass
-Done dartk-vm debug_x64 corelib/iterable_last_test: pass
-Done dartk-vm debug_x64 corelib/integer_to_radix_string_test: pass
-Done dartk-vm debug_x64 corelib/double_round_test: pass
-Done dartk-vm debug_x64 corelib/list_reversed_test: pass
-Done dartk-vm debug_x64 corelib/list_unmodifiable_test: pass
-Done dartk-vm debug_x64 corelib/list_growable_test: pass
-Done dartk-vm debug_x64 corelib/iterable_empty_test: pass
-Done dartk-vm debug_x64 corelib/list_first_test: pass
-Done dartk-vm debug_x64 corelib/list_remove_range_test: pass
-Done dartk-vm debug_x64 corelib/iterable_return_type_test/01: pass
-Done dartk-vm debug_x64 corelib/iterable_return_type_test/none: pass
-Done dartk-vm debug_x64 corelib/iterable_return_type_test/02: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_undefined_test/none: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_undefined_test/01: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_undefined_test/02: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_undefined_test/03: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_undefined_test/04: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_undefined_test/05: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_undefined_test/07: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_undefined_test/06: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_undefined_test/08: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_undefined_test/09: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_undefined_test/10: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_undefined_test/11: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_undefined_test/12: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_undefined_test/13: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_undefined_test/14: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_undefined_test/15: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_undefined_test/16: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_test/none: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_test/01: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_test/02: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_test/03: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_test/04: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_test/06: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_test/05: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_test/07: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_test/08: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_test/09: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_test/10: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_test/11: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_test/12: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_test/13: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_test/15: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_test/14: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_test/16: pass
-Done dartk-vm debug_x64 corelib/list_test/none: pass
-Done dartk-vm debug_x64 corelib_2/reg_exp_all_matches_test: pass
-Done dartk-vm debug_x64 corelib/list_test/01: pass
-Done dartk-vm debug_x64 corelib_2/reg_exp_first_match_test: pass
-Done dartk-vm debug_x64 corelib_2/double_floor2_test: pass
-Done dartk-vm debug_x64 corelib_2/const_list_literal_test: pass
-Done dartk-vm debug_x64 corelib_2/bit_twiddling_bigint_test: pass
-Done dartk-vm debug_x64 corelib_2/map_from_iterable_test: pass
-Done dartk-vm debug_x64 corelib_2/queue_first_test: pass
-Done dartk-vm debug_x64 corelib_2/uri_ipv4_test: pass
-Done dartk-vm debug_x64 corelib_2/double_compare_test: pass
-Done dartk-vm debug_x64 corelib_2/string_trim2_test: pass
-Done dartk-vm debug_x64 corelib_2/string_replace_static_test: pass
-Done dartk-vm debug_x64 corelib_2/reg_exp_groups_test: pass
-Done dartk-vm debug_x64 corelib_2/set_iterator_test: pass
-Done dartk-vm debug_x64 corelib_2/string_from_list_test: pass
-Done dartk-vm debug_x64 corelib_2/map_from_iterables_test: pass
-Done dartk-vm debug_x64 corelib_2/regress_11099_test: pass
-Done dartk-vm debug_x64 corelib_2/string_split_test: pass
-Done dartk-vm debug_x64 corelib_2/set_contains_test: pass
-Done dartk-vm debug_x64 corelib_2/collection_from_test: pass
-Done dartk-vm debug_x64 corelib_2/unicode2_test: pass
-Done dartk-vm debug_x64 corelib_2/map_values3_test: pass
-Done dartk-vm debug_x64 corelib_2/string_fromcharcodes_test: pass
-Done dartk-vm debug_x64 corelib_2/string_fromcharcode_test: pass
-Done dartk-vm debug_x64 corelib_2/unicode_test: pass
-Done dartk-vm debug_x64 corelib_2/int_from_environment2_test: pass
-Done dartk-vm debug_x64 corelib_2/uri_parse_test: pass
-Done dartk-vm debug_x64 corelib_2/shuffle_test: pass
-Done dartk-vm debug_x64 corelib_2/string_static_test: pass
-Done dartk-vm debug_x64 corelib_2/hash_set_type_check_test: pass
-Done dartk-vm debug_x64 corelib_2/collection_length_test: pass
-Done dartk-vm debug_x64 corelib_2/int_from_environment_test: pass
-Done dartk-vm debug_x64 corelib_2/string_trim_test: pass
-Done dartk-vm debug_x64 corelib_2/double_ceil_test: pass
-Done dartk-vm debug_x64 corelib_2/string_replace_test: pass
-Done dartk-vm debug_x64 corelib_2/date_time4_test: pass
-Done dartk-vm debug_x64 corelib_2/map_keys_test: pass
-Done dartk-vm debug_x64 corelib_2/apply_test: pass
-Done dartk-vm debug_x64 corelib_2/uri_test: pass
-Done dartk-vm debug_x64 corelib_2/type_hashcode_test: pass
-Done dartk-vm debug_x64 corelib_2/toInt_test: pass
-Done dartk-vm debug_x64 corelib_2/int_floor_test: pass
-Done dartk-vm debug_x64 corelib_2/string_base_vm_test: pass
-Done dartk-vm debug_x64 corelib_2/set_removeAll_test: pass
-Done dartk-vm debug_x64 corelib_2/hashcode_boxed_test: pass
-Done dartk-vm debug_x64 corelib_2/map_values_test: pass
-Done dartk-vm debug_x64 corelib_2/string_buffer_test: pass
-Done dartk-vm debug_x64 corelib_2/map_contains_value_test: pass
-Done dartk-vm debug_x64 corelib_2/hash_map_test: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_parsed_arith_vm_test: pass
-Done dartk-vm debug_x64 corelib_2/collection_test: pass
-Done dartk-vm debug_x64 corelib_2/map_to_string_test: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_parsed_arith_vm_test: pass
-Done dartk-vm debug_x64 corelib_2/uri_path_test: pass
-Done dartk-vm debug_x64 corelib_2/map_values4_test: pass
-Done dartk-vm debug_x64 corelib_2/string_to_lower_case_test: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_parsed_mul_div_vm_test: pass
-Done dartk-vm debug_x64 corelib_2/reg_exp_has_match_test: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_parsed_mul_div_vm_test: pass
-Done dartk-vm debug_x64 corelib_2/reg_exp_group_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/char-insensitive_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/non-capturing-groups_test: pass
-Done dartk-vm debug_x64 corelib_2/symbol_reserved_word_test/none: pass
-Done dartk-vm debug_x64 corelib_2/regexp/stack-overflow_test: pass
-Done dartk-vm debug_x64 corelib_2/symbol_reserved_word_test/01: pass
-Done dartk-vm debug_x64 corelib_2/symbol_reserved_word_test/08: pass
-Done dartk-vm debug_x64 corelib_2/symbol_reserved_word_test/03: pass
-Done dartk-vm debug_x64 corelib_2/symbol_reserved_word_test/02: pass
-Done dartk-vm debug_x64 corelib_2/symbol_reserved_word_test/04: pass
-Done dartk-vm debug_x64 corelib_2/symbol_reserved_word_test/05: pass
-Done dartk-vm debug_x64 corelib_2/symbol_reserved_word_test/06: pass
-Done dartk-vm debug_x64 corelib_2/symbol_reserved_word_test/07: pass
-Done dartk-vm debug_x64 corelib_2/symbol_reserved_word_test/11: pass
-Done dartk-vm debug_x64 corelib_2/symbol_reserved_word_test/09: pass
-Done dartk-vm debug_x64 corelib_2/symbol_reserved_word_test/10: pass
-Done dartk-vm debug_x64 corelib_2/symbol_reserved_word_test/12: pass
-Done dartk-vm debug_x64 corelib_2/bool_from_environment2_test/none: pass
-Done dartk-vm debug_x64 corelib_2/nan_infinity_test/none: pass
-Done dartk-vm debug_x64 corelib_2/bool_from_environment2_test/01: pass
-Done dartk-vm debug_x64 corelib_2/nan_infinity_test/01: pass
-Done dartk-vm debug_x64 corelib_2/bool_from_environment2_test/02: pass
-Done dartk-vm debug_x64 corelib_2/bool_from_environment2_test/03: pass
-Done dartk-vm debug_x64 corelib_2/bool_from_environment2_test/04: pass
-Done dartk-vm debug_x64 corelib_2/bool_from_environment2_test/05: pass
-Done dartk-vm debug_x64 corelib_2/regexp/regexp_kde_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/pcre-test-4_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/parentheses_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/regress-regexp-construct-result_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/overflow_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/stack-overflow2_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/non-character_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/issue_19193_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/loop-capture_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/results-cache_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/pcre_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/malformed-escapes_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/no-extensions_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/negative-special-characters_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/unicodeCaseInsensitive_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/capture-3_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/capture_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/regress-regexp-codeflush_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/unicode-handling_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/captures_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/backreferences_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/non-bmp_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/alternatives_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/ranges-and-escaped-hyphens_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/UC16_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/many-brackets_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/non-greedy-parentheses_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/range-out-of-order_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/invalid-range-in-class_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/assertion_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/multiline_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/lastindex_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/non-capturing-backtracking_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/bol-with-multiline_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/ascii-regexp-subject_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/quantified-assertions_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/norepeat_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/character-match-out-of-order_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/standalones_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/range-bound-ffff_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/toString_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/regress-6-9-regexp_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/look-ahead_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/regexp_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/bol_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/alternative-length-miscalculation_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/zero-length-alternatives_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/lookahead_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/repeat-match-waldemar_test: pass
-Done dartk-vm debug_x64 corelib_2/string_runes_test: pass
-Done dartk-vm debug_x64 corelib_2/compare_to2_test: pass
-Done dartk-vm debug_x64 corelib_2/collection_to_string_test: pass
-Done dartk-vm debug_x64 corelib_2/queue_iterator_test: pass
-Done dartk-vm debug_x64 corelib_2/int_parse_with_limited_ints_test: pass
-Done dartk-vm debug_x64 corelib_2/date_time3_test: pass
-Done dartk-vm debug_x64 corelib_2/date_time_parse_test: pass
-Done dartk-vm debug_x64 corelib_2/reg_exp_cache_test: pass
-Done dartk-vm debug_x64 corelib_2/splay_tree_from_iterables_test: pass
-Done dartk-vm debug_x64 corelib_2/compare_to_test: pass
-Done dartk-vm debug_x64 corelib_2/strings_test: pass
-Done dartk-vm debug_x64 corelib_2/uri_http_test: pass
-Done dartk-vm debug_x64 corelib_2/symbol_test/none: pass
-Done dartk-vm debug_x64 corelib_2/set_intersection_test: pass
-Done dartk-vm debug_x64 corelib_2/symbol_test/01: pass
-Done dartk-vm debug_x64 corelib_2/symbol_test/02: pass
-Done dartk-vm debug_x64 corelib_2/symbol_test/03: pass
-Done dartk-vm debug_x64 corelib_2/map_from_test: pass
-Done dartk-vm debug_x64 corelib_2/string_from_environment2_test: pass
-Done dartk-vm debug_x64 corelib_2/bit_twiddling_test: pass
-Done dartk-vm debug_x64 corelib_2/date_time10_test: pass
-Done dartk-vm debug_x64 corelib_2/map_contains_key_test: pass
-Done dartk-vm debug_x64 corelib_2/reg_exp4_test: pass
-Done dartk-vm debug_x64 corelib_2/bool_hashcode_test: pass
-Done dartk-vm debug_x64 corelib_2/uri_query_test: pass
-Done dartk-vm debug_x64 corelib_2/uri_normalize_path_test: pass
-Done dartk-vm debug_x64 corelib_2/map_index_test: pass
-Done dartk-vm debug_x64 corelib_2/int_ceil_test: pass
-Done dartk-vm debug_x64 corelib_2/main_test: pass
-Done dartk-vm debug_x64 corelib_2/uri_base_test: pass
-Done dartk-vm debug_x64 corelib_2/uri_parameters_all_test: pass
-Done dartk-vm debug_x64 corelib_2/sort_test: pass
-Done dartk-vm debug_x64 corelib_2/stacktrace_fromstring_test: pass
-Done dartk-vm debug_x64 corelib_2/bool_from_environment_test: pass
-Done dartk-vm debug_x64 corelib_2/hashcode_test: pass
-Done dartk-vm debug_x64 corelib_2/const_list_set_range_test: pass
-Done dartk-vm debug_x64 corelib_2/int_floor_to_double_test: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_parsed_div_rem_vm_test: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_parsed_div_rem_vm_test: pass
-Done dartk-vm debug_x64 corelib_2/regress_r21715_test: pass
-Done dartk-vm debug_x64 corelib_2/uri_normalize_test: pass
-Done dartk-vm debug_x64 corelib_2/string_replace_all_test: pass
-Done dartk-vm debug_x64 corelib_2/date_time9_test: pass
-
-FAILED: dartk-vm debug_x64 corelib_2/package_resource_test
-Expected: Pass
-Actual: CompileTimeError
-CommandOutput[vm]:
-
-stdout:
-tests/corelib_2/package_resource_test.dart:9:26: Error: Method not found: 'Resource'.
- const resource = const Resource(uriText);
- ^
-
-
-stderr:
-Method not found: 'Resource'.
-
-
-Command[vm]: DART_CONFIGURATION=DebugX64 out/DebugX64/dart --dfe=out/DebugX64/gen/kernel-service.dart.snapshot --kernel-binaries=out/DebugX64/patched_sdk --no-background-compilation --no-enable-malloc-hooks --ignore-unrecognized-flags --packages=/b/build/slave/vm-kernel-linux-debug-x64-be/build/sdk/.packages /b/build/slave/vm-kernel-linux-debug-x64-be/build/sdk/tests/corelib_2/package_resource_test.dart
-Took 0:00:02.684946
-
-Short reproduction command (experimental):
- python tools/test.py -c dartk --builder-tag no_ipv6 --vm-options --no-enable-malloc-hooks corelib_2/package_resource_test
-
-Done dartk-vm debug_x64 corelib_2/package_resource_test: fail
-Done dartk-vm debug_x64 corelib_2/date_time2_test: pass
-Done dartk-vm debug_x64 corelib_2/set_containsAll_test: pass
-Done dartk-vm debug_x64 corelib_2/string_base_vm_static_test: pass
-Done dartk-vm debug_x64 corelib_2/double_ceil_to_double_test: pass
-Done dartk-vm debug_x64 corelib_2/queue_last_test: pass
-Done dartk-vm debug_x64 corelib_2/num_sign_test: pass
-Done dartk-vm debug_x64 corelib_2/num_sign_test: pass
-Done dartk-vm debug_x64 corelib_2/map_remove_test: pass
-Done dartk-vm debug_x64 corelib_2/stopwatch_test: pass
-Done dartk-vm debug_x64 corelib_2/const_list_remove_range_test: pass
-Done dartk-vm debug_x64 corelib_2/null_nosuchmethod_test: pass
-Done dartk-vm debug_x64 corelib_2/uri_file_test: pass
-Done dartk-vm debug_x64 corelib_2/int_ceil_to_double_test: pass
-Done dartk-vm debug_x64 corelib_2/apply2_test: pass
-Done dartk-vm debug_x64 corelib_2/queue_single_test: pass
-Done dartk-vm debug_x64 corelib_2/set_retainAll_test: pass
-Done dartk-vm debug_x64 corelib_2/maps_test: pass
-
-FAILED: dartk-vm debug_x64 corelib_2/map_keys2_test
-Expected: RuntimeError
-Actual: Pass
-CommandOutput[vm]:
-
-Command[vm]: DART_CONFIGURATION=DebugX64 out/DebugX64/dart --dfe=out/DebugX64/gen/kernel-service.dart.snapshot --kernel-binaries=out/DebugX64/patched_sdk --no-background-compilation --no-enable-malloc-hooks --ignore-unrecognized-flags --packages=/b/build/slave/vm-kernel-linux-debug-x64-be/build/sdk/.packages /b/build/slave/vm-kernel-linux-debug-x64-be/build/sdk/tests/corelib_2/map_keys2_test.dart
-Took 0:00:06.459264
-
-Short reproduction command (experimental):
- python tools/test.py -c dartk --builder-tag no_ipv6 --vm-options --no-enable-malloc-hooks corelib_2/map_keys2_test
-
-Done dartk-vm debug_x64 corelib_2/map_keys2_test: fail
-Done dartk-vm debug_x64 corelib_2/date_time7_test: pass
-Done dartk-vm debug_x64 corelib_2/uri_ipv6_test: pass
-Done dartk-vm debug_x64 corelib_2/uri_scheme_test: pass
-Done dartk-vm debug_x64 corelib_2/range_error_test: pass
-Done dartk-vm debug_x64 corelib_2/string_source_test: pass
-Done dartk-vm debug_x64 corelib_2/string_substring_test: pass
-Done dartk-vm debug_x64 corelib_2/null_test: pass
-Done dartk-vm debug_x64 corelib_2/splay_tree_from_iterable_test: pass
-Done dartk-vm debug_x64 corelib_2/data_uri_test: pass
-Done dartk-vm debug_x64 corelib_2/queue_test: pass
-Done dartk-vm debug_x64 corelib_2/set_test: pass
-Done dartk-vm debug_x64 corelib_2/core_runtime_types_static_test: pass
-Done dartk-vm debug_x64 corelib_2/int_modulo_arith_test/none: pass
-Done dartk-vm debug_x64 corelib_2/int_modulo_arith_test/bignum: pass
-Done dartk-vm debug_x64 corelib_2/int_modulo_arith_test/modPow: pass
-Done dartk-vm debug_x64 corelib_2/splay_tree_test/02: pass
-Done dartk-vm debug_x64 corelib_2/splay_tree_test/none: pass
-Done dartk-vm debug_x64 corelib_2/splay_tree_test/01: pass
-Done dartk-vm debug_x64 corelib_2/hidden_library2_test/none: pass
-Done dartk-vm debug_x64 corelib_2/hidden_library2_test/01: pass
-Done dartk-vm debug_x64 corelib_2/double_parse_test/none: pass
-Done dartk-vm debug_x64 corelib_2/double_parse_test/01: pass
-Done dartk-vm debug_x64 corelib_2/double_parse_test/none: pass
-Done dartk-vm debug_x64 corelib_2/double_parse_test/01: pass
-Done dartk-vm debug_x64 corelib_2/double_parse_test/03: pass
-Done dartk-vm debug_x64 corelib_2/double_parse_test/03: pass
-Done dartk-vm debug_x64 corelib_2/double_parse_test/02: pass
-Done dartk-vm debug_x64 corelib_2/double_parse_test/04: pass
-Done dartk-vm debug_x64 corelib_2/double_parse_test/02: pass
-Done dartk-vm debug_x64 corelib_2/double_parse_test/04: pass
-Done dartk-vm debug_x64 corelib_2/num_parse_test/none: pass
-Done dartk-vm debug_x64 corelib_2/throw_half_surrogate_pair_test/01: pass
-Done dartk-vm debug_x64 corelib_2/throw_half_surrogate_pair_test/none: pass
-Done dartk-vm debug_x64 corelib_2/num_parse_test/01: pass
-Done dartk-vm debug_x64 corelib_2/throw_half_surrogate_pair_test/02: pass
-Done dartk-vm debug_x64 corelib_2/string_from_environment3_test/01: pass
-Done dartk-vm debug_x64 corelib_2/string_from_environment3_test/none: pass
-Done dartk-vm debug_x64 corelib_2/string_from_environment3_test/02: pass
-Done dartk-vm debug_x64 corelib_2/string_from_environment3_test/03: pass
-Done dartk-vm debug_x64 corelib_2/string_from_environment3_test/04: pass
-Done dartk-vm debug_x64 corelib_2/string_from_environment3_test/05: pass
-Done dartk-vm debug_x64 corelib_2/string_codeunits_test: pass
-Done dartk-vm debug_x64 corelib_2/stopwatch2_test: pass
-Done dartk-vm debug_x64 corelib_2/apply5_test: pass
-Done dartk-vm debug_x64 corelib_2/reg_exp1_test: pass
-Done dartk-vm debug_x64 corelib_2/set_to_string_test: pass
-Done dartk-vm debug_x64 corelib_2/string_from_environment_test: pass
-Done dartk-vm debug_x64 corelib_2/string_replace_dollar_test: pass
-Done dartk-vm debug_x64 corelib_2/date_time8_test: pass
-Done dartk-vm debug_x64 corelib_2/map_values2_test: pass
-Done dartk-vm debug_x64 corelib_2/apply4_test: pass
-Done dartk-vm debug_x64 corelib_2/date_time6_test: pass
-Done dartk-vm debug_x64 corelib_2/typed_data_with_limited_ints_test: pass
-Done dartk-vm debug_x64 corelib_2/double_floor_to_double_test: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_huge_mul_vm_test: pass
-Done dartk-vm debug_x64 corelib_2/safe_to_string_test: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_huge_mul_vm_test: pass
-Done dartk-vm debug_x64 corelib_2/date_time5_test: pass
-Done dartk-vm debug_x64 corelib_2/apply3_test: pass
-Done dartk-vm debug_x64 corelib_2/set_remove_test: pass
-Done dartk-vm debug_x64 corelib_2/reg_exp_start_end_test: pass
-Done dartk-vm debug_x64 corelib_2/double_floor_test: pass
-Done dartk-vm debug_x64 corelib_2/string_test: pass
-Done dartk-vm debug_x64 corelib_2/collection_removes_test: pass
-Done dartk-vm debug_x64 corelib_2/reg_exp_string_match_test: pass
-Done dartk-vm debug_x64 corelib_2/date_time_test: pass
-Done dartk-vm debug_x64 corelib_2/string_operations_with_null_test: pass
-Done dartk-vm debug_x64 corelib_2/num_clamp_test: pass
-Done dartk-vm debug_x64 corelib_2/reg_exp5_test: pass
-Done dartk-vm debug_x64 corelib_2/string_pattern_test: pass
-Done dartk-vm debug_x64 corelib_2/reg_exp_pattern_test: pass
-Done dartk-vm debug_x64 corelib_2/map_test: pass
-Done dartk-vm debug_x64 corelib_2/symbol_operator_test/none: pass
-Done dartk-vm debug_x64 corelib_2/core_runtime_types_test: pass
-Done dartk-vm debug_x64 corelib_2/symbol_operator_test/03: pass
-Done dartk-vm debug_x64 corelib_2/string_case_test/none: pass
-Done dartk-vm debug_x64 corelib_2/string_case_test/01: pass
-Done dartk-vm debug_x64 corelib_2/string_case_test/02: pass
-Done dartk-vm debug_x64 corelib_2/string_case_test/03: pass
-Done dartk-vm debug_x64 corelib_2/string_trimlr_test/01: pass
-Done dartk-vm debug_x64 corelib_2/string_trimlr_test/none: pass
-Done dartk-vm debug_x64 corelib_2/hash_set_test/none: pass
-Done dartk-vm debug_x64 corelib_2/hash_set_test/01: pass
-Done dartk-vm debug_x64 corelib_2/string_trimlr_test/02: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/none: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/none: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/none: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/overflow: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/overflow: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/overflow: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/add: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/add: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/add: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/sub: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/sub: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/mul: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/sub: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/mul: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/mul: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/trunDiv: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/trunDiv: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/trunDiv: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/div: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/div: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/mod: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/div: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/mod: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/mod: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/modPow: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/modPow: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/modPow: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/modInv: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/modInv: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/gcd: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/modInv: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/gcd: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/negate: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/gcd: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/negate: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/negate: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/shift: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/shift: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/shift: pass
-Done dartk-vm debug_x64 isolate/function_send1_test: pass
-Done dartk-vm debug_x64 isolate/spawn_uri_exported_main_test: pass
-Done dartk-vm debug_x64 isolate/handle_error_test: pass
-Done dartk-vm debug_x64 isolate/error_exit_at_spawn_test: pass
-Done dartk-vm debug_x64 isolate/message_test: pass
-Done dartk-vm debug_x64 isolate/ondone_test: pass
-Done dartk-vm debug_x64 isolate/isolate_current_test: pass
-Done dartk-vm debug_x64 isolate/exit_at_spawnuri_test: pass
-Done dartk-vm debug_x64 isolate/spawn_uri_missing_from_isolate_test: pass
-Done dartk-vm debug_x64 isolate/message2_test: pass
-Done dartk-vm debug_x64 isolate/spawn_function_test: pass
-Done dartk-vm debug_x64 isolate/issue_21398_parent_isolate_test: pass
-Done dartk-vm debug_x64 isolate/request_reply_test: pass
-Done dartk-vm debug_x64 isolate/count_test: pass
-Done dartk-vm debug_x64 isolate/checked_test: pass
-Done dartk-vm debug_x64 isolate/mint_maker_test: pass
-Done dartk-vm debug_x64 isolate/raw_port_test: pass
-Done dartk-vm debug_x64 isolate/start_paused_test: pass
-Done dartk-vm debug_x64 isolate/timer_isolate_test: pass
-Done dartk-vm debug_x64 isolate/nested_spawn2_test: pass
-Done dartk-vm debug_x64 isolate/spawn_uri_test: pass
-Done dartk-vm debug_x64 isolate/bool_from_environment_default_value_test: pass
-Done dartk-vm debug_x64 isolate/issue_21398_parent_isolate1_test: pass
-Done dartk-vm debug_x64 isolate/simple_message_test/none: pass
-Done dartk-vm debug_x64 isolate/spawn_uri_vm_test: pass
-Done dartk-vm debug_x64 isolate/simple_message_test/01: pass
-Done dartk-vm debug_x64 isolate/message3_test/none: pass
-Done dartk-vm debug_x64 isolate/message3_test/constList: pass
-Done dartk-vm debug_x64 isolate/message3_test/constList_identical: pass
-Done dartk-vm debug_x64 isolate/message3_test/byteBuffer: pass
-Done dartk-vm debug_x64 isolate/message3_test/int32x4: pass
-Done dartk-vm debug_x64 isolate/message3_test/constMap: pass
-Done dartk-vm debug_x64 isolate/unresolved_ports_test: pass
-Done dartk-vm debug_x64 isolate/isolate_import_test/01: pass
-Done dartk-vm debug_x64 isolate/message3_test/fun: pass
-Done dartk-vm debug_x64 isolate/message3_test/constInstance: pass
-Done dartk-vm debug_x64 isolate/resolve_package_uri_test: pass
-Done dartk-vm debug_x64 isolate/isolate_import_test/none: pass
-Done dartk-vm debug_x64 isolate/kill2_test: pass
-Done dartk-vm debug_x64 isolate/error_at_spawnuri_test: pass
-Done dartk-vm debug_x64 isolate/capability_test: pass
-Done dartk-vm debug_x64 isolate/ping_test: pass
-Done dartk-vm debug_x64 isolate/int_from_environment_default_value_test: pass
-Done dartk-vm debug_x64 isolate/isolate_complex_messages_test: pass
-Done dartk-vm debug_x64 isolate/send_private_test: pass
-Done dartk-vm debug_x64 isolate/handle_error2_test: pass
-Done dartk-vm debug_x64 isolate/port_test: pass
-Done dartk-vm debug_x64 isolate/kill_test: pass
-Done dartk-vm debug_x64 isolate/handle_error3_test: pass
-Done dartk-vm debug_x64 isolate/error_at_spawn_test: pass
-Done dartk-vm debug_x64 isolate/cross_isolate_message_test: pass
-Done dartk-vm debug_x64 isolate/illegal_msg_mirror_test: pass
-Done dartk-vm debug_x64 isolate/error_exit_at_spawnuri_test: pass
-Done dartk-vm debug_x64 isolate/exit_at_spawn_test: pass
-Done dartk-vm debug_x64 isolate/illegal_msg_function_test: pass
-Done dartk-vm debug_x64 isolate/stacktrace_message_test: pass
-Done dartk-vm debug_x64 isolate/compile_time_error_test/none: pass
-Done dartk-vm debug_x64 isolate/compile_time_error_test/01: pass
-Done dartk-vm debug_x64 isolate/typed_message_test: pass
-Done dartk-vm debug_x64 isolate/issue_22778_test: pass
-Done dartk-vm debug_x64 isolate/pause_test: pass
-Done dartk-vm debug_x64 isolate/message4_test: pass
-Done dartk-vm debug_x64 isolate/function_send_test: pass
-Done dartk-vm debug_x64 isolate/kill_self_test: pass
-Done dartk-vm debug_x64 isolate/issue_24243_parent_isolate_test: pass
-Done dartk-vm debug_x64 isolate/message_enum_test: pass
-Done dartk-vm debug_x64 isolate/nested_spawn_test: pass
-Done dartk-vm debug_x64 isolate/object_leak_test: pass
-Done dartk-vm debug_x64 isolate/spawn_function_custom_class_test: pass
-Done dartk-vm debug_x64 isolate/spawn_uri_missing_test: pass
-Done dartk-vm debug_x64 isolate/enum_const_test/01: pass
-Done dartk-vm debug_x64 isolate/enum_const_test/none: pass
-Done dartk-vm debug_x64 isolate/enum_const_test/02: pass
-Done dartk-vm debug_x64 isolate/string_from_environment_default_value_test: pass
-Done dartk-vm debug_x64 isolate/issue_21398_parent_isolate2_test/01: pass
-Done dartk-vm debug_x64 isolate/issue_21398_parent_isolate2_test/none: pass
-Done dartk-vm debug_x64 kernel/unsorted/try_context_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/this_capture_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/constant_evaluator_regression_test: pass
-Done dartk-vm debug_x64 isolate/spawn_uri_multi_test/none: pass
-Done dartk-vm debug_x64 isolate/spawn_uri_multi_test/01: pass
-Done dartk-vm debug_x64 kernel/unsorted/closures_regression_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/symbol_literal_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/getters_and_setters_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/global_field_initializer_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/try_finally_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/types_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/for_in_loop_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/switch_case_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/closures_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/as_is_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/return_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/super_initializer_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/superclass_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/instance_getters_and_setters_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/string_buffer_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/klass_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/string_concatenation_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/rethrow_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/mapliteral_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/invocation_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/klass_field_initializer_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/super_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/invocation_errors_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/block_scope_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/type_args_regression_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/finally_contexts_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/super_mixin_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/mixin_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/nullable_operator_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/loop_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/local_function_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/nsm_dispatcher_test: pass
-Done dartk-vm debug_x64 isolate/mandel_isolate_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/this_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/field_dispatcher_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/breakable_statement_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/throw_try_catch_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/load_store_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/conditional_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/simple_literal_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/global_function_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/let_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/generic_function_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/factory_regression_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/constant_expressions_test: pass
-Done dartk-vm debug_x64 language/function_subtype_checked0_test: pass
-Done dartk-vm debug_x64 language/string_literals_test: pass
-Done dartk-vm debug_x64 language/double_modulo_test: pass
-Done dartk-vm debug_x64 language/script1_negative_test: pass
-Done dartk-vm debug_x64 isolate/ping_pause_test: pass
-Done dartk-vm debug_x64 language/dangling_else_test: pass
-Done dartk-vm debug_x64 language/prefix22_test: pass
-Done dartk-vm debug_x64 language/regress_16640_test: pass
-Done dartk-vm debug_x64 language/compile_time_constant11_test: pass
-Done dartk-vm debug_x64 language/number_identity_test: pass
-Done dartk-vm debug_x64 language/private_clash_test: pass
-Done dartk-vm debug_x64 language/await_regression_test: pass
-Done dartk-vm debug_x64 language/duplicate_import_prefix_test: pass
-Done dartk-vm debug_x64 language/checked_setter_test: pass
-Done dartk-vm debug_x64 language/list_tracer_in_map_test: pass
-Done dartk-vm debug_x64 language/gc_test: pass
-Done dartk-vm debug_x64 language/import_core_prefix_test: pass
-Done dartk-vm debug_x64 language/prefix5_negative_test: pass
-Done dartk-vm debug_x64 language/operator_negate_and_method_negate_test: pass
-Done dartk-vm debug_x64 language/closure7_test: pass
-Done dartk-vm debug_x64 language/label3_negative_test: pass
-Done dartk-vm debug_x64 language/type_variable_scope2_test: pass
-Done dartk-vm debug_x64 language/inferrer_constructor3_test: pass
-Done dartk-vm debug_x64 language/bad_initializer2_negative_test: pass
-Done dartk-vm debug_x64 language/field4_negative_test: pass
-Done dartk-vm debug_x64 language/switch_label_test: pass
-Done dartk-vm debug_x64 language/for2_test: pass
-Done dartk-vm debug_x64 language/regress_27700_test: pass
-Done dartk-vm debug_x64 language/no_such_method_empty_selector_test: pass
-Done dartk-vm debug_x64 language/licm3_test: pass
-Done dartk-vm debug_x64 language/implicit_closure_test: pass
-Done dartk-vm debug_x64 language/implicit_closure_test: pass
-Done dartk-vm debug_x64 language/deferred_call_empty_before_load_test: pass
-Done dartk-vm debug_x64 language/deferred_regression_22995_test: pass
-Done dartk-vm debug_x64 language/state_mangling4_test: pass
-Done dartk-vm debug_x64 language/function_subtype_local4_test: pass
-Done dartk-vm debug_x64 language/generic_instanceof_test: pass
-Done dartk-vm debug_x64 language/compile_time_constant_e_test: pass
-Done dartk-vm debug_x64 language/map_literal2_test: pass
-Done dartk-vm debug_x64 language/mixin_with_two_implicit_constructors_test: pass
-Done dartk-vm debug_x64 language/mega_load_test: pass
-Done dartk-vm debug_x64 language/prefix12_negative_test: pass
-Done dartk-vm debug_x64 language/prefix7_negative_test: pass
-Done dartk-vm debug_x64 language/prefix11_negative_test: pass
-Done dartk-vm debug_x64 language/critical_edge2_test: pass
-Done dartk-vm debug_x64 language/void_type_test: pass
-Done dartk-vm debug_x64 language/variable_declaration_metadata_test/01: pass
-Done dartk-vm debug_x64 language/string_interpolate_null_test: pass
-Done dartk-vm debug_x64 language/enum_mirror_test: pass
-Done dartk-vm debug_x64 language/string_interpolation_newline_test: pass
-Done dartk-vm debug_x64 language/variable_declaration_metadata_test/02: pass
-Done dartk-vm debug_x64 language/variable_declaration_metadata_test/none: pass
-Done dartk-vm debug_x64 language/variable_declaration_metadata_test/03: pass
-Done dartk-vm debug_x64 language/variable_declaration_metadata_test/04: pass
-Done dartk-vm debug_x64 language/variable_declaration_metadata_test/05: pass
-Done dartk-vm debug_x64 language/variable_declaration_metadata_test/06: pass
-Done dartk-vm debug_x64 language/variable_declaration_metadata_test/07: pass
-Done dartk-vm debug_x64 language/variable_declaration_metadata_test/08: pass
-Done dartk-vm debug_x64 language/variable_declaration_metadata_test/09: pass
-Done dartk-vm debug_x64 language/variable_declaration_metadata_test/10: pass
-Done dartk-vm debug_x64 language/variable_declaration_metadata_test/11: pass
-Done dartk-vm debug_x64 language/variable_declaration_metadata_test/12: pass
-Done dartk-vm debug_x64 language/variable_declaration_metadata_test/14: pass
-Done dartk-vm debug_x64 language/variable_declaration_metadata_test/13: pass
-Done dartk-vm debug_x64 language/variable_declaration_metadata_test/15: pass
-Done dartk-vm debug_x64 language/variable_declaration_metadata_test/16: pass
-Done dartk-vm debug_x64 language/mixin_cyclic_test/01: pass
-Done dartk-vm debug_x64 language/mixin_cyclic_test/02: pass
-Done dartk-vm debug_x64 language/toplevel_collision1_test/00: pass
-Done dartk-vm debug_x64 language/mixin_cyclic_test/none: pass
-Done dartk-vm debug_x64 language/toplevel_collision1_test/01: pass
-Done dartk-vm debug_x64 language/regress_28217_test/none: pass
-Done dartk-vm debug_x64 language/regress_28217_test/01: pass
-Done dartk-vm debug_x64 language/regress_28217_test/02: pass
-Done dartk-vm debug_x64 language/toplevel_collision1_test/none: pass
-Done dartk-vm debug_x64 language/toplevel_collision1_test/02: pass
-Done dartk-vm debug_x64 language/scope_variable_test/01: pass
-Done dartk-vm debug_x64 language/constructor_redirect2_test/02: pass
-Done dartk-vm debug_x64 language/constructor_redirect2_test/03: pass
-Done dartk-vm debug_x64 language/scope_variable_test/none: pass
-Done dartk-vm debug_x64 language/constructor_redirect2_test/04: pass
-Done dartk-vm debug_x64 language/constructor_redirect2_test/none: pass
-Done dartk-vm debug_x64 language/compile_time_constant_r_test/01: pass
-Done dartk-vm debug_x64 language/compile_time_constant_r_test/02: pass
-Done dartk-vm debug_x64 language/constructor_redirect2_test/01: pass
-Done dartk-vm debug_x64 language/compile_time_constant_r_test/03: pass
-Done dartk-vm debug_x64 language/compile_time_constant_r_test/none: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked_test/none: pass
-Done dartk-vm debug_x64 isolate/spawn_uri_nested_vm_test: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked_test/03: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked_test/01: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked_test/02: pass
-Done dartk-vm debug_x64 language/tree_shake_typed_selector_test: pass
-Done dartk-vm debug_x64 language/field_wierd_name_test: pass
-Done dartk-vm debug_x64 language/cond_expr_test: pass
-Done dartk-vm debug_x64 language/is_not_class4_negative_test: pass
-Done dartk-vm debug_x64 language/switch1_negative_test: pass
-Done dartk-vm debug_x64 language/inferrer_synthesized_super_constructor2_test: pass
-Done dartk-vm debug_x64 language/named_parameters_with_dollars_test: pass
-Done dartk-vm debug_x64 language/compile_time_constant_j_test: pass
-Done dartk-vm debug_x64 language/ct_const_test: pass
-Done dartk-vm debug_x64 language/const_local_test: pass
-Done dartk-vm debug_x64 language/generic_list_checked_test: pass
-Done dartk-vm debug_x64 language/compile_time_constant_d_test: pass
-Done dartk-vm debug_x64 language/state_mangling2_test: pass
-Done dartk-vm debug_x64 language/issue10321_test: pass
-Done dartk-vm debug_x64 language/non_const_constructor_without_body_test: pass
-Done dartk-vm debug_x64 language/list_literal2_test: pass
-Done dartk-vm debug_x64 language/prefix11_test: pass
-Done dartk-vm debug_x64 language/setter0_test: pass
-Done dartk-vm debug_x64 language/switch_try_catch_test: pass
-Done dartk-vm debug_x64 language/factory_type_parameter_test: pass
-Done dartk-vm debug_x64 language/intrinsified_methods_test: pass
-Done dartk-vm debug_x64 language/deoptimized_function_on_stack_test: pass
-Done dartk-vm debug_x64 language/double_to_string_as_fixed_test: pass
-Done dartk-vm debug_x64 language/throw3_test: pass
-Done dartk-vm debug_x64 language/export_main_override_test: pass
-Done dartk-vm debug_x64 language/is_operator_clash_test: pass
-Done dartk-vm debug_x64 language/parameter_types_specialization_test: pass
-Done dartk-vm debug_x64 language/factory_test: pass
-Done dartk-vm debug_x64 language/instance_incr_deopt_test: pass
-Done dartk-vm debug_x64 language/method_override6_test: pass
-Done dartk-vm debug_x64 language/full_stacktrace3_test: pass
-Done dartk-vm debug_x64 language/integer_division_by_zero_test: pass
-Done dartk-vm debug_x64 language/double_nan_comparison_test: pass
-Done dartk-vm debug_x64 language/function_type_alias8_test: pass
-Done dartk-vm debug_x64 language/setter1_test: pass
-Done dartk-vm debug_x64 language/operator1_negative_test: pass
-Done dartk-vm debug_x64 language/function_type_parameter2_test: pass
-Done dartk-vm debug_x64 language/local_export_test: pass
-Done dartk-vm debug_x64 language/unbalanced_brace_test/02: pass
-Done dartk-vm debug_x64 language/unbalanced_brace_test/01: pass
-Done dartk-vm debug_x64 language/forwarding_factory_constructor_default_values_test: pass
-Done dartk-vm debug_x64 language/reg_exp_test: pass
-Done dartk-vm debug_x64 language/unbalanced_brace_test/none: pass
-Done dartk-vm debug_x64 language/constant_type_literal_test/01: pass
-Done dartk-vm debug_x64 language/metadata_scope2_test/none: pass
-Done dartk-vm debug_x64 language/metadata_scope2_test/01: pass
-Done dartk-vm debug_x64 language/constant_type_literal_test/none: pass
-Done dartk-vm debug_x64 language/const_constructor3_test/none: pass
-Done dartk-vm debug_x64 language/static_top_level_test/00: pass
-Done dartk-vm debug_x64 language/const_constructor3_test/01: pass
-Done dartk-vm debug_x64 language/static_top_level_test/01: pass
-Done dartk-vm debug_x64 language/const_constructor3_test/03: pass
-Done dartk-vm debug_x64 language/const_constructor3_test/02: pass
-Done dartk-vm debug_x64 language/static_top_level_test/02: pass
-Done dartk-vm debug_x64 language/const_constructor3_test/04: pass
-Done dartk-vm debug_x64 language/static_top_level_test/none: pass
-Done dartk-vm debug_x64 language/static_top_level_test/03: pass
-Done dartk-vm debug_x64 language/static_top_level_test/05: pass
-Done dartk-vm debug_x64 language/static_top_level_test/06: pass
-Done dartk-vm debug_x64 language/static_top_level_test/04: pass
-Done dartk-vm debug_x64 language/static_top_level_test/07: pass
-Done dartk-vm debug_x64 language/default_factory2_test/none: pass
-Done dartk-vm debug_x64 language/default_factory2_test/01: pass
-Done dartk-vm debug_x64 language/method_override2_test/none: pass
-Done dartk-vm debug_x64 language/method_override2_test/00: pass
-Done dartk-vm debug_x64 language/method_override2_test/01: pass
-Done dartk-vm debug_x64 language/method_override2_test/02: pass
-Done dartk-vm debug_x64 language/named_parameters_aggregated_test/none: pass
-Done dartk-vm debug_x64 language/method_override2_test/03: pass
-Done dartk-vm debug_x64 language/named_parameters_aggregated_test/01: pass
-Done dartk-vm debug_x64 language/named_parameters_aggregated_test/02: pass
-Done dartk-vm debug_x64 language/named_parameters_aggregated_test/03: pass
-Done dartk-vm debug_x64 language/named_parameters_aggregated_test/04: pass
-Done dartk-vm debug_x64 language/named_parameters_aggregated_test/06: pass
-Done dartk-vm debug_x64 language/named_parameters_aggregated_test/05: pass
-Done dartk-vm debug_x64 language/call_nonexistent_static_test/none: pass
-Done dartk-vm debug_x64 language/call_nonexistent_static_test/04: pass
-Done dartk-vm debug_x64 language/call_nonexistent_static_test/05: pass
-Done dartk-vm debug_x64 language/call_nonexistent_static_test/09: pass
-Done dartk-vm debug_x64 language/call_nonexistent_static_test/10: pass
-Done dartk-vm debug_x64 language/call_nonexistent_static_test/02: pass
-Done dartk-vm debug_x64 language/call_nonexistent_static_test/01: pass
-Done dartk-vm debug_x64 language/call_nonexistent_static_test/03: pass
-Done dartk-vm debug_x64 language/call_nonexistent_static_test/06: pass
-Done dartk-vm debug_x64 language/call_nonexistent_static_test/07: pass
-Done dartk-vm debug_x64 language/symbol_literal_test/none: pass
-Done dartk-vm debug_x64 language/call_nonexistent_static_test/08: pass
-Done dartk-vm debug_x64 language/symbol_literal_test/01: pass
-Done dartk-vm debug_x64 language/compile_time_constant_c_test/none: pass
-Done dartk-vm debug_x64 language/compile_time_constant_c_test/03: pass
-Done dartk-vm debug_x64 language/compile_time_constant_c_test/01: pass
-Done dartk-vm debug_x64 language/field6_negative_test: pass
-Done dartk-vm debug_x64 language/compile_time_constant_c_test/02: pass
-Done dartk-vm debug_x64 language/super_call4_test: pass
-Done dartk-vm debug_x64 language/incr_op_test: pass
-Done dartk-vm debug_x64 language/first_test: pass
-Done dartk-vm debug_x64 language/issue13179_test: pass
-Done dartk-vm debug_x64 language/generics2_test: pass
-Done dartk-vm debug_x64 language/switch_label2_test: pass
-Done dartk-vm debug_x64 language/regress_23498_test: pass
-Done dartk-vm debug_x64 language/osr_test: pass
-Done dartk-vm debug_x64 language/interface_injection2_negative_test: pass
-Done dartk-vm debug_x64 language/generic_is_check_test: pass
-Done dartk-vm debug_x64 language/function_type_parameter_negative_test: pass
-Done dartk-vm debug_x64 language/super_implicit_closure_test: pass
-Done dartk-vm debug_x64 language/fixed_length_test: pass
-Done dartk-vm debug_x64 language/function_type2_test: pass
-Done dartk-vm debug_x64 language/loop_hoist_test: pass
-Done dartk-vm debug_x64 language/field1_negative_test: pass
-Done dartk-vm debug_x64 language/getter_setter_in_lib_test: pass
-Done dartk-vm debug_x64 language/mixin_super_use_test: pass
-Done dartk-vm debug_x64 language/mixin_type_parameters_super_extends_test: pass
-Done dartk-vm debug_x64 language/type_error_test: pass
-Done dartk-vm debug_x64 language/instance_field_initializer_test: pass
-Done dartk-vm debug_x64 language/inferrer_named_parameter_test: pass
-Done dartk-vm debug_x64 language/reify_typevar_test: pass
-Done dartk-vm debug_x64 language/regress_13494_test: pass
-Done dartk-vm debug_x64 language/function_type_alias3_test: pass
-Done dartk-vm debug_x64 language/function_subtype_bound_closure5_test: pass
-Done dartk-vm debug_x64 language/generic_instanceof5_test: pass
-Done dartk-vm debug_x64 language/double_comparison_test: pass
-Done dartk-vm debug_x64 language/issue10721_test: pass
-Done dartk-vm debug_x64 language/for_inlining_test: pass
-Done dartk-vm debug_x64 language/asyncstar_yieldstar_test: pass
-Done dartk-vm debug_x64 language/switch7_negative_test: pass
-Done dartk-vm debug_x64 language/map_literal2_negative_test: pass
-Done dartk-vm debug_x64 language/type_variable_closure_test: pass
-Done dartk-vm debug_x64 language/regress_22777_test: pass
-Done dartk-vm debug_x64 language/bad_initializer1_negative_test: pass
-Done dartk-vm debug_x64 language/logical_expression5_test: pass
-Done dartk-vm debug_x64 language/function_subtype0_test: pass
-Done dartk-vm debug_x64 language/non_parameterized_factory2_test: pass
-Done dartk-vm debug_x64 language/function_subtype_cast0_test: pass
-Done dartk-vm debug_x64 language/const_constructor_nonconst_field_test/none: pass
-Done dartk-vm debug_x64 language/proxy5_test: pass
-Done dartk-vm debug_x64 language/duplicate_constructor_test/01: pass
-Done dartk-vm debug_x64 language/const_constructor_nonconst_field_test/01: pass
-Done dartk-vm debug_x64 language/duplicate_constructor_test/none: pass
-Done dartk-vm debug_x64 language/compile_time_constant_o_test/01: pass
-Done dartk-vm debug_x64 language/compile_time_constant_o_test/none: pass
-Done dartk-vm debug_x64 language/mixin_super_constructor_named_test/01: pass
-Done dartk-vm debug_x64 language/compile_time_constant_o_test/02: pass
-Done dartk-vm debug_x64 language/mixin_super_constructor_named_test/none: pass
-Done dartk-vm debug_x64 language/cast_test/none: pass
-Done dartk-vm debug_x64 language/cast_test/02: pass
-Done dartk-vm debug_x64 language/cast_test/01: pass
-Done dartk-vm debug_x64 language/cast_test/03: pass
-Done dartk-vm debug_x64 language/cast_test/04: pass
-Done dartk-vm debug_x64 language/cast_test/07: pass
-Done dartk-vm debug_x64 language/cast_test/05: pass
-Done dartk-vm debug_x64 language/cast_test/08: pass
-Done dartk-vm debug_x64 language/cast_test/10: pass
-Done dartk-vm debug_x64 language/cast_test/12: pass
-Done dartk-vm debug_x64 language/cast_test/13: pass
-Done dartk-vm debug_x64 language/cast_test/14: pass
-Done dartk-vm debug_x64 language/type_variable_conflict2_test/02: pass
-Done dartk-vm debug_x64 language/type_literal_prefix_call_test/none: pass
-Done dartk-vm debug_x64 language/type_variable_conflict2_test/none: pass
-Done dartk-vm debug_x64 language/cast_test/15: pass
-Done dartk-vm debug_x64 language/type_literal_prefix_call_test/00: pass
-Done dartk-vm debug_x64 language/type_variable_conflict2_test/01: pass
-Done dartk-vm debug_x64 language/type_variable_conflict2_test/03: pass
-Done dartk-vm debug_x64 language/type_variable_conflict2_test/06: pass
-Done dartk-vm debug_x64 language/type_variable_conflict2_test/08: pass
-Done dartk-vm debug_x64 language/type_variable_conflict2_test/10: pass
-Done dartk-vm debug_x64 language/type_variable_conflict2_test/04: pass
-Done dartk-vm debug_x64 language/type_variable_conflict2_test/05: pass
-Done dartk-vm debug_x64 language/super_conditional_operator_test/01: pass
-Done dartk-vm debug_x64 language/type_variable_conflict2_test/07: pass
-Done dartk-vm debug_x64 language/super_conditional_operator_test/02: pass
-Done dartk-vm debug_x64 language/type_variable_conflict2_test/09: pass
-Done dartk-vm debug_x64 language/super_conditional_operator_test/03: pass
-Done dartk-vm debug_x64 language/super_conditional_operator_test/04: pass
-Done dartk-vm debug_x64 language/super_conditional_operator_test/06: pass
-Done dartk-vm debug_x64 language/super_conditional_operator_test/05: pass
-Done dartk-vm debug_x64 language/super_conditional_operator_test/07: pass
-Done dartk-vm debug_x64 language/super_conditional_operator_test/none: pass
-Done dartk-vm debug_x64 language/super_conditional_operator_test/08: pass
-Done dartk-vm debug_x64 language/super_conditional_operator_test/09: pass
-Done dartk-vm debug_x64 language/super_conditional_operator_test/10: pass
-Done dartk-vm debug_x64 language/super_conditional_operator_test/11: pass
-Done dartk-vm debug_x64 language/super_conditional_operator_test/13: pass
-Done dartk-vm debug_x64 language/super_conditional_operator_test/14: pass
-Done dartk-vm debug_x64 language/super_conditional_operator_test/16: pass
-Done dartk-vm debug_x64 language/super_conditional_operator_test/12: pass
-Done dartk-vm debug_x64 language/super_conditional_operator_test/15: pass
-Done dartk-vm debug_x64 language/super_conditional_operator_test/17: pass
-Done dartk-vm debug_x64 language/super_conditional_operator_test/18: pass
-Done dartk-vm debug_x64 language/factory_redirection2_test/01: pass
-Done dartk-vm debug_x64 language/field_decl_missing_var_type_test/01: pass
-Done dartk-vm debug_x64 language/factory_redirection2_test/none: pass
-Done dartk-vm debug_x64 language/cyclic_constructor_test/none: pass
-Done dartk-vm debug_x64 language/cyclic_constructor_test/01: pass
-Done dartk-vm debug_x64 language/cast2_test/none: pass
-Done dartk-vm debug_x64 language/field_decl_missing_var_type_test/none: pass
-Done dartk-vm debug_x64 language/cast2_test/01: pass
-Done dartk-vm debug_x64 language/void_block_return_test/none: pass
-Done dartk-vm debug_x64 language/void_block_return_test/00: pass
-Done dartk-vm debug_x64 language/const_named_test: pass
-Done dartk-vm debug_x64 language/inline_test: pass
-Done dartk-vm debug_x64 language/final_for_in_variable_test/01: pass
-Done dartk-vm debug_x64 language/final_for_in_variable_test/none: pass
-Done dartk-vm debug_x64 language/private_member2_negative_test: pass
-Done dartk-vm debug_x64 language/execute_finally8_test: pass
-Done dartk-vm debug_x64 language/label8_negative_test: pass
-Done dartk-vm debug_x64 language/context_args_with_defaults_test: pass
-Done dartk-vm debug_x64 language/index_test: pass
-Done dartk-vm debug_x64 language/constructor_name_clash_test: pass
-Done dartk-vm debug_x64 language/null_inline_test: pass
-Done dartk-vm debug_x64 language/named_parameters_named_count_test: pass
-Done dartk-vm debug_x64 language/large_implicit_getter_test: pass
-Done dartk-vm debug_x64 language/regress_23089_test: pass
-Done dartk-vm debug_x64 language/rewrite_variable_initializer_test: pass
-Done dartk-vm debug_x64 language/class_syntax2_test: pass
-Done dartk-vm debug_x64 language/function_subtype_typearg2_test: pass
-Done dartk-vm debug_x64 language/for_in2_test: pass
-Done dartk-vm debug_x64 language/constructor3_negative_test: pass
-Done dartk-vm debug_x64 language/pure_function2_test: pass
-Done dartk-vm debug_x64 language/compile_time_constant7_test: pass
-Done dartk-vm debug_x64 language/function_subtype_typearg0_test: pass
-Done dartk-vm debug_x64 language/class_codegen_test: pass
-Done dartk-vm debug_x64 language/optimize_redundant_array_load_test: pass
-Done dartk-vm debug_x64 language/inst_field_initializer_test: pass
-Done dartk-vm debug_x64 language/factory3_negative_test: pass
-Done dartk-vm debug_x64 language/const_optional_args_negative_test: pass
-Done dartk-vm debug_x64 language/issue7513_test: pass
-Done dartk-vm debug_x64 language/type_variable_identifier_expression_test: pass
-Done dartk-vm debug_x64 language/regress_28255_test: pass
-Done dartk-vm debug_x64 language/string_split_test: pass
-Done dartk-vm debug_x64 language/issue12288_test: pass
-Done dartk-vm debug_x64 language/type_intersection_test: pass
-Done dartk-vm debug_x64 language/named_parameter_clash_test: pass
-Done dartk-vm debug_x64 language/fibo_test: pass
-Done dartk-vm debug_x64 language/call_function_apply_test: pass
-Done dartk-vm debug_x64 language/ct_const3_test: pass
-Done dartk-vm debug_x64 language/generic_constructor_mixin3_test: pass
-Done dartk-vm debug_x64 language/mixin_only_for_rti_test: pass
-Done dartk-vm debug_x64 language/compile_time_constant6_test: pass
-Done dartk-vm debug_x64 language/null_is_bottom_type_test/none: pass
-Done dartk-vm debug_x64 language/null_is_bottom_type_test/01: pass
-Done dartk-vm debug_x64 language/null_is_bottom_type_test/02: pass
-Done dartk-vm debug_x64 language/null_is_bottom_type_test/03: pass
-Done dartk-vm debug_x64 language/null_is_bottom_type_test/04: pass
-Done dartk-vm debug_x64 language/null_is_bottom_type_test/05: pass
-Done dartk-vm debug_x64 language/null_is_bottom_type_test/06: pass
-Done dartk-vm debug_x64 language/null_is_bottom_type_test/07: pass
-Done dartk-vm debug_x64 language/null_is_bottom_type_test/09: pass
-Done dartk-vm debug_x64 language/null_is_bottom_type_test/08: pass
-Done dartk-vm debug_x64 language/null_is_bottom_type_test/10: pass
-Done dartk-vm debug_x64 language/null_is_bottom_type_test/11: pass
-Done dartk-vm debug_x64 language/null_is_bottom_type_test/12: pass
-Done dartk-vm debug_x64 language/null_is_bottom_type_test/14: pass
-Done dartk-vm debug_x64 language/null_is_bottom_type_test/13: pass
-Done dartk-vm debug_x64 language/null_is_bottom_type_test/16: pass
-Done dartk-vm debug_x64 language/enum_syntax_test/01: pass
-Done dartk-vm debug_x64 language/null_is_bottom_type_test/15: pass
-Done dartk-vm debug_x64 language/redirecting_factory_malbounded_test/none: pass
-Done dartk-vm debug_x64 language/enum_syntax_test/02: pass
-Done dartk-vm debug_x64 language/redirecting_factory_malbounded_test/01: pass
-Done dartk-vm debug_x64 language/enum_syntax_test/03: pass
-Done dartk-vm debug_x64 language/enum_syntax_test/none: pass
-Done dartk-vm debug_x64 language/enum_syntax_test/05: pass
-Done dartk-vm debug_x64 language/enum_syntax_test/04: pass
-Done dartk-vm debug_x64 language/enum_syntax_test/06: pass
-Done dartk-vm debug_x64 language/enum_syntax_test/07: pass
-Done dartk-vm debug_x64 language/enum_syntax_test/08: pass
-Done dartk-vm debug_x64 language/enum_syntax_test/09: pass
-Done dartk-vm debug_x64 language/enum_syntax_test/11: pass
-Done dartk-vm debug_x64 language/enum_syntax_test/10: pass
-Done dartk-vm debug_x64 language/enum_syntax_test/20: pass
-Done dartk-vm debug_x64 language/enum_syntax_test/21: pass
-Done dartk-vm debug_x64 language/enum_syntax_test/30: pass
-Done dartk-vm debug_x64 language/enum_syntax_test/22: pass
-Done dartk-vm debug_x64 language/type_variable_scope_test/none: pass
-Done dartk-vm debug_x64 language/type_variable_scope_test/00: pass
-Done dartk-vm debug_x64 language/type_variable_scope_test/02: pass
-Done dartk-vm debug_x64 language/type_variable_scope_test/03: pass
-Done dartk-vm debug_x64 language/type_variable_scope_test/01: pass
-Done dartk-vm debug_x64 language/type_variable_scope_test/04: pass
-Done dartk-vm debug_x64 language/super_no_such_method5_test/none: pass
-Done dartk-vm debug_x64 language/type_variable_scope_test/05: pass
-Done dartk-vm debug_x64 language/identical_const_test/01: pass
-Done dartk-vm debug_x64 language/identical_const_test/02: pass
-Done dartk-vm debug_x64 language/super_no_such_method5_test/01: pass
-Done dartk-vm debug_x64 language/identical_const_test/04: pass
-Done dartk-vm debug_x64 language/identical_const_test/03: pass
-Done dartk-vm debug_x64 language/identical_const_test/none: pass
-Done dartk-vm debug_x64 language/identical_const_test/05: pass
-Done dartk-vm debug_x64 language/identical_const_test/06: pass
-Done dartk-vm debug_x64 language/factory_redirection3_cyclic_test/01: pass
-Done dartk-vm debug_x64 language/function_syntax_test/00: pass
-Done dartk-vm debug_x64 language/function_syntax_test/01: pass
-Done dartk-vm debug_x64 language/function_syntax_test/02: pass
-Done dartk-vm debug_x64 language/factory_redirection3_cyclic_test/none: pass
-Done dartk-vm debug_x64 language/identical_const_test/07: pass
-Done dartk-vm debug_x64 language/function_syntax_test/03: pass
-Done dartk-vm debug_x64 language/function_syntax_test/04: pass
-Done dartk-vm debug_x64 language/function_syntax_test/none: pass
-Done dartk-vm debug_x64 language/identical_const_test/08: pass
-Done dartk-vm debug_x64 language/function_syntax_test/05: pass
-Done dartk-vm debug_x64 language/function_syntax_test/06: pass
-Done dartk-vm debug_x64 language/function_syntax_test/08: pass
-Done dartk-vm debug_x64 language/function_syntax_test/12: pass
-Done dartk-vm debug_x64 language/function_syntax_test/07: pass
-Done dartk-vm debug_x64 language/function_syntax_test/09: pass
-Done dartk-vm debug_x64 language/function_syntax_test/13: pass
-Done dartk-vm debug_x64 language/function_syntax_test/10: pass
-Done dartk-vm debug_x64 language/function_syntax_test/11: pass
-Done dartk-vm debug_x64 language/function_syntax_test/14: pass
-Done dartk-vm debug_x64 language/function_syntax_test/17: pass
-Done dartk-vm debug_x64 language/function_syntax_test/19: pass
-Done dartk-vm debug_x64 language/function_syntax_test/18: pass
-Done dartk-vm debug_x64 language/function_syntax_test/15: pass
-Done dartk-vm debug_x64 language/function_syntax_test/21: pass
-Done dartk-vm debug_x64 language/function_syntax_test/16: pass
-Done dartk-vm debug_x64 language/function_syntax_test/20: pass
-Done dartk-vm debug_x64 language/function_syntax_test/22: pass
-Done dartk-vm debug_x64 language/function_syntax_test/26: pass
-Done dartk-vm debug_x64 language/function_syntax_test/24: pass
-Done dartk-vm debug_x64 language/function_syntax_test/23: pass
-Done dartk-vm debug_x64 language/function_syntax_test/25: pass
-Done dartk-vm debug_x64 language/function_syntax_test/29: pass
-Done dartk-vm debug_x64 language/function_syntax_test/28: pass
-Done dartk-vm debug_x64 language/function_syntax_test/27: pass
-Done dartk-vm debug_x64 language/function_syntax_test/30: pass
-Done dartk-vm debug_x64 language/function_syntax_test/32: pass
-Done dartk-vm debug_x64 language/function_syntax_test/36: pass
-Done dartk-vm debug_x64 language/function_syntax_test/31: pass
-Done dartk-vm debug_x64 language/function_syntax_test/33: pass
-Done dartk-vm debug_x64 language/function_syntax_test/34: pass
-Done dartk-vm debug_x64 language/function_syntax_test/35: pass
-Done dartk-vm debug_x64 language/function_syntax_test/37: pass
-Done dartk-vm debug_x64 language/function_syntax_test/44: pass
-Done dartk-vm debug_x64 language/function_syntax_test/46: pass
-Done dartk-vm debug_x64 language/function_syntax_test/45: pass
-Done dartk-vm debug_x64 language/function_syntax_test/49: pass
-Done dartk-vm debug_x64 language/function_syntax_test/47: pass
-Done dartk-vm debug_x64 language/function_syntax_test/50: pass
-Done dartk-vm debug_x64 language/function_syntax_test/48: pass
-Done dartk-vm debug_x64 language/function_syntax_test/51: pass
-Done dartk-vm debug_x64 language/function_syntax_test/52: pass
-Done dartk-vm debug_x64 language/function_syntax_test/54: pass
-Done dartk-vm debug_x64 language/function_syntax_test/65: pass
-Done dartk-vm debug_x64 language/function_syntax_test/53: pass
-Done dartk-vm debug_x64 language/function_syntax_test/55: pass
-Done dartk-vm debug_x64 language/function_syntax_test/64: pass
-Done dartk-vm debug_x64 language/function_syntax_test/66: pass
-Done dartk-vm debug_x64 language/function_syntax_test/67: pass
-Done dartk-vm debug_x64 language/function_syntax_test/68: pass
-Done dartk-vm debug_x64 language/function_syntax_test/69: pass
-Done dartk-vm debug_x64 language/function_syntax_test/71: pass
-Done dartk-vm debug_x64 language/function_syntax_test/72: pass
-Done dartk-vm debug_x64 language/function_syntax_test/74: pass
-Done dartk-vm debug_x64 language/function_syntax_test/70: pass
-Done dartk-vm debug_x64 language/function_syntax_test/73: pass
-Done dartk-vm debug_x64 language/part_refers_to_core_library_test/01: pass
-Done dartk-vm debug_x64 language/part_refers_to_core_library_test/none: pass
-Done dartk-vm debug_x64 language/proxy_test/none: pass
-Done dartk-vm debug_x64 language/proxy_test/01: pass
-Done dartk-vm debug_x64 language/proxy_test/03: pass
-Done dartk-vm debug_x64 language/proxy_test/02: pass
-Done dartk-vm debug_x64 language/proxy_test/05: pass
-Done dartk-vm debug_x64 language/proxy_test/06: pass
-Done dartk-vm debug_x64 language/proxy_test/04: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked2_test/none: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked2_test/03: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked2_test/01: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked2_test/04: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked2_test/05: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked2_test/02: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked2_test/06: pass
-Done dartk-vm debug_x64 language/malformed_bound_test/none: pass
-Done dartk-vm debug_x64 language/function_type_alias5_test/01: pass
-Done dartk-vm debug_x64 language/function_type_alias5_test/00: pass
-Done dartk-vm debug_x64 language/function_type_alias5_test/02: pass
-Done dartk-vm debug_x64 language/malformed_bound_test/01: pass
-Done dartk-vm debug_x64 language/function_type_alias5_test/none: pass
-Done dartk-vm debug_x64 language/regress_22579_test: pass
-Done dartk-vm debug_x64 language/stacktrace_test: pass
-Done dartk-vm debug_x64 language/is_function_test: pass
-Done dartk-vm debug_x64 language/closure_type_variable_test: pass
-Done dartk-vm debug_x64 language/lazy_static8_test: pass
-Done dartk-vm debug_x64 language/type_parameter_literal_test: pass
-Done dartk-vm debug_x64 language/inlined_throw_test: pass
-Done dartk-vm debug_x64 language/deferred_regression_28678_test: pass
-Done dartk-vm debug_x64 language/try_catch_optimized2_test: pass
-Done dartk-vm debug_x64 language/field_initialization_order_test: pass
-Done dartk-vm debug_x64 language/closure_parameter_types_test: pass
-Done dartk-vm debug_x64 language/type_check_test: pass
-Done dartk-vm debug_x64 language/hello_script_test: pass
-Done dartk-vm debug_x64 language/while_test: pass
-Done dartk-vm debug_x64 language/super_operator_index2_test: pass
-Done dartk-vm debug_x64 language/bound_closure_primitives_test: pass
-Done dartk-vm debug_x64 language/cha_deopt3_test: pass
-Done dartk-vm debug_x64 language/cha_deopt3_test: pass
-Done dartk-vm debug_x64 language/generic_test: pass
-Done dartk-vm debug_x64 language/prefix21_test: pass
-Done dartk-vm debug_x64 language/const_qq_test: pass
-Done dartk-vm debug_x64 language/regress_26668_test: pass
-Done dartk-vm debug_x64 language/type_propagation_assert_assignable_test: pass
-Done dartk-vm debug_x64 language/expect_test: pass
-Done dartk-vm debug_x64 language/invocation_mirror_invoke_on2_test: pass
-Done dartk-vm debug_x64 language/try_finally_regress_25333_test: pass
-Done dartk-vm debug_x64 language/try_catch4_test: pass
-Done dartk-vm debug_x64 language/field_optimization2_test: pass
-Done dartk-vm debug_x64 language/instance_compound_assignment_operator_test: pass
-Done dartk-vm debug_x64 language/void_check_test: pass
-Done dartk-vm debug_x64 language/extends_test: pass
-Done dartk-vm debug_x64 language/no_such_method_dispatcher_test: pass
-Done dartk-vm debug_x64 language/cha_deopt1_test: pass
-Done dartk-vm debug_x64 language/no_such_method2_test: pass
-Done dartk-vm debug_x64 language/issue13556_test: pass
-Done dartk-vm debug_x64 language/type_propagation2_test: pass
-Done dartk-vm debug_x64 language/regress_12615_test: pass
-Done dartk-vm debug_x64 language/try_catch_optimized1_test: pass
-Done dartk-vm debug_x64 language/super_first_constructor_test: pass
-Done dartk-vm debug_x64 language/regress_21795_test: pass
-Done dartk-vm debug_x64 language/duplicate_export_negative_test: pass
-Done dartk-vm debug_x64 language/mixin_super_constructor_default_test: pass
-Done dartk-vm debug_x64 language/prefix4_negative_test: pass
-Done dartk-vm debug_x64 language/mixin_class_from_core_library_test: pass
-Done dartk-vm debug_x64 language/code_motion_crash_test: pass
-Done dartk-vm debug_x64 language/compile_time_constant_a_test: pass
-Done dartk-vm debug_x64 language/mixin_extends_field_test: pass
-Done dartk-vm debug_x64 language/field2_negative_test: pass
-Done dartk-vm debug_x64 language/this_conditional_operator_test/01: pass
-Done dartk-vm debug_x64 language/issue14014_2_test: pass
-Done dartk-vm debug_x64 language/mixin_type_parameter3_test: pass
-Done dartk-vm debug_x64 language/interface_cycle_test/01: pass
-Done dartk-vm debug_x64 language/this_conditional_operator_test/none: pass
-Done dartk-vm debug_x64 language/interface_cycle_test/02: pass
-Done dartk-vm debug_x64 language/interface_cycle_test/none: pass
-Done dartk-vm debug_x64 language/factory_redirection_test/04: pass
-Done dartk-vm debug_x64 language/factory_redirection_test/01: pass
-Done dartk-vm debug_x64 language/factory_redirection_test/02: pass
-Done dartk-vm debug_x64 language/factory_redirection_test/none: pass
-Done dartk-vm debug_x64 language/factory_redirection_test/03: pass
-Done dartk-vm debug_x64 language/factory_redirection_test/05: pass
-Done dartk-vm debug_x64 language/factory_redirection_test/06: pass
-Done dartk-vm debug_x64 language/factory_redirection_test/07: pass
-Done dartk-vm debug_x64 language/factory_redirection_test/08: pass
-Done dartk-vm debug_x64 language/factory_redirection_test/09: pass
-Done dartk-vm debug_x64 language/factory_redirection_test/11: pass
-Done dartk-vm debug_x64 language/factory_redirection_test/10: pass
-Done dartk-vm debug_x64 language/factory_redirection_test/12: pass
-Done dartk-vm debug_x64 language/factory_redirection_test/13: pass
-Done dartk-vm debug_x64 language/factory_redirection_test/14: pass
-Done dartk-vm debug_x64 language/switch_case_test/none: pass
-Done dartk-vm debug_x64 language/switch_case_test/00: pass
-Done dartk-vm debug_x64 language/switch_case_test/01: pass
-Done dartk-vm debug_x64 language/switch_case_test/02: pass
-Done dartk-vm debug_x64 language/regress_21912_test/none: pass
-Done dartk-vm debug_x64 language/regress_21912_test/01: pass
-Done dartk-vm debug_x64 language/regress_21912_test/02: pass
-Done dartk-vm debug_x64 language/malformed_inheritance_test/01: pass
-Done dartk-vm debug_x64 language/malformed_inheritance_test/03: pass
-Done dartk-vm debug_x64 language/inferrer_constructor5_test/01: pass
-Done dartk-vm debug_x64 language/inferrer_constructor5_test/none: pass
-Done dartk-vm debug_x64 language/malformed_inheritance_test/none: pass
-Done dartk-vm debug_x64 language/malformed_inheritance_test/02: pass
-Done dartk-vm debug_x64 language/malformed_inheritance_test/05: pass
-Done dartk-vm debug_x64 language/malformed_inheritance_test/08: pass
-Done dartk-vm debug_x64 language/malformed_inheritance_test/07: pass
-Done dartk-vm debug_x64 language/malformed_inheritance_test/04: pass
-Done dartk-vm debug_x64 language/malformed_inheritance_test/09: pass
-Done dartk-vm debug_x64 language/malformed_inheritance_test/10: pass
-Done dartk-vm debug_x64 language/malformed_inheritance_test/12: pass
-Done dartk-vm debug_x64 language/malformed_inheritance_test/11: pass
-Done dartk-vm debug_x64 language/malformed_inheritance_test/06: pass
-Done dartk-vm debug_x64 language/mixin_super_constructor_multiple_test: pass
-Done dartk-vm debug_x64 language/try_catch3_test: pass
-Done dartk-vm debug_x64 language/private_member3_negative_test: pass
-Done dartk-vm debug_x64 language/try_catch_osr_test: pass
-Done dartk-vm debug_x64 language/mixin_type_parameters_mixin_test: pass
-Done dartk-vm debug_x64 language/string_optimizations_test: pass
-Done dartk-vm debug_x64 language/getters_setters_type3_test: pass
-Done dartk-vm debug_x64 language/operator5_test: pass
-Done dartk-vm debug_x64 language/mixin_mixin7_test: pass
-Done dartk-vm debug_x64 language/part2_test: pass
-Done dartk-vm debug_x64 language/super_setter_interceptor_test: pass
-Done dartk-vm debug_x64 language/closure_in_constructor_test: pass
-Done dartk-vm debug_x64 language/list_tracer_in_list_test: pass
-Done dartk-vm debug_x64 language/issue9687_test: pass
-Done dartk-vm debug_x64 language/enum_index_test: pass
-Done dartk-vm debug_x64 language/prefix16_test: pass
-Done dartk-vm debug_x64 language/export_ambiguous_main_negative_test: pass
-Done dartk-vm debug_x64 language/const_counter_negative_test: pass
-Done dartk-vm debug_x64 language/function_subtype_bound_closure4_test: pass
-Done dartk-vm debug_x64 language/core_type_check_test: pass
-Done dartk-vm debug_x64 language/regress_25246_1_test: pass
-Done dartk-vm debug_x64 language/issue21159_test: pass
-Done dartk-vm debug_x64 language/rewrite_if_empty_then_test: pass
-Done dartk-vm debug_x64 language/constructor_test: pass
-Done dartk-vm debug_x64 language/mixin_super_bound_test: pass
-Done dartk-vm debug_x64 language/deferred_mixin_test: pass
-Done dartk-vm debug_x64 language/regress_26175_test: pass
-Done dartk-vm debug_x64 language/int_test: pass
-Done dartk-vm debug_x64 language/function_subtype_cast1_test: pass
-Done dartk-vm debug_x64 language/redirecting_constructor_initializer_test: pass
-Done dartk-vm debug_x64 language/list_tracer_return_from_tearoff_closure_test: pass
-Done dartk-vm debug_x64 language/generic_deep_test: pass
-Done dartk-vm debug_x64 language/recursive_loop_phis_test: pass
-Done dartk-vm debug_x64 language/hello_dart_test: pass
-Done dartk-vm debug_x64 language/closure_break2_test: pass
-Done dartk-vm debug_x64 language/const_syntax_test/01: pass
-Done dartk-vm debug_x64 language/const_syntax_test/02: pass
-Done dartk-vm debug_x64 language/unresolved_top_level_var_negative_test: pass
-Done dartk-vm debug_x64 language/execute_finally2_test: pass
-Done dartk-vm debug_x64 language/value_range_test: pass
-Done dartk-vm debug_x64 language/cascade_in_expression_function_test: pass
-Done dartk-vm debug_x64 language/const_syntax_test/03: pass
-Done dartk-vm debug_x64 language/const_syntax_test/none: pass
-Done dartk-vm debug_x64 language/const_syntax_test/04: pass
-Done dartk-vm debug_x64 language/const_syntax_test/06: pass
-Done dartk-vm debug_x64 language/const_syntax_test/07: pass
-Done dartk-vm debug_x64 language/const_syntax_test/11: pass
-Done dartk-vm debug_x64 language/const_syntax_test/12: pass
-Done dartk-vm debug_x64 language/const_syntax_test/05: pass
-Done dartk-vm debug_x64 language/cyclic_typedef_test/01: pass
-Done dartk-vm debug_x64 language/cyclic_typedef_test/10: pass
-Done dartk-vm debug_x64 language/const_syntax_test/08: pass
-Done dartk-vm debug_x64 language/const_syntax_test/09: pass
-Done dartk-vm debug_x64 language/const_syntax_test/10: pass
-Done dartk-vm debug_x64 language/cyclic_typedef_test/11: pass
-Done dartk-vm debug_x64 language/cyclic_typedef_test/02: pass
-Done dartk-vm debug_x64 language/cyclic_typedef_test/none: pass
-Done dartk-vm debug_x64 language/cyclic_typedef_test/03: pass
-Done dartk-vm debug_x64 language/cyclic_typedef_test/04: pass
-Done dartk-vm debug_x64 language/cyclic_typedef_test/06: pass
-Done dartk-vm debug_x64 language/cyclic_typedef_test/05: pass
-Done dartk-vm debug_x64 language/cyclic_typedef_test/07: pass
-Done dartk-vm debug_x64 language/cyclic_typedef_test/09: pass
-Done dartk-vm debug_x64 language/cyclic_typedef_test/08: pass
-Done dartk-vm debug_x64 language/regress_23051_test/01: pass
-Done dartk-vm debug_x64 language/regress_23051_test/none: pass
-Done dartk-vm debug_x64 language/cyclic_typedef_test/13: pass
-Done dartk-vm debug_x64 language/cyclic_typedef_test/12: pass
-Done dartk-vm debug_x64 language/type_promotion_functions_test/01: pass
-Done dartk-vm debug_x64 language/type_promotion_functions_test/none: pass
-Done dartk-vm debug_x64 language/type_promotion_functions_test/09: pass
-Done dartk-vm debug_x64 language/type_promotion_functions_test/11: pass
-Done dartk-vm debug_x64 language/type_promotion_functions_test/12: pass
-Done dartk-vm debug_x64 language/type_promotion_functions_test/13: pass
-Done dartk-vm debug_x64 language/type_promotion_functions_test/14: pass
-Done dartk-vm debug_x64 language/type_promotion_functions_test/10: pass
-Done dartk-vm debug_x64 language/type_promotion_functions_test/02: pass
-Done dartk-vm debug_x64 language/type_promotion_functions_test/04: pass
-Done dartk-vm debug_x64 language/type_promotion_functions_test/03: pass
-Done dartk-vm debug_x64 language/type_promotion_functions_test/05: pass
-Done dartk-vm debug_x64 language/type_promotion_functions_test/06: pass
-Done dartk-vm debug_x64 language/type_promotion_functions_test/08: pass
-Done dartk-vm debug_x64 language/generic_methods_type_expression_test/none: pass
-Done dartk-vm debug_x64 language/type_promotion_functions_test/07: pass
-Done dartk-vm debug_x64 language/generic_methods_type_expression_test/03: pass
-Done dartk-vm debug_x64 language/const_switch2_test/none: pass
-Done dartk-vm debug_x64 language/generic_methods_type_expression_test/01: pass
-Done dartk-vm debug_x64 language/const_switch2_test/01: pass
-Done dartk-vm debug_x64 language/string_interpolation1_test/01: pass
-Done dartk-vm debug_x64 language/string_interpolation1_test/none: pass
-Done dartk-vm debug_x64 language/field_override_test/none: pass
-Done dartk-vm debug_x64 language/field_override_test/01: pass
-Done dartk-vm debug_x64 language/setter_override_test/none: pass
-Done dartk-vm debug_x64 language/field_override_test/02: pass
-Done dartk-vm debug_x64 language/setter_override_test/00: pass
-Done dartk-vm debug_x64 language/setter_override_test/02: pass
-Done dartk-vm debug_x64 language/setter_override_test/01: pass
-Done dartk-vm debug_x64 language/setter_override_test/03: pass
-Done dartk-vm debug_x64 language/implicit_this_test/none: pass
-Done dartk-vm debug_x64 language/implicit_this_test/04: pass
-Done dartk-vm debug_x64 language/implicit_this_test/02: pass
-Done dartk-vm debug_x64 language/duplicate_implements_test/none: pass
-Done dartk-vm debug_x64 language/implicit_this_test/01: pass
-Done dartk-vm debug_x64 language/duplicate_implements_test/01: pass
-Done dartk-vm debug_x64 language/duplicate_implements_test/02: pass
-Done dartk-vm debug_x64 language/duplicate_implements_test/03: pass
-Done dartk-vm debug_x64 language/mixin_invalid_inheritance1_test/02: pass
-Done dartk-vm debug_x64 language/mixin_invalid_inheritance1_test/01: pass
-Done dartk-vm debug_x64 language/mixin_invalid_inheritance1_test/03: pass
-Done dartk-vm debug_x64 language/duplicate_implements_test/04: pass
-Done dartk-vm debug_x64 language/mixin_invalid_inheritance1_test/none: pass
-Done dartk-vm debug_x64 language/setter_declaration_negative_test: pass
-Done dartk-vm debug_x64 language/typed_selector_test: pass
-Done dartk-vm debug_x64 language/raw_string_test: pass
-Done dartk-vm debug_x64 language/bool_test: pass
-Done dartk-vm debug_x64 language/function_subtype_call1_test: pass
-Done dartk-vm debug_x64 language/execute_finally9_test: pass
-Done dartk-vm debug_x64 language/truncdiv_uint32_test: pass
-Done dartk-vm debug_x64 language/issue10204_test: pass
-Done dartk-vm debug_x64 language/parameter_initializer3_negative_test: pass
-Done dartk-vm debug_x64 language/await_for_cancel_test: pass
-Done dartk-vm debug_x64 language/class_test: pass
-Done dartk-vm debug_x64 language/factory_type_parameter2_test: pass
-Done dartk-vm debug_x64 language/factory4_test: pass
-Done dartk-vm debug_x64 language/default_implementation2_test: pass
-Done dartk-vm debug_x64 language/type_variable_static_context_negative_test: pass
-Done dartk-vm debug_x64 language/resolve_test: pass
-Done dartk-vm debug_x64 language/function_subtype_closure1_test: pass
-Done dartk-vm debug_x64 language/regress_26543_3_test: pass
-Done dartk-vm debug_x64 language/constructor_redirect2_negative_test: pass
-Done dartk-vm debug_x64 language/regress_21998_3_test: pass
-Done dartk-vm debug_x64 language/mixin_extends_method_test: pass
-Done dartk-vm debug_x64 language/call_with_no_such_method_test: pass
-Done dartk-vm debug_x64 language/named_argument_test: pass
-Done dartk-vm debug_x64 language/parameter_initializer2_test: pass
-Done dartk-vm debug_x64 language/inference_super_constructor_call_test: pass
-Done dartk-vm debug_x64 language/naming2_test: pass
-Done dartk-vm debug_x64 language/dynamic_call_test: pass
-Done dartk-vm debug_x64 language/getters_setters_test: pass
-Done dartk-vm debug_x64 language/getter_setter_order_test: pass
-Done dartk-vm debug_x64 language/mixin_implements2_test: pass
-Done dartk-vm debug_x64 language/statement_test: pass
-Done dartk-vm debug_x64 language/type_variable_field_initializer_closure_test: pass
-Done dartk-vm debug_x64 language/mixin_getter_regression_test: pass
-Done dartk-vm debug_x64 language/bailout3_test: pass
-Done dartk-vm debug_x64 language/malbounded_type_cast2_test: pass
-Done dartk-vm debug_x64 language/regress_21998_4_test: pass
-Done dartk-vm debug_x64 language/mixin_type_parameters_simple_test: pass
-Done dartk-vm debug_x64 language/const_list_test: pass
-Done dartk-vm debug_x64 language/string_interpolation9_test/1: pass
-Done dartk-vm debug_x64 language/string_interpolation9_test/2: pass
-Done dartk-vm debug_x64 language/string_interpolation9_test/3: pass
-Done dartk-vm debug_x64 language/string_interpolation9_test/4: pass
-Done dartk-vm debug_x64 language/string_interpolation9_test/5: pass
-Done dartk-vm debug_x64 language/string_interpolation9_test/none: pass
-Done dartk-vm debug_x64 language/string_interpolation9_test/6: pass
-Done dartk-vm debug_x64 language/string_interpolation9_test/7: pass
-Done dartk-vm debug_x64 language/string_interpolation9_test/8: pass
-Done dartk-vm debug_x64 language/string_interpolation9_test/9: pass
-Done dartk-vm debug_x64 language/string_interpolation9_test/10: pass
-Done dartk-vm debug_x64 language/string_interpolation9_test/12: pass
-Done dartk-vm debug_x64 language/string_interpolation9_test/11: pass
-Done dartk-vm debug_x64 language/string_interpolation9_test/13: pass
-Done dartk-vm debug_x64 language/string_interpolation9_test/16: pass
-Done dartk-vm debug_x64 language/string_interpolation9_test/14: pass
-Done dartk-vm debug_x64 language/string_interpolation9_test/15: pass
-Done dartk-vm debug_x64 language/string_interpolation9_test/17: pass
-Done dartk-vm debug_x64 language/string_interpolation9_test/18: pass
-Done dartk-vm debug_x64 language/string_interpolation9_test/19: pass
-Done dartk-vm debug_x64 language/string_interpolation9_test/20: pass
-Done dartk-vm debug_x64 language/getter_no_setter_test/02: pass
-Done dartk-vm debug_x64 language/getter_no_setter_test/none: pass
-Done dartk-vm debug_x64 language/getter_no_setter_test/01: pass
-Done dartk-vm debug_x64 language/checked_null_test/01: pass
-Done dartk-vm debug_x64 language/getter_no_setter_test/00: pass
-Done dartk-vm debug_x64 language/checked_null_test/none: pass
-Done dartk-vm debug_x64 language/type_variable_bounds_test/none: pass
-Done dartk-vm debug_x64 language/type_variable_bounds_test/00: pass
-Done dartk-vm debug_x64 language/type_variable_bounds_test/01: pass
-Done dartk-vm debug_x64 language/type_variable_bounds_test/02: pass
-Done dartk-vm debug_x64 language/type_variable_bounds_test/04: pass
-Done dartk-vm debug_x64 language/type_variable_bounds_test/03: pass
-Done dartk-vm debug_x64 language/type_variable_bounds_test/05: pass
-Done dartk-vm debug_x64 language/type_variable_bounds_test/06: pass
-Done dartk-vm debug_x64 language/type_variable_bounds_test/07: pass
-Done dartk-vm debug_x64 language/type_variable_bounds_test/08: pass
-Done dartk-vm debug_x64 language/type_variable_bounds_test/09: pass
-Done dartk-vm debug_x64 language/type_variable_bounds_test/10: pass
-Done dartk-vm debug_x64 language/field_override4_test/01: pass
-Done dartk-vm debug_x64 language/field_override4_test/none: pass
-Done dartk-vm debug_x64 language/field_override4_test/02: pass
-Done dartk-vm debug_x64 language/field_override4_test/00: pass
-Done dartk-vm debug_x64 language/field_override4_test/03: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/none: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/01: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/02: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/03: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/04: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/05: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/06: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/07: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/08: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/09: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/10: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/11: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/12: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/13: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/14: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/15: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/16: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/18: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/17: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/22: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/20: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/19: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/21: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/23: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/24: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/26: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/25: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/27: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/28: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/30: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/29: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/32: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/31: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/33: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/34: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/35: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/36: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/38: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/37: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/39: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/40: pass
-Done dartk-vm debug_x64 language/mixin_type_variable_test/none: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/41: pass
-Done dartk-vm debug_x64 language/mixin_type_variable_test/04: pass
-Done dartk-vm debug_x64 language/mixin_type_variable_test/03: pass
-Done dartk-vm debug_x64 language/mixin_type_variable_test/07: pass
-Done dartk-vm debug_x64 language/mixin_type_variable_test/06: pass
-Done dartk-vm debug_x64 language/mixin_type_variable_test/01: pass
-Done dartk-vm debug_x64 language/mixin_type_variable_test/08: pass
-Done dartk-vm debug_x64 language/mixin_type_variable_test/02: pass
-Done dartk-vm debug_x64 language/mixin_type_variable_test/05: pass
-Done dartk-vm debug_x64 language/async_throw_in_catch_test/none: pass
-Done dartk-vm debug_x64 language/async_throw_in_catch_test/forceAwait: pass
-Done dartk-vm debug_x64 language/bad_named_parameters_test/none: pass
-Done dartk-vm debug_x64 language/bad_named_parameters_test/01: pass
-Done dartk-vm debug_x64 language/bad_named_parameters_test/02: pass
-Done dartk-vm debug_x64 language/bad_named_parameters_test/03: pass
-Done dartk-vm debug_x64 language/bad_named_parameters_test/04: pass
-Done dartk-vm debug_x64 language/bad_named_parameters_test/05: pass
-Done dartk-vm debug_x64 language/super_no_such_method1_test/01: pass
-Done dartk-vm debug_x64 language/super_no_such_method1_test/none: pass
-Done dartk-vm debug_x64 language/new_expression_type_args_test/none: pass
-Done dartk-vm debug_x64 language/new_expression_type_args_test/00: pass
-Done dartk-vm debug_x64 language/new_expression_type_args_test/01: pass
-Done dartk-vm debug_x64 language/new_expression_type_args_test/02: pass
-Done dartk-vm debug_x64 language/final_initializer_instance_reference_test/01: pass
-Done dartk-vm debug_x64 language/prefix_assignment_test/01: pass
-Done dartk-vm debug_x64 language/prefix_assignment_test/02: pass
-Done dartk-vm debug_x64 language/final_initializer_instance_reference_test/none: pass
-Done dartk-vm debug_x64 language/deferred_no_prefix_test/none: pass
-Done dartk-vm debug_x64 language/deferred_no_prefix_test/01: pass
-Done dartk-vm debug_x64 language/import_self_test/none: pass
-Done dartk-vm debug_x64 language/import_self_test/01: pass
-Done dartk-vm debug_x64 language/prefix_assignment_test/none: pass
-Done dartk-vm debug_x64 language/const_nested_test: pass
-Done dartk-vm debug_x64 language/throw4_test: pass
-Done dartk-vm debug_x64 language/mixin_forwarding_constructor1_test: pass
-Done dartk-vm debug_x64 language/super_operator_index7_test: pass
-Done dartk-vm debug_x64 language/type_variable_closure3_test: pass
-Done dartk-vm debug_x64 language/implicit_scope_test: pass
-Done dartk-vm debug_x64 language/for_variable_capture_test: pass
-Done dartk-vm debug_x64 language/mixin_forwarding_constructor2_test: pass
-Done dartk-vm debug_x64 language/function_propagation_test: pass
-Done dartk-vm debug_x64 language/bailout5_test: pass
-Done dartk-vm debug_x64 language/issue21079_test: pass
-Done dartk-vm debug_x64 language/compile_time_constant_m_test: pass
-Done dartk-vm debug_x64 language/bool_check_test: pass
-Done dartk-vm debug_x64 language/disassemble_test: pass
-Done dartk-vm debug_x64 language/disassemble_test: pass
-Done dartk-vm debug_x64 language/top_level_getter_arrow_syntax_test: pass
-Done dartk-vm debug_x64 language/generic_methods_new_test: pass
-Done dartk-vm debug_x64 language/error_stacktrace_test: pass
-Done dartk-vm debug_x64 language/function_subtype2_test: pass
-Done dartk-vm debug_x64 language/regress_18435_test: pass
-Done dartk-vm debug_x64 language/mixin_super_constructor2_test: pass
-Done dartk-vm debug_x64 language/overridden_no_such_method_test: pass
-Done dartk-vm debug_x64 language/canonical_const2_test: pass
-Done dartk-vm debug_x64 language/regress_29481_test: pass
-Done dartk-vm debug_x64 language/new_expression2_negative_test: pass
-Done dartk-vm debug_x64 language/deferred_closurize_load_library_test: pass
-Done dartk-vm debug_x64 language/constructor2_test: pass
-Done dartk-vm debug_x64 language/precedence_test: pass
-Done dartk-vm debug_x64 language/regress_25550_test: pass
-Done dartk-vm debug_x64 language/operator4_test: pass
-Done dartk-vm debug_x64 language/fast_method_extraction_test: pass
-Done dartk-vm debug_x64 language/many_overridden_no_such_method_test: pass
-Done dartk-vm debug_x64 language/generic_inheritance_test: pass
-Done dartk-vm debug_x64 language/function_subtype_local5_test: pass
-Done dartk-vm debug_x64 language/cascade_precedence_test: pass
-Done dartk-vm debug_x64 language/map_literal5_test: pass
-Done dartk-vm debug_x64 language/function_subtype_typearg4_test: pass
-Done dartk-vm debug_x64 language/regress_20074_test: pass
-Done dartk-vm debug_x64 language/inferrer_constructor4_test: pass
-Done dartk-vm debug_x64 language/super_setter_test: pass
-Done dartk-vm debug_x64 language/proxy4_test: pass
-Done dartk-vm debug_x64 language/unresolved_top_level_method_negative_test: pass
-Done dartk-vm debug_x64 language/const_constructor_super_test/01: pass
-Done dartk-vm debug_x64 language/identical_test: pass
-Done dartk-vm debug_x64 language/const_constructor_super_test/02: pass
-Done dartk-vm debug_x64 language/instance_inline_test: pass
-Done dartk-vm debug_x64 language/const_constructor_super_test/none: pass
-Done dartk-vm debug_x64 language/setter_no_getter_test/01: pass
-Done dartk-vm debug_x64 language/setter_no_getter_test/none: pass
-Done dartk-vm debug_x64 language/mixin_type_parameters_errors_test/01: pass
-Done dartk-vm debug_x64 language/mixin_type_parameters_errors_test/none: pass
-Done dartk-vm debug_x64 language/mixin_type_parameters_errors_test/02: pass
-Done dartk-vm debug_x64 language/mixin_type_parameters_errors_test/05: pass
-Done dartk-vm debug_x64 language/mixin_type_parameters_errors_test/03: pass
-Done dartk-vm debug_x64 language/mixin_type_parameters_errors_test/04: pass
-Done dartk-vm debug_x64 language/final_attempt_reinitialization_test/none: pass
-Done dartk-vm debug_x64 language/final_attempt_reinitialization_test/01: pass
-Done dartk-vm debug_x64 language/mixin_of_mixin_test/none: pass
-Done dartk-vm debug_x64 language/final_attempt_reinitialization_test/02: pass
-Done dartk-vm debug_x64 language/mixin_of_mixin_test/03: pass
-Done dartk-vm debug_x64 language/mixin_of_mixin_test/01: pass
-Done dartk-vm debug_x64 language/mixin_of_mixin_test/02: pass
-Done dartk-vm debug_x64 language/mixin_of_mixin_test/04: pass
-Done dartk-vm debug_x64 language/mixin_of_mixin_test/06: pass
-Done dartk-vm debug_x64 language/mixin_of_mixin_test/05: pass
-Done dartk-vm debug_x64 language/mixin_of_mixin_test/08: pass
-Done dartk-vm debug_x64 language/mixin_of_mixin_test/07: pass
-Done dartk-vm debug_x64 language/mixin_of_mixin_test/09: pass
-Done dartk-vm debug_x64 language/mixin_of_mixin_test/11: pass
-Done dartk-vm debug_x64 language/mixin_of_mixin_test/10: pass
-Done dartk-vm debug_x64 language/mixin_of_mixin_test/12: pass
-Done dartk-vm debug_x64 language/mixin_of_mixin_test/14: pass
-Done dartk-vm debug_x64 language/mixin_of_mixin_test/13: pass
-Done dartk-vm debug_x64 language/mixin_of_mixin_test/15: pass
-Done dartk-vm debug_x64 language/mixin_of_mixin_test/16: pass
-Done dartk-vm debug_x64 language/mixin_of_mixin_test/18: pass
-Done dartk-vm debug_x64 language/mixin_of_mixin_test/19: pass
-Done dartk-vm debug_x64 language/mixin_of_mixin_test/17: pass
-Done dartk-vm debug_x64 language/mixin_of_mixin_test/20: pass
-Done dartk-vm debug_x64 language/mixin_of_mixin_test/21: pass
-Done dartk-vm debug_x64 language/mixin_of_mixin_test/22: pass
-Done dartk-vm debug_x64 language/keyword_type_expression_test/02: pass
-Done dartk-vm debug_x64 language/keyword_type_expression_test/01: pass
-Done dartk-vm debug_x64 language/keyword_type_expression_test/03: pass
-Done dartk-vm debug_x64 language/constructor9_test/01: pass
-Done dartk-vm debug_x64 language/constructor9_test/none: pass
-Done dartk-vm debug_x64 language/generic_function_typedef2_test/00: pass
-Done dartk-vm debug_x64 language/keyword_type_expression_test/none: pass
-Done dartk-vm debug_x64 language/generic_function_typedef2_test/01: pass
-Done dartk-vm debug_x64 language/generic_function_typedef2_test/02: pass
-Done dartk-vm debug_x64 language/generic_function_typedef2_test/03: pass
-Done dartk-vm debug_x64 language/generic_function_typedef2_test/05: pass
-Done dartk-vm debug_x64 language/generic_function_typedef2_test/06: pass
-Done dartk-vm debug_x64 language/generic_function_typedef2_test/none: pass
-Done dartk-vm debug_x64 language/compile_time_constant13_test/02: pass
-Done dartk-vm debug_x64 language/compile_time_constant13_test/03: pass
-Done dartk-vm debug_x64 language/generic_function_typedef2_test/04: pass
-Done dartk-vm debug_x64 language/compile_time_constant13_test/04: pass
-Done dartk-vm debug_x64 language/compile_time_constant13_test/05: pass
-Done dartk-vm debug_x64 language/compile_time_constant13_test/none: pass
-Done dartk-vm debug_x64 language/compile_time_constant13_test/01: pass
-Done dartk-vm debug_x64 language/method_override8_test/00: pass
-Done dartk-vm debug_x64 language/method_override8_test/none: pass
-Done dartk-vm debug_x64 language/method_override8_test/01: pass
-Done dartk-vm debug_x64 language/method_override8_test/02: pass
-Done dartk-vm debug_x64 language/method_override8_test/03: pass
-Done dartk-vm debug_x64 language/callable_test/00: pass
-Done dartk-vm debug_x64 language/callable_test/01: pass
-Done dartk-vm debug_x64 language/callable_test/none: pass
-Done dartk-vm debug_x64 language/issue_25671b_test/none: pass
-Done dartk-vm debug_x64 language/issue_25671b_test/01: pass
-Done dartk-vm debug_x64 language/compile_time_constant5_test: pass
-Done dartk-vm debug_x64 language/bit_operations_test/none: pass
-Done dartk-vm debug_x64 language/bit_operations_test/02: pass
-Done dartk-vm debug_x64 language/bit_operations_test/01: pass
-Done dartk-vm debug_x64 language/bit_operations_test/03: pass
-Done dartk-vm debug_x64 language/nested_if_test: pass
-Done dartk-vm debug_x64 language/default_implementation_test: pass
-Done dartk-vm debug_x64 language/bit_operations_test/04: pass
-Done dartk-vm debug_x64 language/operator6_test: pass
-Done dartk-vm debug_x64 language/list_double_index_in_loop_test: pass
-Done dartk-vm debug_x64 language/prefix23_test: pass
-Done dartk-vm debug_x64 language/label_test: pass
-Done dartk-vm debug_x64 language/execute_finally7_test: pass
-Done dartk-vm debug_x64 language/numbers_test: pass
-Done dartk-vm debug_x64 language/generic_local_functions_test: pass
-Done dartk-vm debug_x64 language/smi_type_test: pass
-Done dartk-vm debug_x64 language/inferrer_constructor_test: pass
-Done dartk-vm debug_x64 language/parameter_initializer6_negative_test: pass
-Done dartk-vm debug_x64 language/strict_equal_test: pass
-Done dartk-vm debug_x64 language/bound_closure_equality_test: pass
-Done dartk-vm debug_x64 language/pure_function_test: pass
-Done dartk-vm debug_x64 language/prefix8_negative_test: pass
-Done dartk-vm debug_x64 language/enum_test: pass
-Done dartk-vm debug_x64 language/partial_min_test: pass
-Done dartk-vm debug_x64 language/unicode_bom_middle_test: pass
-Done dartk-vm debug_x64 language/many_generic_instanceof_test: pass
-Done dartk-vm debug_x64 language/function_subtype_not0_test: pass
-Done dartk-vm debug_x64 language/regress_28341_test: pass
-Done dartk-vm debug_x64 language/list_length_tracer_test: pass
-Done dartk-vm debug_x64 language/first_class_types_libraries_test: pass
-Done dartk-vm debug_x64 language/scanner_test: pass
-Done dartk-vm debug_x64 language/interceptor7_test: pass
-Done dartk-vm debug_x64 language/exhaustive_for_test: pass
-Done dartk-vm debug_x64 language/regress_26133_test: pass
-Done dartk-vm debug_x64 language/execute_finally6_test: pass
-Done dartk-vm debug_x64 language/function_type_test: pass
-Done dartk-vm debug_x64 language/throw1_test: pass
-Done dartk-vm debug_x64 language/null_is2_test: pass
-Done dartk-vm debug_x64 language/const_constructor_super2_test: pass
-Done dartk-vm debug_x64 language/f_bounded_equality_test: pass
-Done dartk-vm debug_x64 language/function_subtype_bound_closure6_test: pass
-Done dartk-vm debug_x64 language/super_operator_index4_test: pass
-Done dartk-vm debug_x64 language/compile_time_constant_f_test: pass
-Done dartk-vm debug_x64 language/function_test: pass
-Done dartk-vm debug_x64 language/execute_finally3_test: pass
-Done dartk-vm debug_x64 language/covariant_test/none: pass
-Done dartk-vm debug_x64 language/is_interfaces2_test: pass
-Done dartk-vm debug_x64 language/covariant_test/00: pass
-Done dartk-vm debug_x64 language/deopt_lazy_finalization_test: pass
-Done dartk-vm debug_x64 language/covariant_test/00b: pass
-Done dartk-vm debug_x64 language/covariant_test/02: pass
-Done dartk-vm debug_x64 language/covariant_test/01: pass
-Done dartk-vm debug_x64 language/covariant_test/06: pass
-Done dartk-vm debug_x64 language/covariant_test/03: pass
-Done dartk-vm debug_x64 language/covariant_test/04: pass
-Done dartk-vm debug_x64 language/covariant_test/05: pass
-Done dartk-vm debug_x64 language/covariant_test/06b: pass
-Done dartk-vm debug_x64 language/covariant_test/00c: pass
-Done dartk-vm debug_x64 language/covariant_test/07: pass
-Done dartk-vm debug_x64 language/covariant_test/11: pass
-Done dartk-vm debug_x64 language/covariant_test/08: pass
-Done dartk-vm debug_x64 language/covariant_test/10: pass
-Done dartk-vm debug_x64 language/covariant_test/12: pass
-Done dartk-vm debug_x64 language/covariant_test/13: pass
-Done dartk-vm debug_x64 language/covariant_test/14: pass
-Done dartk-vm debug_x64 language/covariant_test/15: pass
-Done dartk-vm debug_x64 language/covariant_test/16: pass
-Done dartk-vm debug_x64 language/covariant_test/19: pass
-Done dartk-vm debug_x64 language/covariant_test/17: pass
-Done dartk-vm debug_x64 language/covariant_test/20b: pass
-Done dartk-vm debug_x64 language/covariant_test/20: pass
-Done dartk-vm debug_x64 language/covariant_test/21: pass
-Done dartk-vm debug_x64 language/covariant_test/22: pass
-Done dartk-vm debug_x64 language/covariant_test/21b: pass
-Done dartk-vm debug_x64 language/covariant_test/25: pass
-Done dartk-vm debug_x64 language/covariant_test/24: pass
-Done dartk-vm debug_x64 language/covariant_test/26: pass
-Done dartk-vm debug_x64 language/covariant_test/23: pass
-Done dartk-vm debug_x64 language/covariant_test/20c: pass
-Done dartk-vm debug_x64 language/covariant_test/26b: pass
-Done dartk-vm debug_x64 language/covariant_test/27: pass
-Done dartk-vm debug_x64 language/covariant_test/30: pass
-Done dartk-vm debug_x64 language/covariant_test/27b: pass
-Done dartk-vm debug_x64 language/covariant_test/28: pass
-Done dartk-vm debug_x64 language/covariant_test/30b: pass
-Done dartk-vm debug_x64 language/covariant_test/31: pass
-Done dartk-vm debug_x64 language/covariant_test/32: pass
-Done dartk-vm debug_x64 language/covariant_test/31b: pass
-Done dartk-vm debug_x64 language/covariant_test/33: pass
-Done dartk-vm debug_x64 language/covariant_test/34: pass
-Done dartk-vm debug_x64 language/covariant_test/36: pass
-Done dartk-vm debug_x64 language/covariant_test/35: pass
-Done dartk-vm debug_x64 language/covariant_test/39: pass
-Done dartk-vm debug_x64 language/covariant_test/37: pass
-Done dartk-vm debug_x64 language/covariant_test/43: pass
-Done dartk-vm debug_x64 language/covariant_test/41: pass
-Done dartk-vm debug_x64 language/covariant_test/44: pass
-Done dartk-vm debug_x64 language/covariant_test/45: pass
-Done dartk-vm debug_x64 language/covariant_test/40: pass
-Done dartk-vm debug_x64 language/covariant_test/40b: pass
-Done dartk-vm debug_x64 language/covariant_test/40c: pass
-Done dartk-vm debug_x64 language/covariant_test/42: pass
-Done dartk-vm debug_x64 language/covariant_test/46: pass
-Done dartk-vm debug_x64 language/covariant_test/46b: pass
-Done dartk-vm debug_x64 language/covariant_test/47: pass
-Done dartk-vm debug_x64 language/covariant_test/51: pass
-Done dartk-vm debug_x64 language/covariant_test/50: pass
-Done dartk-vm debug_x64 language/covariant_test/53: pass
-Done dartk-vm debug_x64 language/covariant_test/55: pass
-Done dartk-vm debug_x64 language/covariant_test/57: pass
-Done dartk-vm debug_x64 language/covariant_test/48: pass
-Done dartk-vm debug_x64 language/covariant_test/59: pass
-Done dartk-vm debug_x64 language/covariant_test/56: pass
-Done dartk-vm debug_x64 language/covariant_test/52: pass
-Done dartk-vm debug_x64 language/covariant_test/54: pass
-Done dartk-vm debug_x64 language/setter_no_getter_call_test/none: pass
-Done dartk-vm debug_x64 language/setter_no_getter_call_test/01: pass
-Done dartk-vm debug_x64 language/const_factory_with_body_test/none: pass
-Done dartk-vm debug_x64 language/const_factory_with_body_test/01: pass
-Done dartk-vm debug_x64 language/sync_generator1_test/none: pass
-Done dartk-vm debug_x64 language/class_override_test/none: pass
-Done dartk-vm debug_x64 language/string_interpolation2_test/01: pass
-Done dartk-vm debug_x64 language/class_override_test/00: pass
-Done dartk-vm debug_x64 language/sync_generator1_test/01: pass
-Done dartk-vm debug_x64 language/string_interpolation2_test/none: pass
-Done dartk-vm debug_x64 language/literal_unary_plus_test/01: pass
-Done dartk-vm debug_x64 language/literal_unary_plus_test/02: pass
-Done dartk-vm debug_x64 language/literal_unary_plus_test/03: pass
-Done dartk-vm debug_x64 language/fauxverride_test/03: pass
-Done dartk-vm debug_x64 language/fauxverride_test/none: pass
-Done dartk-vm debug_x64 language/literal_unary_plus_test/none: pass
-Done dartk-vm debug_x64 language/fauxverride_test/05: pass
-Done dartk-vm debug_x64 language/await_backwards_compatibility_test/await1: pass
-Done dartk-vm debug_x64 language/await_backwards_compatibility_test/await3: pass
-Done dartk-vm debug_x64 language/await_backwards_compatibility_test/await2: pass
-Done dartk-vm debug_x64 language/await_backwards_compatibility_test/await4: pass
-Done dartk-vm debug_x64 language/try_catch_on_syntax_test/03: pass
-Done dartk-vm debug_x64 language/await_backwards_compatibility_test/none: pass
-Done dartk-vm debug_x64 language/try_catch_on_syntax_test/02: pass
-Done dartk-vm debug_x64 language/try_catch_on_syntax_test/04: pass
-Done dartk-vm debug_x64 language/try_catch_on_syntax_test/05: pass
-Done dartk-vm debug_x64 language/try_catch_on_syntax_test/06: pass
-Done dartk-vm debug_x64 language/try_catch_on_syntax_test/none: pass
-Done dartk-vm debug_x64 language/try_catch_on_syntax_test/07: pass
-Done dartk-vm debug_x64 language/final_syntax_test/01: pass
-Done dartk-vm debug_x64 language/try_catch_on_syntax_test/11: pass
-Done dartk-vm debug_x64 language/try_catch_on_syntax_test/10: pass
-Done dartk-vm debug_x64 language/call_non_method_field_test/none: pass
-Done dartk-vm debug_x64 language/call_non_method_field_test/01: pass
-Done dartk-vm debug_x64 language/call_non_method_field_test/02: pass
-Done dartk-vm debug_x64 language/final_syntax_test/02: pass
-Done dartk-vm debug_x64 language/final_syntax_test/none: pass
-Done dartk-vm debug_x64 language/final_syntax_test/04: pass
-Done dartk-vm debug_x64 language/final_syntax_test/03: pass
-Done dartk-vm debug_x64 language/final_syntax_test/08: pass
-Done dartk-vm debug_x64 language/final_syntax_test/09: pass
-Done dartk-vm debug_x64 language/final_syntax_test/10: pass
-Done dartk-vm debug_x64 language/for_in3_test: pass
-Done dartk-vm debug_x64 language/return_this_type_test: pass
-Done dartk-vm debug_x64 language/regress_25620_test: pass
-Done dartk-vm debug_x64 language/value_range3_test: pass
-Done dartk-vm debug_x64 language/no_such_method_negative_test: pass
-Done dartk-vm debug_x64 language/issue12336_test: pass
-Done dartk-vm debug_x64 language/invocation_mirror_invoke_on_test: pass
-Done dartk-vm debug_x64 language/dead_field_access_test: pass
-Done dartk-vm debug_x64 language/implicit_closure2_test: pass
-Done dartk-vm debug_x64 language/interceptor9_test: pass
-Done dartk-vm debug_x64 language/override_field_method5_negative_test: pass
-Done dartk-vm debug_x64 language/static_call_wrong_argument_count_negative_test: pass
-Done dartk-vm debug_x64 language/factory5_test: pass
-Done dartk-vm debug_x64 language/conditional_import_test: pass
-Done dartk-vm debug_x64 language/property_field_override_test: pass
-Done dartk-vm debug_x64 language/method_invocation_test: pass
-Done dartk-vm debug_x64 language/const_factory_redirection_test: pass
-Done dartk-vm debug_x64 language/field_optimization3_test: pass
-Done dartk-vm debug_x64 language/factory3_test: pass
-Done dartk-vm debug_x64 language/nested_switch_label_test: pass
-Done dartk-vm debug_x64 language/generic_parameterized_extends_test: pass
-Done dartk-vm debug_x64 language/closure_with_super_send_test: pass
-Done dartk-vm debug_x64 language/unresolved_in_factory_negative_test: pass
-Done dartk-vm debug_x64 language/string_supertype_checked_test: pass
-Done dartk-vm debug_x64 language/loop_exchange_test: pass
-Done dartk-vm debug_x64 language/regress_18865_test: pass
-Done dartk-vm debug_x64 language/super_assign_test: pass
-Done dartk-vm debug_x64 language/finally_test: pass
-Done dartk-vm debug_x64 language/regress_17382_test: pass
-Done dartk-vm debug_x64 language/script2_negative_test: pass
-Done dartk-vm debug_x64 language/unary_test: pass
-Done dartk-vm debug_x64 language/bad_named_constructor_negative_test: pass
-Done dartk-vm debug_x64 language/map_literal7_test: pass
-Done dartk-vm debug_x64 language/override_field_method2_negative_test: pass
-Done dartk-vm debug_x64 language/part_of_uri_test: pass
-Done dartk-vm debug_x64 language/megamorphic_no_such_method_test: pass
-Done dartk-vm debug_x64 language/multiple_field_assignment_constructor_test: pass
-Done dartk-vm debug_x64 language/exception_test: pass
-Done dartk-vm debug_x64 language/function_subtype_closure0_test: pass
-Done dartk-vm debug_x64 language/type_checks_in_factory_method_test: pass
-Done dartk-vm debug_x64 language/issue9939_test: pass
-Done dartk-vm debug_x64 language/typed_equality_test: pass
-Done dartk-vm debug_x64 language/field_increment_bailout_test: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/none: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/01: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/02: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/03: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/04: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/05: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/06: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/07: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/08: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/09: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/10: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/11: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/12: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/14: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/13: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/15: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/16: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/18: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/17: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/19: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/20: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/22: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/21: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/24: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/23: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/25: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/26: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/27: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/28: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/29: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/30: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/31: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/33: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/32: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/34: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/35: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/36: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/37: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/38: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/39: pass
-Done dartk-vm debug_x64 language/const_switch_test/01: pass
-Done dartk-vm debug_x64 language/const_switch_test/none: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/40: pass
-Done dartk-vm debug_x64 language/const_switch_test/03: pass
-Done dartk-vm debug_x64 language/const_switch_test/02: pass
-Done dartk-vm debug_x64 language/const_switch_test/04: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/none: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/01: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/03: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/04: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/02: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/06: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/05: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/07: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/08: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/09: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/10: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/11: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/12: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/13: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/14: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/15: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/16: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/17: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/18: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/19: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/20: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/21: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/22: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/23: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/25: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/24: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/27: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/26: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/28: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/29: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/30: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/31: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/32: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/33: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/34: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/35: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/36: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/37: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/38: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/39: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/40: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/42: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/41: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/43: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/44: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/45: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/46: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/47: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/48: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/49: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/50: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/51: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/52: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/54: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/55: pass
-Done dartk-vm debug_x64 language/constructor_duplicate_initializers_test/01: pass
-Done dartk-vm debug_x64 language/constructor_duplicate_initializers_test/02: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/56: pass
-Done dartk-vm debug_x64 language/constructor_duplicate_initializers_test/03: pass
-Done dartk-vm debug_x64 language/mixin_illegal_syntax_test/00: pass
-Done dartk-vm debug_x64 language/mixin_illegal_syntax_test/02: pass
-Done dartk-vm debug_x64 language/mixin_illegal_syntax_test/01: pass
-Done dartk-vm debug_x64 language/constructor_duplicate_initializers_test/none: pass
-Done dartk-vm debug_x64 language/mixin_illegal_syntax_test/03: pass
-Done dartk-vm debug_x64 language/mixin_illegal_syntax_test/none: pass
-Done dartk-vm debug_x64 language/mixin_illegal_syntax_test/04: pass
-Done dartk-vm debug_x64 language/mixin_illegal_syntax_test/06: pass
-Done dartk-vm debug_x64 language/mixin_illegal_syntax_test/05: pass
-Done dartk-vm debug_x64 language/mixin_illegal_syntax_test/07: pass
-Done dartk-vm debug_x64 language/mixin_illegal_syntax_test/08: pass
-Done dartk-vm debug_x64 language/mixin_illegal_syntax_test/09: pass
-Done dartk-vm debug_x64 language/mixin_illegal_syntax_test/10: pass
-Done dartk-vm debug_x64 language/mixin_illegal_syntax_test/11: pass
-Done dartk-vm debug_x64 language/mixin_illegal_syntax_test/12: pass
-Done dartk-vm debug_x64 language/mixin_illegal_syntax_test/14: pass
-Done dartk-vm debug_x64 language/const_getter_test/01: pass
-Done dartk-vm debug_x64 language/const_getter_test/02: pass
-Done dartk-vm debug_x64 language/illegal_initializer_test/02: pass
-Done dartk-vm debug_x64 language/illegal_initializer_test/01: pass
-Done dartk-vm debug_x64 language/illegal_initializer_test/03: pass
-Done dartk-vm debug_x64 language/mixin_illegal_syntax_test/13: pass
-Done dartk-vm debug_x64 language/const_getter_test/none: pass
-Done dartk-vm debug_x64 language/illegal_initializer_test/04: pass
-Done dartk-vm debug_x64 language/illegal_initializer_test/none: pass
-Done dartk-vm debug_x64 language/create_unresolved_type_test/none: pass
-Done dartk-vm debug_x64 language/no_such_constructor_test/none: pass
-Done dartk-vm debug_x64 language/create_unresolved_type_test/01: pass
-Done dartk-vm debug_x64 language/no_such_constructor_test/01: pass
-Done dartk-vm debug_x64 language/mixin_invalid_bound2_test/none: pass
-Done dartk-vm debug_x64 language/mixin_invalid_bound2_test/01: pass
-Done dartk-vm debug_x64 language/mixin_invalid_bound2_test/02: pass
-Done dartk-vm debug_x64 language/mixin_invalid_bound2_test/03: pass
-Done dartk-vm debug_x64 language/mixin_invalid_bound2_test/04: pass
-Done dartk-vm debug_x64 language/mixin_invalid_bound2_test/05: pass
-Done dartk-vm debug_x64 language/mixin_invalid_bound2_test/06: pass
-Done dartk-vm debug_x64 language/mixin_invalid_bound2_test/07: pass
-Done dartk-vm debug_x64 language/mixin_invalid_bound2_test/08: pass
-Done dartk-vm debug_x64 language/mixin_invalid_bound2_test/10: pass
-Done dartk-vm debug_x64 language/mixin_invalid_bound2_test/09: pass
-Done dartk-vm debug_x64 language/mixin_invalid_bound2_test/11: pass
-Done dartk-vm debug_x64 language/deferred_load_library_wrong_args_test/none: pass
-Done dartk-vm debug_x64 language/mixin_invalid_bound2_test/12: pass
-Done dartk-vm debug_x64 language/deferred_load_library_wrong_args_test/01: pass
-Done dartk-vm debug_x64 language/mixin_invalid_bound2_test/13: pass
-Done dartk-vm debug_x64 language/mixin_invalid_bound2_test/14: pass
-Done dartk-vm debug_x64 language/mixin_mixin3_test: pass
-Done dartk-vm debug_x64 language/generic_methods_generic_function_parameter_test: pass
-Done dartk-vm debug_x64 language/deferred_constant_list_test: pass
-Done dartk-vm debug_x64 language/compound_assignment_operator_test: pass
-Done dartk-vm debug_x64 language/patch_test: pass
-Done dartk-vm debug_x64 language/break_test: pass
-Done dartk-vm debug_x64 language/type_variable_field_initializer2_test: pass
-Done dartk-vm debug_x64 language/call_test: pass
-Done dartk-vm debug_x64 language/vm/regress_27201_test: pass
-Done dartk-vm debug_x64 language/operator_index_evaluation_order_test: pass
-Done dartk-vm debug_x64 language/equality_test: pass
-Done dartk-vm debug_x64 language/mixin_lib_extends_field_test: pass
-Done dartk-vm debug_x64 language/reg_ex2_test: pass
-Done dartk-vm debug_x64 language/try_catch_optimized4_test: pass
-Done dartk-vm debug_x64 language/vm/deopt_hoisted_smi_check_vm_test: pass
-Done dartk-vm debug_x64 language/vm/optimized_list_constructor_test: pass
-Done dartk-vm debug_x64 language/vm/if_conversion_vm_test: pass
-Done dartk-vm debug_x64 language/vm/optimized_identical_test: pass
-Done dartk-vm debug_x64 language/vm/optimized_shl_test: pass
-Done dartk-vm debug_x64 language/vm/uint32_right_shift_test: pass
-Done dartk-vm debug_x64 language/vm/load_elimination_mark_stored_values_escaping_test: pass
-Done dartk-vm debug_x64 language/vm/no_such_method_error_message_callable_vm_test: pass
-Done dartk-vm debug_x64 language/vm/load_elimination_has_loads_from_place_test: pass
-Done dartk-vm debug_x64 language/vm/optimized_check_class_test: pass
-Done dartk-vm debug_x64 language/vm/optimized_try_catch_cha_test: pass
-Done dartk-vm debug_x64 language/vm/causal_async_exception_stack_test: pass
-Done dartk-vm debug_x64 language/vm/uint32_add_test: pass
-Done dartk-vm debug_x64 language/vm/unique_selector_test: pass
-Done dartk-vm debug_x64 language/vm/regress_22621_vm_test: pass
-Done dartk-vm debug_x64 language/vm/store_elimination_vm_test: pass
-Done dartk-vm debug_x64 language/vm/regress_16873_test: pass
-Done dartk-vm debug_x64 language/vm/reflect_core_vm_test: pass
-Done dartk-vm debug_x64 language/vm/regress_23238_test: pass
-Done dartk-vm debug_x64 language/vm/optimized_await_regress_test: pass
-Done dartk-vm debug_x64 language/vm/type_vm_test: pass
-Done dartk-vm debug_x64 language/vm/typed_data_polymorphic_view_test: pass
-Done dartk-vm debug_x64 language/vm/create_array_instr_deopt_test: pass
-Done dartk-vm debug_x64 language/vm/load_elimination_two_redefinitions_test: pass
-Done dartk-vm debug_x64 language/vm/integer_type_propagation2_test: pass
-Done dartk-vm debug_x64 language/vm/unaligned_float_access_register_index_test: pass
-Done dartk-vm debug_x64 language/vm/regress_28325_test: pass
-Done dartk-vm debug_x64 language/vm/load_elimination_any_use_creates_alias_test: pass
-Done dartk-vm debug_x64 language/vm/causal_async_exception_stack2_test: pass
-Done dartk-vm debug_x64 language/vm/deopt_smi_check_vm_test: pass
-Done dartk-vm debug_x64 language/vm/unaligned_float_access_literal_index_test: pass
-Done dartk-vm debug_x64 language/vm/optimized_polymorphic_list_access_test: pass
-Done dartk-vm debug_x64 language/vm/optimization_test: pass
-Done dartk-vm debug_x64 language/vm/optimized_guarded_field_test: pass
-Done dartk-vm debug_x64 language/getters_setters2_test/none: pass
-Done dartk-vm debug_x64 language/vm/regress_14903_test: pass
-Done dartk-vm debug_x64 language/getters_setters2_test/01: pass
-Done dartk-vm debug_x64 language/vm/optimized_guarded_field_isolates_test: pass
-Done dartk-vm debug_x64 language/getters_setters2_test/03: pass
-Done dartk-vm debug_x64 language/getters_setters2_test/02: pass
-Done dartk-vm debug_x64 language/constructor_initializer_test/01: pass
-Done dartk-vm debug_x64 language/async_switch_test/none: pass
-Done dartk-vm debug_x64 language/async_switch_test/withDefault: pass
-Done dartk-vm debug_x64 language/constructor_initializer_test/none: pass
-Done dartk-vm debug_x64 language/const_constructor_mixin3_test/01: pass
-Done dartk-vm debug_x64 language/const_constructor_mixin3_test/none: pass
-Done dartk-vm debug_x64 language/method_override7_test/none: pass
-Done dartk-vm debug_x64 language/method_override7_test/00: pass
-Done dartk-vm debug_x64 language/vm/debug_break_vm_test/02: pass
-Done dartk-vm debug_x64 language/method_override7_test/01: pass
-Done dartk-vm debug_x64 language/method_override7_test/02: pass
-Done dartk-vm debug_x64 language/method_override7_test/03: pass
-Done dartk-vm debug_x64 language/vm/debug_break_vm_test/none: pass
-Done dartk-vm debug_x64 language/vm/debug_break_vm_test/03: pass
-Done dartk-vm debug_x64 language/vm/debug_break_vm_test/01: pass
-Done dartk-vm debug_x64 language/vm/debug_break_enabled_vm_test/01: pass
-Done dartk-vm debug_x64 language/deferred_duplicate_prefix1_test/01: pass
-Done dartk-vm debug_x64 language/vm/debug_break_enabled_vm_test/none: pass
-Done dartk-vm debug_x64 language/deferred_duplicate_prefix1_test/none: pass
-Done dartk-vm debug_x64 language/enum_private_test/none: pass
-Done dartk-vm debug_x64 language/enum_private_test/02: pass
-Done dartk-vm debug_x64 language/enum_private_test/01: pass
-Done dartk-vm debug_x64 language/vm/create_array_instr_deopt2_test: pass
-Done dartk-vm debug_x64 language/vm/regress_21245_test: pass
-Done dartk-vm debug_x64 language/vm/lazy_deopt_with_exception_and_stacktrace_test: pass
-Done dartk-vm debug_x64 language/vm/precompiled_static_initializer_test: pass
-Done dartk-vm debug_x64 language/vm/unaligned_integer_access_literal_index_test: pass
-Done dartk-vm debug_x64 language/vm/regress_24517_test: pass
-Done dartk-vm debug_x64 language/vm/regress_23117_vm_test: pass
-Done dartk-vm debug_x64 language/vm/null_hashcode_optimized_vm_test: pass
-Done dartk-vm debug_x64 language/vm/issue21220_vm_test: pass
-Done dartk-vm debug_x64 language/vm/regress_29137_vm_test: pass
-Done dartk-vm debug_x64 language/vm/allocation_sinking_vm_test: pass
-Done dartk-vm debug_x64 language/vm/regress_22480_test: pass
-Done dartk-vm debug_x64 language/vm/lazy_deopt_vm_test: pass
-Done dartk-vm debug_x64 language/vm/regress_22693_vm_test: pass
-Done dartk-vm debug_x64 language/vm/no_such_method_error_message_vm_test: pass
-Done dartk-vm debug_x64 language/vm/math_vm_test: pass
-Done dartk-vm debug_x64 language/vm/issue11087_vm_test: pass
-Done dartk-vm debug_x64 language/vm/async_await_catch_stacktrace_test: pass
-Done dartk-vm debug_x64 language/vm/lazy_deopt_with_exception_test: pass
-Done dartk-vm debug_x64 language/vm/type_cast_vm_test: pass
-Done dartk-vm debug_x64 language/vm/load_to_load_unaligned_forwarding_vm_test: pass
-Done dartk-vm debug_x64 language/vm/type_propagation_test: pass
-Done dartk-vm debug_x64 language/vm/function_equality_vm_test: pass
-Done dartk-vm debug_x64 language/vm/regress_22541_vm_test: pass
-Done dartk-vm debug_x64 language/vm/integer_type_propagation_test: pass
-Done dartk-vm debug_x64 language/vm/regress_27671_test: pass
-Done dartk-vm debug_x64 language/vm/reusable_boxes_test: pass
-Done dartk-vm debug_x64 language/vm/optimized_testsmi_test: pass
-Done dartk-vm debug_x64 language/vm/regress_licm_test: pass
-Done dartk-vm debug_x64 language/vm/string_polymorphic_test: pass
-Done dartk-vm debug_x64 language/vm/load_to_load_forwarding_vm_test: pass
-Done dartk-vm debug_x64 language/vm/licm_constant_redefinition_vm_test: pass
-Done dartk-vm debug_x64 language/vm/no_such_args_error_message_vm_test: pass
-Done dartk-vm debug_x64 language/vm/canonicalization_preserves_deopt_test: pass
-Done dartk-vm debug_x64 language/vm/uint32_shift_test: pass
-Done dartk-vm debug_x64 language/vm/store_to_load_forwarding_phis_vm_test: pass
-Done dartk-vm debug_x64 language/vm/unaligned_integer_access_register_index_test: pass
-Done dartk-vm debug_x64 language/generic_object_type_test: pass
-Done dartk-vm debug_x64 language/vm/optimized_unique_selector_test: pass
-Done dartk-vm debug_x64 language/compile_time_constant_b_test: pass
-Done dartk-vm debug_x64 language/top_level_prefixed_declaration_test: pass
-Done dartk-vm debug_x64 language/liveness_test: pass
-Done dartk-vm debug_x64 language/compile_time_constant_n_test: pass
-Done dartk-vm debug_x64 language/lazy_static6_test: pass
-Done dartk-vm debug_x64 language/field_test: pass
-Done dartk-vm debug_x64 language/rethrow_test: pass
-Done dartk-vm debug_x64 language/const_redirecting_factory_test: pass
-Done dartk-vm debug_x64 language/interface_injection1_negative_test: pass
-Done dartk-vm debug_x64 language/state_mangling3_test: pass
-Done dartk-vm debug_x64 language/regress_11800_test: pass
-Done dartk-vm debug_x64 language/constants_test/01: pass
-Done dartk-vm debug_x64 language/constants_test/02: pass
-Done dartk-vm debug_x64 language/duplicate_export_test: pass
-Done dartk-vm debug_x64 language/constants_test/03: pass
-Done dartk-vm debug_x64 language/constants_test/04: pass
-Done dartk-vm debug_x64 language/list_tracer_call_last_test: pass
-Done dartk-vm debug_x64 language/constants_test/none: pass
-Done dartk-vm debug_x64 language/bad_raw_string_test/02: pass
-Done dartk-vm debug_x64 language/bad_raw_string_test/01: pass
-Done dartk-vm debug_x64 language/bad_raw_string_test/03: pass
-Done dartk-vm debug_x64 language/bad_raw_string_test/none: pass
-Done dartk-vm debug_x64 language/constants_test/05: pass
-Done dartk-vm debug_x64 language/final_variable_assignment_test/01: pass
-Done dartk-vm debug_x64 language/final_variable_assignment_test/none: pass
-Done dartk-vm debug_x64 language/dynamic2_test/00: pass
-Done dartk-vm debug_x64 language/final_variable_assignment_test/02: pass
-Done dartk-vm debug_x64 language/dynamic2_test/01: pass
-Done dartk-vm debug_x64 language/final_variable_assignment_test/04: pass
-Done dartk-vm debug_x64 language/final_variable_assignment_test/03: pass
-Done dartk-vm debug_x64 language/dynamic2_test/none: pass
-Done dartk-vm debug_x64 language/mixin_illegal_object_test/02: pass
-Done dartk-vm debug_x64 language/mixin_illegal_object_test/01: pass
-Done dartk-vm debug_x64 language/deferred_load_constants_test/none: pass
-Done dartk-vm debug_x64 language/type_promotion_logical_and_test/none: pass
-Done dartk-vm debug_x64 language/type_promotion_logical_and_test/01: pass
-Done dartk-vm debug_x64 language/type_promotion_logical_and_test/02: pass
-Done dartk-vm debug_x64 language/mixin_illegal_object_test/none: pass
-Done dartk-vm debug_x64 language/type_promotion_logical_and_test/03: pass
-Done dartk-vm debug_x64 language/deferred_load_constants_test/01: pass
-Done dartk-vm debug_x64 language/deferred_load_constants_test/02: pass
-Done dartk-vm debug_x64 language/deferred_load_constants_test/04: pass
-Done dartk-vm debug_x64 language/deferred_load_constants_test/03: pass
-Done dartk-vm debug_x64 language/deferred_load_constants_test/05: pass
-Done dartk-vm debug_x64 language/illegal_invocation_test/01: pass
-Done dartk-vm debug_x64 language/illegal_invocation_test/none: pass
-Done dartk-vm debug_x64 language/operator3_test: pass
-Done dartk-vm debug_x64 language/stack_overflow_stacktrace_test: pass
-Done dartk-vm debug_x64 language/issue4515170_test: pass
-Done dartk-vm debug_x64 language/issue9602_test: pass
-Done dartk-vm debug_x64 language/issue7525_test: pass
-Done dartk-vm debug_x64 language/double_to_string_as_precision3_test: pass
-Done dartk-vm debug_x64 language/type_variable_field_initializer_closure2_test: pass
-Done dartk-vm debug_x64 language/initializing_formal_promotion_test: pass
-Done dartk-vm debug_x64 language/call_this_test: pass
-Done dartk-vm debug_x64 language/await_null_aware_test: pass
-Done dartk-vm debug_x64 language/unnamed_closure_test: pass
-Done dartk-vm debug_x64 language/null_access_error_test: pass
-Done dartk-vm debug_x64 language/regress_29949_test: pass
-Done dartk-vm debug_x64 language/deferred_shadow_load_library_test: pass
-Done dartk-vm debug_x64 language/duplicate_interface_negative_test: pass
-Done dartk-vm debug_x64 language/interface_static_non_final_fields_negative_test: pass
-Done dartk-vm debug_x64 language/import_core_test: pass
-Done dartk-vm debug_x64 language/closure_break_test: pass
-Done dartk-vm debug_x64 language/generic_field_mixin2_test: pass
-Done dartk-vm debug_x64 language/mixin_super_constructor_test: pass
-Done dartk-vm debug_x64 language/function_subtype_named1_test: pass
-Done dartk-vm debug_x64 language/field3a_negative_test: pass
-Done dartk-vm debug_x64 language/config_import_test: pass
-Done dartk-vm debug_x64 language/interceptor8_test: pass
-Done dartk-vm debug_x64 language/function_subtype_factory0_test: pass
-Done dartk-vm debug_x64 language/named_parameters3_test: pass
-Done dartk-vm debug_x64 language/field_parameter_test: pass
-Done dartk-vm debug_x64 language/compile_time_constant3_test: pass
-Done dartk-vm debug_x64 language/generic_field_mixin5_test: pass
-Done dartk-vm debug_x64 language/mixin_type_parameter2_test: pass
-Done dartk-vm debug_x64 language/parse_closures_in_initializers_test: pass
-Done dartk-vm debug_x64 language/cyclic_default_values_test: pass
-Done dartk-vm debug_x64 language/do_while_test: pass
-Done dartk-vm debug_x64 language/super_call2_test: pass
-Done dartk-vm debug_x64 language/function_type_parameter2_negative_test: pass
-Done dartk-vm debug_x64 language/parser_quirks_test: pass
-Done dartk-vm debug_x64 language/throw2_test: pass
-Done dartk-vm debug_x64 language/throw6_test: pass
-Done dartk-vm debug_x64 language/typed_selector2_test: pass
-Done dartk-vm debug_x64 language/malbounded_type_literal_test: pass
-Done dartk-vm debug_x64 language/typedef_is_test: pass
-Done dartk-vm debug_x64 language/top_level_method_test: pass
-Done dartk-vm debug_x64 language/cascade_2_test: pass
-Done dartk-vm debug_x64 language/regress_22438_test: pass
-Done dartk-vm debug_x64 language/fannkuch_test: pass
-Done dartk-vm debug_x64 language/deferred_no_such_method_test: pass
-Done dartk-vm debug_x64 language/generic_field_mixin_test: pass
-Done dartk-vm debug_x64 language/top_level_entry_test: pass
-Done dartk-vm debug_x64 language/cascade_test/01: pass
-Done dartk-vm debug_x64 language/cascade_test/02: pass
-Done dartk-vm debug_x64 language/cascade_test/03: pass
-Done dartk-vm debug_x64 language/cascade_test/none: pass
-Done dartk-vm debug_x64 language/const_types_test/01: pass
-Done dartk-vm debug_x64 language/const_types_test/none: pass
-Done dartk-vm debug_x64 language/const_types_test/02: pass
-Done dartk-vm debug_x64 language/const_types_test/03: pass
-Done dartk-vm debug_x64 language/const_types_test/04: pass
-Done dartk-vm debug_x64 language/const_types_test/07: pass
-Done dartk-vm debug_x64 language/const_types_test/05: pass
-Done dartk-vm debug_x64 language/const_types_test/06: pass
-Done dartk-vm debug_x64 language/const_types_test/08: pass
-Done dartk-vm debug_x64 language/const_types_test/09: pass
-Done dartk-vm debug_x64 language/const_types_test/10: pass
-Done dartk-vm debug_x64 language/const_types_test/11: pass
-Done dartk-vm debug_x64 language/const_types_test/12: pass
-Done dartk-vm debug_x64 language/const_types_test/14: pass
-Done dartk-vm debug_x64 language/const_types_test/15: pass
-Done dartk-vm debug_x64 language/const_types_test/16: pass
-Done dartk-vm debug_x64 language/const_types_test/18: pass
-Done dartk-vm debug_x64 language/const_types_test/17: pass
-Done dartk-vm debug_x64 language/const_types_test/19: pass
-Done dartk-vm debug_x64 language/const_types_test/20: pass
-Done dartk-vm debug_x64 language/const_types_test/21: pass
-Done dartk-vm debug_x64 language/const_types_test/13: pass
-Done dartk-vm debug_x64 language/const_types_test/23: pass
-Done dartk-vm debug_x64 language/const_types_test/25: pass
-Done dartk-vm debug_x64 language/const_types_test/22: pass
-Done dartk-vm debug_x64 language/const_types_test/24: pass
-Done dartk-vm debug_x64 language/const_types_test/26: pass
-Done dartk-vm debug_x64 language/const_types_test/27: pass
-Done dartk-vm debug_x64 language/const_types_test/29: pass
-Done dartk-vm debug_x64 language/const_types_test/28: pass
-Done dartk-vm debug_x64 language/const_types_test/30: pass
-Done dartk-vm debug_x64 language/const_types_test/31: pass
-Done dartk-vm debug_x64 language/const_types_test/32: pass
-Done dartk-vm debug_x64 language/const_types_test/34: pass
-Done dartk-vm debug_x64 language/const_types_test/33: pass
-Done dartk-vm debug_x64 language/const_types_test/36: pass
-Done dartk-vm debug_x64 language/const_types_test/35: pass
-Done dartk-vm debug_x64 language/const_types_test/37: pass
-Done dartk-vm debug_x64 language/const_types_test/38: pass
-Done dartk-vm debug_x64 language/const_types_test/41: pass
-Done dartk-vm debug_x64 language/const_types_test/39: pass
-Done dartk-vm debug_x64 language/const_types_test/40: pass
-Done dartk-vm debug_x64 language/constructor_call_as_function_test/none: pass
-Done dartk-vm debug_x64 language/constructor_call_as_function_test/01: pass
-Done dartk-vm debug_x64 language/mixin_forwarding_constructor4_test/none: pass
-Done dartk-vm debug_x64 language/mixin_forwarding_constructor4_test/01: pass
-Done dartk-vm debug_x64 language/mixin_forwarding_constructor4_test/02: pass
-Done dartk-vm debug_x64 language/malformed_test/01: pass
-Done dartk-vm debug_x64 language/malformed_test/02: pass
-Done dartk-vm debug_x64 language/mixin_forwarding_constructor4_test/03: pass
-Done dartk-vm debug_x64 language/malformed_test/03: pass
-Done dartk-vm debug_x64 language/malformed_test/06: pass
-Done dartk-vm debug_x64 language/malformed_test/04: pass
-Done dartk-vm debug_x64 language/malformed_test/none: pass
-Done dartk-vm debug_x64 language/missing_const_constructor_test/03: pass
-Done dartk-vm debug_x64 language/missing_const_constructor_test/02: pass
-Done dartk-vm debug_x64 language/code_after_try_is_executed_test/none: pass
-Done dartk-vm debug_x64 language/code_after_try_is_executed_test/01: pass
-Done dartk-vm debug_x64 language/issue_25671a_test/none: pass
-Done dartk-vm debug_x64 language/issue_25671a_test/01: pass
-Done dartk-vm debug_x64 language/missing_const_constructor_test/none: pass
-Done dartk-vm debug_x64 language/missing_const_constructor_test/01: pass
-Done dartk-vm debug_x64 language/missing_const_constructor_test/04: pass
-Done dartk-vm debug_x64 language/missing_const_constructor_test/05: pass
-Done dartk-vm debug_x64 language/missing_const_constructor_test/06: pass
-Done dartk-vm debug_x64 language/const_constructor_mixin2_test/01: pass
-Done dartk-vm debug_x64 language/const_constructor_mixin2_test/none: pass
-Done dartk-vm debug_x64 language/const_dynamic_type_literal_test/none: pass
-Done dartk-vm debug_x64 language/const_dynamic_type_literal_test/02: pass
-Done dartk-vm debug_x64 language/const_dynamic_type_literal_test/01: pass
-Done dartk-vm debug_x64 language/const_dynamic_type_literal_test/03: pass
-Done dartk-vm debug_x64 language/multiline_newline_test/01: pass
-Done dartk-vm debug_x64 language/multiline_newline_test/none: pass
-Done dartk-vm debug_x64 language/multiline_newline_test/02: pass
-Done dartk-vm debug_x64 language/multiline_newline_test/03: pass
-Done dartk-vm debug_x64 language/multiline_newline_test/01r: pass
-Done dartk-vm debug_x64 language/multiline_newline_test/03r: pass
-Done dartk-vm debug_x64 language/multiline_newline_test/02r: pass
-Done dartk-vm debug_x64 language/multiline_newline_test/04: pass
-Done dartk-vm debug_x64 language/multiline_newline_test/04r: pass
-Done dartk-vm debug_x64 language/multiline_newline_test/06: pass
-Done dartk-vm debug_x64 language/multiline_newline_test/05: pass
-Done dartk-vm debug_x64 language/named_constructor_test/02: pass
-Done dartk-vm debug_x64 language/multiline_newline_test/05r: pass
-Done dartk-vm debug_x64 language/multiline_newline_test/06r: pass
-Done dartk-vm debug_x64 language/regress_19413_test/01: pass
-Done dartk-vm debug_x64 language/regress_19413_test/none: pass
-Done dartk-vm debug_x64 language/named_constructor_test/01: pass
-Done dartk-vm debug_x64 language/named_constructor_test/none: pass
-Done dartk-vm debug_x64 language/named_constructor_test/03: pass
-Done dartk-vm debug_x64 language/named_constructor_test/04: pass
-Done dartk-vm debug_x64 language/named_constructor_test/05: pass
-Done dartk-vm debug_x64 language/named_constructor_test/07: pass
-Done dartk-vm debug_x64 language/named_constructor_test/09: pass
-Done dartk-vm debug_x64 language/named_constructor_test/06: pass
-Done dartk-vm debug_x64 language/named_constructor_test/08: pass
-Done dartk-vm debug_x64 language/deferred_constraints_type_annotation_test/none: pass
-Done dartk-vm debug_x64 language/named_constructor_test/10: pass
-Done dartk-vm debug_x64 language/deferred_constraints_type_annotation_test/type_annotation_non_deferred: pass
-Done dartk-vm debug_x64 language/deferred_constraints_type_annotation_test/type_annotation_null: pass
-Done dartk-vm debug_x64 language/deferred_constraints_type_annotation_test/type_annotation_generic1: pass
-Done dartk-vm debug_x64 language/deferred_constraints_type_annotation_test/new_before_load: pass
-Done dartk-vm debug_x64 language/deferred_constraints_type_annotation_test/type_annotation_generic2: pass
-Done dartk-vm debug_x64 language/deferred_constraints_type_annotation_test/type_annotation1: pass
-Done dartk-vm debug_x64 language/deferred_constraints_type_annotation_test/type_annotation_generic3: pass
-Done dartk-vm debug_x64 language/deferred_constraints_type_annotation_test/type_annotation_generic4: pass
-Done dartk-vm debug_x64 language/deferred_constraints_type_annotation_test/new: pass
-Done dartk-vm debug_x64 language/deferred_constraints_type_annotation_test/new_generic1: pass
-Done dartk-vm debug_x64 language/deferred_constraints_type_annotation_test/new_generic3: pass
-Done dartk-vm debug_x64 language/deferred_constraints_type_annotation_test/new_generic2: pass
-Done dartk-vm debug_x64 language/deferred_constraints_type_annotation_test/is_check: pass
-Done dartk-vm debug_x64 language/deferred_constraints_type_annotation_test/as_operation: pass
-Done dartk-vm debug_x64 language/deferred_constraints_type_annotation_test/catch_check: pass
-Done dartk-vm debug_x64 language/deferred_constraints_type_annotation_test/static_method: pass
-Done dartk-vm debug_x64 language/deferred_constraints_type_annotation_test/type_annotation_top_level: pass
-Done dartk-vm debug_x64 language/issue_1751477_test: pass
-Done dartk-vm debug_x64 language/deferred_redirecting_factory_test: pass
-Done dartk-vm debug_x64 language/var_init_test: pass
-Done dartk-vm debug_x64 language/issue9664_test: pass
-Done dartk-vm debug_x64 language/regress_26543_2_test: pass
-Done dartk-vm debug_x64 language/unbound_getter_test: pass
-Done dartk-vm debug_x64 language/truncdiv_test: pass
-Done dartk-vm debug_x64 language/function_subtype_local6_test: pass
-Done dartk-vm debug_x64 language/issue1578_negative_test: pass
-Done dartk-vm debug_x64 language/initializing_formal_capture_test: pass
-Done dartk-vm debug_x64 language/string_no_operator_test: pass
-Done dartk-vm debug_x64 language/hash_code_mangling_test: pass
-Done dartk-vm debug_x64 language/canonical_const_test: pass
-Done dartk-vm debug_x64 language/generic_constructor_mixin_test: pass
-Done dartk-vm debug_x64 language/initializing_formal_type_test: pass
-Done dartk-vm debug_x64 language/getter_closure_execution_order_test: pass
-Done dartk-vm debug_x64 language/closure8_test: pass
-Done dartk-vm debug_x64 language/field_method4_negative_test: pass
-Done dartk-vm debug_x64 language/mixin_mixin2_test: pass
-Done dartk-vm debug_x64 language/string_escape4_negative_test: pass
-Done dartk-vm debug_x64 language/full_stacktrace2_test: pass
-Done dartk-vm debug_x64 language/throw5_test: pass
-Done dartk-vm debug_x64 language/static_field2a_test: pass
-Done dartk-vm debug_x64 language/inference_list_or_null_test: pass
-Done dartk-vm debug_x64 language/interceptor4_test: pass
-Done dartk-vm debug_x64 language/list_in_closure_test: pass
-Done dartk-vm debug_x64 language/inference_captured_variable2_test: pass
-Done dartk-vm debug_x64 language/instance_creation_in_function_annotation_test: pass
-Done dartk-vm debug_x64 language/constructor8_test: pass
-Done dartk-vm debug_x64 language/inline_closure_with_constant_arguments_test: pass
-Done dartk-vm debug_x64 language/function_subtype_not1_test: pass
-Done dartk-vm debug_x64 language/call_property_test: pass
-Done dartk-vm debug_x64 language/dynamic_test: pass
-Done dartk-vm debug_x64 language/prefix2_negative_test: pass
-Done dartk-vm debug_x64 language/generics3_test: pass
-Done dartk-vm debug_x64 language/scoped_variables_try_catch_test: pass
-Done dartk-vm debug_x64 language/issue_23914_test: pass
-Done dartk-vm debug_x64 language/isnot_malformed_type_test: pass
-Done dartk-vm debug_x64 language/regress_23996_test: pass
-Done dartk-vm debug_x64 language/generic_instanceof4_test: pass
-Done dartk-vm debug_x64 language/compile_time_constant12_test: pass
-Done dartk-vm debug_x64 language/implicit_closure1_test: pass
-Done dartk-vm debug_x64 language/crash_12118_test: pass
-Done dartk-vm debug_x64 language/generic_methods_function_type_test: pass
-Done dartk-vm debug_x64 language/f_bounded_quantification_test/none: pass
-Done dartk-vm debug_x64 language/f_bounded_quantification_test/01: pass
-Done dartk-vm debug_x64 language/f_bounded_quantification_test/02: pass
-Done dartk-vm debug_x64 language/reify_typevar_static_test/00: pass
-Done dartk-vm debug_x64 language/reify_typevar_static_test/none: pass
-Done dartk-vm debug_x64 language/super_no_such_method4_test/none: pass
-Done dartk-vm debug_x64 language/super_no_such_method4_test/01: pass
-Done dartk-vm debug_x64 language/reify_typevar_static_test/01: pass
-Done dartk-vm debug_x64 language/reify_typevar_static_test/02: pass
-Done dartk-vm debug_x64 language/reify_typevar_static_test/03: pass
-Done dartk-vm debug_x64 language/regress_22976_test/01: pass
-Done dartk-vm debug_x64 language/regress_22976_test/02: pass
-Done dartk-vm debug_x64 language/regress_22976_test/none: pass
-Done dartk-vm debug_x64 language/proxy3_test/none: pass
-Done dartk-vm debug_x64 language/proxy3_test/01: pass
-Done dartk-vm debug_x64 language/proxy3_test/03: pass
-Done dartk-vm debug_x64 language/class_keyword_test/01: pass
-Done dartk-vm debug_x64 language/class_keyword_test/02: pass
-Done dartk-vm debug_x64 language/proxy3_test/02: pass
-Done dartk-vm debug_x64 language/proxy3_test/04: pass
-Done dartk-vm debug_x64 language/class_keyword_test/none: pass
-Done dartk-vm debug_x64 language/const_instance_field_test/none: pass
-Done dartk-vm debug_x64 language/const_instance_field_test/01: pass
-Done dartk-vm debug_x64 language/final_param_test/none: pass
-Done dartk-vm debug_x64 language/null_bottom_test/none: pass
-Done dartk-vm debug_x64 language/null_bottom_test/03: pass
-Done dartk-vm debug_x64 language/mixin_invalid_bound_test/none: pass
-Done dartk-vm debug_x64 language/final_param_test/01: pass
-Done dartk-vm debug_x64 language/mixin_invalid_bound_test/01: pass
-Done dartk-vm debug_x64 language/mixin_invalid_bound_test/02: pass
-Done dartk-vm debug_x64 language/mixin_invalid_bound_test/03: pass
-Done dartk-vm debug_x64 language/mixin_invalid_bound_test/04: pass
-Done dartk-vm debug_x64 language/mixin_invalid_bound_test/05: pass
-Done dartk-vm debug_x64 language/mixin_invalid_bound_test/06: pass
-Done dartk-vm debug_x64 language/mixin_invalid_bound_test/08: pass
-Done dartk-vm debug_x64 language/mixin_invalid_bound_test/07: pass
-Done dartk-vm debug_x64 language/mixin_invalid_bound_test/09: pass
-Done dartk-vm debug_x64 language/mixin_invalid_bound_test/10: pass
-Done dartk-vm debug_x64 language/type_promotion_closure_test/none: pass
-Done dartk-vm debug_x64 language/type_promotion_closure_test/03: pass
-Done dartk-vm debug_x64 language/type_promotion_closure_test/01: pass
-Done dartk-vm debug_x64 language/type_promotion_closure_test/02: pass
-Done dartk-vm debug_x64 language/type_promotion_closure_test/04: pass
-Done dartk-vm debug_x64 language/type_promotion_closure_test/15: pass
-Done dartk-vm debug_x64 language/type_promotion_closure_test/16: pass
-Done dartk-vm debug_x64 language/type_promotion_closure_test/05: pass
-Done dartk-vm debug_x64 language/type_promotion_closure_test/06: pass
-Done dartk-vm debug_x64 language/type_promotion_closure_test/14: pass
-Done dartk-vm debug_x64 language/type_promotion_closure_test/07: pass
-Done dartk-vm debug_x64 language/type_promotion_closure_test/10: pass
-Done dartk-vm debug_x64 language/type_promotion_closure_test/08: pass
-Done dartk-vm debug_x64 language/type_promotion_closure_test/09: pass
-Done dartk-vm debug_x64 language/type_promotion_closure_test/11: pass
-Done dartk-vm debug_x64 language/library_ambiguous_test/05: pass
-Done dartk-vm debug_x64 language/type_promotion_closure_test/12: pass
-Done dartk-vm debug_x64 language/type_promotion_closure_test/13: pass
-Done dartk-vm debug_x64 language/library_ambiguous_test/none: pass
-Done dartk-vm debug_x64 language/library_ambiguous_test/01: pass
-Done dartk-vm debug_x64 language/library_ambiguous_test/00: pass
-Done dartk-vm debug_x64 language/library_ambiguous_test/02: pass
-Done dartk-vm debug_x64 language/library_ambiguous_test/04: pass
-Done dartk-vm debug_x64 language/library_ambiguous_test/03: pass
-Done dartk-vm debug_x64 language/function_subtype_bound_closure2_test: pass
-Done dartk-vm debug_x64 language/function_subtype_optional2_test: pass
-Done dartk-vm debug_x64 language/closure_self_reference_test: pass
-Done dartk-vm debug_x64 language/canonical_const3_test: pass
-Done dartk-vm debug_x64 language/regress_28610_test: pass
-Done dartk-vm debug_x64 language/covariant_override_test: pass
-Done dartk-vm debug_x64 language/function_subtype_bound_closure7_test: pass
-Done dartk-vm debug_x64 language/local_function_non_equal_test: pass
-Done dartk-vm debug_x64 language/library_prefixes_test: pass
-Done dartk-vm debug_x64 language/rewrite_swap_test: pass
-Done dartk-vm debug_x64 language/mixin_bound_test: pass
-Done dartk-vm debug_x64 language/library5_test: pass
-Done dartk-vm debug_x64 language/closure_break1_test: pass
-Done dartk-vm debug_x64 language/asyncstar_concat_test: pass
-Done dartk-vm debug_x64 language/round_test: pass
-Done dartk-vm debug_x64 language/private_test: pass
-Done dartk-vm debug_x64 language/deep_nesting2_negative_test: pass
-Done dartk-vm debug_x64 language/optimized_string_charat_test: pass
-Done dartk-vm debug_x64 language/setter2_test: pass
-Done dartk-vm debug_x64 language/no_such_method3_test: pass
-Done dartk-vm debug_x64 language/licm2_test: pass
-Done dartk-vm debug_x64 language/new_expression3_negative_test: pass
-Done dartk-vm debug_x64 language/symbol_conflict_test: pass
-Done dartk-vm debug_x64 language/function_type3_test: pass
-Done dartk-vm debug_x64 language/multi_pass2_test: pass
-Done dartk-vm debug_x64 language/inline_value_context_test: pass
-Done dartk-vm debug_x64 language/regress_26543_1_test: pass
-Done dartk-vm debug_x64 language/regress_29349_test: pass
-Done dartk-vm debug_x64 language/regress_27572_test: pass
-Done dartk-vm debug_x64 language/static_field1a_test: pass
-Done dartk-vm debug_x64 language/constant_fold_equals_test: pass
-Done dartk-vm debug_x64 language/factory2_negative_test: pass
-Done dartk-vm debug_x64 language/issue14014_3_test: pass
-Done dartk-vm debug_x64 language/inline_super_field_test: pass
-Done dartk-vm debug_x64 language/constructor12_test: pass
-Done dartk-vm debug_x64 language/context_test: pass
-Done dartk-vm debug_x64 language/exception_in_increment_test: pass
-Done dartk-vm debug_x64 language/super_test: pass
-Done dartk-vm debug_x64 language/inline_effect_context_test: pass
-Done dartk-vm debug_x64 language/malformed_type_test: pass
-Done dartk-vm debug_x64 language/interface_inherit_field_test: pass
-Done dartk-vm debug_x64 language/type_argument_substitution_test: pass
-Done dartk-vm debug_x64 language/rewrite_while_many_exits_test: pass
-Done dartk-vm debug_x64 language/double_to_string_as_exponential2_test: pass
-Done dartk-vm debug_x64 language/conditional_rewrite_test: pass
-Done dartk-vm debug_x64 language/inferrer_this_access_test: pass
-Done dartk-vm debug_x64 language/super_operator_index6_test: pass
-Done dartk-vm debug_x64 language/type_variable_field_initializer_test: pass
-Done dartk-vm debug_x64 language/mixin_super_bound2_test/none: pass
-Done dartk-vm debug_x64 language/mixin_super_bound2_test/01: pass
-Done dartk-vm debug_x64 language/bad_override_test/01: pass
-Done dartk-vm debug_x64 language/bad_override_test/03: pass
-Done dartk-vm debug_x64 language/bad_override_test/none: pass
-Done dartk-vm debug_x64 language/bad_override_test/02: pass
-Done dartk-vm debug_x64 language/bad_override_test/04: pass
-Done dartk-vm debug_x64 language/bad_override_test/05: pass
-Done dartk-vm debug_x64 language/bad_override_test/06: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/none: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/01: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/02: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/04: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/06: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/03: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/08: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/07: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/09: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/10: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/12: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/11: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/14: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/13: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/15: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/16: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/17: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/18: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/20: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/22: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/21: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/19: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/24: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/23: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/25: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/26: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/27: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/29: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/28: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/30: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/31: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/05: pass
-Done dartk-vm debug_x64 language/cyclic_class_member_test/01: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/32: pass
-Done dartk-vm debug_x64 language/regress_26855_test/0: pass
-Done dartk-vm debug_x64 language/regress_26855_test/2: pass
-Done dartk-vm debug_x64 language/regress_26855_test/1: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/33: pass
-Done dartk-vm debug_x64 language/regress_26855_test/none: pass
-Done dartk-vm debug_x64 language/cyclic_class_member_test/none: pass
-Done dartk-vm debug_x64 language/regress_26855_test/4: pass
-Done dartk-vm debug_x64 language/regress_26855_test/3: pass
-Done dartk-vm debug_x64 language/const_constructor_test/01: pass
-Done dartk-vm debug_x64 language/const_constructor_test/none: pass
-Done dartk-vm debug_x64 language/static_getter_no_setter3_test/none: pass
-Done dartk-vm debug_x64 language/static_getter_no_setter3_test/01: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/none: pass
-Done dartk-vm debug_x64 language/bool_condition_check_test/none: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/01: pass
-Done dartk-vm debug_x64 language/bool_condition_check_test/01: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/02: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/23: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/24: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/04: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/03: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/25: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/27: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/26: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/28: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/05: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/06: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/07: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/08: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/29: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/09: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/30: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/31: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/10: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/11: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/12: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/32: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/13: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/20: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/33: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/34: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/21: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/22: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/35: pass
-Done dartk-vm debug_x64 language/enum_duplicate_test/01: pass
-Done dartk-vm debug_x64 language/enum_duplicate_test/none: pass
-Done dartk-vm debug_x64 language/enum_duplicate_test/02: pass
-Done dartk-vm debug_x64 language/mixin_type_parameter6_test: pass
-Done dartk-vm debug_x64 language/inlined_conditional_test: pass
-Done dartk-vm debug_x64 language/generic_syntax_test: pass
-Done dartk-vm debug_x64 language/deferred_inlined_test: pass
-Done dartk-vm debug_x64 language/constructor_redirect1_negative_test: pass
-Done dartk-vm debug_x64 language/is_interfaces_test: pass
-Done dartk-vm debug_x64 language/source_self_negative_test: pass
-Done dartk-vm debug_x64 language/closure_call_wrong_argument_count_negative_test: pass
-Done dartk-vm debug_x64 language/mixin_implements_test: pass
-Done dartk-vm debug_x64 language/for_in_test: pass
-Done dartk-vm debug_x64 language/closure_internals_test: pass
-Done dartk-vm debug_x64 language/stack_overflow_test: pass
-Done dartk-vm debug_x64 language/on_catch_malformed_type_test: pass
-Done dartk-vm debug_x64 language/exception_identity_test: pass
-Done dartk-vm debug_x64 language/inline_super_test: pass
-Done dartk-vm debug_x64 language/issue10561_test: pass
-Done dartk-vm debug_x64 language/positive_bit_operations_test: pass
-Done dartk-vm debug_x64 language/parameter_initializer1_negative_test: pass
-Done dartk-vm debug_x64 language/regress_12561_test: pass
-Done dartk-vm debug_x64 language/default_class_implicit_constructor_test: pass
-Done dartk-vm debug_x64 language/super_operator_index8_test: pass
-Done dartk-vm debug_x64 language/constructor_default_test: pass
-Done dartk-vm debug_x64 language/non_const_super_negative_test: pass
-Done dartk-vm debug_x64 language/optimized_lists_test: pass
-Done dartk-vm debug_x64 language/mixin_super_test: pass
-Done dartk-vm debug_x64 language/regress_23650_test: pass
-Done dartk-vm debug_x64 language/regress_29243_test: pass
-Done dartk-vm debug_x64 language/deferred_load_inval_code_test: pass
-Done dartk-vm debug_x64 language/map_literal8_test: pass
-Done dartk-vm debug_x64 language/async_star_test: pass
-Done dartk-vm debug_x64 language/constructor_with_mixin_test: pass
-Done dartk-vm debug_x64 language/instanceof_test: pass
-Done dartk-vm debug_x64 language/issue12284_test: pass
-Done dartk-vm debug_x64 language/static_field1_test: pass
-Done dartk-vm debug_x64 language/first_class_types_test: pass
-Done dartk-vm debug_x64 language/compile_time_constant_l_test: pass
-Done dartk-vm debug_x64 language/number_syntax_test: pass
-Done dartk-vm debug_x64 language/prefix14_test: pass
-Done dartk-vm debug_x64 language/syncstar_less_than_test: pass
-Done dartk-vm debug_x64 language/type_guard_conversion_test: pass
-Done dartk-vm debug_x64 language/interface_constants_test: pass
-Done dartk-vm debug_x64 language/instance_method_negative_test: pass
-Done dartk-vm debug_x64 language/function_subtype1_test: pass
-Done dartk-vm debug_x64 language/prefix1_negative_test: pass
-Done dartk-vm debug_x64 language/new_prefix_test/none: pass
-Done dartk-vm debug_x64 language/new_prefix_test/01: pass
-Done dartk-vm debug_x64 language/named_parameters_type_test/none: pass
-Done dartk-vm debug_x64 language/function_type_alias9_test/00: pass
-Done dartk-vm debug_x64 language/named_parameters_type_test/01: pass
-Done dartk-vm debug_x64 language/named_parameters_type_test/03: pass
-Done dartk-vm debug_x64 language/named_parameters_type_test/02: pass
-Done dartk-vm debug_x64 language/function_type_alias9_test/none: pass
-Done dartk-vm debug_x64 language/type_variable_scope3_test/00: pass
-Done dartk-vm debug_x64 language/const_objects_are_immutable_test/none: pass
-Done dartk-vm debug_x64 language/const_objects_are_immutable_test/01: pass
-Done dartk-vm debug_x64 language/type_variable_scope3_test/none: pass
-Done dartk-vm debug_x64 language/main_test/none: pass
-Done dartk-vm debug_x64 language/main_test/01: pass
-Done dartk-vm debug_x64 language/main_test/02: pass
-Done dartk-vm debug_x64 language/main_test/03: pass
-Done dartk-vm debug_x64 language/main_test/04: pass
-Done dartk-vm debug_x64 language/main_test/20: pass
-Done dartk-vm debug_x64 language/main_test/05: pass
-Done dartk-vm debug_x64 language/main_test/21: pass
-Done dartk-vm debug_x64 language/main_test/22: pass
-Done dartk-vm debug_x64 language/main_test/41: pass
-Done dartk-vm debug_x64 language/main_test/43: pass
-Done dartk-vm debug_x64 language/main_test/42: pass
-Done dartk-vm debug_x64 language/main_test/44: pass
-Done dartk-vm debug_x64 language/main_test/45: pass
-Done dartk-vm debug_x64 language/least_upper_bound_expansive_test/01: pass
-Done dartk-vm debug_x64 language/least_upper_bound_expansive_test/none: pass
-Done dartk-vm debug_x64 language/least_upper_bound_expansive_test/02: pass
-Done dartk-vm debug_x64 language/least_upper_bound_expansive_test/03: pass
-Done dartk-vm debug_x64 language/least_upper_bound_expansive_test/04: pass
-Done dartk-vm debug_x64 language/least_upper_bound_expansive_test/05: pass
-Done dartk-vm debug_x64 language/least_upper_bound_expansive_test/06: pass
-Done dartk-vm debug_x64 language/least_upper_bound_expansive_test/07: pass
-Done dartk-vm debug_x64 language/least_upper_bound_expansive_test/08: pass
-Done dartk-vm debug_x64 language/least_upper_bound_expansive_test/09: pass
-Done dartk-vm debug_x64 language/string_interpolation3_test/01: pass
-Done dartk-vm debug_x64 language/least_upper_bound_expansive_test/11: pass
-Done dartk-vm debug_x64 language/least_upper_bound_expansive_test/10: pass
-Done dartk-vm debug_x64 language/ref_before_declaration_test/00: pass
-Done dartk-vm debug_x64 language/ref_before_declaration_test/01: pass
-Done dartk-vm debug_x64 language/least_upper_bound_expansive_test/12: pass
-Done dartk-vm debug_x64 language/string_interpolation3_test/none: pass
-Done dartk-vm debug_x64 language/ref_before_declaration_test/none: pass
-Done dartk-vm debug_x64 language/ref_before_declaration_test/03: pass
-Done dartk-vm debug_x64 language/ref_before_declaration_test/06: pass
-Done dartk-vm debug_x64 language/ref_before_declaration_test/02: pass
-Done dartk-vm debug_x64 language/ref_before_declaration_test/07: pass
-Done dartk-vm debug_x64 language/ref_before_declaration_test/04: pass
-Done dartk-vm debug_x64 language/ref_before_declaration_test/05: pass
-Done dartk-vm debug_x64 language/super_call3_test/01: pass
-Done dartk-vm debug_x64 language/super_call3_test/02: pass
-Done dartk-vm debug_x64 language/field3_negative_test: pass
-Done dartk-vm debug_x64 language/super_call3_test/none: pass
-Done dartk-vm debug_x64 language/switch8_test: pass
-Done dartk-vm debug_x64 language/constructor5_test: pass
-Done dartk-vm debug_x64 language/new_expression1_negative_test: pass
-Done dartk-vm debug_x64 language/redirecting_factory_incompatible_signature_test: pass
-Done dartk-vm debug_x64 language/closures_with_complex_params_test: pass
-Done dartk-vm debug_x64 language/bailout7_test: pass
-Done dartk-vm debug_x64 language/interface2_negative_test: pass
-Done dartk-vm debug_x64 language/function_type_call_getter_test: pass
-Done dartk-vm debug_x64 language/method_binding_test: pass
-Done dartk-vm debug_x64 language/efficient_length_warning_test: pass
-Done dartk-vm debug_x64 language/closure_variable_shadow_test: pass
-Done dartk-vm debug_x64 language/type_propagation3_test: pass
-Done dartk-vm debug_x64 language/optimized_constant_array_string_access_test: pass
-Done dartk-vm debug_x64 language/many_calls_test: pass
-Done dartk-vm debug_x64 language/metadata_test: pass
-Done dartk-vm debug_x64 language/unary_plus_negative_test: pass
-Done dartk-vm debug_x64 language/static_initializer_type_error_test: pass
-Done dartk-vm debug_x64 language/const_redirect_skips_supertype_test: pass
-Done dartk-vm debug_x64 language/issue13474_test: pass
-Done dartk-vm debug_x64 language/prefix13_negative_test: pass
-Done dartk-vm debug_x64 language/factory2_test: pass
-Done dartk-vm debug_x64 language/do_while2_test: pass
-Done dartk-vm debug_x64 language/function_subtype_call0_test: pass
-Done dartk-vm debug_x64 language/empty_block_case_test: pass
-Done dartk-vm debug_x64 language/string_interpolation7_test: pass
-Done dartk-vm debug_x64 language/constant_string_interpolation2_test: pass
-Done dartk-vm debug_x64 language/function_subtype_simple0_test: pass
-Done dartk-vm debug_x64 language/malbounded_type_cast_test: pass
-Done dartk-vm debug_x64 language/constant_string_interpolation_test: pass
-Done dartk-vm debug_x64 language/regress_27164_test: pass
-Done dartk-vm debug_x64 language/function_subtype_inline2_test: pass
-Done dartk-vm debug_x64 language/function_subtype_local2_test: pass
-Done dartk-vm debug_x64 language/static_implicit_closure_test: pass
-Done dartk-vm debug_x64 language/static_implicit_closure_test: pass
-Done dartk-vm debug_x64 language/field_method_test: pass
-Done dartk-vm debug_x64 language/prefix3_negative_test: pass
-Done dartk-vm debug_x64 language/mixin_super_2_test: pass
-Done dartk-vm debug_x64 language/generic_creation_test: pass
-Done dartk-vm debug_x64 language/function_literals_test: pass
-Done dartk-vm debug_x64 language/factory_implementation_test/00: pass
-Done dartk-vm debug_x64 language/factory_implementation_test/none: pass
-Done dartk-vm debug_x64 language/field_type_check2_test/none: pass
-Done dartk-vm debug_x64 language/sync_generator2_test/01: pass
-Done dartk-vm debug_x64 language/sync_generator2_test/02: pass
-Done dartk-vm debug_x64 language/sync_generator2_test/03: pass
-Done dartk-vm debug_x64 language/sync_generator2_test/05: pass
-Done dartk-vm debug_x64 language/sync_generator2_test/04: pass
-Done dartk-vm debug_x64 language/field_type_check2_test/01: pass
-Done dartk-vm debug_x64 language/sync_generator2_test/06: pass
-Done dartk-vm debug_x64 language/sync_generator2_test/none: pass
-Done dartk-vm debug_x64 language/sync_generator2_test/07: pass
-Done dartk-vm debug_x64 language/sync_generator2_test/08: pass
-Done dartk-vm debug_x64 language/sync_generator2_test/09: pass
-Done dartk-vm debug_x64 language/sync_generator2_test/11: pass
-Done dartk-vm debug_x64 language/sync_generator2_test/10: pass
-Done dartk-vm debug_x64 language/sync_generator2_test/20: pass
-Done dartk-vm debug_x64 language/sync_generator2_test/30: pass
-Done dartk-vm debug_x64 language/sync_generator2_test/40: pass
-Done dartk-vm debug_x64 language/sync_generator2_test/41: pass
-Done dartk-vm debug_x64 language/sync_generator2_test/51: pass
-Done dartk-vm debug_x64 language/sync_generator2_test/50: pass
-Done dartk-vm debug_x64 language/sync_generator2_test/52: pass
-Done dartk-vm debug_x64 language/static_final_field2_test/02: pass
-Done dartk-vm debug_x64 language/static_final_field2_test/none: pass
-Done dartk-vm debug_x64 language/static_final_field2_test/01: pass
-Done dartk-vm debug_x64 language/check_member_static_test/none: pass
-Done dartk-vm debug_x64 language/check_member_static_test/02: pass
-Done dartk-vm debug_x64 language/type_variable_bounds3_test/none: pass
-Done dartk-vm debug_x64 language/get_set_syntax_test/00: pass
-Done dartk-vm debug_x64 language/check_member_static_test/01: pass
-Done dartk-vm debug_x64 language/type_variable_bounds3_test/00: pass
-Done dartk-vm debug_x64 language/get_set_syntax_test/none: pass
-Done dartk-vm debug_x64 language/get_set_syntax_test/01: pass
-Done dartk-vm debug_x64 language/get_set_syntax_test/02: pass
-Done dartk-vm debug_x64 language/get_set_syntax_test/04: pass
-Done dartk-vm debug_x64 language/get_set_syntax_test/07: pass
-Done dartk-vm debug_x64 language/get_set_syntax_test/03: pass
-Done dartk-vm debug_x64 language/get_set_syntax_test/05: pass
-Done dartk-vm debug_x64 language/get_set_syntax_test/06: pass
-Done dartk-vm debug_x64 language/get_set_syntax_test/09: pass
-Done dartk-vm debug_x64 language/get_set_syntax_test/11: pass
-Done dartk-vm debug_x64 language/get_set_syntax_test/10: pass
-Done dartk-vm debug_x64 language/get_set_syntax_test/14: pass
-Done dartk-vm debug_x64 language/get_set_syntax_test/15: pass
-Done dartk-vm debug_x64 language/get_set_syntax_test/13: pass
-Done dartk-vm debug_x64 language/redirecting_factory_infinite_steps_test/02: pass
-Done dartk-vm debug_x64 language/mixin_illegal_constructor_test/01: pass
-Done dartk-vm debug_x64 language/mixin_illegal_constructor_test/02: pass
-Done dartk-vm debug_x64 language/redirecting_factory_infinite_steps_test/none: pass
-Done dartk-vm debug_x64 language/mixin_illegal_constructor_test/03: pass
-Done dartk-vm debug_x64 language/redirecting_factory_infinite_steps_test/01: pass
-Done dartk-vm debug_x64 language/mixin_illegal_constructor_test/05: pass
-Done dartk-vm debug_x64 language/mixin_illegal_constructor_test/04: pass
-Done dartk-vm debug_x64 language/mixin_illegal_constructor_test/none: pass
-Done dartk-vm debug_x64 language/mixin_illegal_constructor_test/06: pass
-Done dartk-vm debug_x64 language/mixin_illegal_constructor_test/07: pass
-Done dartk-vm debug_x64 language/mixin_illegal_constructor_test/12: pass
-Done dartk-vm debug_x64 language/mixin_illegal_constructor_test/08: pass
-Done dartk-vm debug_x64 language/mixin_illegal_constructor_test/11: pass
-Done dartk-vm debug_x64 language/mixin_illegal_constructor_test/09: pass
-Done dartk-vm debug_x64 language/mixin_illegal_constructor_test/10: pass
-Done dartk-vm debug_x64 language/mixin_illegal_constructor_test/13: pass
-Done dartk-vm debug_x64 language/mixin_illegal_constructor_test/14: pass
-Done dartk-vm debug_x64 language/mixin_illegal_constructor_test/15: pass
-Done dartk-vm debug_x64 language/issue18628_1_test/none: pass
-Done dartk-vm debug_x64 language/mixin_illegal_constructor_test/16: pass
-Done dartk-vm debug_x64 language/library_env_test/none: pass
-Done dartk-vm debug_x64 language/issue18628_1_test/01: pass
-Done dartk-vm debug_x64 language/library_env_test/has_html_support: pass
-Done dartk-vm debug_x64 language/library_env_test/has_no_html_support: pass
-Done dartk-vm debug_x64 language/library_env_test/has_no_io_support: pass
-Done dartk-vm debug_x64 language/library_env_test/has_io_support: pass
-Done dartk-vm debug_x64 language/cyclic_metadata_test/none: pass
-Done dartk-vm debug_x64 language/library_env_test/has_no_mirror_support: pass
-Done dartk-vm debug_x64 language/cyclic_metadata_test/02: pass
-Done dartk-vm debug_x64 language/library_env_test/has_mirror_support: pass
-Done dartk-vm debug_x64 language/cyclic_metadata_test/01: pass
-Done dartk-vm debug_x64 language/override_inheritance_generic_test/none: pass
-Done dartk-vm debug_x64 language/override_inheritance_generic_test/01: pass
-Done dartk-vm debug_x64 language/override_inheritance_generic_test/02: pass
-Done dartk-vm debug_x64 language/override_inheritance_generic_test/04: pass
-Done dartk-vm debug_x64 language/override_inheritance_generic_test/06: pass
-Done dartk-vm debug_x64 language/override_inheritance_generic_test/07: pass
-Done dartk-vm debug_x64 language/override_inheritance_generic_test/05: pass
-Done dartk-vm debug_x64 language/override_inheritance_generic_test/03: pass
-Done dartk-vm debug_x64 language/override_inheritance_generic_test/08: pass
-Done dartk-vm debug_x64 language/toplevel_collision2_test/00: pass
-Done dartk-vm debug_x64 language/toplevel_collision2_test/01: pass
-Done dartk-vm debug_x64 language/override_inheritance_generic_test/09: pass
-Done dartk-vm debug_x64 language/override_inheritance_generic_test/10: pass
-Done dartk-vm debug_x64 language/regress_26453_test: pass
-Done dartk-vm debug_x64 language/toplevel_collision2_test/none: pass
-Done dartk-vm debug_x64 language/implied_interface_test: pass
-Done dartk-vm debug_x64 language/const_map4_test: pass
-Done dartk-vm debug_x64 language/inferrer_synthesized_super_constructor_test: pass
-Done dartk-vm debug_x64 language/function_subtype_simple1_test: pass
-Done dartk-vm debug_x64 language/field5_negative_test: pass
-Done dartk-vm debug_x64 language/await_not_started_immediately_test: pass
-Done dartk-vm debug_x64 language/return_in_loop_test: pass
-Done dartk-vm debug_x64 language/loop_exchange4_test: pass
-Done dartk-vm debug_x64 language/is_not_class1_negative_test: pass
-Done dartk-vm debug_x64 language/map_literal4_test: pass
-Done dartk-vm debug_x64 language/operator_equals_test: pass
-Done dartk-vm debug_x64 language/null_to_string_test: pass
-Done dartk-vm debug_x64 language/mixin_type_parameter1_test: pass
-Done dartk-vm debug_x64 language/malbounded_type_test2_test: pass
-Done dartk-vm debug_x64 language/lazy_static_test: pass
-Done dartk-vm debug_x64 language/regress_22666_test: pass
-Done dartk-vm debug_x64 language/lazy_static3_test: pass
-Done dartk-vm debug_x64 language/load_indexed_constant_test: pass
-Done dartk-vm debug_x64 language/rewrite_nested_if3_test: pass
-Done dartk-vm debug_x64 language/call_through_getter_test: pass
-Done dartk-vm debug_x64 language/skip_expression_test: pass
-Done dartk-vm debug_x64 language/private2_test: pass
-Done dartk-vm debug_x64 language/function_subtype_inline0_test: pass
-Done dartk-vm debug_x64 language/list_is_test: pass
-Done dartk-vm debug_x64 language/execute_finally10_test: pass
-Done dartk-vm debug_x64 language/top_level_in_initializer_test: pass
-Done dartk-vm debug_x64 language/stacktrace_rethrow_nonerror_test: pass
-Done dartk-vm debug_x64 language/prefix6_negative_test: pass
-Done dartk-vm debug_x64 language/function_subtype_bound_closure1_test: pass
-Done dartk-vm debug_x64 language/many_method_calls_test: pass
-Done dartk-vm debug_x64 language/closure_in_field_initializer_test: pass
-Done dartk-vm debug_x64 language/deopt_smi_op_test: pass
-Done dartk-vm debug_x64 language/named_parameter_regression_test: pass
-Done dartk-vm debug_x64 language/second_test: pass
-Done dartk-vm debug_x64 language/namer_test: pass
-Done dartk-vm debug_x64 language/dynamic_type_literal_test: pass
-Done dartk-vm debug_x64 language/mixin_mixin4_test: pass
-Done dartk-vm debug_x64 language/closure_cycles_test: pass
-Done dartk-vm debug_x64 language/hash_map_null_key_foreach_test: pass
-Done dartk-vm debug_x64 language/ct_const4_test: pass
-Done dartk-vm debug_x64 language/lazy_map_test: pass
-Done dartk-vm debug_x64 language/f_bounded_quantification4_test: pass
-Done dartk-vm debug_x64 language/mixin_illegal_cycles_test/01: pass
-Done dartk-vm debug_x64 language/mixin_illegal_cycles_test/02: pass
-Done dartk-vm debug_x64 language/mixin_illegal_cycles_test/03: pass
-Done dartk-vm debug_x64 language/const_init_test: pass
-Done dartk-vm debug_x64 language/double_int_addition_test: pass
-Done dartk-vm debug_x64 language/mixin_illegal_cycles_test/04: pass
-Done dartk-vm debug_x64 language/mixin_illegal_cycles_test/05: pass
-Done dartk-vm debug_x64 language/mixin_illegal_cycles_test/06: pass
-Done dartk-vm debug_x64 language/mixin_illegal_cycles_test/none: pass
-Done dartk-vm debug_x64 language/function_type_alias7_test/00: pass
-Done dartk-vm debug_x64 language/function_type_alias7_test/02: pass
-Done dartk-vm debug_x64 language/function_type_alias7_test/01: pass
-Done dartk-vm debug_x64 language/function_type_alias7_test/none: pass
-Done dartk-vm debug_x64 language/external_test/01: pass
-Done dartk-vm debug_x64 language/external_test/02: pass
-Done dartk-vm debug_x64 language/external_test/11: pass
-Done dartk-vm debug_x64 language/external_test/12: pass
-Done dartk-vm debug_x64 language/external_test/none: pass
-Done dartk-vm debug_x64 language/external_test/14: pass
-Done dartk-vm debug_x64 language/external_test/16: pass
-Done dartk-vm debug_x64 language/external_test/21: pass
-Done dartk-vm debug_x64 language/external_test/10: pass
-Done dartk-vm debug_x64 language/external_test/22: pass
-Done dartk-vm debug_x64 language/external_test/13: pass
-Done dartk-vm debug_x64 language/external_test/23: pass
-Done dartk-vm debug_x64 language/external_test/24: pass
-Done dartk-vm debug_x64 language/external_test/20: pass
-Done dartk-vm debug_x64 language/external_test/30: pass
-Done dartk-vm debug_x64 language/external_test/31: pass
-Done dartk-vm debug_x64 language/external_test/25: pass
-Done dartk-vm debug_x64 language/malbounded_redirecting_factory_test/02: pass
-Done dartk-vm debug_x64 language/malbounded_redirecting_factory_test/03: pass
-Done dartk-vm debug_x64 language/malbounded_redirecting_factory_test/none: pass
-Done dartk-vm debug_x64 language/malbounded_redirecting_factory_test/01: pass
-Done dartk-vm debug_x64 language/malbounded_redirecting_factory_test/04: pass
-Done dartk-vm debug_x64 language/static_getter_no_setter2_test/01: pass
-Done dartk-vm debug_x64 language/const_error_multiply_initialized_test/none: pass
-Done dartk-vm debug_x64 language/static_getter_no_setter2_test/none: pass
-Done dartk-vm debug_x64 language/const_error_multiply_initialized_test/01: pass
-Done dartk-vm debug_x64 language/const_error_multiply_initialized_test/02: pass
-Done dartk-vm debug_x64 language/const_error_multiply_initialized_test/03: pass
-Done dartk-vm debug_x64 language/const_error_multiply_initialized_test/04: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked5_test/none: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked5_test/01: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked5_test/02: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked5_test/03: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked5_test/04: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked5_test/06: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked5_test/05: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked5_test/07: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked5_test/09: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked5_test/08: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked5_test/10: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked5_test/11: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked5_test/12: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked5_test/13: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked5_test/14: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked5_test/15: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked5_test/17: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked5_test/16: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked5_test/18: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked5_test/19: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked5_test/20: pass
-Done dartk-vm debug_x64 language/string_interpolation6_test/01: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked5_test/21: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked5_test/22: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked5_test/23: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked5_test/24: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked5_test/25: pass
-Done dartk-vm debug_x64 language/const_constructor_mixin_test/01: pass
-Done dartk-vm debug_x64 language/string_interpolation6_test/none: pass
-Done dartk-vm debug_x64 language/final_is_not_const_test/01: pass
-Done dartk-vm debug_x64 language/const_constructor_mixin_test/none: pass
-Done dartk-vm debug_x64 language/final_is_not_const_test/none: pass
-Done dartk-vm debug_x64 language/type_promotion_multiple_test/none: pass
-Done dartk-vm debug_x64 language/type_promotion_multiple_test/01: pass
-Done dartk-vm debug_x64 language/type_promotion_multiple_test/02: pass
-Done dartk-vm debug_x64 language/type_promotion_multiple_test/03: pass
-Done dartk-vm debug_x64 language/type_promotion_multiple_test/04: pass
-Done dartk-vm debug_x64 language/type_promotion_multiple_test/05: pass
-Done dartk-vm debug_x64 language/type_promotion_multiple_test/06: pass
-Done dartk-vm debug_x64 language/type_promotion_multiple_test/07: pass
-Done dartk-vm debug_x64 language/type_promotion_multiple_test/08: pass
-Done dartk-vm debug_x64 language/type_promotion_multiple_test/09: pass
-Done dartk-vm debug_x64 language/type_promotion_multiple_test/10: pass
-Done dartk-vm debug_x64 language/type_promotion_multiple_test/11: pass
-Done dartk-vm debug_x64 language/type_promotion_multiple_test/13: pass
-Done dartk-vm debug_x64 language/type_promotion_multiple_test/12: pass
-Done dartk-vm debug_x64 language/type_promotion_multiple_test/14: pass
-Done dartk-vm debug_x64 language/type_promotion_multiple_test/15: pass
-Done dartk-vm debug_x64 language/type_promotion_multiple_test/17: pass
-Done dartk-vm debug_x64 language/type_promotion_multiple_test/16: pass
-Done dartk-vm debug_x64 language/deferred_type_dependency_test/none: pass
-Done dartk-vm debug_x64 language/type_promotion_multiple_test/19: pass
-Done dartk-vm debug_x64 language/type_promotion_multiple_test/18: pass
-Done dartk-vm debug_x64 language/type_promotion_multiple_test/20: pass
-Done dartk-vm debug_x64 language/type_promotion_multiple_test/21: pass
-Done dartk-vm debug_x64 language/type_promotion_multiple_test/22: pass
-Done dartk-vm debug_x64 language/deferred_type_dependency_test/as: pass
-Done dartk-vm debug_x64 language/deferred_type_dependency_test/is: pass
-Done dartk-vm debug_x64 language/deferred_type_dependency_test/type_annotation: pass
-Done dartk-vm debug_x64 language/state_mangling_test: pass
-Done dartk-vm debug_x64 language/const_escape_frog_test: pass
-Done dartk-vm debug_x64 language/null_no_such_method_test: pass
-Done dartk-vm debug_x64 language/asyncstar_throw_in_catch_test: pass
-Done dartk-vm debug_x64 language/regress_25935_test: pass
-Done dartk-vm debug_x64 language/lazy_static5_test: pass
-Done dartk-vm debug_x64 language/closure5_test: pass
-Done dartk-vm debug_x64 language/regress_22443_test: pass
-Done dartk-vm debug_x64 language/refine_receiver_null_test: pass
-Done dartk-vm debug_x64 language/top_level_var_test: pass
-Done dartk-vm debug_x64 language/function_type_parameter_test: pass
-Done dartk-vm debug_x64 language/private_mixin2_test: pass
-Done dartk-vm debug_x64 language/mixin_superclass_test: pass
-Done dartk-vm debug_x64 language/field_override2_test: pass
-Done dartk-vm debug_x64 language/import_combinators_test: pass
-Done dartk-vm debug_x64 language/initializing_formal_final_test: pass
-Done dartk-vm debug_x64 language/method_name_test: pass
-Done dartk-vm debug_x64 language/string_intrinsics_test: pass
-Done dartk-vm debug_x64 language/generic_sends_test: pass
-Done dartk-vm debug_x64 language/bailout6_test: pass
-Done dartk-vm debug_x64 language/is_object_test: pass
-Done dartk-vm debug_x64 language/multiline_strings_test: pass
-Done dartk-vm debug_x64 language/part_test: pass
-Done dartk-vm debug_x64 language/super_mixin_test: pass
-Done dartk-vm debug_x64 language/throw_expr_test: pass
-Done dartk-vm debug_x64 language/parameter_initializer4_negative_test: pass
-Done dartk-vm debug_x64 language/type_propagation_phi_test: pass
-Done dartk-vm debug_x64 language/parse_types_test: pass
-Done dartk-vm debug_x64 language/reg_exp3_test: pass
-Done dartk-vm debug_x64 language/export_test: pass
-Done dartk-vm debug_x64 language/evaluation_redirecting_constructor_test: pass
-Done dartk-vm debug_x64 language/mixin_type_parameters_super_test: pass
-Done dartk-vm debug_x64 language/closure3_test: pass
-Done dartk-vm debug_x64 language/mul_recipr_test: pass
-Done dartk-vm debug_x64 language/closure_with_super_field_test: pass
-Done dartk-vm debug_x64 language/label5_negative_test: pass
-Done dartk-vm debug_x64 language/function_subtype_not3_test: pass
-Done dartk-vm debug_x64 language/cha_deopt2_test: pass
-Done dartk-vm debug_x64 language/super_call_test: pass
-Done dartk-vm debug_x64 language/null_to_string2_test: pass
-Done dartk-vm debug_x64 language/super_operator_index3_test: pass
-Done dartk-vm debug_x64 language/super_field_test: pass
-Done dartk-vm debug_x64 language/import_show_test: pass
-Done dartk-vm debug_x64 language/cha_deopt2_test: pass
-Done dartk-vm debug_x64 language/library_juxtaposition_test: pass
-Done dartk-vm debug_x64 language/null_is_test: pass
-Done dartk-vm debug_x64 language/regress_22858_test: pass
-Done dartk-vm debug_x64 language/initializing_formal_access_test: pass
-Done dartk-vm debug_x64 language/mint_arithmetic_test: pass
-Done dartk-vm debug_x64 language/operator2_test: pass
-Done dartk-vm debug_x64 language/function_subtype_named2_test: pass
-Done dartk-vm debug_x64 language/top_level_getter_no_setter2_test/none: pass
-Done dartk-vm debug_x64 language/named_parameters_default_eq_test/01: pass
-Done dartk-vm debug_x64 language/default_factory_test/01: pass
-Done dartk-vm debug_x64 language/top_level_getter_no_setter2_test/01: pass
-Done dartk-vm debug_x64 language/default_factory_test/none: pass
-Done dartk-vm debug_x64 language/named_parameters_default_eq_test/none: pass
-Done dartk-vm debug_x64 language/named_parameters_default_eq_test/02: pass
-Done dartk-vm debug_x64 language/override_inheritance_mixed_test/none: pass
-Done dartk-vm debug_x64 language/override_inheritance_mixed_test/01: pass
-Done dartk-vm debug_x64 language/override_inheritance_mixed_test/02: pass
-Done dartk-vm debug_x64 language/override_inheritance_mixed_test/03: pass
-Done dartk-vm debug_x64 language/override_inheritance_mixed_test/04: pass
-Done dartk-vm debug_x64 language/override_inheritance_mixed_test/06: pass
-Done dartk-vm debug_x64 language/override_inheritance_mixed_test/05: pass
-Done dartk-vm debug_x64 language/override_inheritance_mixed_test/07: pass
-Done dartk-vm debug_x64 language/override_inheritance_mixed_test/08: pass
-Done dartk-vm debug_x64 language/override_inheritance_mixed_test/09: pass
-Done dartk-vm debug_x64 language/syncstar_yield_test/none: pass
-Done dartk-vm debug_x64 language/substring_test/none: pass
-Done dartk-vm debug_x64 language/syncstar_yield_test/copyParameters: pass
-Done dartk-vm debug_x64 language/substring_test/01: pass
-Done dartk-vm debug_x64 language/type_promotion_assign_test/none: pass
-Done dartk-vm debug_x64 language/type_promotion_assign_test/03: pass
-Done dartk-vm debug_x64 language/type_promotion_assign_test/01: pass
-Done dartk-vm debug_x64 language/type_promotion_assign_test/02: pass
-Done dartk-vm debug_x64 language/type_promotion_assign_test/04: pass
-Done dartk-vm debug_x64 language/positional_parameters_type_test/none: pass
-Done dartk-vm debug_x64 language/positional_parameters_type_test/02: pass
-Done dartk-vm debug_x64 language/positional_parameters_type_test/01: pass
-Done dartk-vm debug_x64 language/mixin_supertype_subclass3_test/none: pass
-Done dartk-vm debug_x64 language/mixin_supertype_subclass3_test/01: pass
-Done dartk-vm debug_x64 language/mixin_supertype_subclass3_test/03: pass
-Done dartk-vm debug_x64 language/mixin_supertype_subclass3_test/02: pass
-Done dartk-vm debug_x64 language/mixin_supertype_subclass3_test/04: pass
-Done dartk-vm debug_x64 language/compile_time_constant_arguments_test/01: pass
-Done dartk-vm debug_x64 language/compile_time_constant_arguments_test/02: pass
-Done dartk-vm debug_x64 language/compile_time_constant_arguments_test/03: pass
-Done dartk-vm debug_x64 language/compile_time_constant_arguments_test/04: pass
-Done dartk-vm debug_x64 language/compile_time_constant_arguments_test/05: pass
-Done dartk-vm debug_x64 language/compile_time_constant_arguments_test/06: pass
-Done dartk-vm debug_x64 language/mixin_supertype_subclass3_test/05: pass
-Done dartk-vm debug_x64 language/compile_time_constant_arguments_test/none: pass
-Done dartk-vm debug_x64 language/const_conditional_test/01: pass
-Done dartk-vm debug_x64 language/const_conditional_test/03: pass
-Done dartk-vm debug_x64 language/const_conditional_test/02: pass
-Done dartk-vm debug_x64 language/const_conditional_test/04: pass
-Done dartk-vm debug_x64 language/const_conditional_test/05: pass
-Done dartk-vm debug_x64 language/const_conditional_test/none: pass
-Done dartk-vm debug_x64 language/const_conditional_test/07: pass
-Done dartk-vm debug_x64 language/const_conditional_test/06: pass
-Done dartk-vm debug_x64 language/const_conditional_test/10: pass
-Done dartk-vm debug_x64 language/const_conditional_test/09: pass
-Done dartk-vm debug_x64 language/const_conditional_test/08: pass
-Done dartk-vm debug_x64 language/method_override3_test/00: pass
-Done dartk-vm debug_x64 language/method_override3_test/none: pass
-Done dartk-vm debug_x64 language/method_override3_test/01: pass
-Done dartk-vm debug_x64 language/malbounded_instantiation_test/none: pass
-Done dartk-vm debug_x64 language/method_override3_test/02: pass
-Done dartk-vm debug_x64 language/malbounded_instantiation_test/01: pass
-Done dartk-vm debug_x64 language/malbounded_instantiation_test/02: pass
-Done dartk-vm debug_x64 language/malbounded_instantiation_test/03: pass
-Done dartk-vm debug_x64 language/list_double_index_in_loop2_test: pass
-Done dartk-vm debug_x64 language/methods_as_constants_test: pass
-Done dartk-vm debug_x64 language/issue11793_test: pass
-Done dartk-vm debug_x64 language/super_closure_test: pass
-Done dartk-vm debug_x64 language/naming_test: pass
-Done dartk-vm debug_x64 language/function_type_alias4_test: pass
-Done dartk-vm debug_x64 language/named_parameters_passing_false_test: pass
-Done dartk-vm debug_x64 language/optimized_hoisting_checked_mode_assert_test: pass
-Done dartk-vm debug_x64 language/regress_30092_test: pass
-Done dartk-vm debug_x64 language/function_subtype_setter0_test: pass
-Done dartk-vm debug_x64 language/mixin_illegal_static_access_test: pass
-Done dartk-vm debug_x64 language/issue1363_test: pass
-Done dartk-vm debug_x64 language/mixin_lib_extends_method_test: pass
-Done dartk-vm debug_x64 language/mint_compares_test: pass
-Done dartk-vm debug_x64 language/function_subtype_top_level1_test: pass
-Done dartk-vm debug_x64 language/deferred_static_seperate_test: pass
-Done dartk-vm debug_x64 language/div_with_power_of_two_test: pass
-Done dartk-vm debug_x64 language/smaller_4_Interface_Types_A11_t01_test: pass
-Done dartk-vm debug_x64 language/first_class_types_constants_test: pass
-Done dartk-vm debug_x64 language/string_charcode_test: pass
-Done dartk-vm debug_x64 language/execute_finally5_test: pass
-Done dartk-vm debug_x64 language/mixin_forwarding_constructor3_test: pass
-Done dartk-vm debug_x64 language/generic_function_typedef_test: pass
-Done dartk-vm debug_x64 language/yieldstar_pause_test: pass
-Done dartk-vm debug_x64 language/regress_25609_test: pass
-Done dartk-vm debug_x64 language/regress_14105_test: pass
-Done dartk-vm debug_x64 language/private4_test: pass
-Done dartk-vm debug_x64 language/closure6_test: pass
-Done dartk-vm debug_x64 language/closure_side_effect_test: pass
-Done dartk-vm debug_x64 language/bailout4_test: pass
-Done dartk-vm debug_x64 language/const_var_test: pass
-Done dartk-vm debug_x64 language/execute_finally4_test: pass
-Done dartk-vm debug_x64 language/redirecting_factory_long_test: pass
-Done dartk-vm debug_x64 language/inline_argument_test: pass
-Done dartk-vm debug_x64 language/guess_cid_test: pass
-Done dartk-vm debug_x64 language/instance_call_wrong_argument_count_negative_test: pass
-Done dartk-vm debug_x64 language/throw_test: pass
-Done dartk-vm debug_x64 language/value_range2_test: pass
-Done dartk-vm debug_x64 language/gvn_interceptor_test: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked3_test/none: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked3_test/01: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked3_test/03: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked3_test/04: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked3_test/05: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked3_test/06: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked3_test/02: pass
-Done dartk-vm debug_x64 language/const_native_factory_test/none: pass
-Done dartk-vm debug_x64 language/number_identifier_test/01: pass
-Done dartk-vm debug_x64 language/number_identifier_test/none: pass
-Done dartk-vm debug_x64 language/const_native_factory_test/01: pass
-Done dartk-vm debug_x64 language/number_identifier_test/04: pass
-Done dartk-vm debug_x64 language/number_identifier_test/07: pass
-Done dartk-vm debug_x64 language/number_identifier_test/06: pass
-Done dartk-vm debug_x64 language/number_identifier_test/10: pass
-Done dartk-vm debug_x64 language/number_identifier_test/02: pass
-Done dartk-vm debug_x64 language/number_identifier_test/05: pass
-Done dartk-vm debug_x64 language/number_identifier_test/11: pass
-Done dartk-vm debug_x64 language/number_identifier_test/03: pass
-Done dartk-vm debug_x64 language/number_identifier_test/08: pass
-Done dartk-vm debug_x64 language/number_identifier_test/09: pass
-Done dartk-vm debug_x64 language/is_malformed_type_test/none: pass
-Done dartk-vm debug_x64 language/is_malformed_type_test/99: pass
-Done dartk-vm debug_x64 language/is_malformed_type_test/97: pass
-Done dartk-vm debug_x64 language/is_malformed_type_test/96: pass
-Done dartk-vm debug_x64 language/is_malformed_type_test/98: pass
-Done dartk-vm debug_x64 language/is_malformed_type_test/95: pass
-Done dartk-vm debug_x64 language/is_malformed_type_test/94: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/none: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/01: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/02: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/03: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/04: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/05: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/06: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/07: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/08: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/09: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/10: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/12: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/13: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/11: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/15: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/14: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/16: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/17: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/18: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/19: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/20: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/21: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/22: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/23: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/24: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/25: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/26: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/27: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/28: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/29: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/30: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/31: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/32: pass
-Done dartk-vm debug_x64 language/mixin_supertype_subclass4_test/none: pass
-Done dartk-vm debug_x64 language/mixin_supertype_subclass4_test/01: pass
-Done dartk-vm debug_x64 language/mixin_supertype_subclass4_test/02: pass
-Done dartk-vm debug_x64 language/mixin_supertype_subclass4_test/03: pass
-Done dartk-vm debug_x64 language/mixin_supertype_subclass4_test/04: pass
-Done dartk-vm debug_x64 language/mixin_supertype_subclass4_test/05: pass
-Done dartk-vm debug_x64 language/string_interpolation_test/none: pass
-Done dartk-vm debug_x64 language/mixin_black_listed_test/01: pass
-Done dartk-vm debug_x64 language/string_interpolation_test/01: pass
-Done dartk-vm debug_x64 language/mixin_black_listed_test/03: pass
-Done dartk-vm debug_x64 language/mixin_black_listed_test/none: pass
-Done dartk-vm debug_x64 language/mixin_black_listed_test/04: pass
-Done dartk-vm debug_x64 language/mixin_black_listed_test/05: pass
-Done dartk-vm debug_x64 language/mixin_black_listed_test/06: pass
-Done dartk-vm debug_x64 language/mixin_black_listed_test/07: pass
-Done dartk-vm debug_x64 language/mixin_black_listed_test/02: pass
-Done dartk-vm debug_x64 language/mixin_black_listed_test/08: pass
-Done dartk-vm debug_x64 language/class_syntax_test/01: pass
-Done dartk-vm debug_x64 language/class_cycle_test/00: pass
-Done dartk-vm debug_x64 language/class_cycle_test/01: pass
-Done dartk-vm debug_x64 language/class_syntax_test/none: pass
-Done dartk-vm debug_x64 language/compile_time_constant10_test/01: pass
-Done dartk-vm debug_x64 language/class_cycle_test/none: pass
-Done dartk-vm debug_x64 language/compile_time_constant10_test/02: pass
-Done dartk-vm debug_x64 language/class_cycle_test/02: pass
-Done dartk-vm debug_x64 language/compile_time_constant10_test/none: pass
-Done dartk-vm debug_x64 language/illegal_declaration_test/01: pass
-Done dartk-vm debug_x64 language/class_cycle_test/03: pass
-Done dartk-vm debug_x64 language/illegal_declaration_test/none: pass
-Done dartk-vm debug_x64 language/not_enough_positional_arguments_test/none: pass
-Done dartk-vm debug_x64 language/not_enough_positional_arguments_test/01: pass
-Done dartk-vm debug_x64 language/not_enough_positional_arguments_test/02: pass
-Done dartk-vm debug_x64 language/not_enough_positional_arguments_test/05: pass
-Done dartk-vm debug_x64 language/not_enough_positional_arguments_test/00: pass
-Done dartk-vm debug_x64 language/not_enough_positional_arguments_test/03: pass
-Done dartk-vm debug_x64 language/not_enough_positional_arguments_test/06: pass
-Done dartk-vm debug_x64 language/not_enough_positional_arguments_test/07: pass
-Done dartk-vm debug_x64 language/built_in_identifier_test/none: pass
-Done dartk-vm debug_x64 language/built_in_identifier_test/01: pass
-Done dartk-vm debug_x64 language/bad_named_parameters2_test/none: pass
-Done dartk-vm debug_x64 language/bad_named_parameters2_test/01: pass
-Done dartk-vm debug_x64 language/fixed_type_variable2_test/none: pass
-Done dartk-vm debug_x64 language/fixed_type_variable2_test/01: pass
-Done dartk-vm debug_x64 language/fixed_type_variable2_test/02: pass
-Done dartk-vm debug_x64 language/fixed_type_variable2_test/03: pass
-Done dartk-vm debug_x64 language/deferred_super_dependency_test/01: pass
-Done dartk-vm debug_x64 language/fixed_type_variable2_test/04: pass
-Done dartk-vm debug_x64 language/fixed_type_variable2_test/05: pass
-Done dartk-vm debug_x64 language/fixed_type_variable2_test/06: pass
-Done dartk-vm debug_x64 language/deferred_super_dependency_test/none: pass
-Done dartk-vm debug_x64 language/crash_6725_test/none: pass
-Done dartk-vm debug_x64 language/crash_6725_test/01: pass
-Done dartk-vm debug_x64 language/function_subtype_call2_test: pass
-Done dartk-vm debug_x64 language/mixin_this_use_test: pass
-Done dartk-vm debug_x64 language/rewrite_nested_if2_test: pass
-Done dartk-vm debug_x64 language/invocation_mirror2_test: pass
-Done dartk-vm debug_x64 language/mixin_method_test: pass
-Done dartk-vm debug_x64 language/identical_closure2_test: pass
-Done dartk-vm debug_x64 language/constructor3_test: pass
-Done dartk-vm debug_x64 language/temp_mangling_test: pass
-Done dartk-vm debug_x64 language/regress_21016_test: pass
-Done dartk-vm debug_x64 language/switch5_negative_test: pass
-Done dartk-vm debug_x64 language/function_subtype_local1_test: pass
-Done dartk-vm debug_x64 language/transitive_private_library_access_test: pass
-Done dartk-vm debug_x64 language/function_subtype_bound_closure5a_test: pass
-Done dartk-vm debug_x64 language/final_used_in_try_test: pass
-Done dartk-vm debug_x64 language/rewrite_compound_assign_test: pass
-Done dartk-vm debug_x64 language/local_function_test: pass
-Done dartk-vm debug_x64 language/bit_shift_test: pass
-Done dartk-vm debug_x64 language/try_catch_regress_27483_test: pass
-Done dartk-vm debug_x64 language/try_catch_optimized3_test: pass
-Done dartk-vm debug_x64 language/inline_in_for_initializer_and_bailout_test: pass
-Done dartk-vm debug_x64 language/bootstrap_test: pass
-Done dartk-vm debug_x64 language/conflicting_type_variable_and_setter_test: pass
-Done dartk-vm debug_x64 language/interceptor3_test: pass
-Done dartk-vm debug_x64 language/map_literal3_test: pass
-Done dartk-vm debug_x64 language/regress_23046_test: pass
-Done dartk-vm debug_x64 language/closure_test: pass
-Done dartk-vm debug_x64 language/generic_instanceof2_test: pass
-Done dartk-vm debug_x64 language/top_level_multiple_files_test: pass
-Done dartk-vm debug_x64 language/mixin_is_test: pass
-Done dartk-vm debug_x64 language/function_subtype_typearg5_test: pass
-Done dartk-vm debug_x64 language/regress_23537_test: pass
-Done dartk-vm debug_x64 language/side_effect_throw_test: pass
-Done dartk-vm debug_x64 language/mixin_type_parameter4_test: pass
-Done dartk-vm debug_x64 language/field_optimization_test: pass
-Done dartk-vm debug_x64 language/malbounded_type_test_test/none: pass
-Done dartk-vm debug_x64 language/malbounded_type_test_test/01: pass
-Done dartk-vm debug_x64 language/malbounded_type_test_test/02: pass
-Done dartk-vm debug_x64 language/malbounded_type_test_test/04: pass
-Done dartk-vm debug_x64 language/malbounded_type_test_test/03: pass
-Done dartk-vm debug_x64 language/compile_time_constant_k_test/01: pass
-Done dartk-vm debug_x64 language/compile_time_constant_k_test/none: pass
-Done dartk-vm debug_x64 language/compile_time_constant_k_test/03: pass
-Done dartk-vm debug_x64 language/compile_time_constant_k_test/02: pass
-Done dartk-vm debug_x64 language/issue_22780_test/none: pass
-Done dartk-vm debug_x64 language/issue_22780_test/01: pass
-Done dartk-vm debug_x64 language/interface_test/none: pass
-Done dartk-vm debug_x64 language/interface_test/00: pass
-Done dartk-vm debug_x64 language/redirecting_factory_default_values_test/none: pass
-Done dartk-vm debug_x64 language/redirecting_factory_default_values_test/01: pass
-Done dartk-vm debug_x64 language/unsigned_right_shift_test/01: pass
-Done dartk-vm debug_x64 language/redirecting_factory_default_values_test/02: pass
-Done dartk-vm debug_x64 language/type_variable_bounds4_test/01: pass
-Done dartk-vm debug_x64 language/type_variable_bounds4_test/none: pass
-Done dartk-vm debug_x64 language/unsigned_right_shift_test/02: pass
-Done dartk-vm debug_x64 language/unsigned_right_shift_test/none: pass
-Done dartk-vm debug_x64 language/regress_24935_test/none: pass
-Done dartk-vm debug_x64 language/regress_24935_test/01: pass
-Done dartk-vm debug_x64 language/cyclic_type_test/00: pass
-Done dartk-vm debug_x64 language/cyclic_type_test/none: pass
-Done dartk-vm debug_x64 language/cyclic_type_test/02: pass
-Done dartk-vm debug_x64 language/cyclic_type_test/01: pass
-Done dartk-vm debug_x64 language/cyclic_type_test/03: pass
-Done dartk-vm debug_x64 language/cyclic_type_test/04: pass
-Done dartk-vm debug_x64 language/list_literal_syntax_test/00: pass
-Done dartk-vm debug_x64 language/list_literal_syntax_test/05: pass
-Done dartk-vm debug_x64 language/list_literal_syntax_test/04: pass
-Done dartk-vm debug_x64 language/list_literal_syntax_test/06: pass
-Done dartk-vm debug_x64 language/list_literal_syntax_test/none: pass
-Done dartk-vm debug_x64 language/list_literal_syntax_test/07: pass
-Done dartk-vm debug_x64 language/list_literal_syntax_test/02: pass
-Done dartk-vm debug_x64 language/list_literal_syntax_test/01: pass
-Done dartk-vm debug_x64 language/list_literal_syntax_test/03: pass
-Done dartk-vm debug_x64 language/compile_time_constant_p_test/01: pass
-Done dartk-vm debug_x64 language/compile_time_constant_p_test/none: pass
-Done dartk-vm debug_x64 language/field_override3_test/none: pass
-Done dartk-vm debug_x64 language/field_override3_test/00: pass
-Done dartk-vm debug_x64 language/field_override3_test/02: pass
-Done dartk-vm debug_x64 language/field_override3_test/03: pass
-Done dartk-vm debug_x64 language/field_override3_test/01: pass
-Done dartk-vm debug_x64 language/const_init2_test/none: pass
-Done dartk-vm debug_x64 language/const_init2_test/01: pass
-Done dartk-vm debug_x64 language/const_init2_test/02: pass
-Done dartk-vm debug_x64 language/override_method_with_field_test/01: pass
-Done dartk-vm debug_x64 language/override_method_with_field_test/none: pass
-Done dartk-vm debug_x64 language/override_method_with_field_test/02: pass
-Done dartk-vm debug_x64 language/setter_override2_test/none: pass
-Done dartk-vm debug_x64 language/setter_override2_test/00: pass
-Done dartk-vm debug_x64 language/setter_override2_test/01: pass
-Done dartk-vm debug_x64 language/mixin_invalid_inheritance2_test/01: pass
-Done dartk-vm debug_x64 language/setter_override2_test/02: pass
-Done dartk-vm debug_x64 language/mixin_invalid_inheritance2_test/03: pass
-Done dartk-vm debug_x64 language/mixin_invalid_inheritance2_test/02: pass
-Done dartk-vm debug_x64 language/setter_override2_test/03: pass
-Done dartk-vm debug_x64 language/mixin_invalid_inheritance2_test/none: pass
-Done dartk-vm debug_x64 language/optional_named_parameters_test/none: pass
-Done dartk-vm debug_x64 language/optional_named_parameters_test/02: pass
-Done dartk-vm debug_x64 language/optional_named_parameters_test/01: pass
-Done dartk-vm debug_x64 language/optional_named_parameters_test/03: pass
-Done dartk-vm debug_x64 language/optional_named_parameters_test/04: pass
-Done dartk-vm debug_x64 language/optional_named_parameters_test/05: pass
-Done dartk-vm debug_x64 language/optional_named_parameters_test/06: pass
-Done dartk-vm debug_x64 language/optional_named_parameters_test/07: pass
-Done dartk-vm debug_x64 language/optional_named_parameters_test/09: pass
-Done dartk-vm debug_x64 language/override_inheritance_abstract_test/none: pass
-Done dartk-vm debug_x64 language/optional_named_parameters_test/08: pass
-Done dartk-vm debug_x64 language/override_inheritance_abstract_test/01: pass
-Done dartk-vm debug_x64 language/override_inheritance_abstract_test/05: pass
-Done dartk-vm debug_x64 language/override_inheritance_abstract_test/06: pass
-Done dartk-vm debug_x64 language/override_inheritance_abstract_test/07: pass
-Done dartk-vm debug_x64 language/override_inheritance_abstract_test/08: pass
-Done dartk-vm debug_x64 language/override_inheritance_abstract_test/09: pass
-Done dartk-vm debug_x64 language/override_inheritance_abstract_test/11: pass
-Done dartk-vm debug_x64 language/override_inheritance_abstract_test/10: pass
-Done dartk-vm debug_x64 language/override_inheritance_abstract_test/12: pass
-Done dartk-vm debug_x64 language/override_inheritance_abstract_test/13: pass
-Done dartk-vm debug_x64 language/override_inheritance_abstract_test/18: pass
-Done dartk-vm debug_x64 language/override_inheritance_abstract_test/14: pass
-Done dartk-vm debug_x64 language/override_inheritance_abstract_test/27: pass
-Done dartk-vm debug_x64 language/override_inheritance_abstract_test/15: pass
-Done dartk-vm debug_x64 language/override_inheritance_abstract_test/17: pass
-Done dartk-vm debug_x64 language/override_inheritance_abstract_test/16: pass
-Done dartk-vm debug_x64 language/override_inheritance_abstract_test/19: pass
-Done dartk-vm debug_x64 language/override_inheritance_abstract_test/20: pass
-Done dartk-vm debug_x64 language/override_inheritance_abstract_test/22: pass
-Done dartk-vm debug_x64 language/override_inheritance_abstract_test/23: pass
-Done dartk-vm debug_x64 language/override_inheritance_abstract_test/21: pass
-Done dartk-vm debug_x64 language/override_inheritance_abstract_test/24: pass
-Done dartk-vm debug_x64 language/override_inheritance_abstract_test/25: pass
-Done dartk-vm debug_x64 language/override_inheritance_abstract_test/26: pass
-Done dartk-vm debug_x64 language/override_inheritance_abstract_test/02: pass
-Done dartk-vm debug_x64 language/override_inheritance_abstract_test/03: pass
-Done dartk-vm debug_x64 language/getter_no_setter2_test/02: pass
-Done dartk-vm debug_x64 language/override_inheritance_abstract_test/04: pass
-Done dartk-vm debug_x64 language/getter_no_setter2_test/none: pass
-Done dartk-vm debug_x64 language/getter_no_setter2_test/03: pass
-Done dartk-vm debug_x64 language/getter_no_setter2_test/01: pass
-Done dartk-vm debug_x64 language/getter_no_setter2_test/00: pass
-Done dartk-vm debug_x64 language/const_map3_test/none: pass
-Done dartk-vm debug_x64 language/const_map3_test/00: pass
-Done dartk-vm debug_x64 language/switch_fallthru_test: pass
-Done dartk-vm debug_x64 language/bailout_test: pass
-Done dartk-vm debug_x64 language/local_function3_test: pass
-Done dartk-vm debug_x64 language/type_variable_initializer_test: pass
-Done dartk-vm debug_x64 language/private_member_test: pass
-Done dartk-vm debug_x64 language/function_subtype_cast3_test: pass
-Done dartk-vm debug_x64 language/multi_pass_test: pass
-Done dartk-vm debug_x64 language/deferred_optimized_test: pass
-Done dartk-vm debug_x64 language/prefix101_test: pass
-Done dartk-vm debug_x64 language/string_unicode2_negative_test: pass
-Done dartk-vm debug_x64 language/loop_exchange3_test: pass
-Done dartk-vm debug_x64 language/inline_test_context_test: pass
-Done dartk-vm debug_x64 language/string_escapes_test: pass
-Done dartk-vm debug_x64 language/operator2_negative_test: pass
-Done dartk-vm debug_x64 language/const_string_test: pass
-Done dartk-vm debug_x64 language/rewrite_if_swap_test: pass
-Done dartk-vm debug_x64 language/modulo_test: pass
-Done dartk-vm debug_x64 language/mixin_mixin_bound_test: pass
-Done dartk-vm debug_x64 language/invocation_mirror_empty_arguments_test: pass
-Done dartk-vm debug_x64 language/function_subtype_bound_closure3_test: pass
-Done dartk-vm debug_x64 language/optimized_setter_test: pass
-Done dartk-vm debug_x64 language/metadata_self_test: pass
-Done dartk-vm debug_x64 language/compile_time_constant9_test: pass
-Done dartk-vm debug_x64 language/deep_nesting1_negative_test: pass
-Done dartk-vm debug_x64 language/call_through_null_getter_test: pass
-Done dartk-vm debug_x64 language/smaller_4_Interface_Types_A11_t02_test: pass
-Done dartk-vm debug_x64 language/string_unicode1_negative_test: pass
-Done dartk-vm debug_x64 language/regress_22719_test: pass
-Done dartk-vm debug_x64 language/compile_time_constant_q_test: pass
-Done dartk-vm debug_x64 language/list_literal_test: pass
-Done dartk-vm debug_x64 language/string_unicode3_negative_test: pass
-Done dartk-vm debug_x64 language/regress_20840_test: pass
-Done dartk-vm debug_x64 language/function_type_alias2_test: pass
-Done dartk-vm debug_x64 language/ct_const2_test: pass
-Done dartk-vm debug_x64 language/emit_const_fields_test: pass
-Done dartk-vm debug_x64 language/catch_liveness_test: pass
-Done dartk-vm debug_x64 language/test_negative_test: pass
-Done dartk-vm debug_x64 language/regress_28278_test: pass
-Done dartk-vm debug_x64 language/full_stacktrace1_test: pass
-Done dartk-vm debug_x64 language/regress_28278_test: pass
-Done dartk-vm debug_x64 language/ct_const2_test: pass
-Done dartk-vm debug_x64 language/async_await_test: pass
-Done dartk-vm debug_x64 language/issue10747_test: pass
-Done dartk-vm debug_x64 language/invocation_mirror_test: pass
-Done dartk-vm debug_x64 language/list_literal_negative_test: pass
-Done dartk-vm debug_x64 language/regress_19728_test: pass
-Done dartk-vm debug_x64 language/export_private_test/01: pass
-Done dartk-vm debug_x64 language/try_catch_test/none: pass
-Done dartk-vm debug_x64 language/export_private_test/none: pass
-Done dartk-vm debug_x64 language/context2_test: pass
-Done dartk-vm debug_x64 language/try_catch_test/01: pass
-Done dartk-vm debug_x64 language/mixin_supertype_subclass_test/none: pass
-Done dartk-vm debug_x64 language/mixin_supertype_subclass_test/01: pass
-Done dartk-vm debug_x64 language/mixin_supertype_subclass_test/02: pass
-Done dartk-vm debug_x64 language/mixin_supertype_subclass_test/03: pass
-Done dartk-vm debug_x64 language/mixin_supertype_subclass_test/04: pass
-Done dartk-vm debug_x64 language/mixin_supertype_subclass_test/05: pass
-Done dartk-vm debug_x64 language/getter_override2_test/none: pass
-Done dartk-vm debug_x64 language/getter_override2_test/00: pass
-Done dartk-vm debug_x64 language/getter_override2_test/01: pass
-Done dartk-vm debug_x64 language/getter_override2_test/02: pass
-Done dartk-vm debug_x64 language/getter_override2_test/03: pass
-Done dartk-vm debug_x64 language/malbounded_redirecting_factory2_test/none: pass
-Done dartk-vm debug_x64 language/malbounded_redirecting_factory2_test/02: pass
-Done dartk-vm debug_x64 language/malbounded_redirecting_factory2_test/03: pass
-Done dartk-vm debug_x64 language/malbounded_redirecting_factory2_test/04: pass
-Done dartk-vm debug_x64 language/malbounded_redirecting_factory2_test/01: pass
-Done dartk-vm debug_x64 language/static_field3_test/none: pass
-Done dartk-vm debug_x64 language/static_field3_test/01: pass
-Done dartk-vm debug_x64 language/static_field3_test/02: pass
-Done dartk-vm debug_x64 language/static_field3_test/03: pass
-Done dartk-vm debug_x64 language/static_field3_test/04: pass
-Done dartk-vm debug_x64 language/bad_typedef_test/00: pass
-Done dartk-vm debug_x64 language/dynamic_field_test/none: pass
-Done dartk-vm debug_x64 language/dynamic_field_test/01: pass
-Done dartk-vm debug_x64 language/dynamic_field_test/02: pass
-Done dartk-vm debug_x64 language/bad_typedef_test/none: pass
-Done dartk-vm debug_x64 language/type_variable_bounds2_test/none: pass
-Done dartk-vm debug_x64 language/type_variable_bounds2_test/00: pass
-Done dartk-vm debug_x64 language/type_variable_bounds2_test/01: pass
-Done dartk-vm debug_x64 language/type_variable_bounds2_test/02: pass
-Done dartk-vm debug_x64 language/type_variable_bounds2_test/03: pass
-Done dartk-vm debug_x64 language/type_variable_bounds2_test/04: pass
-Done dartk-vm debug_x64 language/type_variable_bounds2_test/05: pass
-Done dartk-vm debug_x64 language/constructor_return_test/03: pass
-Done dartk-vm debug_x64 language/constructor_return_test/01: pass
-Done dartk-vm debug_x64 language/constructor_return_test/02: pass
-Done dartk-vm debug_x64 language/type_variable_bounds2_test/06: pass
-Done dartk-vm debug_x64 language/constructor_return_test/04: pass
-Done dartk-vm debug_x64 language/constructor_return_test/05: pass
-Done dartk-vm debug_x64 language/constructor_return_test/none: pass
-Done dartk-vm debug_x64 language/const_constructor_syntax_test/01: pass
-Done dartk-vm debug_x64 language/const_constructor_syntax_test/02: pass
-Done dartk-vm debug_x64 language/const_constructor_syntax_test/04: pass
-Done dartk-vm debug_x64 language/const_constructor_syntax_test/05: pass
-Done dartk-vm debug_x64 language/const_constructor_syntax_test/03: pass
-Done dartk-vm debug_x64 language/const_constructor_syntax_test/none: pass
-Done dartk-vm debug_x64 language/await_for_use_local_test: pass
-Done dartk-vm debug_x64 language/issue9949_test: pass
-Done dartk-vm debug_x64 language/map_literal9_test: pass
-Done dartk-vm debug_x64 language/non_parameterized_factory_test: pass
-Done dartk-vm debug_x64 language/setter4_test: pass
-Done dartk-vm debug_x64 language/map_literal_syntax_test: pass
-Done dartk-vm debug_x64 language/interceptor_test: pass
-Done dartk-vm debug_x64 language/named_parameters_passing_null_test: pass
-Done dartk-vm debug_x64 language/prefix10_test: pass
-Done dartk-vm debug_x64 language/inference_mixin_field_test: pass
-Done dartk-vm debug_x64 language/parameter_initializer_test: pass
-Done dartk-vm debug_x64 language/named_parameters2_test: pass
-Done dartk-vm debug_x64 language/regress_29357_test: pass
-Done dartk-vm debug_x64 language/generic_field_mixin3_test: pass
-Done dartk-vm debug_x64 language/logical_expression2_test: pass
-Done dartk-vm debug_x64 language/if_and_test: pass
-Done dartk-vm debug_x64 language/deferred_only_constant_test: pass
-Done dartk-vm debug_x64 language/compile_time_constant_i_test: pass
-Done dartk-vm debug_x64 language/double_to_string_as_precision2_test: pass
-Done dartk-vm debug_x64 language/constructor11_test: pass
-Done dartk-vm debug_x64 language/parameter_name_conflict_test: pass
-Done dartk-vm debug_x64 language/switch_case_static_const_test: pass
-Done dartk-vm debug_x64 language/function_subtype_typearg1_test: pass
-Done dartk-vm debug_x64 language/lazy_static7_test: pass
-Done dartk-vm debug_x64 language/execute_finally12_test: pass
-Done dartk-vm debug_x64 language/double_to_string_as_precision_test: pass
-Done dartk-vm debug_x64 language/generic_functions_test: pass
-Done dartk-vm debug_x64 language/propagated_argument_type_check_test: pass
-Done dartk-vm debug_x64 language/call_argument_inference_test: pass
-Done dartk-vm debug_x64 language/instanceof3_test: pass
-Done dartk-vm debug_x64 language/call_operator_test: pass
-Done dartk-vm debug_x64 language/issue21957_test: pass
-Done dartk-vm debug_x64 language/constructor4_test: pass
-Done dartk-vm debug_x64 language/custom_await_stack_trace_test: pass
-Done dartk-vm debug_x64 language/double_to_string_test: pass
-Done dartk-vm debug_x64 language/for_without_condition_test: pass
-Done dartk-vm debug_x64 language/function_subtype_top_level0_test: pass
-Done dartk-vm debug_x64 language/unary2_test: pass
-Done dartk-vm debug_x64 language/getter_setter_interceptor_test: pass
-Done dartk-vm debug_x64 language/example_constructor_test: pass
-Done dartk-vm debug_x64 language/prefix10_negative_test: pass
-Done dartk-vm debug_x64 language/function_subtype_bound_closure0_test: pass
-Done dartk-vm debug_x64 language/closure4_test: pass
-Done dartk-vm debug_x64 language/function_subtype_simple2_test: pass
-Done dartk-vm debug_x64 language/function_subtype3_test: pass
-Done dartk-vm debug_x64 language/await_postfix_expr_test: pass
-Done dartk-vm debug_x64 language/ordered_maps_test: pass
-Done dartk-vm debug_x64 language/bailout2_test: pass
-Done dartk-vm debug_x64 language/regress_23500_test/none: pass
-Done dartk-vm debug_x64 language/regress_23500_test/01: pass
-Done dartk-vm debug_x64 language/regress_23500_test/02: pass
-Done dartk-vm debug_x64 language/first_class_types_literals_test/none: pass
-Done dartk-vm debug_x64 language/first_class_types_literals_test/02: pass
-Done dartk-vm debug_x64 language/first_class_types_literals_test/01: pass
-Done dartk-vm debug_x64 language/first_class_types_literals_test/03: pass
-Done dartk-vm debug_x64 language/first_class_types_literals_test/04: pass
-Done dartk-vm debug_x64 language/first_class_types_literals_test/05: pass
-Done dartk-vm debug_x64 language/first_class_types_literals_test/06: pass
-Done dartk-vm debug_x64 language/first_class_types_literals_test/08: pass
-Done dartk-vm debug_x64 language/first_class_types_literals_test/07: pass
-Done dartk-vm debug_x64 language/first_class_types_literals_test/09: pass
-Done dartk-vm debug_x64 language/first_class_types_literals_test/11: pass
-Done dartk-vm debug_x64 language/first_class_types_literals_test/10: pass
-Done dartk-vm debug_x64 language/first_class_types_literals_test/12: pass
-Done dartk-vm debug_x64 language/type_parameter_test/none: pass
-Done dartk-vm debug_x64 language/type_parameter_test/01: pass
-Done dartk-vm debug_x64 language/type_parameter_test/02: pass
-Done dartk-vm debug_x64 language/type_parameter_test/03: pass
-Done dartk-vm debug_x64 language/type_parameter_test/05: pass
-Done dartk-vm debug_x64 language/type_parameter_test/04: pass
-Done dartk-vm debug_x64 language/type_parameter_test/06: pass
-Done dartk-vm debug_x64 language/this_test/02: pass
-Done dartk-vm debug_x64 language/switch_bad_case_test/none: pass
-Done dartk-vm debug_x64 language/this_test/01: pass
-Done dartk-vm debug_x64 language/this_test/03: pass
-Done dartk-vm debug_x64 language/switch_bad_case_test/01: pass
-Done dartk-vm debug_x64 language/this_test/04: pass
-Done dartk-vm debug_x64 language/switch_bad_case_test/02: pass
-Done dartk-vm debug_x64 language/this_test/06: pass
-Done dartk-vm debug_x64 language/this_test/05: pass
-Done dartk-vm debug_x64 language/this_test/none: pass
-Done dartk-vm debug_x64 language/this_test/08: pass
-Done dartk-vm debug_x64 language/this_test/07: pass
-Done dartk-vm debug_x64 language/compile_time_constant_test/02: pass
-Done dartk-vm debug_x64 language/compile_time_constant_test/01: pass
-Done dartk-vm debug_x64 language/deferred_constraints_constants_test/reference2: pass
-Done dartk-vm debug_x64 language/deferred_constraints_constants_test/none: pass
-Done dartk-vm debug_x64 language/deferred_constraints_constants_test/default_argument2: pass
-Done dartk-vm debug_x64 language/deferred_constraints_constants_test/reference1: pass
-Done dartk-vm debug_x64 language/compile_time_constant_test/none: pass
-Done dartk-vm debug_x64 language/deferred_constraints_constants_test/default_argument1: pass
-Done dartk-vm debug_x64 language/deferred_constraints_constants_test/metadata1: pass
-Done dartk-vm debug_x64 language/deferred_constraints_constants_test/metadata2: pass
-Done dartk-vm debug_x64 language/deferred_constraints_constants_test/constructor1: pass
-Done dartk-vm debug_x64 language/deferred_constraints_constants_test/metadata3: pass
-Done dartk-vm debug_x64 language/deferred_constraints_constants_test/reference_after_load: pass
-Done dartk-vm debug_x64 language/deferred_constraints_constants_test/constructor2: pass
-Done dartk-vm debug_x64 language/extend_type_parameter2_negative_test: pass
-Done dartk-vm debug_x64 language/library_negative_test: pass
-Done dartk-vm debug_x64 language/label6_negative_test: pass
-Done dartk-vm debug_x64 language/regress_21998_1_test: pass
-Done dartk-vm debug_x64 language/mixin_type_parameter5_test: pass
-Done dartk-vm debug_x64 language/regress_22728_test: pass
-Done dartk-vm debug_x64 language/unicode_hash_test: pass
-Done dartk-vm debug_x64 language/asyncstar_yield_test: pass
-Done dartk-vm debug_x64 language/many_named_arguments_test: pass
-Done dartk-vm debug_x64 language/regress_11010_test: pass
-Done dartk-vm debug_x64 language/issue10581_test: pass
-Done dartk-vm debug_x64 language/type_propagation_in_for_update_test: pass
-Done dartk-vm debug_x64 language/map_literal10_test: pass
-Done dartk-vm debug_x64 language/super_field_access_test: pass
-Done dartk-vm debug_x64 language/inferrer_synthesized_constructor_test: pass
-Done dartk-vm debug_x64 language/mixin_field_initializer_test: pass
-Done dartk-vm debug_x64 language/field_inference_test: pass
-Done dartk-vm debug_x64 language/deferred_not_loaded_check_test: pass
-Done dartk-vm debug_x64 language/export_double_same_main_test: pass
-Done dartk-vm debug_x64 language/mixin_mixin6_test: pass
-Done dartk-vm debug_x64 language/function_subtype_typearg3_test: pass
-Done dartk-vm debug_x64 language/range_analysis3_test: pass
-Done dartk-vm debug_x64 language/logical_expression4_test: pass
-Done dartk-vm debug_x64 language/list_literal4_test: pass
-Done dartk-vm debug_x64 language/propagate_past_constant_test: pass
-Done dartk-vm debug_x64 language/regress_26530_test: pass
-Done dartk-vm debug_x64 language/mixin_mixin5_test: pass
-Done dartk-vm debug_x64 language/type_check_const_function_typedef_test: pass
-Done dartk-vm debug_x64 language/critical_edge_test: pass
-Done dartk-vm debug_x64 language/regress_10996_test: pass
-Done dartk-vm debug_x64 language/prefix24_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type1_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type80_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type42_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type68_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type2_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type75_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type45_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type34_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type64_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type69_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type40_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type61_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type95_test: pass
-Done dartk-vm debug_x64 language/try_catch_syntax_test/01: pass
-Done dartk-vm debug_x64 language/function_type/function_type32_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type33_test: pass
-Done dartk-vm debug_x64 language/try_catch_syntax_test/02: pass
-Done dartk-vm debug_x64 language/try_catch_syntax_test/03: pass
-Done dartk-vm debug_x64 language/try_catch_syntax_test/04: pass
-Done dartk-vm debug_x64 language/try_catch_syntax_test/none: pass
-Done dartk-vm debug_x64 language/try_catch_syntax_test/06: pass
-Done dartk-vm debug_x64 language/try_catch_syntax_test/05: pass
-Done dartk-vm debug_x64 language/function_type/function_type90_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type10_test: pass
-Done dartk-vm debug_x64 language/try_catch_syntax_test/07: pass
-Done dartk-vm debug_x64 language/try_catch_syntax_test/09: pass
-Done dartk-vm debug_x64 language/try_catch_syntax_test/10: pass
-Done dartk-vm debug_x64 language/try_catch_syntax_test/12: pass
-Done dartk-vm debug_x64 language/try_catch_syntax_test/11: pass
-Done dartk-vm debug_x64 language/try_catch_syntax_test/13: pass
-Done dartk-vm debug_x64 language/try_catch_syntax_test/14: pass
-Done dartk-vm debug_x64 language/try_catch_syntax_test/15: pass
-Done dartk-vm debug_x64 language/try_catch_syntax_test/08: pass
-Done dartk-vm debug_x64 language/try_catch_syntax_test/16: pass
-Done dartk-vm debug_x64 language/try_catch_syntax_test/17: pass
-Done dartk-vm debug_x64 language/sync_generator3_test/test1: pass
-Done dartk-vm debug_x64 language/bad_constructor_test/00: pass
-Done dartk-vm debug_x64 language/bad_constructor_test/01: pass
-Done dartk-vm debug_x64 language/sync_generator3_test/none: pass
-Done dartk-vm debug_x64 language/sync_generator3_test/test2: pass
-Done dartk-vm debug_x64 language/top_level_getter_no_setter1_test/none: pass
-Done dartk-vm debug_x64 language/top_level_getter_no_setter1_test/01: pass
-Done dartk-vm debug_x64 language/bad_constructor_test/04: pass
-Done dartk-vm debug_x64 language/constructor10_test/00: pass
-Done dartk-vm debug_x64 language/bad_constructor_test/none: pass
-Done dartk-vm debug_x64 language/bad_constructor_test/06: pass
-Done dartk-vm debug_x64 language/constructor10_test/01: pass
-Done dartk-vm debug_x64 language/constructor10_test/02: pass
-Done dartk-vm debug_x64 language/built_in_identifier_illegal_test/01: pass
-Done dartk-vm debug_x64 language/built_in_identifier_illegal_test/04: pass
-Done dartk-vm debug_x64 language/constructor10_test/none: pass
-Done dartk-vm debug_x64 language/bad_constructor_test/05: pass
-Done dartk-vm debug_x64 language/built_in_identifier_illegal_test/19: pass
-Done dartk-vm debug_x64 language/built_in_identifier_illegal_test/17: pass
-Done dartk-vm debug_x64 language/built_in_identifier_illegal_test/20: pass
-Done dartk-vm debug_x64 language/built_in_identifier_illegal_test/06: pass
-Done dartk-vm debug_x64 language/built_in_identifier_illegal_test/none: pass
-Done dartk-vm debug_x64 language/built_in_identifier_illegal_test/07: pass
-Done dartk-vm debug_x64 language/built_in_identifier_illegal_test/05: pass
-Done dartk-vm debug_x64 language/built_in_identifier_illegal_test/08: pass
-Done dartk-vm debug_x64 language/built_in_identifier_illegal_test/10: pass
-Done dartk-vm debug_x64 language/built_in_identifier_illegal_test/12: pass
-Done dartk-vm debug_x64 language/built_in_identifier_illegal_test/18: pass
-Done dartk-vm debug_x64 language/built_in_identifier_illegal_test/13: pass
-Done dartk-vm debug_x64 language/built_in_identifier_illegal_test/16: pass
-Done dartk-vm debug_x64 language/built_in_identifier_illegal_test/15: pass
-Done dartk-vm debug_x64 language/fixed_type_variable_test/01: pass
-Done dartk-vm debug_x64 language/fixed_type_variable_test/none: pass
-Done dartk-vm debug_x64 language/fixed_type_variable_test/02: pass
-Done dartk-vm debug_x64 language/fixed_type_variable_test/03: pass
-Done dartk-vm debug_x64 language/fixed_type_variable_test/04: pass
-Done dartk-vm debug_x64 language/fixed_type_variable_test/05: pass
-Done dartk-vm debug_x64 language/fixed_type_variable_test/06: pass
-Done dartk-vm debug_x64 language/function_type_call_getter2_test/none: pass
-Done dartk-vm debug_x64 language/function_type_call_getter2_test/00: pass
-Done dartk-vm debug_x64 language/function_type_call_getter2_test/01: pass
-Done dartk-vm debug_x64 language/function_type_call_getter2_test/03: pass
-Done dartk-vm debug_x64 language/function_type_call_getter2_test/02: pass
-Done dartk-vm debug_x64 language/function_type_call_getter2_test/04: pass
-Done dartk-vm debug_x64 language/function_type_call_getter2_test/05: pass
-Done dartk-vm debug_x64 language/override_inheritance_no_such_method_test/06: pass
-Done dartk-vm debug_x64 language/override_inheritance_no_such_method_test/none: pass
-Done dartk-vm debug_x64 language/override_inheritance_no_such_method_test/07: pass
-Done dartk-vm debug_x64 language/override_inheritance_no_such_method_test/08: pass
-Done dartk-vm debug_x64 language/override_inheritance_no_such_method_test/09: pass
-Done dartk-vm debug_x64 language/override_inheritance_no_such_method_test/10: pass
-Done dartk-vm debug_x64 language/override_inheritance_no_such_method_test/11: pass
-Done dartk-vm debug_x64 language/override_inheritance_no_such_method_test/01: pass
-Done dartk-vm debug_x64 language/override_inheritance_no_such_method_test/03: pass
-Done dartk-vm debug_x64 language/override_inheritance_no_such_method_test/02: pass
-Done dartk-vm debug_x64 language/override_inheritance_no_such_method_test/04: pass
-Done dartk-vm debug_x64 language/override_inheritance_no_such_method_test/05: pass
-Done dartk-vm debug_x64 language/override_inheritance_no_such_method_test/12: pass
-Done dartk-vm debug_x64 language/override_inheritance_no_such_method_test/13: pass
-Done dartk-vm debug_x64 language/function_type/function_type93_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type52_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type21_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type54_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type81_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type15_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type58_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type7_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type72_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type36_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type77_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type27_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type66_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type55_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type11_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type96_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type8_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type12_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type4_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type62_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type57_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type3_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type53_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type43_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type98_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type88_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type89_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type87_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type14_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type23_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type46_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type97_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type74_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type0_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type51_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type30_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type94_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type86_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type19_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type39_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type92_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type24_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type65_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type47_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type70_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type99_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type22_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type35_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type18_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type91_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type71_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type48_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type44_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type60_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type56_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type9_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type82_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type83_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type76_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type67_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type29_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type84_test: pass
-Done dartk-vm debug_x64 language/conditional_method_invocation_test/none: pass
-Done dartk-vm debug_x64 language/conditional_method_invocation_test/01: pass
-Done dartk-vm debug_x64 language/function_type/function_type38_test: pass
-Done dartk-vm debug_x64 language/conditional_method_invocation_test/02: pass
-Done dartk-vm debug_x64 language/conditional_method_invocation_test/14: pass
-Done dartk-vm debug_x64 language/conditional_method_invocation_test/15: pass
-Done dartk-vm debug_x64 language/conditional_method_invocation_test/03: pass
-Done dartk-vm debug_x64 language/conditional_method_invocation_test/04: pass
-Done dartk-vm debug_x64 language/conditional_method_invocation_test/05: pass
-Done dartk-vm debug_x64 language/conditional_method_invocation_test/06: pass
-Done dartk-vm debug_x64 language/conditional_method_invocation_test/16: pass
-Done dartk-vm debug_x64 language/conditional_method_invocation_test/17: pass
-Done dartk-vm debug_x64 language/conditional_method_invocation_test/18: pass
-Done dartk-vm debug_x64 language/conditional_method_invocation_test/11: pass
-Done dartk-vm debug_x64 language/conditional_method_invocation_test/19: pass
-Done dartk-vm debug_x64 language/conditional_method_invocation_test/07: pass
-Done dartk-vm debug_x64 language/conditional_method_invocation_test/08: pass
-Done dartk-vm debug_x64 language/conditional_method_invocation_test/13: pass
-Done dartk-vm debug_x64 language/conditional_method_invocation_test/12: pass
-Done dartk-vm debug_x64 language/regress_20394_test/none: pass
-Done dartk-vm debug_x64 language/regress_20394_test/01: pass
-Done dartk-vm debug_x64 language/function_type/function_type6_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type50_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type5_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type28_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type26_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type31_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type41_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type37_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type25_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type20_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type13_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type73_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type79_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type78_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type59_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type63_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type16_test: pass
-Done dartk-vm debug_x64 language/getter_declaration_negative_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type17_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type85_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type49_test: pass
-Done dartk-vm debug_x64 language/constructor_setter_negative_test: pass
-Done dartk-vm debug_x64 language/namer2_test: pass
-Done dartk-vm debug_x64 language/branch_canonicalization_test: pass
-Done dartk-vm debug_x64 language/type_variable_closure4_test: pass
-Done dartk-vm debug_x64 language/phi_merge_test: pass
-Done dartk-vm debug_x64 language/named_parameters_with_conversions_test: pass
-Done dartk-vm debug_x64 language/regress_24283_test: pass
-Done dartk-vm debug_x64 language/function_type_alias_test: pass
-Done dartk-vm debug_x64 language/div_with_power_of_two2_test: pass
-Done dartk-vm debug_x64 language/function_type_this_parameter_test: pass
-Done dartk-vm debug_x64 language/cascade2_test: pass
-Done dartk-vm debug_x64 language/char_escape_test: pass
-Done dartk-vm debug_x64 language/no_such_method_subtype_test: pass
-Done dartk-vm debug_x64 language/regress_22700_test: pass
-Done dartk-vm debug_x64 language/closures_initializer_test: pass
-Done dartk-vm debug_x64 language/f_bounded_quantification2_test: pass
-Done dartk-vm debug_x64 language/prefix17_test: pass
-Done dartk-vm debug_x64 language/rewrite_assign_test: pass
-Done dartk-vm debug_x64 language/default_factory_library_test: pass
-Done dartk-vm debug_x64 language/div_by_zero_test: pass
-Done dartk-vm debug_x64 language/string_join_test: pass
-Done dartk-vm debug_x64 language/rewrite_nested_if1_test: pass
-Done dartk-vm debug_x64 language/issue4295001_test: pass
-Done dartk-vm debug_x64 language/switch4_negative_test: pass
-Done dartk-vm debug_x64 language/list_literal3_test: pass
-Done dartk-vm debug_x64 language/regress_25568_test: pass
-Done dartk-vm debug_x64 language/issue20476_test: pass
-Done dartk-vm debug_x64 language/double_int_to_string_test: pass
-Done dartk-vm debug_x64 language/f_bounded_quantification3_test: pass
-Done dartk-vm debug_x64 language/library_same_name_used_test: pass
-Done dartk-vm debug_x64 language/super_operator_test: pass
-Done dartk-vm debug_x64 language/multi_assign_test: pass
-Done dartk-vm debug_x64 language/const_constructor2_test/none: pass
-Done dartk-vm debug_x64 language/const_constructor2_test/01: pass
-Done dartk-vm debug_x64 language/const_constructor2_test/03: pass
-Done dartk-vm debug_x64 language/const_constructor2_test/02: pass
-Done dartk-vm debug_x64 language/const_constructor2_test/04: pass
-Done dartk-vm debug_x64 language/const_constructor2_test/05: pass
-Done dartk-vm debug_x64 language/const_constructor2_test/06: pass
-Done dartk-vm debug_x64 language/const_constructor2_test/07: pass
-Done dartk-vm debug_x64 language/const_constructor2_test/08: pass
-Done dartk-vm debug_x64 language/const_constructor2_test/09: pass
-Done dartk-vm debug_x64 language/const_constructor2_test/10: pass
-Done dartk-vm debug_x64 language/const_constructor2_test/11: pass
-Done dartk-vm debug_x64 language/const_constructor2_test/12: pass
-Done dartk-vm debug_x64 language/const_constructor2_test/13: pass
-Done dartk-vm debug_x64 language/const_constructor2_test/14: pass
-Done dartk-vm debug_x64 language/const_constructor2_test/15: pass
-Done dartk-vm debug_x64 language/const_constructor2_test/16: pass
-Done dartk-vm debug_x64 language/const_constructor2_test/17: pass
-Done dartk-vm debug_x64 language/const_constructor2_test/19: pass
-Done dartk-vm debug_x64 language/const_constructor2_test/18: pass
-Done dartk-vm debug_x64 language/const_constructor2_test/20: pass
-Done dartk-vm debug_x64 language/const_constructor2_test/21: pass
-Done dartk-vm debug_x64 language/const_constructor2_test/22: pass
-Done dartk-vm debug_x64 language/const_constructor2_test/23: pass
-Done dartk-vm debug_x64 language/const_constructor2_test/24: pass
-Done dartk-vm debug_x64 language/rewrite_implicit_this_test/none: pass
-Done dartk-vm debug_x64 language/rewrite_implicit_this_test/01: pass
-Done dartk-vm debug_x64 language/call_nonexistent_constructor_test/none: pass
-Done dartk-vm debug_x64 language/call_nonexistent_constructor_test/01: pass
-Done dartk-vm debug_x64 language/call_nonexistent_constructor_test/02: pass
-Done dartk-vm debug_x64 language/factory1_test/none: pass
-Done dartk-vm debug_x64 language/factory1_test/00: pass
-Done dartk-vm debug_x64 language/factory1_test/01: pass
-Done dartk-vm debug_x64 language/null_test/01: pass
-Done dartk-vm debug_x64 language/static_getter_no_setter1_test/none: pass
-Done dartk-vm debug_x64 language/static_getter_no_setter1_test/01: pass
-Done dartk-vm debug_x64 language/null_test/02: pass
-Done dartk-vm debug_x64 language/null_test/none: pass
-Done dartk-vm debug_x64 language/null_test/03: pass
-Done dartk-vm debug_x64 language/static_field_test/none: pass
-Done dartk-vm debug_x64 language/static_field_test/01: pass
-Done dartk-vm debug_x64 language/static_field_test/02: pass
-Done dartk-vm debug_x64 language/static_field_test/03: pass
-Done dartk-vm debug_x64 language/static_field_test/04: pass
-Done dartk-vm debug_x64 language/if_null_behavior_test/none: pass
-Done dartk-vm debug_x64 language/if_null_behavior_test/01: pass
-Done dartk-vm debug_x64 language/if_null_behavior_test/02: pass
-Done dartk-vm debug_x64 language/if_null_behavior_test/04: pass
-Done dartk-vm debug_x64 language/if_null_behavior_test/03: pass
-Done dartk-vm debug_x64 language/if_null_behavior_test/05: pass
-Done dartk-vm debug_x64 language/if_null_behavior_test/06: pass
-Done dartk-vm debug_x64 language/if_null_behavior_test/08: pass
-Done dartk-vm debug_x64 language/if_null_behavior_test/07: pass
-Done dartk-vm debug_x64 language/if_null_behavior_test/10: pass
-Done dartk-vm debug_x64 language/if_null_behavior_test/09: pass
-Done dartk-vm debug_x64 language/if_null_behavior_test/12: pass
-Done dartk-vm debug_x64 language/if_null_behavior_test/11: pass
-Done dartk-vm debug_x64 language/if_null_behavior_test/13: pass
-Done dartk-vm debug_x64 language/if_null_behavior_test/14: pass
-Done dartk-vm debug_x64 language/prefix_identifier_reference_test/01: pass
-Done dartk-vm debug_x64 language/if_null_behavior_test/15: pass
-Done dartk-vm debug_x64 language/prefix_identifier_reference_test/02: pass
-Done dartk-vm debug_x64 language/if_null_behavior_test/16: pass
-Done dartk-vm debug_x64 language/prefix_identifier_reference_test/03: pass
-Done dartk-vm debug_x64 language/prefix_identifier_reference_test/04: pass
-Done dartk-vm debug_x64 language/prefix_identifier_reference_test/05: pass
-Done dartk-vm debug_x64 language/prefix_identifier_reference_test/none: pass
-Done dartk-vm debug_x64 language/private_super_constructor_test/none: pass
-Done dartk-vm debug_x64 language/private_super_constructor_test/01: pass
-Done dartk-vm debug_x64 language/export_cyclic_test: pass
-Done dartk-vm debug_x64 language/closure_in_initializer_test: pass
-Done dartk-vm debug_x64 language/regress_29405_test: pass
-Done dartk-vm debug_x64 language/static_field2_test: pass
-Done dartk-vm debug_x64 language/constant_propagation_phis_test: pass
-Done dartk-vm debug_x64 language/list_tracer_closure_test: pass
-Done dartk-vm debug_x64 language/deferred_global_test: pass
-Done dartk-vm debug_x64 language/recursive_calls_test: pass
-Done dartk-vm debug_x64 language/range_analysis2_test: pass
-Done dartk-vm debug_x64 language/js_properties_test: pass
-Done dartk-vm debug_x64 language/private_selector_test: pass
-Done dartk-vm debug_x64 language/top_level_non_prefixed_library_test: pass
-Done dartk-vm debug_x64 language/generic_methods_test: pass
-Done dartk-vm debug_x64 language/naming3_test: pass
-Done dartk-vm debug_x64 language/instanceof2_test: pass
-Done dartk-vm debug_x64 language/factory_return_type_checked_test: pass
-Done dartk-vm debug_x64 language/branches_test: pass
-Done dartk-vm debug_x64 language/infinite_switch_label_test: pass
-Done dartk-vm debug_x64 language/cascade_in_initializer_list_test: pass
-Done dartk-vm debug_x64 language/constructor_call_wrong_argument_count_negative_test: pass
-Done dartk-vm debug_x64 language/non_dominating_loop_test: pass
-Done dartk-vm debug_x64 language/condition_bailout_test: pass
-Done dartk-vm debug_x64 language/stacktrace_demangle_ctors_test: pass
-Done dartk-vm debug_x64 language/label2_negative_test: pass
-Done dartk-vm debug_x64 language/throwing_lazy_variable_test: pass
-Done dartk-vm debug_x64 language/inline_add_constants_to_initial_env_test: pass
-Done dartk-vm debug_x64 language/static_inline_test: pass
-Done dartk-vm debug_x64 language/function_argument_test: pass
-Done dartk-vm debug_x64 language/type_argument_in_super_type_test: pass
-Done dartk-vm debug_x64 language/redirecting_factory_reflection_test: pass
-Done dartk-vm debug_x64 language/identical_closure_test: pass
-Done dartk-vm debug_x64 language/gvn_field_access_test: pass
-Done dartk-vm debug_x64 language/bind_test: pass
-Done dartk-vm debug_x64 language/regress_26230_test: pass
-Done dartk-vm debug_x64 language/part_of_uri2_test: pass
-Done dartk-vm debug_x64 language/memory_swap_test: pass
-Done dartk-vm debug_x64 language/is_operator_test: pass
-Done dartk-vm debug_x64 language/closure_type_test/none: pass
-Done dartk-vm debug_x64 language/throw8_test: pass
-Done dartk-vm debug_x64 language/void_arrow_return_test: pass
-Done dartk-vm debug_x64 language/closure_type_test/01: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked4_test/none: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked4_test/01: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked4_test/02: pass
-Done dartk-vm debug_x64 language/case_expression_with_assignment_test/01: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked4_test/03: pass
-Done dartk-vm debug_x64 language/case_expression_with_assignment_test/none: pass
-Done dartk-vm debug_x64 language/flatten_test/none: pass
-Done dartk-vm debug_x64 language/flatten_test/01: pass
-Done dartk-vm debug_x64 language/flatten_test/02: pass
-Done dartk-vm debug_x64 language/flatten_test/05: pass
-Done dartk-vm debug_x64 language/flatten_test/03: pass
-Done dartk-vm debug_x64 language/flatten_test/04: pass
-Done dartk-vm debug_x64 language/flatten_test/06: pass
-Done dartk-vm debug_x64 language/flatten_test/07: pass
-Done dartk-vm debug_x64 language/flatten_test/08: pass
-Done dartk-vm debug_x64 language/type_variable_conflict_test/01: pass
-Done dartk-vm debug_x64 language/flatten_test/09: pass
-Done dartk-vm debug_x64 language/flatten_test/10: pass
-Done dartk-vm debug_x64 language/flatten_test/12: pass
-Done dartk-vm debug_x64 language/flatten_test/11: pass
-Done dartk-vm debug_x64 language/type_variable_conflict_test/02: pass
-Done dartk-vm debug_x64 language/type_variable_conflict_test/03: pass
-Done dartk-vm debug_x64 language/type_variable_conflict_test/none: pass
-Done dartk-vm debug_x64 language/type_variable_conflict_test/04: pass
-Done dartk-vm debug_x64 language/type_variable_conflict_test/05: pass
-Done dartk-vm debug_x64 language/type_variable_conflict_test/06: pass
-Done dartk-vm debug_x64 language/named_parameters_test/02: pass
-Done dartk-vm debug_x64 language/named_parameters_test/none: pass
-Done dartk-vm debug_x64 language/named_parameters_test/03: pass
-Done dartk-vm debug_x64 language/named_parameters_test/01: pass
-Done dartk-vm debug_x64 language/named_parameters_test/05: pass
-Done dartk-vm debug_x64 language/named_parameters_test/04: pass
-Done dartk-vm debug_x64 language/named_parameters_test/06: pass
-Done dartk-vm debug_x64 language/named_parameters_test/07: pass
-Done dartk-vm debug_x64 language/named_parameters_test/08: pass
-Done dartk-vm debug_x64 language/named_parameters_test/10: pass
-Done dartk-vm debug_x64 language/static_setter_get_test/none: pass
-Done dartk-vm debug_x64 language/named_parameters_test/09: pass
-Done dartk-vm debug_x64 language/no_main_test/none: pass
-Done dartk-vm debug_x64 language/static_setter_get_test/01: pass
-Done dartk-vm debug_x64 language/super_bound_closure_test/none: pass
-Done dartk-vm debug_x64 language/super_bound_closure_test/01: pass
-Done dartk-vm debug_x64 language/regress_27617_test/none: pass
-Done dartk-vm debug_x64 language/parameter_metadata_test/01: pass
-Done dartk-vm debug_x64 language/regress_27617_test/1: pass
-Done dartk-vm debug_x64 language/parameter_metadata_test/none: pass
-Done dartk-vm debug_x64 language/parameter_metadata_test/02: pass
-Done dartk-vm debug_x64 language/parameter_metadata_test/03: pass
-Done dartk-vm debug_x64 language/hidden_import_test/none: pass
-Done dartk-vm debug_x64 language/parameter_metadata_test/04: pass
-Done dartk-vm debug_x64 language/missing_part_of_tag_test/01: pass
-Done dartk-vm debug_x64 language/hidden_import_test/01: pass
-Done dartk-vm debug_x64 language/deferred_import_core_test: pass
-Done dartk-vm debug_x64 language/missing_part_of_tag_test/none: pass
-Done dartk-vm debug_x64 language/hidden_import_test/02: pass
-Done dartk-vm debug_x64 language/function_subtype_local3_test: pass
-Done dartk-vm debug_x64 language/null2_test: pass
-Done dartk-vm debug_x64 language/await_future_test: pass
-Done dartk-vm debug_x64 language/await_future_test: pass
-Done dartk-vm debug_x64 language/conditional_import_string_test: pass
-Done dartk-vm debug_x64 language/type_variable_nested_test: pass
-Done dartk-vm debug_x64 language/library_private_in_constructor_test: pass
-Done dartk-vm debug_x64 language/switch_scope_test: pass
-Done dartk-vm debug_x64 language/resolution_test: pass
-Done dartk-vm debug_x64 language/prefix15_negative_test: pass
-Done dartk-vm debug_x64 language/interceptor6_test: pass
-Done dartk-vm debug_x64 language/mixin_type_parameters_mixin_extends_test: pass
-Done dartk-vm debug_x64 language/cyclic_import_test: pass
-Done dartk-vm debug_x64 language/body_less_constructor_wrong_arg_negative_test: pass
-Done dartk-vm debug_x64 language/rewrite_for_update_order_test: pass
-Done dartk-vm debug_x64 language/compile_time_constant_h_test: pass
-Done dartk-vm debug_x64 language/regress_22445_test: pass
-Done dartk-vm debug_x64 language/static_closure_identical_test: pass
-Done dartk-vm debug_x64 language/super_all_named_constructor_test: pass
-Done dartk-vm debug_x64 language/nullaware_opt_test: pass
-Done dartk-vm debug_x64 language/compile_time_constant8_test: pass
-Done dartk-vm debug_x64 language/named_parameters_passing_zero_test: pass
-Done dartk-vm debug_x64 language/factory_negative_test: pass
-Done dartk-vm debug_x64 language/await_test: pass
-Done dartk-vm debug_x64 language/is_nan_test: pass
-Done dartk-vm debug_x64 language/await_test: pass
-Done dartk-vm debug_x64 language/regress_13462_0_test: pass
-Done dartk-vm debug_x64 language/switch6_test: pass
-Done dartk-vm debug_x64 language/regress_18713_test: pass
-Done dartk-vm debug_x64 language/closure_shared_state_test: pass
-Done dartk-vm debug_x64 language/for_in_side_effects_test: pass
-Done dartk-vm debug_x64 language/string_interpolation8_test: pass
-Done dartk-vm debug_x64 language/function_literals2_test: pass
-Done dartk-vm debug_x64 language/type_propagation_test: pass
-Done dartk-vm debug_x64 language/methods_as_constants2_test: pass
-Done dartk-vm debug_x64 language/super_field_2_test: pass
-Done dartk-vm debug_x64 language/issue15702_test: pass
-Done dartk-vm debug_x64 language/try_catch2_test: pass
-Done dartk-vm debug_x64 language/closure2_test: pass
-Done dartk-vm debug_x64 language/classes_static_method_clash_test: pass
-Done dartk-vm debug_x64 language/override_field_method1_negative_test: pass
-Done dartk-vm debug_x64 language/licm_test: pass
-Done dartk-vm debug_x64 language/reg_exp2_test: pass
-Done dartk-vm debug_x64 language/constructor_duplicate_final_test/03: pass
-Done dartk-vm debug_x64 language/constructor_duplicate_final_test/01: pass
-Done dartk-vm debug_x64 language/constructor_duplicate_final_test/none: pass
-Done dartk-vm debug_x64 language/constructor_duplicate_final_test/02: pass
-Done dartk-vm debug_x64 language/syntax_test/none: pass
-Done dartk-vm debug_x64 language/syntax_test/01: pass
-Done dartk-vm debug_x64 language/regress_22936_test/none: pass
-Done dartk-vm debug_x64 language/syntax_test/02: pass
-Done dartk-vm debug_x64 language/syntax_test/03: pass
-Done dartk-vm debug_x64 language/syntax_test/04: pass
-Done dartk-vm debug_x64 language/syntax_test/05: pass
-Done dartk-vm debug_x64 language/regress_22936_test/01: pass
-Done dartk-vm debug_x64 language/syntax_test/06: pass
-Done dartk-vm debug_x64 language/syntax_test/08: pass
-Done dartk-vm debug_x64 language/syntax_test/07: pass
-Done dartk-vm debug_x64 language/syntax_test/09: pass
-Done dartk-vm debug_x64 language/syntax_test/10: pass
-Done dartk-vm debug_x64 language/syntax_test/12: pass
-Done dartk-vm debug_x64 language/syntax_test/11: pass
-Done dartk-vm debug_x64 language/syntax_test/15: pass
-Done dartk-vm debug_x64 language/syntax_test/14: pass
-Done dartk-vm debug_x64 language/syntax_test/13: pass
-Done dartk-vm debug_x64 language/syntax_test/16: pass
-Done dartk-vm debug_x64 language/syntax_test/17: pass
-Done dartk-vm debug_x64 language/syntax_test/18: pass
-Done dartk-vm debug_x64 language/syntax_test/19: pass
-Done dartk-vm debug_x64 language/syntax_test/20: pass
-Done dartk-vm debug_x64 language/syntax_test/21: pass
-Done dartk-vm debug_x64 language/syntax_test/22: pass
-Done dartk-vm debug_x64 language/syntax_test/23: pass
-Done dartk-vm debug_x64 language/syntax_test/24: pass
-Done dartk-vm debug_x64 language/syntax_test/25: pass
-Done dartk-vm debug_x64 language/syntax_test/26: pass
-Done dartk-vm debug_x64 language/syntax_test/27: pass
-Done dartk-vm debug_x64 language/syntax_test/28: pass
-Done dartk-vm debug_x64 language/syntax_test/29: pass
-Done dartk-vm debug_x64 language/syntax_test/30: pass
-Done dartk-vm debug_x64 language/syntax_test/32: pass
-Done dartk-vm debug_x64 language/syntax_test/31: pass
-Done dartk-vm debug_x64 language/syntax_test/33: pass
-Done dartk-vm debug_x64 language/syntax_test/34: pass
-Done dartk-vm debug_x64 language/syntax_test/35: pass
-Done dartk-vm debug_x64 language/syntax_test/36: pass
-Done dartk-vm debug_x64 language/syntax_test/37: pass
-Done dartk-vm debug_x64 language/syntax_test/38: pass
-Done dartk-vm debug_x64 language/syntax_test/40: pass
-Done dartk-vm debug_x64 language/syntax_test/39: pass
-Done dartk-vm debug_x64 language/syntax_test/41: pass
-Done dartk-vm debug_x64 language/syntax_test/42: pass
-Done dartk-vm debug_x64 language/syntax_test/44: pass
-Done dartk-vm debug_x64 language/syntax_test/43: pass
-Done dartk-vm debug_x64 language/syntax_test/45: pass
-Done dartk-vm debug_x64 language/syntax_test/47: pass
-Done dartk-vm debug_x64 language/syntax_test/46: pass
-Done dartk-vm debug_x64 language/syntax_test/48: pass
-Done dartk-vm debug_x64 language/syntax_test/51: pass
-Done dartk-vm debug_x64 language/syntax_test/50: pass
-Done dartk-vm debug_x64 language/syntax_test/49: pass
-Done dartk-vm debug_x64 language/syntax_test/52: pass
-Done dartk-vm debug_x64 language/syntax_test/54: pass
-Done dartk-vm debug_x64 language/syntax_test/53: pass
-Done dartk-vm debug_x64 language/syntax_test/57: pass
-Done dartk-vm debug_x64 language/syntax_test/56: pass
-Done dartk-vm debug_x64 language/syntax_test/55: pass
-Done dartk-vm debug_x64 language/syntax_test/58: pass
-Done dartk-vm debug_x64 language/syntax_test/59: pass
-Done dartk-vm debug_x64 language/syntax_test/60: pass
-Done dartk-vm debug_x64 language/syntax_test/61: pass
-Done dartk-vm debug_x64 language/large_class_declaration_test: pass
-Done dartk-vm debug_x64 language/syntax_test/63: pass
-Done dartk-vm debug_x64 language/syntax_test/62: pass
-Done dartk-vm debug_x64 language/override_field_test/02: pass
-Done dartk-vm debug_x64 language/override_field_test/none: pass
-Done dartk-vm debug_x64 language/override_field_test/01: pass
-Done dartk-vm debug_x64 language/override_field_test/03: pass
-Done dartk-vm debug_x64 language/class_literal_test/none: pass
-Done dartk-vm debug_x64 language/class_literal_test/01: pass
-Done dartk-vm debug_x64 language/class_literal_test/02: pass
-Done dartk-vm debug_x64 language/class_literal_test/03: pass
-Done dartk-vm debug_x64 language/class_literal_test/04: pass
-Done dartk-vm debug_x64 language/class_literal_test/05: pass
-Done dartk-vm debug_x64 language/class_literal_test/06: pass
-Done dartk-vm debug_x64 language/class_literal_test/07: pass
-Done dartk-vm debug_x64 language/class_literal_test/08: pass
-Done dartk-vm debug_x64 language/class_literal_test/09: pass
-Done dartk-vm debug_x64 language/class_literal_test/10: pass
-Done dartk-vm debug_x64 language/class_literal_test/11: pass
-Done dartk-vm debug_x64 language/class_literal_test/12: pass
-Done dartk-vm debug_x64 language/class_literal_test/13: pass
-Done dartk-vm debug_x64 language/class_literal_test/14: pass
-Done dartk-vm debug_x64 language/class_literal_test/15: pass
-Done dartk-vm debug_x64 language/class_literal_test/16: pass
-Done dartk-vm debug_x64 language/class_literal_test/17: pass
-Done dartk-vm debug_x64 language/class_literal_test/18: pass
-Done dartk-vm debug_x64 language/class_literal_test/19: pass
-Done dartk-vm debug_x64 language/class_literal_test/20: pass
-Done dartk-vm debug_x64 language/class_literal_test/21: pass
-Done dartk-vm debug_x64 language/class_literal_test/22: pass
-Done dartk-vm debug_x64 language/class_literal_test/23: pass
-Done dartk-vm debug_x64 language/class_literal_test/24: pass
-Done dartk-vm debug_x64 language/class_literal_test/25: pass
-Done dartk-vm debug_x64 language/int2_test: pass
-Done dartk-vm debug_x64 language/rewrite_while_test: pass
-Done dartk-vm debug_x64 language/operator_test: pass
-Done dartk-vm debug_x64 language/double_to_string_as_exponential_test: pass
-Done dartk-vm debug_x64 language/unhandled_exception_negative_test: pass
-Done dartk-vm debug_x64 language/inst_field_initializer1_negative_test: pass
-Done dartk-vm debug_x64 language/if_test: pass
-Done dartk-vm debug_x64 language/map_literal6_test: pass
-Done dartk-vm debug_x64 language/operations_on_non_num_operand_test: pass
-Done dartk-vm debug_x64 language/return_type_test: pass
-Done dartk-vm debug_x64 language/switch3_negative_test: pass
-Done dartk-vm debug_x64 language/private3_test: pass
-Done dartk-vm debug_x64 language/deopt_inlined_function_test: pass
-Done dartk-vm debug_x64 language/string_unicode4_negative_test: pass
-Done dartk-vm debug_x64 language/method_override_test: pass
-Done dartk-vm debug_x64 language/issue4157508_test: pass
-Done dartk-vm debug_x64 language/const_test: pass
-Done dartk-vm debug_x64 language/field6a_negative_test: pass
-Done dartk-vm debug_x64 language/string_interpolate_test: pass
-Done dartk-vm debug_x64 language/method_override5_test: pass
-Done dartk-vm debug_x64 language/execute_finally1_test: pass
-Done dartk-vm debug_x64 language/for_test: pass
-Done dartk-vm debug_x64 language/prefix18_negative_test: pass
-Done dartk-vm debug_x64 language/import_core_no_prefix_test: pass
-Done dartk-vm debug_x64 language/regress_18535_test: pass
-Done dartk-vm debug_x64 language/unicode_bom_test: pass
-Done dartk-vm debug_x64 language/optimized_string_charcodeat_test: pass
-Done dartk-vm debug_x64 language/map_literal_negative_test: pass
-Done dartk-vm debug_x64 language/native_test: pass
-Done dartk-vm debug_x64 language/private_member1_negative_test: pass
-Done dartk-vm debug_x64 language/switch_test: pass
-Done dartk-vm debug_x64 language/double_to_string_as_fixed2_test: pass
-Done dartk-vm debug_x64 language/regress_13462_1_test: pass
-Done dartk-vm debug_x64 language/generalized_void_syntax_test: pass
-Done dartk-vm debug_x64 language/parameter_initializer5_test: pass
-Done dartk-vm debug_x64 language/getters_setters_type2_test: pass
-Done dartk-vm debug_x64 language/prefix_test: pass
-Done dartk-vm debug_x64 language/regress_29025_test: pass
-Done dartk-vm debug_x64 language/typecheck_multifield_declaration_test: pass
-Done dartk-vm debug_x64 language/syncstar_yieldstar_test: pass
-Done dartk-vm debug_x64 language/type_variable_closure2_test: pass
-Done dartk-vm debug_x64 language/issue15606_test/none: pass
-Done dartk-vm debug_x64 language/issue15606_test/01: pass
-Done dartk-vm debug_x64 language/list_literal1_test/none: pass
-Done dartk-vm debug_x64 language/list_literal1_test/01: pass
-Done dartk-vm debug_x64 language/mixin_super_constructor_positionals_test/none: pass
-Done dartk-vm debug_x64 language/call_constructor_on_unresolvable_class_test/none: pass
-Done dartk-vm debug_x64 language/mixin_super_constructor_positionals_test/01: pass
-Done dartk-vm debug_x64 language/call_constructor_on_unresolvable_class_test/01: pass
-Done dartk-vm debug_x64 language/call_constructor_on_unresolvable_class_test/02: pass
-Done dartk-vm debug_x64 language/call_constructor_on_unresolvable_class_test/03: pass
-Done dartk-vm debug_x64 language/call_constructor_on_unresolvable_class_test/04: pass
-Done dartk-vm debug_x64 language/const_for_in_variable_test/01: pass
-Done dartk-vm debug_x64 language/call_constructor_on_unresolvable_class_test/05: pass
-Done dartk-vm debug_x64 language/call_constructor_on_unresolvable_class_test/06: pass
-Done dartk-vm debug_x64 language/call_constructor_on_unresolvable_class_test/07: pass
-Done dartk-vm debug_x64 language/instantiate_type_variable_test/none: pass
-Done dartk-vm debug_x64 language/const_for_in_variable_test/none: pass
-Done dartk-vm debug_x64 language/instantiate_type_variable_test/01: pass
-Done dartk-vm debug_x64 language/enum_is_keyword_test/01: pass
-Done dartk-vm debug_x64 language/const_for_in_variable_test/02: pass
-Done dartk-vm debug_x64 language/enum_is_keyword_test/none: pass
-Done dartk-vm debug_x64 language/import_private_test/01: pass
-Done dartk-vm debug_x64 language/generic_field_mixin6_test/none: pass
-Done dartk-vm debug_x64 language/generic_field_mixin6_test/01: pass
-Done dartk-vm debug_x64 language/import_private_test/none: pass
-Done dartk-vm debug_x64 language/stacktrace_rethrow_error_test/none: pass
-Done dartk-vm debug_x64 language/if_null_precedence_test/none: pass
-Done dartk-vm debug_x64 language/stacktrace_rethrow_error_test/withtraceparameter: pass
-Done dartk-vm debug_x64 language/if_null_precedence_test/02: pass
-Done dartk-vm debug_x64 language/if_null_precedence_test/01: pass
-Done dartk-vm debug_x64 language/if_null_precedence_test/03: pass
-Done dartk-vm debug_x64 language/if_null_precedence_test/04: pass
-Done dartk-vm debug_x64 language/if_null_precedence_test/05: pass
-Done dartk-vm debug_x64 language/static_parameter_test/01: pass
-Done dartk-vm debug_x64 language/if_null_precedence_test/06: pass
-Done dartk-vm debug_x64 language/if_null_precedence_test/07: pass
-Done dartk-vm debug_x64 language/static_parameter_test/02: pass
-Done dartk-vm debug_x64 language/if_null_precedence_test/08: pass
-Done dartk-vm debug_x64 language/static_parameter_test/03: pass
-Done dartk-vm debug_x64 language/static_parameter_test/04: pass
-Done dartk-vm debug_x64 language/static_parameter_test/05: pass
-Done dartk-vm debug_x64 language/static_parameter_test/none: pass
-Done dartk-vm debug_x64 language/static_parameter_test/06: pass
-Done dartk-vm debug_x64 language/static_parameter_test/07: pass
-Done dartk-vm debug_x64 language/static_parameter_test/09: pass
-Done dartk-vm debug_x64 language/static_parameter_test/08: pass
-Done dartk-vm debug_x64 language/static_parameter_test/11: pass
-Done dartk-vm debug_x64 language/static_parameter_test/10: pass
-Done dartk-vm debug_x64 language/static_parameter_test/12: pass
-Done dartk-vm debug_x64 language/nested_comments_test: pass
-Done dartk-vm debug_x64 language/regress_27659_test: pass
-Done dartk-vm debug_x64 language/is_not_class2_test: pass
-Done dartk-vm debug_x64 language/issue12023_test: pass
-Done dartk-vm debug_x64 language/inferrer_closure_test: pass
-Done dartk-vm debug_x64 language/static_const_field_test: pass
-Done dartk-vm debug_x64 language/runtime_type_function_test: pass
-Done dartk-vm debug_x64 language/ternary_test: pass
-Done dartk-vm debug_x64 language/implicit_super_constructor_call_test: pass
-Done dartk-vm debug_x64 language/third_test: pass
-Done dartk-vm debug_x64 language/function_subtype_cast2_test: pass
-Done dartk-vm debug_x64 language/local_function2_test: pass
-Done dartk-vm debug_x64 language/regress_22822_test: pass
-Done dartk-vm debug_x64 language/top_level_func_test: pass
-Done dartk-vm debug_x64 language/lazy_static4_test: pass
-Done dartk-vm debug_x64 language/regress_21998_2_test: pass
-Done dartk-vm debug_x64 language/string_interpolate2_negative_test: pass
-Done dartk-vm debug_x64 language/mixin_generic_test: pass
-Done dartk-vm debug_x64 language/export_main_test: pass
-Done dartk-vm debug_x64 language/nan_identical_test: pass
-Done dartk-vm debug_x64 language/super_getter_setter_test: pass
-Done dartk-vm debug_x64 language/map_literal_test: pass
-Done dartk-vm debug_x64 language/mixin_prefix_test: pass
-Done dartk-vm debug_x64 language/mixin_typedef_constructor_test: pass
-Done dartk-vm debug_x64 language/left_shift_test: pass
-Done dartk-vm debug_x64 language/param2_test: pass
-Done dartk-vm debug_x64 language/interface_static_method_negative_test: pass
-Done dartk-vm debug_x64 language/mixin_regress_11398_test: pass
-Done dartk-vm debug_x64 language/checked_setter2_test: pass
-Done dartk-vm debug_x64 language/function_subtype_optional1_test: pass
-Done dartk-vm debug_x64 language/import_combinators_negative_test: pass
-Done dartk-vm debug_x64 language/issue13673_test: pass
-Done dartk-vm debug_x64 language/function_field_test: pass
-Done dartk-vm debug_x64 language/parameter_initializer2_negative_test: pass
-Done dartk-vm debug_x64 language/setter_declaration2_negative_test: pass
-Done dartk-vm debug_x64 language/constructor_body_test: pass
-Done dartk-vm debug_x64 language/runtime_type_test: pass
-Done dartk-vm debug_x64 language/optimized_isempty_test: pass
-Done dartk-vm debug_x64 language/initializing_formal_scope_test: pass
-Done dartk-vm debug_x64 language/mixin_regress_13688_test: pass
-Done dartk-vm debug_x64 language/generic2_test: pass
-Done dartk-vm debug_x64 language/function_subtype_inline1_test: pass
-Done dartk-vm debug_x64 language/indirect_const_null_test: pass
-Done dartk-vm debug_x64 language/parameter_default_test/01: pass
-Done dartk-vm debug_x64 language/parameter_default_test/02: pass
-Done dartk-vm debug_x64 language/parameter_default_test/05: pass
-Done dartk-vm debug_x64 language/parameter_default_test/03: pass
-Done dartk-vm debug_x64 language/parameter_default_test/04: pass
-Done dartk-vm debug_x64 language/parameter_default_test/none: pass
-Done dartk-vm debug_x64 language/parameter_default_test/06: pass
-Done dartk-vm debug_x64 language/parameter_default_test/08: pass
-Done dartk-vm debug_x64 language/parameter_default_test/07: pass
-Done dartk-vm debug_x64 language/getters_setters_type_test/none: pass
-Done dartk-vm debug_x64 language/mixin_supertype_subclass2_test/02: pass
-Done dartk-vm debug_x64 language/mixin_supertype_subclass2_test/01: pass
-Done dartk-vm debug_x64 language/getters_setters_type_test/01: pass
-Done dartk-vm debug_x64 language/mixin_supertype_subclass2_test/none: pass
-Done dartk-vm debug_x64 language/mixin_supertype_subclass2_test/03: pass
-Done dartk-vm debug_x64 language/mixin_supertype_subclass2_test/04: pass
-Done dartk-vm debug_x64 language/mixin_supertype_subclass2_test/05: pass
-Done dartk-vm debug_x64 language/main_not_a_function_test/none: pass
-Done dartk-vm debug_x64 language/final_super_field_set_test/none: pass
-Done dartk-vm debug_x64 language/function_type_alias6_test/00: pass
-Done dartk-vm debug_x64 language/check_method_override_test/none: pass
-Done dartk-vm debug_x64 language/final_super_field_set_test/01: pass
-Done dartk-vm debug_x64 language/check_method_override_test/01: pass
-Done dartk-vm debug_x64 language/check_method_override_test/02: pass
-Done dartk-vm debug_x64 language/function_type_alias6_test/none: pass
-Done dartk-vm debug_x64 language/factory6_test/none: pass
-Done dartk-vm debug_x64 language/factory6_test/00: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/02: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/01: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/none: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/03: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/04: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/05: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/06: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/07: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/08: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/11: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/10: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/09: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/12: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/13: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/14: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/15: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/18: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/17: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/16: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/19: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/20: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/21: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/23: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/22: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/24: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/25: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/26: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/27: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/28: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/29: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/31: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/30: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/32: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/36: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/33: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/37: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/35: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/34: pass
-Done dartk-vm debug_x64 language/internal_library_test/02: pass
-Done dartk-vm debug_x64 language/internal_library_test/01: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/38: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/39: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/41: pass
-Done dartk-vm debug_x64 language/internal_library_test/none: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/40: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/42: pass
-Done dartk-vm debug_x64 language/const_map2_test/00: pass
-Done dartk-vm debug_x64 language/const_map2_test/none: pass
-Done dartk-vm debug_x64 language/dynamic_prefix_core_test/01: pass
-Done dartk-vm debug_x64 language/dynamic_prefix_core_test/none: pass
-Done dartk-vm debug_x64 language/regress_24567_test: pass
-Done dartk-vm debug_x64 language/library1_test: pass
-Done dartk-vm debug_x64 language/infinity_test: pass
-Done dartk-vm debug_x64 language/const_map_test: pass
-Done dartk-vm debug_x64 language/interceptor5_test: pass
-Done dartk-vm debug_x64 language/default_init_test: pass
-Done dartk-vm debug_x64 language/constructor7_test: pass
-Done dartk-vm debug_x64 language/regress_30121_test: pass
-Done dartk-vm debug_x64 language/mixin_issue10216_test: pass
-Done dartk-vm debug_x64 language/lazy_static2_test: pass
-Done dartk-vm debug_x64 language/super_operator_index5_test: pass
-Done dartk-vm debug_x64 language/closure_in_initializer2_test: pass
-Done dartk-vm debug_x64 language/deferred_function_type_test: pass
-Done dartk-vm debug_x64 language/f_bounded_quantification5_test: pass
-Done dartk-vm debug_x64 language/continue_test: pass
-Done dartk-vm debug_x64 language/mixin_issue10216_2_test: pass
-Done dartk-vm debug_x64 language/final_field_initialization_order_test: pass
-Done dartk-vm debug_x64 language/issue14242_test: pass
-Done dartk-vm debug_x64 language/do_while4_test: pass
-Done dartk-vm debug_x64 language/issue22800_test: pass
-Done dartk-vm debug_x64 language/prefix_new_test: pass
-Done dartk-vm debug_x64 language/unqual_name_test: pass
-Done dartk-vm debug_x64 language/logical_expression_test: pass
-Done dartk-vm debug_x64 language/double_to_string_as_exponential3_test: pass
-Done dartk-vm debug_x64 language/function_malformed_result_type_test: pass
-Done dartk-vm debug_x64 language/generics_test: pass
-Done dartk-vm debug_x64 language/extend_type_parameter_negative_test: pass
-Done dartk-vm debug_x64 language/interceptor2_test: pass
-Done dartk-vm debug_x64 language/generic_closure_test: pass
-Done dartk-vm debug_x64 language/regress_27957_test: pass
-Done dartk-vm debug_x64 language/type_variable_function_type_test: pass
-Done dartk-vm debug_x64 language/deferred_shared_and_unshared_classes_test: pass
-Done dartk-vm debug_x64 language/method_override4_test: pass
-Done dartk-vm debug_x64 language/default_factory3_test: pass
-Done dartk-vm debug_x64 language/rewrite_conditional_test: pass
-Done dartk-vm debug_x64 language/issue14014_test: pass
-Done dartk-vm debug_x64 language/try_catch_optimized5_test: pass
-Done dartk-vm debug_x64 language/prefix12_test: pass
-Done dartk-vm debug_x64 language/issue15720_test: pass
-Done dartk-vm debug_x64 language/await_exceptions_test: pass
-Done dartk-vm debug_x64 language/cyclic_type2_test: pass
-Done dartk-vm debug_x64 language/inferrer_constructor2_test: pass
-Done dartk-vm debug_x64 language/larger_implicit_getter_test: pass
-Done dartk-vm debug_x64 language/await_exceptions_test: pass
-Done dartk-vm debug_x64 language/generic_constructor_mixin2_test: pass
-Done dartk-vm debug_x64 language/constructor_name_test/01: pass
-Done dartk-vm debug_x64 language/constructor_name_test/03: pass
-Done dartk-vm debug_x64 language/constructor_name_test/02: pass
-Done dartk-vm debug_x64 language/number_identity2_test: pass
-Done dartk-vm debug_x64 language/constructor_name_test/none: pass
-Done dartk-vm debug_x64 language/string_interpolation4_test/01: pass
-Done dartk-vm debug_x64 language/super_no_such_method2_test/none: pass
-Done dartk-vm debug_x64 language/super_no_such_method2_test/01: pass
-Done dartk-vm debug_x64 language/string_interpolation4_test/none: pass
-Done dartk-vm debug_x64 language/metadata_scope1_test/none: pass
-Done dartk-vm debug_x64 language/metadata_scope1_test/01: pass
-Done dartk-vm debug_x64 language/call_type_literal_test/none: pass
-Done dartk-vm debug_x64 language/call_type_literal_test/01: pass
-Done dartk-vm debug_x64 language/wrong_number_type_arguments_test/none: pass
-Done dartk-vm debug_x64 language/wrong_number_type_arguments_test/02: pass
-Done dartk-vm debug_x64 language/wrong_number_type_arguments_test/00: pass
-Done dartk-vm debug_x64 language/wrong_number_type_arguments_test/01: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/none: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/02: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/01: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/03: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/04: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/05: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/06: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/07: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/08: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/21: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/22: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/23: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/24: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/25: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/26: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/27: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/28: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/30: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/29: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/31: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/41: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/42: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/44: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/43: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/45: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/46: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/47: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/48: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/49: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/50: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/51: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/52: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/53: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/54: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/09: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/10: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/11: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/32: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/33a: pass
-Done dartk-vm debug_x64 language/class_cycle2_test/01: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/33: pass
-Done dartk-vm debug_x64 language/class_cycle2_test/02: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/34: pass
-Done dartk-vm debug_x64 language/class_cycle2_test/none: pass
-Done dartk-vm debug_x64 language/private_access_test/none: pass
-Done dartk-vm debug_x64 language/private_access_test/01: pass
-Done dartk-vm debug_x64 language/private_access_test/03: pass
-Done dartk-vm debug_x64 language/private_access_test/02: pass
-Done dartk-vm debug_x64 language/private_access_test/06: pass
-Done dartk-vm debug_x64 language/private_access_test/04: pass
-Done dartk-vm debug_x64 language/private_access_test/05: pass
-Done dartk-vm debug_x64 language/static_postfix_operator_test: pass
-Done dartk-vm debug_x64 language/bailout_container_type_test: pass
-Done dartk-vm debug_x64 language/regress_23408_test: pass
-Done dartk-vm debug_x64 language/gvn_test: pass
-Done dartk-vm debug_x64 language/await_for_test: pass
-Done dartk-vm debug_x64 language/string_test: pass
-Done dartk-vm debug_x64 language/prefix15_test: pass
-Done dartk-vm debug_x64 language/named_argument_in_const_creation_test: pass
-Done dartk-vm debug_x64 language/async_this_bound_test: pass
-Done dartk-vm debug_x64 language/mixin_mixin_test: pass
-Done dartk-vm debug_x64 language/call_closurization_test: pass
-Done dartk-vm debug_x64 language/inheritance_chain_test: pass
-Done dartk-vm debug_x64 language/new_statement_test: pass
-Done dartk-vm debug_x64 language/export_not_shadowed_by_prefix_test: pass
-Done dartk-vm debug_x64 language/function_subtype_not2_test: pass
-Done dartk-vm debug_x64 language/duplicate_interface_test: pass
-Done dartk-vm debug_x64 language/mixin_field_test: pass
-Done dartk-vm debug_x64 language/reexport_core_test: pass
-Done dartk-vm debug_x64 language/no_such_constructor2_test: pass
-Done dartk-vm debug_x64 language/function_getter_test: pass
-Done dartk-vm debug_x64 language/type_variable_typedef_test: pass
-Done dartk-vm debug_x64 language/deopt_no_feedback_test: pass
-Done dartk-vm debug_x64 language/number_constant_folding1_test: pass
-Done dartk-vm debug_x64 language/closure_type_variables_test: pass
-Done dartk-vm debug_x64 language/issue10783_test: pass
-Done dartk-vm debug_x64 language/stack_trace_test: pass
-Done dartk-vm debug_x64 language/try_finally_regress_25654_test: pass
-Done dartk-vm debug_x64 language/mixin_override_regression_test: pass
-Done dartk-vm debug_x64 language/mixin_naming_test: pass
-Done dartk-vm debug_x64 language/super_inferrer_test: pass
-Done dartk-vm debug_x64 language/mixin_mixin_type_arguments_test: pass
-Done dartk-vm debug_x64 language/regress_25389_test: pass
-Done dartk-vm debug_x64 language/field_type_check_test/none: pass
-Done dartk-vm debug_x64 language/field_type_check_test/01: pass
-Done dartk-vm debug_x64 language/regress_21793_test/none: pass
-Done dartk-vm debug_x64 language/checked_setter3_test/none: pass
-Done dartk-vm debug_x64 language/regress_21793_test/01: pass
-Done dartk-vm debug_x64 language/checked_setter3_test/01: pass
-Done dartk-vm debug_x64 language/checked_setter3_test/02: pass
-Done dartk-vm debug_x64 language/unresolved_default_constructor_test/none: pass
-Done dartk-vm debug_x64 language/unresolved_default_constructor_test/01: pass
-Done dartk-vm debug_x64 language/regress_23038_test/01: pass
-Done dartk-vm debug_x64 language/regress_23038_test/none: pass
-Done dartk-vm debug_x64 language/black_listed_test/01a: pass
-Done dartk-vm debug_x64 language/black_listed_test/01b: pass
-Done dartk-vm debug_x64 language/black_listed_test/01c: pass
-Done dartk-vm debug_x64 language/black_listed_test/02a: pass
-Done dartk-vm debug_x64 language/super_no_such_method3_test/01: pass
-Done dartk-vm debug_x64 language/super_no_such_method3_test/none: pass
-Done dartk-vm debug_x64 language/black_listed_test/none: pass
-Done dartk-vm debug_x64 language/black_listed_test/02b: pass
-Done dartk-vm debug_x64 language/black_listed_test/03b: pass
-Done dartk-vm debug_x64 language/black_listed_test/02c: pass
-Done dartk-vm debug_x64 language/black_listed_test/03c: pass
-Done dartk-vm debug_x64 language/black_listed_test/03a: pass
-Done dartk-vm debug_x64 language/black_listed_test/04a: pass
-Done dartk-vm debug_x64 language/black_listed_test/04b: pass
-Done dartk-vm debug_x64 language/black_listed_test/05a: pass
-Done dartk-vm debug_x64 language/black_listed_test/04c: pass
-Done dartk-vm debug_x64 language/black_listed_test/05b: pass
-Done dartk-vm debug_x64 language/black_listed_test/06a: pass
-Done dartk-vm debug_x64 language/black_listed_test/05c: pass
-Done dartk-vm debug_x64 language/black_listed_test/06b: pass
-Done dartk-vm debug_x64 language/black_listed_test/06c: pass
-Done dartk-vm debug_x64 language/black_listed_test/07b: pass
-Done dartk-vm debug_x64 language/black_listed_test/07a: pass
-Done dartk-vm debug_x64 language/black_listed_test/07c: pass
-Done dartk-vm debug_x64 language/black_listed_test/08a: pass
-Done dartk-vm debug_x64 language/black_listed_test/08b: pass
-Done dartk-vm debug_x64 language/black_listed_test/08c: pass
-Done dartk-vm debug_x64 language/black_listed_test/09a: pass
-Done dartk-vm debug_x64 language/black_listed_test/09b: pass
-Done dartk-vm debug_x64 language/black_listed_test/10a: pass
-Done dartk-vm debug_x64 language/black_listed_test/09c: pass
-Done dartk-vm debug_x64 language/black_listed_test/10b: pass
-Done dartk-vm debug_x64 language/black_listed_test/10c: pass
-Done dartk-vm debug_x64 language/black_listed_test/13a: pass
-Done dartk-vm debug_x64 language/black_listed_test/13c: pass
-Done dartk-vm debug_x64 language/black_listed_test/13b: pass
-Done dartk-vm debug_x64 language/black_listed_test/14a: pass
-Done dartk-vm debug_x64 language/black_listed_test/14b: pass
-Done dartk-vm debug_x64 language/black_listed_test/14c: pass
-Done dartk-vm debug_x64 language/cyclic_type_variable_test/none: pass
-Done dartk-vm debug_x64 language/cyclic_type_variable_test/01: pass
-Done dartk-vm debug_x64 language/cyclic_type_variable_test/02: pass
-Done dartk-vm debug_x64 language/cyclic_type_variable_test/03: pass
-Done dartk-vm debug_x64 language/cyclic_type_variable_test/04: pass
-Done dartk-vm debug_x64 language/generic_method_types_test/none: pass
-Done dartk-vm debug_x64 language/generic_method_types_test/01: pass
-Done dartk-vm debug_x64 language/generic_method_types_test/02: pass
-Done dartk-vm debug_x64 language/async_test/constructor2: pass
-Done dartk-vm debug_x64 language/async_test/constructor3: pass
-Done dartk-vm debug_x64 language/type_check_const_function_typedef2_test/none: pass
-Done dartk-vm debug_x64 language/generic_method_types_test/03: pass
-Done dartk-vm debug_x64 language/type_check_const_function_typedef2_test/00: pass
-Done dartk-vm debug_x64 language/async_test/type-mismatch2: pass
-Done dartk-vm debug_x64 language/async_test/none: pass
-Done dartk-vm debug_x64 language/async_test/constructor4: pass
-Done dartk-vm debug_x64 language/async_test/setter1: pass
-Done dartk-vm debug_x64 language/async_test/type-mismatch3: pass
-Done dartk-vm debug_x64 language/async_test/type-mismatch4: pass
-Done dartk-vm debug_x64 language/issue18628_2_test/none: pass
-Done dartk-vm debug_x64 language/string_interpolate1_negative_test: pass
-Done dartk-vm debug_x64 language/issue18628_2_test/01: pass
-Done dartk-vm debug_x64 language/malformed2_test/none: pass
-Done dartk-vm debug_x64 language/async_test/type-mismatch1: pass
-Done dartk-vm debug_x64 language/malformed2_test/00: pass
-Done dartk-vm debug_x64 language/malformed2_test/01: pass
-Done dartk-vm debug_x64 language/constructor6_test: pass
-Done dartk-vm debug_x64 language/named_parameters_with_object_property_names_test: pass
-Done dartk-vm debug_x64 language/rewrite_if_return_test: pass
-Done dartk-vm debug_x64 language/config_import_corelib_test: pass
-Done dartk-vm debug_x64 language/no_such_method_test: pass
-Done dartk-vm debug_x64 language/generic_native_test: pass
-Done dartk-vm debug_x64 language/function_subtype_factory1_test: pass
-Done dartk-vm debug_x64 language/comparison_test: pass
-Done dartk-vm debug_x64 language/param1_test: pass
-Done dartk-vm debug_x64 language/null_method_test: pass
-Done dartk-vm debug_x64 language/type_conversion_ssa_test: pass
-Done dartk-vm debug_x64 language/named_parameters4_test: pass
-Done dartk-vm debug_x64 language/string_interpolation_and_buffer_test: pass
-Done dartk-vm debug_x64 language/logical_expression3_test: pass
-Done dartk-vm debug_x64 language/loop_exchange2_test: pass
-Done dartk-vm debug_x64 language/const_locals_test: pass
-Done dartk-vm debug_x64 language/regress_25122_test: pass
-Done dartk-vm debug_x64 language/param_test: pass
-Done dartk-vm debug_x64 language/string_interpolate2_test: pass
-Done dartk-vm debug_x64 language/closures_initializer2_test: pass
-Done dartk-vm debug_x64 language/private_mixin_exception_throw_test: pass
-Done dartk-vm debug_x64 language/generic_instanceof3_test: pass
-Done dartk-vm debug_x64 language/savannah_test: pass
-Done dartk-vm debug_x64 language/mixin_extends_is_test: pass
-Done dartk-vm debug_x64 language/super_abstract_method_test: pass
-Done dartk-vm debug_x64 language/minify_closure_variable_collision_test: pass
-Done dartk-vm debug_x64 language/factory_arrow_test: pass
-Done dartk-vm debug_x64 language/inference_captured_variable_test: pass
-Done dartk-vm debug_x64 language/compile_time_constant_g_test: pass
-Done dartk-vm debug_x64 language/map_test: pass
-Done dartk-vm debug_x64 language/list_test: pass
-Done dartk-vm debug_x64 language/issue23244_test: pass
-Done dartk-vm debug_x64 language/range_analysis_test: pass
-Done dartk-vm debug_x64 language/instanceof_optimized_test: pass
-Done dartk-vm debug_x64 language/issue3806_test: pass
-Done dartk-vm debug_x64 language/mixin_mixin_bound2_test: pass
-Done dartk-vm debug_x64 language/const_global_test: pass
-Done dartk-vm debug_x64 language/do_while3_test: pass
-Done dartk-vm debug_x64 language/try_catch5_test: pass
-Done dartk-vm debug_x64 language/import_collection_no_prefix_test: pass
-Done dartk-vm debug_x64 language/type_promotion_more_specific_test/none: pass
-Done dartk-vm debug_x64 language/execute_finally11_test: pass
-Done dartk-vm debug_x64 language/type_promotion_more_specific_test/01: pass
-Done dartk-vm debug_x64 language/regress_26948_test: pass
-Done dartk-vm debug_x64 language/type_promotion_more_specific_test/02: pass
-Done dartk-vm debug_x64 language/type_promotion_more_specific_test/03: pass
-Done dartk-vm debug_x64 language/type_promotion_more_specific_test/04: pass
-Done dartk-vm debug_x64 language/type_promotion_more_specific_test/05: pass
-Done dartk-vm debug_x64 language/type_promotion_more_specific_test/07: pass
-Done dartk-vm debug_x64 language/type_promotion_more_specific_test/06: pass
-Done dartk-vm debug_x64 language/type_promotion_more_specific_test/08: pass
-Done dartk-vm debug_x64 language/type_promotion_more_specific_test/09: pass
-Done dartk-vm debug_x64 language/type_promotion_more_specific_test/10: pass
-Done dartk-vm debug_x64 language/unsupported_operators_test/02: pass
-Done dartk-vm debug_x64 language/unsupported_operators_test/01: pass
-Done dartk-vm debug_x64 language/type_promotion_more_specific_test/11: pass
-Done dartk-vm debug_x64 language/type_promotion_more_specific_test/12: pass
-Done dartk-vm debug_x64 language/unsupported_operators_test/03: pass
-Done dartk-vm debug_x64 language/type_promotion_more_specific_test/13: pass
-Done dartk-vm debug_x64 language/unsupported_operators_test/04: pass
-Done dartk-vm debug_x64 language/unsupported_operators_test/none: pass
-Done dartk-vm debug_x64 language/getter_parameters_test/01: pass
-Done dartk-vm debug_x64 language/getter_parameters_test/03: pass
-Done dartk-vm debug_x64 language/getter_parameters_test/02: pass
-Done dartk-vm debug_x64 language/constructor_named_arguments_test/01: pass
-Done dartk-vm debug_x64 language/getter_parameters_test/none: pass
-Done dartk-vm debug_x64 language/constructor_named_arguments_test/none: pass
-Done dartk-vm debug_x64 language/map_literal1_test/none: pass
-Done dartk-vm debug_x64 language/map_literal1_test/01: pass
-Done dartk-vm debug_x64 language/getter_parameters_test/04: pass
-Done dartk-vm debug_x64 language/proxy2_test/none: pass
-Done dartk-vm debug_x64 language/constructor_redirect_test/none: pass
-Done dartk-vm debug_x64 language/constructor_redirect_test/01: pass
-Done dartk-vm debug_x64 language/proxy2_test/02: pass
-Done dartk-vm debug_x64 language/proxy2_test/01: pass
-Done dartk-vm debug_x64 language/proxy2_test/04: pass
-Done dartk-vm debug_x64 language/proxy2_test/03: pass
-Done dartk-vm debug_x64 language/if_null_evaluation_order_test/none: pass
-Done dartk-vm debug_x64 language/if_null_evaluation_order_test/01: pass
-Done dartk-vm debug_x64 language/if_null_evaluation_order_test/02: pass
-Done dartk-vm debug_x64 language/const_evaluation_test/01: pass
-Done dartk-vm debug_x64 language/const_evaluation_test/none: pass
-Done dartk-vm debug_x64 language/getter_override_test/00: pass
-Done dartk-vm debug_x64 language/getter_override_test/none: pass
-Done dartk-vm debug_x64 language/getter_override_test/01: pass
-Done dartk-vm debug_x64 language/getter_override_test/02: pass
-Done dartk-vm debug_x64 language/string_interpolation5_test/01: pass
-Done dartk-vm debug_x64 language/getter_override_test/03: pass
-Done dartk-vm debug_x64 language/string_interpolation5_test/none: pass
-Done dartk-vm debug_x64 language/setter3_test/02: pass
-Done dartk-vm debug_x64 language/setter3_test/none: pass
-Done dartk-vm debug_x64 language/generic_metadata_test/02: pass
-Done dartk-vm debug_x64 language/generic_metadata_test/none: pass
-Done dartk-vm debug_x64 language/setter3_test/01: pass
-Done dartk-vm debug_x64 language/generic_metadata_test/03: pass
-Done dartk-vm debug_x64 language/generic_metadata_test/01: pass
-Done dartk-vm debug_x64 language/deferred_duplicate_prefix3_test/01: pass
-Done dartk-vm debug_x64 language/list_literal2_negative_test: pass
-Done dartk-vm debug_x64 language/deferred_duplicate_prefix3_test/none: pass
-Done dartk-vm debug_x64 language/rewrite_logical_test: pass
-Done dartk-vm debug_x64 language/override_field_method4_negative_test: pass
-Done dartk-vm debug_x64 language/inline_getter_test: pass
-Done dartk-vm debug_x64 language/function_subtype_local0_test: pass
-Done dartk-vm debug_x64 language/compile_time_constant2_test: pass
-Done dartk-vm debug_x64 language/named_parameters_passing_falsy_test: pass
-Done dartk-vm debug_x64 language/mixin_proto_test: pass
-Done dartk-vm debug_x64 language/issue11724_test: pass
-Done dartk-vm debug_x64 language/constant_locals_test/01: pass
-Done dartk-vm debug_x64 language/instance_method2_negative_test: pass
-Done dartk-vm debug_x64 language/regress_r24720_test: pass
-Done dartk-vm debug_x64 language/await_nonfuture_test: pass
-Done dartk-vm debug_x64 language/generic_field_mixin4_test: pass
-Done dartk-vm debug_x64 language/regress_14348_test: pass
-Done dartk-vm debug_x64 language/constant_locals_test/02: pass
-Done dartk-vm debug_x64 language/constant_locals_test/04: pass
-Done dartk-vm debug_x64 language/constant_locals_test/03: pass
-Done dartk-vm debug_x64 language/constant_locals_test/none: pass
-Done dartk-vm debug_x64 language/constant_locals_test/05: pass
-Done dartk-vm debug_x64 language/super_operator_index_test/none: pass
-Done dartk-vm debug_x64 language/super_operator_index_test/01: pass
-Done dartk-vm debug_x64 language/super_operator_index_test/05: pass
-Done dartk-vm debug_x64 language/super_operator_index_test/02: pass
-Done dartk-vm debug_x64 language/super_operator_index_test/03: pass
-Done dartk-vm debug_x64 language/super_operator_index_test/04: pass
-Done dartk-vm debug_x64 language/super_operator_index_test/06: pass
-Done dartk-vm debug_x64 language/super_operator_index_test/07: pass
-Done dartk-vm debug_x64 language/instanceof4_test/none: pass
-Done dartk-vm debug_x64 language/instanceof4_test/01: pass
-Done dartk-vm debug_x64 language/conditional_property_access_test/none: pass
-Done dartk-vm debug_x64 language/conditional_property_access_test/01: pass
-Done dartk-vm debug_x64 language/conditional_property_access_test/12: pass
-Done dartk-vm debug_x64 language/conditional_property_access_test/02: pass
-Done dartk-vm debug_x64 language/conditional_property_access_test/13: pass
-Done dartk-vm debug_x64 language/conditional_property_access_test/03: pass
-Done dartk-vm debug_x64 language/conditional_property_access_test/09: pass
-Done dartk-vm debug_x64 language/conditional_property_access_test/04: pass
-Done dartk-vm debug_x64 language/conditional_property_access_test/15: pass
-Done dartk-vm debug_x64 language/conditional_property_access_test/05: pass
-Done dartk-vm debug_x64 language/conditional_property_access_test/14: pass
-Done dartk-vm debug_x64 language/conditional_property_access_test/16: pass
-Done dartk-vm debug_x64 language/conditional_property_access_test/17: pass
-Done dartk-vm debug_x64 language/conditional_property_access_test/06: pass
-Done dartk-vm debug_x64 language/conditional_property_access_test/10: pass
-Done dartk-vm debug_x64 language/deferred_inheritance_constraints_test/none: pass
-Done dartk-vm debug_x64 language/conditional_property_access_test/11: pass
-Done dartk-vm debug_x64 language/deferred_inheritance_constraints_test/mixin: pass
-Done dartk-vm debug_x64 language/deferred_inheritance_constraints_test/extends: pass
-Done dartk-vm debug_x64 language/deferred_inheritance_constraints_test/implements: pass
-Done dartk-vm debug_x64 language/deferred_inheritance_constraints_test/redirecting_constructor: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/none: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/01: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/02: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/17: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/03: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/18: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/19: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/20: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/04: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/21: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/22: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/05: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/24: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/06: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/23: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/08: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/07: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/25: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/27: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/26: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/09: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/28: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/29: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/10: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/30: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/11: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/31: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/34: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/33: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/12: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/32: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/13: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/14: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/35: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/37: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/36: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/15: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/38: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/16: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/39: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/40: pass
-Done dartk-vm debug_x64 language/prefix_unqualified_invocation_test/01: pass
-Done dartk-vm debug_x64 language/prefix_unqualified_invocation_test/02: pass
-Done dartk-vm debug_x64 language/prefix_unqualified_invocation_test/none: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/01: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/02: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/none: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/04: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/03: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/05: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/06: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/07: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/08: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/10: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/09: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/11: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/12: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/13: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/29: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/14: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/30: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/15: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/16: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/18: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/17: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/19: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/20: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/21: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/22: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/23: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/24: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/26: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/27: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/25: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/31: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/28: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/32: pass
-Done dartk-vm debug_x64 language/typevariable_substitution2_test/none: pass
-Done dartk-vm debug_x64 language/deferred_duplicate_prefix2_test/01: pass
-Done dartk-vm debug_x64 language/typevariable_substitution2_test/01: pass
-Done dartk-vm debug_x64 language/typevariable_substitution2_test/02: pass
-Done dartk-vm debug_x64 language/deferred_duplicate_prefix2_test/none: pass
-Done dartk-vm debug_x64 language_2/and_operation_on_non_integer_operand_test: pass
-Done dartk-vm debug_x64 language_2/async_star_no_cancel_test: pass
-Done dartk-vm debug_x64 language_2/accessor_conflict_import_prefixed2_test: pass
-Done dartk-vm debug_x64 language_2/abstract_beats_arguments_test: pass
-Done dartk-vm debug_x64 language_2/async_and_or_test: pass
-Done dartk-vm debug_x64 language_2/assert_with_type_test_or_cast_test: pass
-Done dartk-vm debug_x64 language_2/assert_with_type_test_or_cast_test: pass
-Done dartk-vm debug_x64 language_2/async_cascade_test: pass
-Done dartk-vm debug_x64 language_2/async_control_structures_test: pass
-Done dartk-vm debug_x64 language_2/async_backwards_compatibility_1_test: pass
-Done dartk-vm debug_x64 language_2/async_regression_23058_test: pass
-Done dartk-vm debug_x64 language_2/aborting_switch_case_test: pass
-Done dartk-vm debug_x64 language_2/async_await_foreign_test: pass
-Done dartk-vm debug_x64 language_2/assert_assignable_type_test: pass
-Done dartk-vm debug_x64 language_2/async_star_regression_fisk_test: pass
-Done dartk-vm debug_x64 language_2/assert_with_message_test: pass
-Done dartk-vm debug_x64 language_2/async_star_take_reyield_test: pass
-Done dartk-vm debug_x64 language_2/async_star_cancel_while_paused_test: pass
-Done dartk-vm debug_x64 language_2/async_star_regression_2238_test: pass
-Done dartk-vm debug_x64 language_2/accessor_conflict_import_prefixed_test: pass
-Done dartk-vm debug_x64 language_2/accessor_conflict_import_test: pass
-Done dartk-vm debug_x64 language_2/assign_instance_method_test: pass
-Done dartk-vm debug_x64 language_2/async_break_in_finally_test: pass
-Done dartk-vm debug_x64 language_2/arithmetic_test: pass
-Done dartk-vm debug_x64 language_2/async_finally_rethrow_test: pass
-Done dartk-vm debug_x64 language_2/async_star_pause_test: pass
-Done dartk-vm debug_x64 language_2/async_rethrow_test: pass
-Done dartk-vm debug_x64 language_2/async_backwards_compatibility_2_test: pass
-Done dartk-vm debug_x64 language_2/async_call_test: pass
-Done dartk-vm debug_x64 language_2/allocate_test: pass
-Done dartk-vm debug_x64 language_2/ackermann_test: pass
-Done dartk-vm debug_x64 language_2/abstract_getter2_test: pass
-Done dartk-vm debug_x64 language_2/allocation_sinking_inlining_test: pass
-Done dartk-vm debug_x64 language_2/assertion_test: pass
-Done dartk-vm debug_x64 language_2/async_star_await_pauses_test: pass
-Done dartk-vm debug_x64 language_2/assign_op_test: pass
-Done dartk-vm debug_x64 language_2/arithmetic_smi_overflow_test: pass
-Done dartk-vm debug_x64 language_2/assign_top_method_test: pass
-Done dartk-vm debug_x64 language_2/allocate_large_object_test: pass
-Done dartk-vm debug_x64 language_2/accessor_conflict_import2_test: pass
-Done dartk-vm debug_x64 language_2/abstract_method_test: pass
-Done dartk-vm debug_x64 language_2/async_await_catch_regression_test: pass
-Done dartk-vm debug_x64 language_2/abstract_object_method_test: pass
-Done dartk-vm debug_x64 language_2/async_star_no_cancel2_test: pass
-Done dartk-vm debug_x64 language_2/arithmetic_canonicalization_test: pass
-Done dartk-vm debug_x64 language_2/adjacent_const_string_literals_test: pass
-Done dartk-vm debug_x64 language_2/assertion_initializer_const_error_test/01: pass
-Done dartk-vm debug_x64 language_2/async_star_cancel_and_throw_in_finally_test: pass
-Done dartk-vm debug_x64 language_2/accessor_conflict_export_test: pass
-Done dartk-vm debug_x64 language_2/assertion_initializer_const_error_test/none: pass
-Done dartk-vm debug_x64 language_2/assign_to_type_test/01: pass
-Done dartk-vm debug_x64 language_2/assign_to_type_test/none: pass
-Done dartk-vm debug_x64 language_2/assign_to_type_test/02: pass
-Done dartk-vm debug_x64 language_2/assign_to_type_test/03: pass
-Done dartk-vm debug_x64 language_2/assign_to_type_test/04: pass
-Done dartk-vm debug_x64 language_2/async_continue_label_test/await_in_init: pass
-Done dartk-vm debug_x64 language_2/async_continue_label_test/none: pass
-Done dartk-vm debug_x64 language_2/assignable_expression_test/01: pass
-Done dartk-vm debug_x64 language_2/async_continue_label_test/await_in_condition: pass
-Done dartk-vm debug_x64 language_2/assignable_expression_test/02: pass
-Done dartk-vm debug_x64 language_2/async_continue_label_test/await_in_update: pass
-Done dartk-vm debug_x64 language_2/assignable_expression_test/none: pass
-Done dartk-vm debug_x64 language_2/async_continue_label_test/await_in_body: pass
-Done dartk-vm debug_x64 language_2/assignable_expression_test/11: pass
-Done dartk-vm debug_x64 language_2/assignable_expression_test/12: pass
-Done dartk-vm debug_x64 language_2/assignable_expression_test/03: pass
-Done dartk-vm debug_x64 language_2/assignable_expression_test/13: pass
-Done dartk-vm debug_x64 language_2/assignable_expression_test/21: pass
-Done dartk-vm debug_x64 language_2/assignable_expression_test/23: pass
-Done dartk-vm debug_x64 language_2/assignable_expression_test/22: pass
-Done dartk-vm debug_x64 language_2/assignable_expression_test/31: pass
-Done dartk-vm debug_x64 language_2/assignable_expression_test/32: pass
-Done dartk-vm debug_x64 language_2/assignable_expression_test/41: pass
-Done dartk-vm debug_x64 language_2/assignable_expression_test/33: pass
-Done dartk-vm debug_x64 language_2/assignable_expression_test/43: pass
-Done dartk-vm debug_x64 language_2/assignable_expression_test/50: pass
-Done dartk-vm debug_x64 language_2/assignable_expression_test/42: pass
-Done dartk-vm debug_x64 language_2/generic_methods_generic_function_result_test/none: pass
-Done dartk-vm debug_x64 language_2/assign_static_type_test/01: pass
-Done dartk-vm debug_x64 language_2/assign_static_type_test/none: pass
-Done dartk-vm debug_x64 language_2/assign_static_type_test/02: pass
-Done dartk-vm debug_x64 language_2/assign_static_type_test/04: pass
-Done dartk-vm debug_x64 language_2/assign_static_type_test/03: pass
-Done dartk-vm debug_x64 language_2/generic_methods_generic_function_result_test/01: pass
-Done dartk-vm debug_x64 language_2/assign_static_type_test/05: pass
-Done dartk-vm debug_x64 language_2/assign_static_type_test/06: pass
-Done dartk-vm debug_x64 language_2/assertion_initializer_const_error2_test/cc01: pass
-Done dartk-vm debug_x64 language_2/assertion_initializer_const_error2_test/none: pass
-Done dartk-vm debug_x64 language_2/assertion_initializer_const_error2_test/cc04: pass
-Done dartk-vm debug_x64 language_2/assertion_initializer_const_error2_test/cc03: pass
-Done dartk-vm debug_x64 language_2/assertion_initializer_const_error2_test/cc05: pass
-Done dartk-vm debug_x64 language_2/assertion_initializer_const_error2_test/cc06: pass
-Done dartk-vm debug_x64 language_2/assertion_initializer_const_error2_test/cc07: pass
-Done dartk-vm debug_x64 language_2/assertion_initializer_const_error2_test/cc08: pass
-Done dartk-vm debug_x64 language_2/assertion_initializer_const_error2_test/cc02: pass
-Done dartk-vm debug_x64 language_2/assertion_initializer_const_error2_test/cc09: pass
-Done dartk-vm debug_x64 language_2/assertion_initializer_const_error2_test/cc11: pass
-Done dartk-vm debug_x64 language_2/assertion_initializer_const_error2_test/cc10: pass
-Done dartk-vm debug_x64 language_2/abstract_syntax_test/01: pass
-Done dartk-vm debug_x64 language_2/abstract_factory_constructor_test/none: pass
-Done dartk-vm debug_x64 language_2/abstract_factory_constructor_test/00: pass
-Done dartk-vm debug_x64 language_2/abstract_syntax_test/none: pass
-Done dartk-vm debug_x64 language_2/abstract_syntax_test/00: pass
-Done dartk-vm debug_x64 language_2/assertion_initializer_const_function_error_test/none: pass
-Done dartk-vm debug_x64 language_2/assertion_initializer_const_function_error_test/01: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/none: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a01b: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a01c: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a01d: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a01a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a04b: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a03a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a02a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a03b: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a04a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a04c: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a05a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a05d: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a05b: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a05f: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a05g: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a05c: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a05h: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a05e: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a06b: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a07b: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a08b: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a06a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a11a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a08a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a07a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a09a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a10a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a11b: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a12b: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a11c: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a12d: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a11d: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a12e: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a12f: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a12c: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a12a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a13b: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a13d: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a14b: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a12g: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a13a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a13c: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a14d: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a15b: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a14a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a14c: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a15d: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b00a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a15a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b00b: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b00d: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b00c: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a15c: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/e1: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/e2: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/e4: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/e6: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/e3: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/e5: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/e8: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/e7: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/e9: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b01c: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b01b: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b04b: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b01a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b06b: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b02a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b04a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b03a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b05a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b06a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b11a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b10b: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b07a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b08a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b09a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b10a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b11b: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b12b: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b12d: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b12a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b11c: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b12e: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b11d: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b12f: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b12c: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b13b: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b14b: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b12g: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b13d: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b13a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b14a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b14d: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b13c: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b15b: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b14c: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b15d: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b15a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/c01c: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/c01b: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b15c: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/c04b: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/c01a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/c02a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/c04a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/c03a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/c06a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/c05a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/c07a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/c11a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/c08a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/c11b: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/c09a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/c10a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/d01b: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/d01c: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/d04b: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/d01a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/d02a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/d04a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/d03a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/d05a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/d07a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/d06a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/d08a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/d08b: pass
-Done dartk-vm debug_x64 language_2/assertion_initializer_test: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/d10a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/d08c: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/d09a: pass
-Done dartk-vm debug_x64 language_2/assert_message_test: pass
-Done dartk-vm debug_x64 language_2/accessor_conflict_export2_test: pass
-Done dartk-vm debug_x64 language_2/assert_trailing_comma_test/none: pass
-Done dartk-vm debug_x64 language_2/assert_trailing_comma_test/01: pass
-Done dartk-vm debug_x64 language_2/assert_trailing_comma_test/02: pass
-Done dartk-vm debug_x64 language_2/adjacent_string_literals_test: pass
-Done dartk-vm debug_x64 language_2/async_star_regression_23116_test: pass
-Done dartk-vm debug_x64 language_2/async_star_stream_take_test: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/2: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/1: pass
-Done dartk-vm debug_x64 language_2/abstract_getter_test/none: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/3: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/4: pass
-Done dartk-vm debug_x64 language_2/abstract_getter_test/01: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/5: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/none: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/6: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/8: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/9: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/7: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/10: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/11: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/12: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/15: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/13: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/14: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/17: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/16: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/20: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/19: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/18: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/22: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/23: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/21: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/25: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/27: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/24: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/26: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/28: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/30: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/31: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/29: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/32: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/34: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/33: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/35: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/36: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/38: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/37: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/39: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/41: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/42: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/40: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/43: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/44: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/45: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/46: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/47: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/49: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/48: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/50: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/51: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/52: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/53: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/55: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/54: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/56: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/57: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/58: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/59: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/60: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/61: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/62: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/63: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/64: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/65: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/68: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/67: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/66: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/71: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/69: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/70: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/72: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/74: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/73: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/78: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/76: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/79: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/75: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/77: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/80: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/84: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/81: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/83: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/82: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/86: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/85: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/87: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/88: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/89: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/90: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/94: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/92: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/93: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/91: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/95: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/96: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/98: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/100: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/97: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/99: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/103: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/101: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/102: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/104: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/105: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/107: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/106: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/108: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/111: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/109: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/112: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/110: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/113: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/115: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/114: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/118: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/116: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/117: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/120: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/119: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/121: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/123: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/122: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/124: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/125: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/128: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/127: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/126: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/129: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/130: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/131: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/132: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/134: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/135: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/133: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/136: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/137: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/138: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/139: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/140: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/141: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/143: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/142: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/144: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/145: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/146: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/147: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/148: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/150: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/149: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/151: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/152: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/153: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/154: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/155: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/156: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/158: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/157: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/159: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/160: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/161: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/163: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/162: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/166: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/164: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/165: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/167: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/168: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/169: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/170: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/171: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/172: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/173: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/175: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/174: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/177: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/176: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/178: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/179: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/180: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/182: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/181: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/184: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/183: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/185: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/186: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/187: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/189: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/188: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/191: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/192: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/193: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/190: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/194: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/195: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/196: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/197: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/200: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/199: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/198: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/201: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/202: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/204: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/203: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/205: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/206: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/207: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/209: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/208: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/210: pass
-Done dartk-vm debug_x64 language_2/async_or_generator_return_type_stacktrace_test/02: pass
-Done dartk-vm debug_x64 language_2/async_or_generator_return_type_stacktrace_test/none: pass
-Done dartk-vm debug_x64 language_2/async_or_generator_return_type_stacktrace_test/01: pass
-Done dartk-vm debug_x64 language_2/async_return_types_test/none: pass
-Done dartk-vm debug_x64 language_2/async_or_generator_return_type_stacktrace_test/03: pass
-Done dartk-vm debug_x64 language_2/async_return_types_test/wrongTypeParameter: pass
-Done dartk-vm debug_x64 language_2/async_return_types_test/tooManyTypeParameters: pass
-Done dartk-vm debug_x64 language_2/async_return_types_test/wrongReturnType: pass
-Done dartk-vm debug_x64 language_2/async_return_types_test/return_value_sync_star: pass
-Done dartk-vm debug_x64 language_2/async_return_types_test/nestedFuture: pass
-Done dartk-vm debug_x64 language_2/assertion_initializer_const_function_test/none: pass
-Done dartk-vm debug_x64 language_2/assertion_initializer_const_function_test/01: pass
-Done dartk-vm debug_x64 language_2/abstract_exact_selector_test/none: pass
-Done dartk-vm debug_x64 language_2/abstract_exact_selector_test/01: pass
-Done dartk-vm debug_x64 lib/async/catch_errors25_test: pass
-Done dartk-vm debug_x64 lib/async/stack_trace15_test: pass
-Done dartk-vm debug_x64 lib/async/slow_consumer3_test: pass
-Done dartk-vm debug_x64 lib/async/intercept_schedule_microtask1_test: pass
-Done dartk-vm debug_x64 lib/async/zone_future_schedule_microtask_test: pass
-Done dartk-vm debug_x64 lib/async/run_zoned1_test: pass
-Done dartk-vm debug_x64 lib/async/stack_trace02_test: pass
-Done dartk-vm debug_x64 lib/async/zone_root_bind_test: pass
-Done dartk-vm debug_x64 lib/async/future_timeout_test: pass
-Done dartk-vm debug_x64 lib/async/stream_transformer_from_handlers_test: pass
-Done dartk-vm debug_x64 lib/async/stack_trace25_test: pass
-Done dartk-vm debug_x64 lib/async/future_foreach_test: pass
-Done dartk-vm debug_x64 lib/async/stack_trace14_test: pass
-Done dartk-vm debug_x64 lib/async/stream_iterator_test: pass
-Done dartk-vm debug_x64 lib/async/stream_state_test: pass
-Done dartk-vm debug_x64 lib/async/catch_errors28_test: pass
-Done dartk-vm debug_x64 lib/async/intercept_schedule_microtask3_test: pass
-Done dartk-vm debug_x64 lib/async/catch_errors5_test: pass
-Done dartk-vm debug_x64 lib/async/stack_trace17_test: pass
-Done dartk-vm debug_x64 lib/async/stack_trace13_test: pass
-Done dartk-vm debug_x64 lib/async/stream_distinct_test: pass
-Done dartk-vm debug_x64 lib/async/timer_cancel1_test: pass
-Done dartk-vm debug_x64 lib/async/intercept_schedule_microtask4_test: pass
-Done dartk-vm debug_x64 lib/async/catch_errors21_test: pass
-Done dartk-vm debug_x64 lib/async/stream_periodic5_test: pass
-Done dartk-vm debug_x64 lib/async/timer_cancel_test: pass
-Done dartk-vm debug_x64 lib/async/timer_test: pass
-Done dartk-vm debug_x64 lib/async/run_zoned4_test: pass
-Done dartk-vm debug_x64 lib/async/future_value_chain_test: pass
-Done dartk-vm debug_x64 lib/async/schedule_microtask3_test: pass
-Done dartk-vm debug_x64 lib/async/zone_bind_callback_unary_test: pass
-Done dartk-vm debug_x64 lib/async/timer_regress22626_test: pass
-Done dartk-vm debug_x64 lib/async/catch_errors27_test: pass
-Done dartk-vm debug_x64 lib/async/stream_last_where_test: pass
-Done dartk-vm debug_x64 lib/async/schedule_microtask_test: pass
-Done dartk-vm debug_x64 lib/async/stream_type_test: pass
-Done dartk-vm debug_x64 lib/async/timer_not_available_test: pass
-Done dartk-vm debug_x64 lib/async/stream_controller_test: pass
-Done dartk-vm debug_x64 lib/async/zone_debug_test: pass
-Done dartk-vm debug_x64 lib/async/zone_create_timer2_test: pass
-Done dartk-vm debug_x64 lib/async/zone_run_guarded_test: pass
-Done dartk-vm debug_x64 lib/async/multiple_timer_test: pass
-Done dartk-vm debug_x64 lib/async/stack_trace20_test: pass
-Done dartk-vm debug_x64 lib/async/stream_from_iterable_test: pass
-Done dartk-vm debug_x64 lib/async/stream_take_test: pass
-Done dartk-vm debug_x64 lib/async/stream_periodic2_test: pass
-Done dartk-vm debug_x64 lib/async/catch_errors16_test: pass
-Done dartk-vm debug_x64 lib/async/stack_trace11_test: pass
-Done dartk-vm debug_x64 lib/async/catch_errors3_test: pass
-Done dartk-vm debug_x64 lib/async/stack_trace10_test: pass
-Done dartk-vm debug_x64 lib/async/catch_errors2_test: pass
-Done dartk-vm debug_x64 lib/async/timer_isActive_test: pass
-Done dartk-vm debug_x64 lib/async/stream_empty_test: pass
-Done dartk-vm debug_x64 lib/async/future_value_chain2_test: pass
-Done dartk-vm debug_x64 lib/async/zone_empty_description2_test: pass
-Done dartk-vm debug_x64 lib/async/stream_event_transformed_test: pass
-Done dartk-vm debug_x64 lib/async/zone_error_callback_test: pass
-Done dartk-vm debug_x64 lib/async/wait_for_cancel_test: pass
-Done dartk-vm debug_x64 lib/async/future_or_only_in_async_test/00: pass
-Done dartk-vm debug_x64 lib/async/future_or_only_in_async_test/none: pass
-Done dartk-vm debug_x64 lib/async/async_await_zones_test: pass
-Done dartk-vm debug_x64 lib/async/stack_trace04_test: pass
-Done dartk-vm debug_x64 lib/async/stream_first_where_test: pass
-Done dartk-vm debug_x64 lib/async/stream_timeout_test: pass
-Done dartk-vm debug_x64 lib/async/zone_run_test: pass
-Done dartk-vm debug_x64 lib/async/schedule_microtask2_test: pass
-Done dartk-vm debug_x64 lib/async/catch_errors4_test: pass
-Done dartk-vm debug_x64 lib/async/catch_errors15_test: pass
-Done dartk-vm debug_x64 lib/async/stack_trace07_test: pass
-Done dartk-vm debug_x64 lib/async/zone_run_unary_test: pass
-Done dartk-vm debug_x64 lib/async/schedule_microtask5_test: pass
-Done dartk-vm debug_x64 lib/async/catch_errors6_test: pass
-Done dartk-vm debug_x64 lib/async/zone_create_periodic_timer_test: pass
-Done dartk-vm debug_x64 lib/async/stack_trace05_test: pass
-Done dartk-vm debug_x64 lib/async/zone_bind_test: pass
-Done dartk-vm debug_x64 lib/async/stream_transform_test: pass
-Done dartk-vm debug_x64 lib/async/stack_trace24_test: pass
-Done dartk-vm debug_x64 lib/async/slow_consumer2_test: pass
-Done dartk-vm debug_x64 lib/async/future_or_non_strong_test: pass
-Done dartk-vm debug_x64 lib/async/future_value_chain4_test: pass
-Done dartk-vm debug_x64 lib/async/stream_transformer_test: pass
-Done dartk-vm debug_x64 lib/async/stream_subscription_as_future_test: pass
-Done dartk-vm debug_x64 lib/async/catch_errors24_test: pass
-Done dartk-vm debug_x64 lib/async/zone_fork_test: pass
-Done dartk-vm debug_x64 lib/async/first_regression_test: pass
-Done dartk-vm debug_x64 lib/async/zone_bind_callback_test: pass
-Done dartk-vm debug_x64 lib/async/future_value_chain3_test: pass
-Done dartk-vm debug_x64 lib/async/intercept_schedule_microtask2_test: pass
-Done dartk-vm debug_x64 lib/async/catch_errors11_test: pass
-Done dartk-vm debug_x64 lib/async/catch_errors7_test: pass
-Done dartk-vm debug_x64 lib/async/catch_errors18_test: pass
-Done dartk-vm debug_x64 lib/async/stream_state_nonzero_timer_test: pass
-Done dartk-vm debug_x64 lib/async/catch_errors22_test: pass
-Done dartk-vm debug_x64 lib/async/stream_subscription_cancel_test: pass
-Done dartk-vm debug_x64 lib/async/stream_iterator_double_cancel_test: pass
-Done dartk-vm debug_x64 lib/async/stream_listen_zone_test: pass
-Done dartk-vm debug_x64 lib/async/intercept_schedule_microtask5_test: pass
-Done dartk-vm debug_x64 lib/async/stack_trace12_test: pass
-Done dartk-vm debug_x64 lib/async/future_microtask_test: pass
-Done dartk-vm debug_x64 lib/async/catch_errors12_test: pass
-Done dartk-vm debug_x64 lib/async/zone_value_test: pass
-Done dartk-vm debug_x64 lib/async/stack_trace18_test: pass
-Done dartk-vm debug_x64 lib/async/stack_trace01_test: pass
-Done dartk-vm debug_x64 lib/async/run_zoned8_test: pass
-Done dartk-vm debug_x64 lib/async/stack_trace03_test: pass
-Done dartk-vm debug_x64 lib/async/stream_join_test: pass
-Done dartk-vm debug_x64 lib/async/catch_errors20_test: pass
-Done dartk-vm debug_x64 lib/async/stream_periodic_test: pass
-Done dartk-vm debug_x64 lib/async/future_or_strong_test: pass
-Done dartk-vm debug_x64 lib/async/catch_errors_test: pass
-Done dartk-vm debug_x64 lib/async/intercept_print1_test: pass
-Done dartk-vm debug_x64 lib/async/async_await_sync_completer_test: pass
-Done dartk-vm debug_x64 lib/async/stream_single_test: pass
-Done dartk-vm debug_x64 lib/async/run_zoned7_test: pass
-Done dartk-vm debug_x64 lib/async/catch_errors19_test: pass
-Done dartk-vm debug_x64 lib/async/stack_trace09_test: pass
-Done dartk-vm debug_x64 lib/async/zone_create_timer_test: pass
-Done dartk-vm debug_x64 lib/async/stream_view_test: pass
-Done dartk-vm debug_x64 lib/async/catch_errors26_test: pass
-Done dartk-vm debug_x64 lib/async/future_delayed_error_test: pass
-Done dartk-vm debug_x64 lib/async/run_zoned6_test/none: pass
-Done dartk-vm debug_x64 lib/async/future_constructor2_test: pass
-Done dartk-vm debug_x64 lib/async/timer_repeat_test: pass
-Done dartk-vm debug_x64 lib/async/run_zoned6_test/01: pass
-Done dartk-vm debug_x64 lib/async/run_zoned9_test/none: pass
-Done dartk-vm debug_x64 lib/async/run_zoned9_test/01: pass
-Done dartk-vm debug_x64 lib/async/future_test/none: pass
-Done dartk-vm debug_x64 lib/async/stream_from_futures_test: pass
-Done dartk-vm debug_x64 lib/async/future_test/01: pass
-Done dartk-vm debug_x64 lib/async/run_zoned5_test: pass
-Done dartk-vm debug_x64 lib/async/catch_errors17_test: pass
-Done dartk-vm debug_x64 lib/async/stack_trace19_test: pass
-Done dartk-vm debug_x64 lib/async/zone_register_callback_test: pass
-Done dartk-vm debug_x64 lib/async/stack_trace22_test: pass
-Done dartk-vm debug_x64 lib/async/stream_periodic6_test: pass
-Done dartk-vm debug_x64 lib/async/future_constructor_test: pass
-Done dartk-vm debug_x64 lib/async/stream_controller_async_test: pass
-Done dartk-vm debug_x64 lib/async/futures_test: pass
-Done dartk-vm debug_x64 lib/async/catch_errors23_test: pass
-Done dartk-vm debug_x64 lib/async/stream_periodic3_test: pass
-Done dartk-vm debug_x64 lib/async/zone_empty_description_test: pass
-Done dartk-vm debug_x64 lib/async/slow_consumer_test: pass
-Done dartk-vm debug_x64 lib/async/stack_trace08_test: pass
-Done dartk-vm debug_x64 lib/async/timer_cancel2_test: pass
-Done dartk-vm debug_x64 lib/async/catch_errors13_test: pass
-Done dartk-vm debug_x64 lib/async/catch_errors8_test: pass
-Done dartk-vm debug_x64 lib/async/stream_single_to_multi_subscriber_test: pass
-Done dartk-vm debug_x64 lib/async/stack_trace23_test: pass
-Done dartk-vm debug_x64 lib/async/stream_transformation_broadcast_test: pass
-Done dartk-vm debug_x64 lib/async/zone_register_callback_unary_test: pass
-Done dartk-vm debug_x64 lib/async/stream_zones_test: pass
-Done dartk-vm debug_x64 lib/async/stack_trace21_test: pass
-Done dartk-vm debug_x64 lib/async/intercept_schedule_microtask6_test: pass
-Done dartk-vm debug_x64 lib/async/stack_trace16_test: pass
-Done dartk-vm debug_x64 lib/async/stack_trace06_test: pass
-Done dartk-vm debug_x64 lib/async/catch_errors14_test: pass
-Done dartk-vm debug_x64 lib/developer/timeline_test: pass
-Done dartk-vm debug_x64 lib/async/stream_periodic4_test: pass
-Done dartk-vm debug_x64 lib/developer/inspect_test: pass
-Done dartk-vm debug_x64 lib/mirrors/delegate_class_test: pass
-Done dartk-vm debug_x64 lib/mirrors/type_argument_is_type_variable_test: pass
-Done dartk-vm debug_x64 lib/mirrors/invoke_closurization2_test: pass
-Done dartk-vm debug_x64 lib/mirrors/library_imports_shown_test: pass
-Done dartk-vm debug_x64 lib/mirrors/invoke_call_on_closure_test: pass
-Done dartk-vm debug_x64 lib/mirrors/method_mirror_source_test: pass
-Done dartk-vm debug_x64 lib/mirrors/method_mirror_returntype_test: pass
-Done dartk-vm debug_x64 lib/mirrors/inference_and_no_such_method_test: pass
-Done dartk-vm debug_x64 lib/mirrors/field_type_test: pass
-Done dartk-vm debug_x64 lib/mirrors/method_mirror_source_line_ending_test: pass
-Done dartk-vm debug_x64 lib/mirrors/invocation_cache_test: pass
-Done dartk-vm debug_x64 lib/mirrors/instance_members_with_override_test: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_class_mirror_test: pass
-Done dartk-vm debug_x64 lib/async/future_or_bad_type_test/extends: pass
-Done dartk-vm debug_x64 lib/mirrors/relation_assignable_test: pass
-Done dartk-vm debug_x64 lib/async/future_or_bad_type_test/with: pass
-Done dartk-vm debug_x64 lib/mirrors/library_uri_io_test: pass
-Done dartk-vm debug_x64 lib/async/future_or_bad_type_test/none: pass
-Done dartk-vm debug_x64 lib/async/future_or_bad_type_test/00: pass
-Done dartk-vm debug_x64 lib/async/future_or_bad_type_test/implements: pass
-Done dartk-vm debug_x64 lib/async/future_or_bad_type_test/01: pass
-Done dartk-vm debug_x64 lib/async/print_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/invoke_call_through_getter_test/none: pass
-Done dartk-vm debug_x64 lib/async/print_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/regress_19731_test: pass
-Done dartk-vm debug_x64 lib/mirrors/invoke_call_through_getter_test/named: pass
-Done dartk-vm debug_x64 lib/mirrors/intercepted_superclass_test: pass
-Done dartk-vm debug_x64 lib/mirrors/unnamed_mixin_application_test: pass
-Done dartk-vm debug_x64 lib/mirrors/typedef_test: pass
-Done dartk-vm debug_x64 lib/mirrors/delegate_call_through_getter_test: pass
-Done dartk-vm debug_x64 lib/mirrors/local_isolate_test: pass
-Done dartk-vm debug_x64 lib/mirrors/private_types_test: pass
-Done dartk-vm debug_x64 lib/mirrors/private_symbol_mangling_test: pass
-Done dartk-vm debug_x64 lib/mirrors/hierarchy_invariants_test: pass
-Done dartk-vm debug_x64 lib/mirrors/generic_local_function_test: pass
-Done dartk-vm debug_x64 lib/mirrors/regress_14304_test: pass
-Done dartk-vm debug_x64 lib/mirrors/array_tracing_test: pass
-Done dartk-vm debug_x64 lib/mirrors/private_symbol_test: pass
-Done dartk-vm debug_x64 lib/mirrors/library_imports_hidden_test: pass
-Done dartk-vm debug_x64 lib/mirrors/reflect_runtime_type_test: pass
-Done dartk-vm debug_x64 lib/mirrors/relation_subclass_test: pass
-Done dartk-vm debug_x64 lib/mirrors/spawn_function_root_library_test: pass
-Done dartk-vm debug_x64 lib/mirrors/closures_test: pass
-Done dartk-vm debug_x64 lib/mirrors/unused_mirrors2_test: pass
-Done dartk-vm debug_x64 lib/mirrors/abstract_test: pass
-Done dartk-vm debug_x64 lib/mirrors/hot_set_field_test: pass
-Done dartk-vm debug_x64 lib/mirrors/no_metadata_test: pass
-Done dartk-vm debug_x64 lib/mirrors/delegate_library_test: pass
-Done dartk-vm debug_x64 lib/mirrors/parameter_of_mixin_app_constructor_test: pass
-Done dartk-vm debug_x64 lib/mirrors/library_metatarget_test: pass
-Done dartk-vm debug_x64 lib/mirrors/fake_function_without_call_test: pass
-Done dartk-vm debug_x64 lib/mirrors/reflect_two_classes_test: pass
-Done dartk-vm debug_x64 lib/mirrors/library_imports_metadata_test: pass
-Done dartk-vm debug_x64 lib/mirrors/mirrors_reader_test: pass
-Done dartk-vm debug_x64 lib/mirrors/superclass_test: pass
-Done dartk-vm debug_x64 lib/mirrors/mirrors_test: pass
-Done dartk-vm debug_x64 lib/mirrors/reflected_type_typevars_test: pass
-Done dartk-vm debug_x64 lib/mirrors/disable_tree_shaking_test: pass
-Done dartk-vm debug_x64 lib/mirrors/unused_mirrors_test: pass
-Done dartk-vm debug_x64 lib/mirrors/enum_test: pass
-Done dartk-vm debug_x64 lib/mirrors/declarations_type_test: pass
-Done dartk-vm debug_x64 lib/mirrors/mirrors_used_generic_types_test: pass
-Done dartk-vm debug_x64 lib/mirrors/function_type_mirror_test: pass
-Done dartk-vm debug_x64 lib/mirrors/unused_mirrors7_test: pass
-Done dartk-vm debug_x64 lib/mirrors/model_test: pass
-Done dartk-vm debug_x64 lib/mirrors/function_apply_test: pass
-Done dartk-vm debug_x64 lib/mirrors/dart2js_mirrors_test: pass
-Done dartk-vm debug_x64 lib/mirrors/proxy_type_test: pass
-Done dartk-vm debug_x64 lib/mirrors/constructors_test: pass
-Done dartk-vm debug_x64 lib/mirrors/generic_superclass_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/generic_superclass_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/mirrors_used_typedef_declaration_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/mirrors_used_typedef_declaration_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/reflect_class_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/reflect_class_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_nested_constructor_call_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/reflect_class_test/02: pass
-Done dartk-vm debug_x64 lib/mirrors/symbol_validation_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_nested_constructor_call_test/03: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_nested_constructor_call_test/02: pass
-Done dartk-vm debug_x64 lib/mirrors/symbol_validation_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_nested_constructor_call_test/04: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_nested_constructor_call_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_nested_constructor_call_test/06: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_nested_constructor_call_test/05: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_nested_constructor_call_test/07: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_nested_constructor_call_test/08: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_nested_constructor_call_test/09: pass
-Done dartk-vm debug_x64 lib/mirrors/typedef_deferred_library_test: pass
-Done dartk-vm debug_x64 lib/mirrors/reflected_type_typedefs_test: pass
-Done dartk-vm debug_x64 lib/mirrors/instance_members_easier_test: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_const_map_test: pass
-Done dartk-vm debug_x64 lib/mirrors/equality_test: pass
-Done dartk-vm debug_x64 lib/mirrors/typedef_metadata_test: pass
-Done dartk-vm debug_x64 lib/mirrors/unused_mirrors_used_test: pass
-Done dartk-vm debug_x64 lib/mirrors/io_html_mutual_exclusion_test: pass
-Done dartk-vm debug_x64 lib/mirrors/generic_class_declaration_test: pass
-Done dartk-vm debug_x64 lib/mirrors/typedef_in_signature_test: pass
-Done dartk-vm debug_x64 lib/mirrors/unused_mirrors5_test: pass
-Done dartk-vm debug_x64 lib/mirrors/intercepted_class_test: pass
-Done dartk-vm debug_x64 lib/mirrors/parameter_annotation_mirror_test: pass
-Done dartk-vm debug_x64 lib/mirrors/constructor_optional_args_test: pass
-Done dartk-vm debug_x64 lib/mirrors/get_symbol_name_test: pass
-Done dartk-vm debug_x64 lib/mirrors/repeated_private_anon_mixin_app_test: pass
-Done dartk-vm debug_x64 lib/mirrors/fake_function_with_call_test: pass
-Done dartk-vm debug_x64 lib/mirrors/removed_api_test: pass
-Done dartk-vm debug_x64 lib/mirrors/relation_subtype_test: pass
-Done dartk-vm debug_x64 lib/mirrors/generic_mixin_test: pass
-Done dartk-vm debug_x64 lib/mirrors/new_instance_with_type_arguments_test: pass
-Done dartk-vm debug_x64 lib/mirrors/typedef_library_test: pass
-Done dartk-vm debug_x64 lib/mirrors/static_members_easier_test: pass
-Done dartk-vm debug_x64 lib/mirrors/top_level_accessors_test: pass
-Done dartk-vm debug_x64 lib/mirrors/library_exports_shown_test: pass
-Done dartk-vm debug_x64 lib/mirrors/other_declarations_location_test: pass
-Done dartk-vm debug_x64 lib/mirrors/to_string_test: pass
-Done dartk-vm debug_x64 lib/mirrors/mixin_application_test: pass
-Done dartk-vm debug_x64 lib/mirrors/reflectively_instantiate_uninstantiated_class_test: pass
-Done dartk-vm debug_x64 lib/mirrors/instantiate_abstract_class_test: pass
-Done dartk-vm debug_x64 lib/mirrors/reflected_type_function_type_test: pass
-Done dartk-vm debug_x64 lib/mirrors/class_mirror_location_test: pass
-Done dartk-vm debug_x64 lib/mirrors/synthetic_accessor_properties_test: pass
-Done dartk-vm debug_x64 lib/mirrors/optional_parameters_test: pass
-Done dartk-vm debug_x64 lib/mirrors/invoke_call_through_implicit_getter_test: pass
-Done dartk-vm debug_x64 lib/mirrors/mirrors_nsm_mismatch_test: pass
-Done dartk-vm debug_x64 lib/mirrors/invoke_private_test: pass
-Done dartk-vm debug_x64 lib/mirrors/private_class_field_test: pass
-Done dartk-vm debug_x64 lib/mirrors/generics_dynamic_test: pass
-Done dartk-vm debug_x64 lib/mirrors/empty_test: pass
-Done dartk-vm debug_x64 lib/mirrors/instance_members_test: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_test: pass
-Done dartk-vm debug_x64 lib/mirrors/get_field_cache_test: pass
-Done dartk-vm debug_x64 lib/mirrors/reflect_uninstantiated_class_test: pass
-Done dartk-vm debug_x64 lib/mirrors/typevariable_mirror_metadata_test: pass
-Done dartk-vm debug_x64 lib/mirrors/library_import_deferred_loading_test: pass
-Done dartk-vm debug_x64 lib/mirrors/get_symbol_name_no_such_method_test: pass
-Done dartk-vm debug_x64 lib/mirrors/unused_mirrors6_test: pass
-Done dartk-vm debug_x64 lib/mirrors/hot_get_field_test: pass
-Done dartk-vm debug_x64 lib/mirrors/lazy_static_test: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_constructor_arguments_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_constructor_arguments_test/02: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_constructor_arguments_test/03: pass
-Done dartk-vm debug_x64 lib/mirrors/new_instance_optional_arguments_test: pass
-Done dartk-vm debug_x64 lib/mirrors/generic_list_test: pass
-Done dartk-vm debug_x64 lib/mirrors/inherit_field_test: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_constructor_arguments_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_constructor_arguments_test/05: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_constructor_arguments_test/06: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_constructor_arguments_test/07: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_constructor_arguments_test/04: pass
-Done dartk-vm debug_x64 lib/mirrors/circular_factory_redirection_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/circular_factory_redirection_test/02: pass
-Done dartk-vm debug_x64 lib/mirrors/variable_is_const_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/variable_is_const_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/circular_factory_redirection_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/type_variable_owner_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/type_variable_owner_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/reflect_model_test: pass
-Done dartk-vm debug_x64 lib/mirrors/array_tracing3_test: pass
-Done dartk-vm debug_x64 lib/mirrors/static_members_test: pass
-Done dartk-vm debug_x64 lib/mirrors/mixin_test: pass
-Done dartk-vm debug_x64 lib/mirrors/deferred_mirrors_metatarget_test: pass
-Done dartk-vm debug_x64 lib/mirrors/invoke_closurization_test: pass
-Done dartk-vm debug_x64 lib/mirrors/superclass2_test: pass
-Done dartk-vm debug_x64 lib/mirrors/is_odd_test: pass
-Done dartk-vm debug_x64 lib/mirrors/delegate_test: pass
-Done dartk-vm debug_x64 lib/mirrors/instance_members_unimplemented_interface_test: pass
-Done dartk-vm debug_x64 lib/mirrors/libraries_test: pass
-Done dartk-vm debug_x64 lib/mirrors/deferred_mirrors_update_test: pass
-Done dartk-vm debug_x64 lib/mirrors/set_field_with_final_inheritance_test: pass
-Done dartk-vm debug_x64 lib/mirrors/get_field_test: pass
-Done dartk-vm debug_x64 lib/mirrors/generic_function_typedef_test: pass
-Done dartk-vm debug_x64 lib/mirrors/invoke_test: pass
-Done dartk-vm debug_x64 lib/mirrors/deferred_mirrors_metadata_test: pass
-Done dartk-vm debug_x64 lib/mirrors/mirrors_used_get_name_test: pass
-Done dartk-vm debug_x64 lib/mirrors/invoke_import_test: pass
-Done dartk-vm debug_x64 lib/mirrors/generics_special_types_test: pass
-Done dartk-vm debug_x64 lib/mirrors/set_field_with_final_test: pass
-Done dartk-vm debug_x64 lib/mirrors/mirrors_used_merge_test: pass
-Done dartk-vm debug_x64 lib/mirrors/array_tracing2_test: pass
-Done dartk-vm debug_x64 lib/mirrors/intercepted_cache_test: pass
-Done dartk-vm debug_x64 lib/mirrors/invoke_throws_test: pass
-Done dartk-vm debug_x64 lib/mirrors/mixin_members_test: pass
-Done dartk-vm debug_x64 lib/mirrors/class_mirror_type_variables_test: pass
-Done dartk-vm debug_x64 lib/mirrors/method_mirror_name_test: pass
-Done dartk-vm debug_x64 lib/mirrors/deferred_type_test: pass
-Done dartk-vm debug_x64 lib/mirrors/method_mirror_location_test: pass
-Done dartk-vm debug_x64 lib/mirrors/library_metadata_test: pass
-Done dartk-vm debug_x64 lib/mirrors/unused_mirrors8_test: pass
-Done dartk-vm debug_x64 lib/mirrors/typearguments_mirror_test: pass
-Done dartk-vm debug_x64 lib/mirrors/type_mirror_for_type_test: pass
-Done dartk-vm debug_x64 lib/mirrors/native_class_test: pass
-Done dartk-vm debug_x64 lib/mirrors/intercepted_object_test: pass
-Done dartk-vm debug_x64 lib/mirrors/generic_type_mirror_test: pass
-Done dartk-vm debug_x64 lib/mirrors/basic_types_in_dart_core_test: pass
-Done dartk-vm debug_x64 lib/mirrors/null_test: pass
-Done dartk-vm debug_x64 lib/mirrors/mirrors_used_get_name2_test: pass
-Done dartk-vm debug_x64 lib/mirrors/load_library_test: pass
-Done dartk-vm debug_x64 lib/mirrors/get_field_static_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/globalized_closures2_test/00: pass
-Done dartk-vm debug_x64 lib/mirrors/globalized_closures_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/get_field_static_test/00: pass
-Done dartk-vm debug_x64 lib/mirrors/globalized_closures2_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/globalized_closures_test/00: pass
-Done dartk-vm debug_x64 lib/mirrors/library_imports_bad_metadata_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/parameter_is_const_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/library_imports_bad_metadata_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/initializing_formals_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/initializing_formals_test/03: pass
-Done dartk-vm debug_x64 lib/mirrors/initializing_formals_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/parameter_is_const_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/mirror_in_static_init_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/list_constructor_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/list_constructor_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/mirror_in_static_init_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/accessor_cache_overflow_test: pass
-Done dartk-vm debug_x64 lib/mirrors/invoke_natives_malicious_test: pass
-Done dartk-vm debug_x64 lib/mirrors/parameter_metadata_test: pass
-Done dartk-vm debug_x64 lib/mirrors/type_variable_is_static_test: pass
-Done dartk-vm debug_x64 lib/mirrors/unmangled_type_test: pass
-Done dartk-vm debug_x64 lib/mirrors/null2_test: pass
-Done dartk-vm debug_x64 lib/mirrors/mirrors_used_inheritance_test: pass
-Done dartk-vm debug_x64 lib/mirrors/method_mirror_properties_test: pass
-Done dartk-vm debug_x64 lib/mirrors/library_exports_hidden_test: pass
-Done dartk-vm debug_x64 lib/mirrors/delegate_function_invocation_test: pass
-Done dartk-vm debug_x64 lib/mirrors/library_uri_package_test: pass
-Done dartk-vm debug_x64 lib/mirrors/operator_test: pass
-Done dartk-vm debug_x64 lib/mirrors/constructor_private_name_test: pass
-Done dartk-vm debug_x64 lib/mirrors/return_type_test: pass
-Done dartk-vm debug_x64 lib/mirrors/local_function_is_static_test: pass
-Done dartk-vm debug_x64 lib/mirrors/regress_26187_test: pass
-Done dartk-vm debug_x64 lib/mirrors/reflected_type_special_types_test: pass
-Done dartk-vm debug_x64 lib/mirrors/function_apply_mirrors_test: pass
-Done dartk-vm debug_x64 lib/mirrors/inherited_metadata_test: pass
-Done dartk-vm debug_x64 lib/mirrors/closurization_equivalence_test: pass
-Done dartk-vm debug_x64 lib/mirrors/static_const_field_test: pass
-Done dartk-vm debug_x64 lib/mirrors/library_imports_prefixed_show_hide_test: pass
-Done dartk-vm debug_x64 lib/mirrors/runtime_type_test: pass
-Done dartk-vm debug_x64 lib/mirrors/library_enumeration_deferred_loading_test: pass
-Done dartk-vm debug_x64 lib/mirrors/unnamed_library_test: pass
-Done dartk-vm debug_x64 lib/mirrors/static_test: pass
-Done dartk-vm debug_x64 lib/mirrors/library_imports_prefixed_test: pass
-Done dartk-vm debug_x64 lib/mirrors/unused_mirrors4_test: pass
-Done dartk-vm debug_x64 lib/mirrors/library_imports_deferred_test: pass
-Done dartk-vm debug_x64 lib/mirrors/generic_mixin_applications_test: pass
-Done dartk-vm debug_x64 lib/mirrors/invoke_private_wrong_library_test: pass
-Done dartk-vm debug_x64 lib/mirrors/generics_substitution_test: pass
-Done dartk-vm debug_x64 lib/mirrors/mirrors_resolve_fields_test: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_constructed_constant_test: pass
-Done dartk-vm debug_x64 lib/mirrors/unused_mirrors3_test: pass
-Done dartk-vm debug_x64 lib/mirrors/generic_f_bounded_mixin_application_test: pass
-Done dartk-vm debug_x64 lib/mirrors/regress_16321_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/regress_16321_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/static_metatarget_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/static_metatarget_test/02: pass
-Done dartk-vm debug_x64 lib/mirrors/static_metatarget_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/static_metatarget_test/03: pass
-Done dartk-vm debug_x64 lib/mirrors/invoke_call_through_implicit_getter_previously_accessed_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/invoke_call_through_implicit_getter_previously_accessed_test/named: pass
-Done dartk-vm debug_x64 lib/mirrors/raw_type_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/syntax_error_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/raw_type_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/syntax_error_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/constructor_kinds_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/constructor_kinds_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/mirrors_nsm_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/mirrors_nsm_test/dart2js: pass
-Done dartk-vm debug_x64 lib/mirrors/reflected_type_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/reflected_type_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/reflected_type_test/03: pass
-Done dartk-vm debug_x64 lib/mirrors/reflected_type_test/02: pass
-Done dartk-vm debug_x64 lib/mirrors/immutable_collections_test: pass
-Done dartk-vm debug_x64 lib/mirrors/abstract_class_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/abstract_class_test/00: pass
-Done dartk-vm debug_x64 lib/mirrors/generics_double_substitution_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/generics_double_substitution_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_scope_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/invoke_call_through_getter_previously_accessed_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/invoke_call_through_getter_previously_accessed_test/named: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_scope_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/unused_mirrors9_test: pass
-Done dartk-vm debug_x64 lib/math/math2_test: pass
-Done dartk-vm debug_x64 lib/math/random_secure_test: pass
-Done dartk-vm debug_x64 lib/math/rectangle_test: pass
-Done dartk-vm debug_x64 lib/math/math_parse_double_test: pass
-Done dartk-vm debug_x64 lib/math/coin_test: pass
-Done dartk-vm debug_x64 lib/math/low_test: pass
-Done dartk-vm debug_x64 lib/math/math_test: pass
-Done dartk-vm debug_x64 lib/math/double_pow_test: pass
-Done dartk-vm debug_x64 lib/math/random_test: pass
-Done dartk-vm debug_x64 lib/math/random_big_test: pass
-Done dartk-vm debug_x64 lib/math/pi_test: pass
-Done dartk-vm debug_x64 lib/math/min_max_test: pass
-Done dartk-vm debug_x64 lib/math/point_test: pass
-Done dartk-vm debug_x64 lib/profiler/metrics_num_test: pass
-Done dartk-vm debug_x64 lib/profiler/user_tags_test: pass
-Done dartk-vm debug_x64 lib/profiler/metrics_test: pass
-Done dartk-vm debug_x64 lib/typed_data/int64_list_load_store_test: pass
-Done dartk-vm debug_x64 lib/typed_data/float32x4_two_arg_shuffle_test: pass
-Done dartk-vm debug_x64 lib/typed_data/typed_list_iterable_test: pass
-Done dartk-vm debug_x64 lib/typed_data/typed_data_from_list_test: pass
-Done dartk-vm debug_x64 lib/typed_data/typed_data_load_test: pass
-Done dartk-vm debug_x64 lib/typed_data/setRange_3_test: pass
-Done dartk-vm debug_x64 lib/typed_data/int32x4_list_test: pass
-Done dartk-vm debug_x64 lib/typed_data/setRange_1_test: pass
-Done dartk-vm debug_x64 lib/typed_data/constructor_checks_test: pass
-Done dartk-vm debug_x64 lib/typed_data/typed_data_list_test: pass
-Done dartk-vm debug_x64 lib/typed_data/setRange_5_test: pass
-Done dartk-vm debug_x64 lib/typed_data/float32x4_unbox_phi_test: pass
-Done dartk-vm debug_x64 lib/typed_data/float32x4_cross_test: pass
-Done dartk-vm debug_x64 lib/typed_data/typed_data_hierarchy_test: pass
-Done dartk-vm debug_x64 lib/typed_data/float32x4_test: pass
-Done dartk-vm debug_x64 lib/typed_data/float32x4_test: pass
-Done dartk-vm debug_x64 lib/typed_data/setRange_4_test: pass
-Done dartk-vm debug_x64 lib/typed_data/float64x2_functional_test: pass
-Done dartk-vm debug_x64 lib/typed_data/int32x4_arithmetic_test: pass
-Done dartk-vm debug_x64 lib/typed_data/float64x2_functional_test: pass
-Done dartk-vm debug_x64 lib/typed_data/typed_data_sublist_type_test: pass
-Done dartk-vm debug_x64 lib/typed_data/float32x4_transpose_test: pass
-Done dartk-vm debug_x64 lib/typed_data/float64x2_typed_list_test: pass
-Done dartk-vm debug_x64 lib/typed_data/float32x4_list_test: pass
-Done dartk-vm debug_x64 lib/typed_data/int32x4_sign_mask_test: pass
-Done dartk-vm debug_x64 lib/typed_data/endianness_test: pass
-Done dartk-vm debug_x64 lib/typed_data/int32x4_test: pass
-Done dartk-vm debug_x64 lib/typed_data/typed_data_hierarchy_int64_test: pass
-Done dartk-vm debug_x64 lib/typed_data/setRange_2_test: pass
-Done dartk-vm debug_x64 lib/typed_data/int32x4_test: pass
-Done dartk-vm debug_x64 lib/typed_data/typed_data_load2_test: pass
-Done dartk-vm debug_x64 lib/typed_data/int32x4_shuffle_test: pass
-Done dartk-vm debug_x64 lib/typed_data/int32x4_bigint_test: pass
-Done dartk-vm debug_x64 lib/typed_data/float32x4_clamp_test: pass
-Done dartk-vm debug_x64 lib/typed_data/float32x4_unbox_regress_test: pass
-Done dartk-vm debug_x64 lib/typed_data/float32x4_sign_mask_test: pass
-Done dartk-vm debug_x64 lib/typed_data/native_interceptor_no_own_method_to_intercept_test: pass
-Done dartk-vm debug_x64 lib/typed_data/byte_data_test: pass
-Done dartk-vm debug_x64 lib/typed_data/simd_store_to_load_forward_test: pass
-Done dartk-vm debug_x64 lib/mirrors/generic_f_bounded_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/generic_f_bounded_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/generic_interface_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/generic_interface_test/01: pass
-Done dartk-vm debug_x64 lib/collection/hash_map_test: pass
-Done dartk-vm debug_x64 lib/typed_data/float32x4_shuffle_test: pass
-Done dartk-vm debug_x64 lib/collection/linked_list_test: pass
-Done dartk-vm debug_x64 lib/collection/hash_set_test: pass
-Done dartk-vm debug_x64 lib/convert/line_splitter_test: pass
-Done dartk-vm debug_x64 lib/convert/utf82_test: pass
-Done dartk-vm debug_x64 lib/convert/chunked_conversion1_test: pass
-Done dartk-vm debug_x64 lib/convert/json_lib_test: pass
-Done dartk-vm debug_x64 lib/convert/json_toEncodable_reviver_test: pass
-Done dartk-vm debug_x64 lib/convert/chunked_conversion_utf85_test: pass
-Done dartk-vm debug_x64 lib/convert/utf8_test: pass
-Done dartk-vm debug_x64 lib/convert/chunked_conversion_utf83_test: pass
-Done dartk-vm debug_x64 lib/convert/chunked_conversion_utf86_test: pass
-Done dartk-vm debug_x64 lib/convert/chunked_conversion_utf88_test: pass
-Done dartk-vm debug_x64 lib/convert/chunked_conversion_json_decode1_test: pass
-Done dartk-vm debug_x64 lib/convert/codec1_test: pass
-Done dartk-vm debug_x64 lib/convert/html_escape_test: pass
-Done dartk-vm debug_x64 lib/convert/chunked_conversion_json_encode1_test: pass
-Done dartk-vm debug_x64 lib/convert/ascii_test: pass
-Done dartk-vm debug_x64 lib/convert/streamed_conversion_utf8_decode_test: pass
-Done dartk-vm debug_x64 lib/convert/streamed_conversion_json_decode1_test: pass
-Done dartk-vm debug_x64 lib/convert/chunked_conversion_utf89_test: pass
-Done dartk-vm debug_x64 lib/convert/streamed_conversion_utf8_encode_test: pass
-Done dartk-vm debug_x64 lib/convert/utf83_test: pass
-Done dartk-vm debug_x64 lib/convert/streamed_conversion_json_utf8_encode_test: pass
-Done dartk-vm debug_x64 lib/convert/streamed_conversion_json_utf8_decode_test: pass
-Done dartk-vm debug_x64 lib/convert/json_pretty_test: pass
-Done dartk-vm debug_x64 lib/convert/json_util_test: pass
-Done dartk-vm debug_x64 lib/convert/chunked_conversion_utf8_test: pass
-Done dartk-vm debug_x64 lib/convert/utf8_encode_test: pass
-Done dartk-vm debug_x64 lib/convert/json_chunk_test: pass
-Done dartk-vm debug_x64 lib/convert/latin1_test: pass
-Done dartk-vm debug_x64 lib/convert/chunked_conversion2_test: pass
-Done dartk-vm debug_x64 lib/convert/close_test: pass
-Done dartk-vm debug_x64 lib/convert/json_test: pass
-Done dartk-vm debug_x64 lib/convert/json_utf8_chunk_test: pass
-Done dartk-vm debug_x64 lib/convert/utf84_test: pass
-Done dartk-vm debug_x64 lib/convert/streamed_conversion_json_encode1_test: pass
-Done dartk-vm debug_x64 lib/convert/encoding_test: pass
-Done dartk-vm debug_x64 lib/convert/codec2_test: pass
-Done dartk-vm debug_x64 lib/convert/chunked_conversion_utf84_test: pass
-Done dartk-vm debug_x64 lib/convert/chunked_conversion_utf82_test: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/01: pass
-Done dartk-vm debug_x64 lib/convert/chunked_conversion_utf87_test: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/03: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/02: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/04: pass
-Done dartk-vm debug_x64 lib/convert/base64_test/none: pass
-Done dartk-vm debug_x64 lib/convert/base64_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/06: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/05: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/07: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/08: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/09: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/10: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/12: pass
-Done dartk-vm debug_x64 lib/convert/utf85_test: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/11: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/15: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/17: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/18: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/19: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/20: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/21: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/13: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/14: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/22: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/24: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/25: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/23: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/26: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/28: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/29: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/30: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/31: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/27: pass
-Done dartk-vm debug_x64 lib/mirrors/library_metadata2_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/library_metadata2_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/invoke_named_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/invoke_named_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/reflected_type_generics_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/reflected_type_generics_test/01: pass
-Done dartk-vm debug_x64 lib/convert/streamed_conversion_json_utf8_decode_test: pass
-Done dartk-vm debug_x64 lib/mirrors/reflected_type_generics_test/03: pass
-Done dartk-vm debug_x64 lib/mirrors/reflected_type_generics_test/04: pass
-Done dartk-vm debug_x64 lib/mirrors/reflected_type_generics_test/05: pass
-Done dartk-vm debug_x64 lib/mirrors/reflected_type_generics_test/06: pass
-Done dartk-vm debug_x64 lib/mirrors/reflected_type_generics_test/02: pass
-Done dartk-vm debug_x64 lib/mirrors/redirecting_factory_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/redirecting_factory_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/reflected_type_classes_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/redirecting_factory_test/02: pass
-Done dartk-vm debug_x64 lib/mirrors/reflected_type_classes_test/02: pass
-Done dartk-vm debug_x64 lib/mirrors/reflected_type_classes_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/reflected_type_classes_test/03: pass
-Done dartk-vm debug_x64 lib/mirrors/generic_bounded_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/generic_bounded_test/02: pass
-Done dartk-vm debug_x64 lib/mirrors/generic_bounded_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/parameter_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/parameter_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/library_declarations_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/library_declarations_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/typedef_reflected_type_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/typedef_reflected_type_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/generics_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/generic_bounded_by_type_parameter_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/generics_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/generic_bounded_by_type_parameter_test/02: pass
-Done dartk-vm debug_x64 lib/mirrors/generic_bounded_by_type_parameter_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/class_declarations_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/class_declarations_test/01: pass
-Done dartk-vm debug_x64 lib_2/math/call_cmath_box_failure_path_test: pass
-Done dartk-vm debug_x64 standalone/link_natives_lazily_test: pass
-Done dartk-vm debug_x64 standalone/number_identity_test: pass
-Done dartk-vm debug_x64 standalone/out_of_memory_test: pass
-Done dartk-vm debug_x64 standalone/map_insert_remove_oom_test: pass
-Done dartk-vm debug_x64 standalone/http_launch_test: pass
-Done dartk-vm debug_x64 standalone/http_launch_test: pass
-Done dartk-vm debug_x64 standalone/http_launch_test: pass
-Done dartk-vm debug_x64 standalone/dwarf_stack_trace_test: pass
-Done dartk-vm debug_x64 standalone/int_array_test: pass
-Done dartk-vm debug_x64 standalone/http_launch_test: pass
-Done dartk-vm debug_x64 standalone/typed_array_int64_uint64_test: pass
-Done dartk-vm debug_x64 standalone/int_list_test: pass
-Done dartk-vm debug_x64 standalone/double_temp_test: pass
-Done dartk-vm debug_x64 standalone/no_support_disassembler_test: pass
-Done dartk-vm debug_x64 standalone/assert_assignable_canon_test: pass
-Done dartk-vm debug_x64 standalone/regress_28854_1_test: pass
-Done dartk-vm debug_x64 standalone/no_profiler_test: pass
-Done dartk-vm debug_x64 standalone/causal_async_stack_test: pass
-Done dartk-vm debug_x64 standalone/typed_array_test: pass
-Done dartk-vm debug_x64 standalone/pow_test: pass
-Done dartk-vm debug_x64 standalone/assert_test: pass
-Done dartk-vm debug_x64 standalone/bytedata_test: pass
-Done dartk-vm debug_x64 standalone/no_lazy_dispatchers_test: pass
-Done dartk-vm debug_x64 standalone/byte_array_view_optimized_test: pass
-Done dartk-vm debug_x64 standalone/double_to_int_test: pass
-Done dartk-vm debug_x64 standalone/no_support_timeline_test: pass
-Done dartk-vm debug_x64 standalone/no_allow_absolute_addresses_test: pass
-Done dartk-vm debug_x64 standalone/medium_integer_test: pass
-Done dartk-vm debug_x64 standalone/package/package_isolate_test: pass
-Done dartk-vm debug_x64 standalone/package/invalid_uri_test: pass
-Done dartk-vm debug_x64 standalone/package/package_test: pass
-Done dartk-vm debug_x64 standalone/float_array_test: pass
-Done dartk-vm debug_x64 standalone/regress_28854_2_test: pass
-Done dartk-vm debug_x64 standalone/package/scenarios/packages_dir_only/packages_dir_only_noimports_test: pass
-Done dartk-vm debug_x64 standalone/package/scenarios/packages_dir_only/packages_dir_only_test: pass
-Done dartk-vm debug_x64 standalone/package/scenarios/packages_file_in_parent/sub/packages_file_in_parent_test: pass
-Done dartk-vm debug_x64 standalone/package/scenarios/packages_file_in_parent/sub/packages_file_in_parent_noimports_test: pass
-Done dartk-vm debug_x64 standalone/package/scenarios/both_dir_and_file/both_dir_and_file_noimports_test: pass
-Done dartk-vm debug_x64 standalone/package/scenarios/both_dir_and_file/prefers_packages_file_test: pass
-Done dartk-vm debug_x64 standalone/package/scenarios/invalid/invalid_utf8_test: pass
-Done dartk-vm debug_x64 standalone/package/scenarios/invalid/same_package_twice_test: pass
-Done dartk-vm debug_x64 standalone/package/scenarios/invalid/non_existent_packages_file_test: pass
-Done dartk-vm debug_x64 standalone/package/scenarios/invalid/invalid_package_name_test: pass
-Done dartk-vm debug_x64 standalone/package/scenarios/packages_file_only/packages_file_only_noimports_test: pass
-Done dartk-vm debug_x64 standalone/package/scenarios/packages_file_strange_formatting/empty_package_dir_test: pass
-Done dartk-vm debug_x64 standalone/package/scenarios/packages_file_only/packages_file_only_test: pass
-Done dartk-vm debug_x64 standalone/package/scenarios/empty_packages_file/empty_packages_file_option_test: pass
-Done dartk-vm debug_x64 standalone/package/scenarios/empty_packages_file/empty_packages_file_discovery_test: pass
-Done dartk-vm debug_x64 standalone/package/scenarios/packages_file_strange_formatting/mixed_line_ends_test: pass
-Done dartk-vm debug_x64 standalone/package/scenarios/packages_file_strange_formatting/empty_lines_test: pass
-Done dartk-vm debug_x64 standalone/package/package1_test: pass
-Done dartk-vm debug_x64 standalone/package/scenarios/packages_option_only/packages_option_only_noimports_test: pass
-Done dartk-vm debug_x64 standalone/package/scenarios/empty_packages_file/empty_packages_file_noimports_test: pass
-Done dartk-vm debug_x64 standalone/package/scenarios/packages_option_only/packages_option_only_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_secure_socket_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_secure_socket_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_secure_socket_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_secure_socket_test: pass
-Done dartk-vm debug_x64 standalone/io/process_invalid_arguments_test: pass
-Done dartk-vm debug_x64 standalone/io/regress_9194_test: pass
-Done dartk-vm debug_x64 standalone/typed_data_test: pass
-Done dartk-vm debug_x64 standalone/io/network_interface_test: pass
-Done dartk-vm debug_x64 standalone/io/http_server_idle_timeout_test: pass
-Done dartk-vm debug_x64 standalone/io/http_server_idle_timeout_test: pass
-Done dartk-vm debug_x64 standalone/fragmentation_test: pass
-Done dartk-vm debug_x64 standalone/io/http_server_idle_timeout_test: pass
-Done dartk-vm debug_x64 standalone/io/link_test: pass
-Done dartk-vm debug_x64 standalone/io/http_server_idle_timeout_test: pass
-Done dartk-vm debug_x64 standalone/io/process_path_test: pass
-Done dartk-vm debug_x64 standalone/io/http_no_reason_phrase_test: pass
-Done dartk-vm debug_x64 standalone/io/http_no_reason_phrase_test: pass
-Done dartk-vm debug_x64 standalone/io/http_no_reason_phrase_test: pass
-Done dartk-vm debug_x64 standalone/io/http_no_reason_phrase_test: pass
-Done dartk-vm debug_x64 standalone/io/regress_21987_test: pass
-Done dartk-vm debug_x64 standalone/io/http_close_test: pass
-Done dartk-vm debug_x64 standalone/io/http_close_test: pass
-Done dartk-vm debug_x64 standalone/io/http_close_test: pass
-Done dartk-vm debug_x64 standalone/io/http_server_early_client_close2_test: pass
-Done dartk-vm debug_x64 standalone/io/http_close_test: pass
-Done dartk-vm debug_x64 standalone/io/http_server_early_client_close2_test: pass
-Done dartk-vm debug_x64 standalone/io/http_server_early_client_close2_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_socket_cross_process_test: pass
-Done dartk-vm debug_x64 standalone/io/http_server_early_client_close2_test: pass
-Done dartk-vm debug_x64 standalone/io/socket_test: pass
-Done dartk-vm debug_x64 standalone/io/socket_test: pass
-Done dartk-vm debug_x64 standalone/io/socket_test: pass
-Done dartk-vm debug_x64 standalone/io/socket_test: pass
-Done dartk-vm debug_x64 standalone/io/secure_server_client_certificate_test: pass
-Done dartk-vm debug_x64 standalone/io/directory_list_nonexistent_test: pass
-Done dartk-vm debug_x64 standalone/io/http_connection_close_test: pass
-Done dartk-vm debug_x64 standalone/io/http_auth_test: pass
-Done dartk-vm debug_x64 standalone/io/create_recursive_test: pass
-Done dartk-vm debug_x64 standalone/io/directory_list_sync_test: pass
-Done dartk-vm debug_x64 standalone/io/file_non_ascii_test: pass
-Done dartk-vm debug_x64 standalone/io/sleep_test: pass
-Done dartk-vm debug_x64 standalone/io/socket_exception_test: pass
-Done dartk-vm debug_x64 standalone/io/stdout_stderr_non_blocking_test: pass
-Done dartk-vm debug_x64 standalone/io/web_socket_protocol_processor_test: pass
-Done dartk-vm debug_x64 standalone/io/file_error_test: pass
-Done dartk-vm debug_x64 standalone/io/process_environment_test: pass
-Done dartk-vm debug_x64 standalone/io/pipe_server_test: pass
-Done dartk-vm debug_x64 standalone/io/pipe_server_test: pass
-Done dartk-vm debug_x64 standalone/io/pipe_server_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_server_socket_cancel_test: pass
-Done dartk-vm debug_x64 standalone/io/pipe_server_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_server_socket_cancel_test: pass
-Done dartk-vm debug_x64 standalone/io/http_cross_process_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_server_socket_cancel_test: pass
-Done dartk-vm debug_x64 standalone/io/issue_22636_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_server_socket_cancel_test: pass
-Done dartk-vm debug_x64 standalone/io/system_encoding_test: pass
-Done dartk-vm debug_x64 standalone/io/http_redirect_test: pass
-Done dartk-vm debug_x64 standalone/io/directory_test: pass
-Done dartk-vm debug_x64 standalone/io/file_stat_test: pass
-Done dartk-vm debug_x64 standalone/io/web_socket_typed_data_test: pass
-Done dartk-vm debug_x64 standalone/io/web_socket_typed_data_test: pass
-Done dartk-vm debug_x64 standalone/io/web_socket_typed_data_test: pass
-Done dartk-vm debug_x64 standalone/io/socket_port_test: pass
-Done dartk-vm debug_x64 standalone/io/web_socket_typed_data_test: pass
-Done dartk-vm debug_x64 standalone/io/process_start_exception_test: pass
-Done dartk-vm debug_x64 standalone/io/process_run_output_test: pass
-Done dartk-vm debug_x64 standalone/io/directory_list_pause_test: pass
-Done dartk-vm debug_x64 standalone/io/secure_client_raw_server_test: pass
-Done dartk-vm debug_x64 standalone/io/secure_client_raw_server_test: pass
-Done dartk-vm debug_x64 standalone/io/secure_client_raw_server_test: pass
-Done dartk-vm debug_x64 standalone/io/secure_client_raw_server_test: pass
-Done dartk-vm debug_x64 standalone/io/file_absolute_path_test: pass
-Done dartk-vm debug_x64 standalone/io/stdout_bad_argument_test: pass
-Done dartk-vm debug_x64 standalone/io/process_non_ascii_test: pass
-Done dartk-vm debug_x64 standalone/io/process_stderr_test: pass
-Done dartk-vm debug_x64 standalone/io/secure_client_server_test: pass
-Done dartk-vm debug_x64 standalone/io/process_stderr_test: pass
-Done dartk-vm debug_x64 standalone/io/secure_client_server_test: pass
-Done dartk-vm debug_x64 standalone/io/process_stderr_test: pass
-Done dartk-vm debug_x64 standalone/io/process_stderr_test: pass
-Done dartk-vm debug_x64 standalone/io/secure_client_server_test: pass
-Done dartk-vm debug_x64 standalone/io/secure_client_server_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_secure_server_socket_argument_test: pass
-Done dartk-vm debug_x64 standalone/io/file_windows_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_secure_server_socket_argument_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_secure_server_socket_argument_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_secure_server_socket_argument_test: pass
-Done dartk-vm debug_x64 standalone/io/http_server_response_test: pass
-Done dartk-vm debug_x64 standalone/io/https_bad_certificate_test: pass
-Done dartk-vm debug_x64 standalone/io/test_extension_fail_test: pass
-Done dartk-vm debug_x64 standalone/io/http_server_response_test: pass
-Done dartk-vm debug_x64 standalone/io/http_server_response_test: pass
-Done dartk-vm debug_x64 standalone/io/http_server_response_test: pass
-Done dartk-vm debug_x64 standalone/io/test_runner_test: pass
-Done dartk-vm debug_x64 standalone/io/platform_test: pass
-Done dartk-vm debug_x64 standalone/io/windows_file_system_async_links_test: pass
-Done dartk-vm debug_x64 standalone/io/link_uri_test: pass
-Done dartk-vm debug_x64 standalone/io/process_stdout_test: pass
-Done dartk-vm debug_x64 standalone/io/process_stdout_test: pass
-Done dartk-vm debug_x64 standalone/io/process_stdout_test: pass
-Done dartk-vm debug_x64 standalone/io/process_stdout_test: pass
-Done dartk-vm debug_x64 standalone/io/console_unicode_test: pass
-Done dartk-vm debug_x64 standalone/io/print_sync_test: pass
-Done dartk-vm debug_x64 standalone/io/https_unauthorized_test: pass
-Done dartk-vm debug_x64 standalone/io/process_kill_test: pass
-Done dartk-vm debug_x64 standalone/io/file_system_delete_test: pass
-Done dartk-vm debug_x64 standalone/io/snapshot_fail_test: pass
-Done dartk-vm debug_x64 standalone/io/process_exit_test: pass
-Done dartk-vm debug_x64 standalone/io/secure_socket_renegotiate_test: pass
-Done dartk-vm debug_x64 standalone/io/http_requested_uri_test: pass
-Done dartk-vm debug_x64 standalone/io/file_system_watcher_test: pass
-Done dartk-vm debug_x64 standalone/io/process_path_environment_test: pass
-Done dartk-vm debug_x64 standalone/io/dart_std_io_pipe_test: pass
-Done dartk-vm debug_x64 standalone/io/http_server_test: pass
-Done dartk-vm debug_x64 standalone/io/dart_std_io_pipe_test: pass
-Done dartk-vm debug_x64 standalone/io/dependency_graph_test: pass
-Done dartk-vm debug_x64 standalone/io/dart_std_io_pipe_test: pass
-Done dartk-vm debug_x64 standalone/io/dart_std_io_pipe_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_socket_write_destroy_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_socket_write_destroy_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_socket_write_destroy_test: pass
-Done dartk-vm debug_x64 standalone/io/http_session_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_socket_write_destroy_test: pass
-Done dartk-vm debug_x64 standalone/io/https_client_exception_test: pass
-Done dartk-vm debug_x64 standalone/io/process_working_directory_test: pass
-Done dartk-vm debug_x64 standalone/io/file_write_as_test: pass
-Done dartk-vm debug_x64 standalone/io/process_check_arguments_test: pass
-Done dartk-vm debug_x64 standalone/io/resolve_symbolic_links_test: pass
-Done dartk-vm debug_x64 standalone/io/many_directory_operations_test: pass
-Done dartk-vm debug_x64 standalone/io/http_headers_test: pass
-Done dartk-vm debug_x64 standalone/io/https_server_test: pass
-Done dartk-vm debug_x64 standalone/io/link_async_test: pass
-Done dartk-vm debug_x64 standalone/io/directory_non_ascii_sync_test: pass
-Done dartk-vm debug_x64 standalone/io/windows_file_system_links_test: pass
-Done dartk-vm debug_x64 standalone/io/stream_pipe_test: pass
-Done dartk-vm debug_x64 standalone/io/http_stream_close_test: pass
-Done dartk-vm debug_x64 standalone/io/stream_pipe_test: pass
-Done dartk-vm debug_x64 standalone/io/stream_pipe_test: pass
-Done dartk-vm debug_x64 standalone/io/stream_pipe_test: pass
-Done dartk-vm debug_x64 standalone/io/directory_fuzz_test: pass
-Done dartk-vm debug_x64 standalone/io/http_keep_alive_test: pass
-Done dartk-vm debug_x64 standalone/io/http_keep_alive_test: pass
-Done dartk-vm debug_x64 standalone/io/http_keep_alive_test: pass
-Done dartk-vm debug_x64 standalone/io/http_keep_alive_test: pass
-Done dartk-vm debug_x64 standalone/io/uri_platform_test: pass
-Done dartk-vm debug_x64 standalone/io/read_into_const_list_test: pass
-Done dartk-vm debug_x64 standalone/io/compile_all_test: pass
-Done dartk-vm debug_x64 standalone/io/process_set_exit_code_test: pass
-Done dartk-vm debug_x64 standalone/io/http_cookie_test: pass
-Done dartk-vm debug_x64 standalone/io/socket_finalizer_test: pass
-Done dartk-vm debug_x64 standalone/io/socket_many_connections_test: pass
-Done dartk-vm debug_x64 standalone/io/code_collection_test: pass
-Done dartk-vm debug_x64 standalone/io/http_client_request_test: pass
-Done dartk-vm debug_x64 standalone/io/http_connection_info_test: pass
-Done dartk-vm debug_x64 standalone/io/file_system_uri_test: pass
-Done dartk-vm debug_x64 standalone/io/issue_26954_test: pass
-Done dartk-vm debug_x64 standalone/io/http_outgoing_size_test: pass
-Done dartk-vm debug_x64 standalone/io/test_extension_test: pass
-Done dartk-vm debug_x64 standalone/io/http_outgoing_size_test: pass
-Done dartk-vm debug_x64 standalone/io/http_outgoing_size_test: pass
-Done dartk-vm debug_x64 standalone/io/http_outgoing_size_test: pass
-Done dartk-vm debug_x64 standalone/io/stdout_close_test: pass
-Done dartk-vm debug_x64 standalone/io/directory_non_ascii_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_datagram_read_all_test: pass
-Done dartk-vm debug_x64 standalone/io/stdout_stderr_test: pass
-Done dartk-vm debug_x64 standalone/io/windows_environment_test: pass
-Done dartk-vm debug_x64 standalone/io/file_write_only_test: pass
-Done dartk-vm debug_x64 standalone/io/https_client_certificate_test: pass
-Done dartk-vm debug_x64 standalone/io/file_blocking_lock_test: pass
-Done dartk-vm debug_x64 standalone/io/http_read_test: pass
-Done dartk-vm debug_x64 standalone/io/secure_bad_certificate_test: pass
-Done dartk-vm debug_x64 standalone/io/socket_invalid_arguments_test: pass
-Done dartk-vm debug_x64 standalone/io/skipping_dart2js_compilations_test: pass
-Done dartk-vm debug_x64 standalone/io/stdio_nonblocking_test: pass
-Done dartk-vm debug_x64 standalone/io/http_read_test: pass
-Done dartk-vm debug_x64 standalone/io/http_read_test: pass
-Done dartk-vm debug_x64 standalone/io/http_read_test: pass
-Done dartk-vm debug_x64 standalone/io/file_uri_test: pass
-Done dartk-vm debug_x64 standalone/io/ansi_supported_test: pass
-Done dartk-vm debug_x64 standalone/io/regress_10026_test: pass
-Done dartk-vm debug_x64 standalone/io/secure_session_resume_test: pass
-Done dartk-vm debug_x64 standalone/io/secure_session_resume_test: pass
-Done dartk-vm debug_x64 standalone/io/secure_session_resume_test: pass
-Done dartk-vm debug_x64 standalone/io/secure_session_resume_test: pass
-Done dartk-vm debug_x64 standalone/io/locale_name_test: pass
-Done dartk-vm debug_x64 standalone/io/file_fuzz_test: pass
-Done dartk-vm debug_x64 standalone/io/http_basic_test: pass
-Done dartk-vm debug_x64 standalone/io/process_segfault_test: pass
-Done dartk-vm debug_x64 standalone/io/process_broken_pipe_test: pass
-Done dartk-vm debug_x64 standalone/io/http_basic_test: pass
-Done dartk-vm debug_x64 standalone/io/http_basic_test: pass
-Done dartk-vm debug_x64 standalone/io/http_basic_test: pass
-Done dartk-vm debug_x64 standalone/io/http_compression_test: pass
-Done dartk-vm debug_x64 standalone/io/http_compression_test: pass
-Done dartk-vm debug_x64 standalone/io/http_compression_test: pass
-Done dartk-vm debug_x64 standalone/io/http_compression_test: pass
-Done dartk-vm debug_x64 standalone/io/file_system_async_links_test: pass
-Done dartk-vm debug_x64 standalone/io/secure_socket_bad_data_test: pass
-Done dartk-vm debug_x64 standalone/io/secure_socket_bad_data_test: pass
-Done dartk-vm debug_x64 standalone/io/http_client_stays_alive_test: pass
-Done dartk-vm debug_x64 standalone/io/secure_socket_bad_data_test: pass
-Done dartk-vm debug_x64 standalone/io/secure_socket_bad_data_test: pass
-Done dartk-vm debug_x64 standalone/io/internet_address_invalid_arguments_test: pass
-Done dartk-vm debug_x64 standalone/io/file_copy_test: pass
-Done dartk-vm debug_x64 standalone/io/regress_8828_test: pass
-Done dartk-vm debug_x64 standalone/io/regress_8828_test: pass
-Done dartk-vm debug_x64 standalone/io/regress_8828_test: pass
-Done dartk-vm debug_x64 standalone/io/regress_8828_test: pass
-Done dartk-vm debug_x64 standalone/io/io_sink_test: pass
-Done dartk-vm debug_x64 standalone/io/http_head_test: pass
-Done dartk-vm debug_x64 standalone/io/socket_close_test: pass
-Done dartk-vm debug_x64 standalone/io/socket_close_test: pass
-Done dartk-vm debug_x64 standalone/io/socket_close_test: pass
-Done dartk-vm debug_x64 standalone/io/http_request_pipeling_test: pass
-Done dartk-vm debug_x64 standalone/io/http_request_pipeling_test: pass
-Done dartk-vm debug_x64 standalone/io/socket_close_test: pass
-Done dartk-vm debug_x64 standalone/io/http_request_pipeling_test: pass
-Done dartk-vm debug_x64 standalone/io/http_request_pipeling_test: pass
-Done dartk-vm debug_x64 standalone/io/file_system_exists_test: pass
-Done dartk-vm debug_x64 standalone/io/http_server_early_client_close_test: pass
-Done dartk-vm debug_x64 standalone/io/file_read_special_device_test: pass
-Done dartk-vm debug_x64 standalone/io/http_server_early_client_close_test: pass
-Done dartk-vm debug_x64 standalone/io/addlatexhash_test: pass
-Done dartk-vm debug_x64 standalone/io/http_server_early_client_close_test: pass
-Done dartk-vm debug_x64 standalone/io/http_server_early_client_close_test: pass
-Done dartk-vm debug_x64 standalone/io/process_info_test: pass
-Done dartk-vm debug_x64 standalone/io/http_bind_test: pass
-Done dartk-vm debug_x64 standalone/io/internet_address_test: pass
-Done dartk-vm debug_x64 standalone/io/process_detached_test: pass
-Done dartk-vm debug_x64 standalone/io/file_stream_test: pass
-Done dartk-vm debug_x64 standalone/io/web_socket_compression_test: pass
-Done dartk-vm debug_x64 standalone/io/web_socket_compression_test: pass
-Done dartk-vm debug_x64 standalone/io/secure_socket_test: pass
-Done dartk-vm debug_x64 standalone/io/web_socket_compression_test: pass
-Done dartk-vm debug_x64 standalone/io/secure_socket_test: pass
-Done dartk-vm debug_x64 standalone/io/secure_socket_test: pass
-Done dartk-vm debug_x64 standalone/io/web_socket_compression_test: pass
-Done dartk-vm debug_x64 standalone/io/signals_exception_test/none: pass
-Done dartk-vm debug_x64 standalone/io/secure_socket_test: pass
-Done dartk-vm debug_x64 standalone/io/signals_exception_test/01: pass
-Done dartk-vm debug_x64 standalone/io/file_system_links_test: pass
-Done dartk-vm debug_x64 standalone/io/web_socket_protocol_test: pass
-Done dartk-vm debug_x64 standalone/io/web_socket_protocol_test: pass
-Done dartk-vm debug_x64 standalone/io/web_socket_protocol_test: pass
-Done dartk-vm debug_x64 standalone/io/web_socket_protocol_test: pass
-Done dartk-vm debug_x64 standalone/io/web_socket_pipe_test: pass
-Done dartk-vm debug_x64 standalone/io/http_auth_digest_test: pass
-Done dartk-vm debug_x64 standalone/io/web_socket_pipe_test: pass
-Done dartk-vm debug_x64 standalone/io/file_typed_data_test: pass
-Done dartk-vm debug_x64 standalone/io/web_socket_pipe_test: pass
-Done dartk-vm debug_x64 standalone/io/web_socket_pipe_test: pass
-Done dartk-vm debug_x64 standalone/io/http_connection_header_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_socket_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_socket_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_socket_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_socket_test: pass
-Done dartk-vm debug_x64 standalone/io/zlib_test: pass
-Done dartk-vm debug_x64 standalone/io/parent_test: pass
-Done dartk-vm debug_x64 standalone/io/regress_7679_test: pass
-Done dartk-vm debug_x64 standalone/io/non_utf8_output_test: pass
-Done dartk-vm debug_x64 standalone/io/issue_22637_test: pass
-Done dartk-vm debug_x64 standalone/io/directory_create_race_test: pass
-Done dartk-vm debug_x64 standalone/io/async_catch_errors_test: pass
-Done dartk-vm debug_x64 standalone/io/process_pid_test: pass
-Done dartk-vm debug_x64 standalone/io/test_harness_analyzer_test: pass
-Done dartk-vm debug_x64 standalone/io/directory_uri_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_synchronous_socket_test: pass
-Done dartk-vm debug_x64 standalone/io/regress_7191_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_secure_socket_pause_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_socket_typed_data_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_socket_typed_data_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_secure_socket_pause_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_secure_socket_pause_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_secure_socket_pause_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_socket_typed_data_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_socket_typed_data_test: pass
-Done dartk-vm debug_x64 standalone/io/process_shell_test: pass
-Done dartk-vm debug_x64 standalone/io/directory_invalid_arguments_test: pass
-Done dartk-vm debug_x64 standalone/io/http_detach_socket_test: pass
-Done dartk-vm debug_x64 standalone/io/http_detach_socket_test: pass
-Done dartk-vm debug_x64 standalone/io/http_detach_socket_test: pass
-Done dartk-vm debug_x64 standalone/io/http_detach_socket_test: pass
-Done dartk-vm debug_x64 standalone/io/secure_unauthorized_test: pass
-Done dartk-vm debug_x64 standalone/io/many_file_operations_test: pass
-Done dartk-vm debug_x64 standalone/io/file_input_stream_test: pass
-Done dartk-vm debug_x64 standalone/io/signals_test: pass
-Done dartk-vm debug_x64 standalone/io/stdio_implicit_close_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_secure_server_socket_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_secure_server_socket_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_secure_server_socket_test: pass
-Done dartk-vm debug_x64 standalone/io/process_stdin_transform_unsubscribe_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_secure_server_socket_test: pass
-Done dartk-vm debug_x64 standalone/io/process_stdin_transform_unsubscribe_test: pass
-Done dartk-vm debug_x64 standalone/io/process_stdin_transform_unsubscribe_test: pass
-Done dartk-vm debug_x64 standalone/io/socket_cross_process_test: pass
-Done dartk-vm debug_x64 standalone/io/file_invalid_arguments_test: pass
-Done dartk-vm debug_x64 standalone/io/process_stdin_transform_unsubscribe_test: pass
-Done dartk-vm debug_x64 standalone/io/security_context_argument_test: pass
-Done dartk-vm debug_x64 standalone/io/stdin_sync_test: pass
-Done dartk-vm debug_x64 standalone/io/http_proxy_configuration_test: pass
-Done dartk-vm debug_x64 standalone/io/secure_socket_alpn_test: pass
-Done dartk-vm debug_x64 standalone/io/directory_error_test: pass
-Done dartk-vm debug_x64 standalone/io/stdio_socket_finalizer_test: pass
-Done dartk-vm debug_x64 standalone/io/file_constructor_test: pass
-Done dartk-vm debug_x64 standalone/io/socket_upgrade_to_secure_test: pass
-Done dartk-vm debug_x64 standalone/io/socket_upgrade_to_secure_test: pass
-Done dartk-vm debug_x64 standalone/io/socket_upgrade_to_secure_test: pass
-Done dartk-vm debug_x64 standalone/io/socket_upgrade_to_secure_test: pass
-Done dartk-vm debug_x64 standalone/io/process_exit_negative_test: pass
-Done dartk-vm debug_x64 standalone/io/arguments_test: pass
-Done dartk-vm debug_x64 standalone/io/file_output_stream_test: pass
-Done dartk-vm debug_x64 standalone/io/file_read_encoded_test: pass
-Done dartk-vm debug_x64 standalone/io/socket_info_ipv4_test: pass
-Done dartk-vm debug_x64 standalone/io/http_parser_test: pass
-Done dartk-vm debug_x64 standalone/io/http_cookie_date_test: pass
-Done dartk-vm debug_x64 standalone/io/stdout_stderr_terminal_test: pass
-Done dartk-vm debug_x64 standalone/io/secure_socket_argument_test: pass
-Done dartk-vm debug_x64 standalone/io/directory_chdir_test: pass
-Done dartk-vm debug_x64 standalone/io/bytes_builder_test: pass
-Done dartk-vm debug_x64 standalone/io/http_client_exception_test: pass
-Done dartk-vm debug_x64 standalone/io/file_non_ascii_sync_test: pass
-Done dartk-vm debug_x64 standalone/io/http_headers_state_test: pass
-Done dartk-vm debug_x64 standalone/io/http_date_test: pass
-Done dartk-vm debug_x64 standalone/io/regress_21160_test: pass
-Done dartk-vm debug_x64 standalone/io/file_create_test: pass
-Done dartk-vm debug_x64 standalone/io/delete_symlink_test: pass
-Done dartk-vm debug_x64 standalone/io/echo_server_stream_test: pass
-Done dartk-vm debug_x64 standalone/io/echo_server_stream_test: pass
-Done dartk-vm debug_x64 standalone/io/echo_server_stream_test: pass
-Done dartk-vm debug_x64 standalone/io/named_pipe_script_test: pass
-Done dartk-vm debug_x64 standalone/io/echo_server_stream_test: pass
-Done dartk-vm debug_x64 standalone/io/process_sync_test: pass
-Done dartk-vm debug_x64 standalone/io/file_test: pass
-Done dartk-vm debug_x64 standalone/io/process_run_test: pass
-Done dartk-vm debug_x64 standalone/io/http_10_test: pass
-Done dartk-vm debug_x64 standalone/io/http_10_test: pass
-Done dartk-vm debug_x64 standalone/io/http_10_test: pass
-Done dartk-vm debug_x64 standalone/io/http_10_test: pass
-Done dartk-vm debug_x64 standalone/priority_queue_stress_test: pass
-Done dartk-vm debug_x64 standalone/io/http_advanced_test: pass
-Done dartk-vm debug_x64 standalone/dart_developer_disabled_env_test: pass
-Done dartk-vm debug_x64 standalone/io/http_advanced_test: pass
-Done dartk-vm debug_x64 standalone/no_support_service_test: pass
-Done dartk-vm debug_x64 standalone/io/http_advanced_test: pass
-Done dartk-vm debug_x64 standalone/io/http_advanced_test: pass
-Done dartk-vm debug_x64 standalone/pair_location_remapping_test: pass
-Done dartk-vm debug_x64 standalone/no_support_ast_printer_test: pass
-Done dartk-vm debug_x64 standalone/oom_error_stacktrace_test: pass
-Done dartk-vm debug_x64 standalone/int_array_load_elimination_test: pass
-Done dartk-vm debug_x64 standalone/regress_25335_test: pass
-Done dartk-vm debug_x64 standalone/dart_developer_env_test: pass
-Done dartk-vm debug_x64 standalone/constant_left_shift_test: pass
-Done dartk-vm debug_x64 standalone/no_assert_test: pass
-Done dartk-vm debug_x64 standalone/typed_data_view_test: pass
-Done dartk-vm debug_x64 standalone/env_test: pass
-Done dartk-vm debug_x64 standalone/io/platform_resolved_executable_test/none: pass
-Done dartk-vm debug_x64 standalone/array_bounds_check_generalization_test: pass
-Done dartk-vm debug_x64 standalone/slowpath_safepoints_test: pass
-Done dartk-vm debug_x64 standalone/io/platform_resolved_executable_test/00: pass
-Done dartk-vm debug_x64 standalone/io/platform_resolved_executable_test/01: pass
-Done dartk-vm debug_x64 standalone/io/platform_resolved_executable_test/03: pass
-Done dartk-vm debug_x64 standalone/io/platform_resolved_executable_test/02: pass
-Done dartk-vm debug_x64 standalone/io/platform_resolved_executable_test/04: pass
-Done dartk-vm debug_x64 standalone/io/platform_resolved_executable_test/06: pass
-Done dartk-vm debug_x64 standalone/io/platform_resolved_executable_test/05: pass
-Done dartk-vm debug_x64 standalone/fields_may_be_reset_test: pass
-Done dartk-vm debug_x64 standalone/regress_29695_test: pass
-Done dartk-vm debug_x64 standalone/double_smi_comparison_test: pass
-Done dartk-vm debug_x64 standalone/no_support_il_printer_test: pass
-Done dartk-vm debug_x64 standalone/deoptimization_test: pass
-Done dartk-vm debug_x64 standalone/typed_data_isolate_test: pass
-Done dartk-vm debug_x64 standalone/unboxed_int_converter_test: pass
-Done dartk-vm debug_x64 standalone/black_listed_test/02: pass
-Done dartk-vm debug_x64 standalone/black_listed_test/01: pass
-Done dartk-vm debug_x64 standalone/left_shift_bit_and_op_test: pass
-Done dartk-vm debug_x64 standalone/black_listed_test/none: pass
-Done dartk-vm debug_x64 standalone/regress_29350_test/none: pass
-Done dartk-vm debug_x64 standalone/black_listed_test/03: pass
-Done dartk-vm debug_x64 standalone/black_listed_test/04: pass
-Done dartk-vm debug_x64 standalone/regress_26031_test: pass
-Done dartk-vm debug_x64 standalone/black_listed_test/05: pass
-Done dartk-vm debug_x64 standalone/verbose_gc_to_bmu_test: pass
-Done dartk-vm debug_x64 standalone/black_listed_test/07: pass
-Done dartk-vm debug_x64 standalone/black_listed_test/06: pass
-Done dartk-vm debug_x64 standalone/black_listed_test/08: pass
-Done dartk-vm debug_x64 standalone/black_listed_test/09: pass
-Done dartk-vm debug_x64 standalone/black_listed_test/10: pass
-Done dartk-vm debug_x64 standalone/io/file_lock_test: pass
-Done dartk-vm debug_x64 standalone/black_listed_test/12: pass
-Done dartk-vm debug_x64 standalone/black_listed_test/11: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Void/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Void/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Void/syntax_t15: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Void/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Void/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Void/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Void/using_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Void/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Void/returning_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Void/syntax_t13: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Void/syntax_t12: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Void/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Void/returning_t04: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Void/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Void/returning_t03: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Void/syntax_t14: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Void/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Void/syntax_t11: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Void/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Void/using_t02: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Void/returning_t02: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Void/using_t03: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Void/returning_t05: pass
-Done dartk-vm debug_x64 co19/Language/Types/Dynamic_Type_System/malbounded_type_error_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Static_Types/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Types/Dynamic_Type_System/malformed_type_error_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Dynamic_Type_System/deferred_type_error_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Static_Types/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Types/Static_Types/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Static_Types/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Types/Static_Types/deferred_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Static_Types/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Types/Static_Types/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Types/Static_Types/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Types/Static_Types/malformed_type_t05: pass
-Done dartk-vm debug_x64 co19/Language/Types/Static_Types/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Types/Static_Types/malformed_type_t06: pass
-Done dartk-vm debug_x64 co19/Language/Types/Static_Types/malformed_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Types/Static_Types/malformed_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Types/Static_Types/malformed_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Static_Types/malformed_type_t04: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t39: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/direct_supertype_t05: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t43: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t16: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t06: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t26: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t25: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t11: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t36: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t19: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/interface_supertypes_t02: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t22: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t40: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t17: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t18: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t38: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t33: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/direct_supertype_t04: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t45: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t15: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/direct_supertype_t02: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t03: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/direct_supertype_t03: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t32: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t37: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t09: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t34: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t28: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t04: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t02: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t21: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/direct_supertype_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t27: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t08: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t44: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t46: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/interface_supertypes_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t29: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t24: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t13: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t05: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t41: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t42: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t07: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t12: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t14: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t48: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t23: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t30: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t35: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t31: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t47: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t20: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t10: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t49: pass
-Done dartk-vm debug_x64 co19/Language/Types/Parameterized_Types/static_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Types/Parameterized_Types/arity_mismatch_t02: pass
-Done dartk-vm debug_x64 co19/Language/Types/Parameterized_Types/arity_mismatch_t06: pass
-Done dartk-vm debug_x64 co19/Language/Types/Parameterized_Types/malbounded_t07: pass
-Done dartk-vm debug_x64 co19/Language/Types/Parameterized_Types/malbounded_t04: pass
-Done dartk-vm debug_x64 co19/Language/Types/Parameterized_Types/Actual_Type_of_Declaration/actual_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Types/Parameterized_Types/Actual_Type_of_Declaration/actual_type_t04: pass
-Done dartk-vm debug_x64 co19/Language/Types/Parameterized_Types/Actual_Type_of_Declaration/actual_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Parameterized_Types/Actual_Type_of_Declaration/actual_type_t05: pass
-Done dartk-vm debug_x64 co19/Language/Types/Parameterized_Types/malbounded_t02: pass
-Done dartk-vm debug_x64 co19/Language/Types/Parameterized_Types/Actual_Type_of_Declaration/actual_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Types/Parameterized_Types/arity_mismatch_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Parameterized_Types/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Parameterized_Types/arity_mismatch_t03: pass
-Done dartk-vm debug_x64 co19/Language/Types/Parameterized_Types/malbounded_t03: pass
-Done dartk-vm debug_x64 co19/Language/Types/Parameterized_Types/malbounded_t06: pass
-Done dartk-vm debug_x64 co19/Language/Types/Parameterized_Types/arity_mismatch_t04: pass
-Done dartk-vm debug_x64 co19/Language/Types/Parameterized_Types/malbounded_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/self_reference_t04: pass
-Done dartk-vm debug_x64 co19/Language/Types/Parameterized_Types/malbounded_t05: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/self_reference_t08: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Types/Parameterized_Types/arity_mismatch_t05: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/self_reference_t17: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/self_reference_t11: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/param_default_value_t05: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/dynamic_param_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/self_reference_t15: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/dynamic_return_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/self_reference_t07: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/self_reference_t10: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/self_reference_t09: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/param_default_value_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/function_type_alias_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/self_reference_t16: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/param_default_value_t03: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/param_default_value_t04: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/function_type_alias_t02: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/self_reference_t05: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/self_reference_t14: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/self_reference_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/self_reference_t12: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/self_reference_t06: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/dynamic_param_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/param_default_value_t02: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/self_reference_t02: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/self_reference_t03: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/function_type_alias_t03: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/self_reference_t13: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_dynamic/dynamic_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_dynamic/dynamic_t02: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_dynamic/dynamic_t03: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_dynamic/dynamic_t04: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_dynamic/dynamic_t05: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_named_args_t04: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_named_args_t03: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_required_args_t03: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/assignment_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_no_args_t02: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_named_args_t02: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_named_args_t08: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_named_args_t12: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_named_args_t09: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_named_args_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_required_args_t02: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_required_args_t05: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_optional_args_t03: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_named_args_t11: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_named_args_t06: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_optional_args_t08: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/call_t03: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_required_args_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_optional_args_t02: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_optional_args_t09: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/implements_function_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_optional_args_t12: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_optional_args_t10: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_named_args_t10: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/implements_function_t04: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/implements_function_t02: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/implements_function_t03: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_optional_args_t06: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/call_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_no_args_t03: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_named_args_t05: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_optional_args_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_optional_args_t04: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_no_args_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_no_args_t04: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/call_t02: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_required_args_t04: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_optional_args_t05: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_named_args_t07: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_optional_args_t07: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_optional_args_t11: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/implements_function_t05: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_no_args_t05: pass
-Done dartk-vm debug_x64 co19/Language/Overview/runtime_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Privacy/private_and_public_t08: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Privacy/private_and_public_t20: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Privacy/private_and_public_t11: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Privacy/private_and_public_t10: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Privacy/private_and_public_t01: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Privacy/private_and_public_t02: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Privacy/private_and_public_t07: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Privacy/private_and_public_t04: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Privacy/private_and_public_t19: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Privacy/private_and_public_t15: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Privacy/private_and_public_t14: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Privacy/private_and_public_t13: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Privacy/private_and_public_t06: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Privacy/private_and_public_t17: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Privacy/private_and_public_t18: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t19: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t31: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Privacy/private_and_public_t21: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Privacy/private_and_public_t16: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Privacy/private_and_public_t09: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Privacy/private_and_public_t05: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Privacy/private_and_public_t12: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t41: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/names_introducing_t03: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/hiding_declaration_t12: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t13: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/hiding_declaration_t14: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/hiding_declaration_t06: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t30: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t28: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/hiding_declaration_t22: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t02: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t43: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/hiding_declaration_t03: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/hiding_declaration_t11: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/hiding_declaration_t13: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t17: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/hiding_declaration_t32: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/names_introducing_t02: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/hiding_declaration_t16: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t37: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/hiding_declaration_t25: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/labels_t01: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t11: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t40: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/hiding_declaration_t01: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t32: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t25: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t29: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t46: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t16: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/hiding_declaration_t07: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t27: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t06: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t34: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t09: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t05: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t33: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t35: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t04: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t21: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/hiding_declaration_t08: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t01: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/hiding_declaration_t02: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/hiding_declaration_t28: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t45: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t20: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/hiding_declaration_t15: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t15: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t44: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t18: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/names_introducing_t01: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t39: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/hiding_declaration_t05: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t26: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t38: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t12: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/hiding_declaration_t04: pass
-Done dartk-vm debug_x64 co19/Language/Enums/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Enums/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/hiding_declaration_t29: pass
-Done dartk-vm debug_x64 co19/Language/Overview/runtime_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Enums/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Enums/restrictions_t07: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/hiding_declaration_t19: pass
-Done dartk-vm debug_x64 co19/Language/Enums/restrictions_t01: pass
-Done dartk-vm debug_x64 co19/Language/Enums/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Enums/declaration_equivalent_t06: pass
-Done dartk-vm debug_x64 co19/Language/Enums/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Enums/restrictions_t05: pass
-Done dartk-vm debug_x64 co19/Language/Enums/declaration_equivalent_t03: pass
-Done dartk-vm debug_x64 co19/Language/Enums/restrictions_t08: pass
-Done dartk-vm debug_x64 co19/Language/Enums/declaration_equivalent_t02: pass
-Done dartk-vm debug_x64 co19/Language/Enums/declaration_equivalent_t07: pass
-Done dartk-vm debug_x64 co19/Language/Enums/declaration_equivalent_t01: pass
-Done dartk-vm debug_x64 co19/Language/Enums/restrictions_t06: pass
-Done dartk-vm debug_x64 co19/Language/Enums/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Enums/declaration_equivalent_t04: pass
-Done dartk-vm debug_x64 co19/Language/Enums/restrictions_t04: pass
-Done dartk-vm debug_x64 co19/Language/Enums/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Enums/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Enums/restrictions_t02: pass
-Done dartk-vm debug_x64 co19/Language/Enums/restrictions_t03: pass
-Done dartk-vm debug_x64 co19/Language/Enums/declaration_equivalent_t09: pass
-Done dartk-vm debug_x64 co19/Language/Enums/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/declaring_constructor_t04: pass
-Done dartk-vm debug_x64 co19/Language/Enums/declaration_equivalent_t08: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/declaring_constructor_t08: pass
-Done dartk-vm debug_x64 co19/Language/Enums/declaration_equivalent_t05: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/declaring_constructor_t05: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/declaring_constructor_t09: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/declaring_constructor_t02: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/declaring_constructor_t03: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/declaring_constructor_t06: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Composition/order_t01: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/wrong_mixin_type_t05: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/abstract_t03: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/wrong_mixin_type_t07: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/implicit_constructor_t02: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/deferred_t01: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/wrong_mixin_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/wrong_mixin_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/initializers_t03: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/wrong_type_t05: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/syntax_t21: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/syntax_t15: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/superinterfaces_t01: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/wrong_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/superinterfaces_t02: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/syntax_t22: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/wrong_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/superinterfaces_t07: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/syntax_t16: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/warning_t01: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/static_warning_t01: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/static_warning_t02: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/interfaces_t02: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/wrong_mixin_type_t06: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/warning_t03: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/abstract_t04: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/abstract_t06: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/initializers_t02: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/error_t02: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/abstract_t02: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/syntax_t12: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/syntax_t13: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/superinterfaces_t04: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/abstract_t01: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/warning_t02: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/wrong_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/abstract_t05: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/abstract_t08: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/syntax_t17: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/syntax_t25: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/wrong_mixin_type_t08: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/syntax_t14: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/superinterfaces_t05: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/syntax_t23: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/syntax_t20: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/interfaces_t04: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/interfaces_t03: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/superinterfaces_t09: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/superinterfaces_t03: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/wrong_mixin_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/deferred_t02: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/wrong_type_t04: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/wrong_mixin_type_t04: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/implicit_constructor_t01: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/syntax_t11: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/wrong_type_t06: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/interfaces_t05: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/superinterfaces_t08: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/interfaces_t01: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/abstract_t07: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/syntax_t18: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/error_t01: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/declaring_constructor_t10: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/superinterfaces_t06: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/declaring_constructor_t01: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/initializers_t01: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/syntax_t24: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/syntax_t19: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/declaring_constructor_t07: pass
-Done dartk-vm debug_x64 co19/Language/Errors_and_Warnings/compile_error_t02: pass
-Done dartk-vm debug_x64 co19/Language/Errors_and_Warnings/compile_error_t07: pass
-Done dartk-vm debug_x64 co19/Language/Errors_and_Warnings/compile_error_t06: pass
-Done dartk-vm debug_x64 co19/Language/Errors_and_Warnings/compile_error_t01: pass
-Done dartk-vm debug_x64 co19/Language/Errors_and_Warnings/compile_error_t05: pass
-Done dartk-vm debug_x64 co19/Language/Errors_and_Warnings/compile_error_t04: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Errors_and_Warnings/compile_error_t03: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/compilation_t04: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Errors_and_Warnings/static_warning_t01: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/compilation_t09: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_function_t07: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/compilation_t11: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_function_t02: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_function_t03: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_part_header_t01: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_param_t08: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_ctor_t01: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_type_param_t01: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/compilation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_export_t01: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_variable_t01: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/compilation_t03: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_function_t01: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/compilation_t08: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/compilation_t06: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_import_t01: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_param_t02: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_function_t06: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_param_t07: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_class_t01: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/compilation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_ctor_t02: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_param_t03: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_param_t01: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/compilation_t05: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_param_t06: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/compilation_t10: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_library_t01: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_param_t04: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_factory_t01: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_variable_t02: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/compilation_t07: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_function_t04: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_function_t05: pass
-Done dartk-vm debug_x64 co19/Language/Variables/constant_variable_t08: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_part_directive_t01: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_param_t09: pass
-Done dartk-vm debug_x64 co19/Language/Variables/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_typedef_t01: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_param_t05: pass
-Done dartk-vm debug_x64 co19/Language/Variables/final_t07: pass
-Done dartk-vm debug_x64 co19/Language/Variables/final_t05: pass
-Done dartk-vm debug_x64 co19/Language/Variables/final_or_static_initialization_t03: pass
-Done dartk-vm debug_x64 co19/Language/Variables/final_t04: pass
-Done dartk-vm debug_x64 co19/Language/Variables/implicit_getter_t04: pass
-Done dartk-vm debug_x64 co19/Language/Variables/local_variable_t03: pass
-Done dartk-vm debug_x64 co19/Language/Variables/implicit_getter_t07: pass
-Done dartk-vm debug_x64 co19/Language/Variables/Evaluation_of_Implicit_Variable_Getters/definition_t02: pass
-Done dartk-vm debug_x64 co19/Language/Variables/Evaluation_of_Implicit_Variable_Getters/definition_t03: pass
-Done dartk-vm debug_x64 co19/Language/Variables/Evaluation_of_Implicit_Variable_Getters/definition_t01: pass
-Done dartk-vm debug_x64 co19/Language/Variables/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Variables/Evaluation_of_Implicit_Variable_Getters/definition_t05: pass
-Done dartk-vm debug_x64 co19/Language/Variables/Evaluation_of_Implicit_Variable_Getters/definition_t04: pass
-Done dartk-vm debug_x64 co19/Language/Variables/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Variables/implicit_setter_t01: pass
-Done dartk-vm debug_x64 co19/Language/Variables/implicit_setter_void_t04: pass
-Done dartk-vm debug_x64 co19/Language/Variables/library_variable_t03: pass
-Done dartk-vm debug_x64 co19/Language/Variables/implicit_getter_t03: pass
-Done dartk-vm debug_x64 co19/Language/Variables/static_variable_t01: pass
-Done dartk-vm debug_x64 co19/Language/Variables/syntax_t21: pass
-Done dartk-vm debug_x64 co19/Language/Variables/implicit_getter_t11: pass
-Done dartk-vm debug_x64 co19/Language/Variables/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Variables/syntax_t15: pass
-Done dartk-vm debug_x64 co19/Language/Variables/local_variable_t02: pass
-Done dartk-vm debug_x64 co19/Language/Variables/constant_initialization_t02: pass
-Done dartk-vm debug_x64 co19/Language/Variables/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Variables/constant_initialization_t01: pass
-Done dartk-vm debug_x64 co19/Language/Variables/syntax_t22: pass
-Done dartk-vm debug_x64 co19/Language/Variables/constant_variable_t01: pass
-Done dartk-vm debug_x64 co19/Language/Variables/local_variable_t05: pass
-Done dartk-vm debug_x64 co19/Language/Variables/syntax_t16: pass
-Done dartk-vm debug_x64 co19/Language/Variables/dynamic_type_variable_t01: pass
-Done dartk-vm debug_x64 co19/Language/Variables/implicit_getter_t09: pass
-Done dartk-vm debug_x64 co19/Language/Variables/implicit_getter_dynamic_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Variables/syntax_t13: pass
-Done dartk-vm debug_x64 co19/Language/Variables/syntax_t12: pass
-Done dartk-vm debug_x64 co19/Language/Variables/not_initialized_value_t01: pass
-Done dartk-vm debug_x64 co19/Language/Variables/implicit_setter_void_t02: pass
-Done dartk-vm debug_x64 co19/Language/Variables/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Variables/constant_initialization_t03: pass
-Done dartk-vm debug_x64 co19/Language/Variables/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Variables/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Variables/local_variable_t01: pass
-Done dartk-vm debug_x64 co19/Language/Variables/implicit_getter_t12: pass
-Done dartk-vm debug_x64 co19/Language/Variables/library_variable_t07: pass
-Done dartk-vm debug_x64 co19/Language/Variables/implicit_setter_void_t06: pass
-Done dartk-vm debug_x64 co19/Language/Variables/final_t03: pass
-Done dartk-vm debug_x64 co19/Language/Variables/final_or_static_initialization_t02: pass
-Done dartk-vm debug_x64 co19/Language/Variables/final_or_static_initialization_t01: pass
-Done dartk-vm debug_x64 co19/Language/Variables/syntax_t17: pass
-Done dartk-vm debug_x64 co19/Language/Variables/syntax_t14: pass
-Done dartk-vm debug_x64 co19/Language/Variables/implicit_setter_void_t03: pass
-Done dartk-vm debug_x64 co19/Language/Variables/library_variable_t01: pass
-Done dartk-vm debug_x64 co19/Language/Variables/constant_variable_t02: pass
-Done dartk-vm debug_x64 co19/Language/Variables/implicit_setter_void_t01: pass
-Done dartk-vm debug_x64 co19/Language/Variables/implicit_getter_t02: pass
-Done dartk-vm debug_x64 co19/Language/Variables/local_variable_t06: pass
-Done dartk-vm debug_x64 co19/Language/Variables/local_variable_t04: pass
-Done dartk-vm debug_x64 co19/Language/Variables/implicit_getter_t10: pass
-Done dartk-vm debug_x64 co19/Language/Variables/syntax_t20: pass
-Done dartk-vm debug_x64 co19/Language/Variables/library_variable_t06: pass
-Done dartk-vm debug_x64 co19/Language/Variables/syntax_t23: pass
-Done dartk-vm debug_x64 co19/Language/Variables/library_variable_t02: pass
-Done dartk-vm debug_x64 co19/Language/Variables/constant_variable_t06: pass
-Done dartk-vm debug_x64 co19/Language/Variables/constant_variable_t10: pass
-Done dartk-vm debug_x64 co19/Language/Variables/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Variables/constant_variable_t07: pass
-Done dartk-vm debug_x64 co19/Language/Variables/syntax_t11: pass
-Done dartk-vm debug_x64 co19/Language/Variables/final_t02/none: pass
-Done dartk-vm debug_x64 co19/Language/Variables/implicit_setter_void_t07: pass
-Done dartk-vm debug_x64 co19/Language/Variables/final_t02/01: pass
-Done dartk-vm debug_x64 co19/Language/Variables/implicit_getter_t05: pass
-Done dartk-vm debug_x64 co19/Language/Variables/static_variable_initialization_t01: pass
-Done dartk-vm debug_x64 co19/Language/Variables/implicit_setter_t03: pass
-Done dartk-vm debug_x64 co19/Language/Variables/static_variable_t02: pass
-Done dartk-vm debug_x64 co19/Language/Variables/implicit_setter_t02: pass
-Done dartk-vm debug_x64 co19/Language/Variables/syntax_t18: pass
-Done dartk-vm debug_x64 co19/Language/Variables/final_t06: pass
-Done dartk-vm debug_x64 co19/Language/Variables/constant_variable_t09: pass
-Done dartk-vm debug_x64 co19/Language/Variables/implicit_getter_t01: pass
-Done dartk-vm debug_x64 co19/Language/Variables/constant_variable_t04: pass
-Done dartk-vm debug_x64 co19/Language/Variables/constant_variable_t05: pass
-Done dartk-vm debug_x64 co19/Language/Variables/implicit_getter_dynamic_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Variables/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Variables/implicit_getter_dynamic_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Variables/library_variable_t05: pass
-Done dartk-vm debug_x64 co19/Language/Variables/implicit_setter_void_t05: pass
-Done dartk-vm debug_x64 co19/Language/Variables/library_variable_t04: pass
-Done dartk-vm debug_x64 co19/Language/Variables/syntax_t19: pass
-Done dartk-vm debug_x64 co19/Language/Classes/member_definition_t08: pass
-Done dartk-vm debug_x64 co19/Language/Classes/member_definition_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/definition_t06: pass
-Done dartk-vm debug_x64 co19/Language/Variables/constant_variable_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/definition_t02: pass
-Done dartk-vm debug_x64 co19/Language/Variables/implicit_getter_t08: pass
-Done dartk-vm debug_x64 co19/Language/Classes/definition_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_type_variable_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t20: pass
-Done dartk-vm debug_x64 co19/Language/Classes/member_definition_t17: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_type_variable_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t27: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/static_setter_t09: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t28: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/name_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/return_type_not_void_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/same_name_getter_different_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/static_setter_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/no_return_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/static_setter_t08: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/name_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/name_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/name_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/instance_setter_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/name_t07: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/parameter_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/same_name_getter_different_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/static_setter_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/override_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/static_setter_t07: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/type_object_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/instance_setter_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/parameter_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/instance_setter_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/parameter_t08: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/override_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/name_t03: pass
-Done dartk-vm debug_x64 co19/Language/Variables/final_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/static_setter_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/name_t04: pass
-Done dartk-vm debug_x64 co19/Language/Variables/final_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/parameter_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/static_setter_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/parameter_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/parameter_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/parameter_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/static_setter_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/parameter_t07: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t14: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/override_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/type_object_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/instance_setter_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/instance_setter_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/instance_setter_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_type_variable_t07: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t12: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t21: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Variables/definition_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Variables/definition_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Variables/constant_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Variables/definition_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/member_definition_t14: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Variables/definition_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/definition_t10: pass
-Done dartk-vm debug_x64 co19/Language/Classes/member_definition_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_instance_and_static_members_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_member_and_class_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_members_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_type_variable_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_members_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/definition_t18: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/definition_t19: pass
-Done dartk-vm debug_x64 co19/Language/Classes/method_definition_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/member_definition_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/member_definition_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/mixins_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/method_definition_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/member_definition_t22: pass
-Done dartk-vm debug_x64 co19/Language/Classes/definition_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t29: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t18: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t15: pass
-Done dartk-vm debug_x64 co19/Language/Classes/method_definition_t09: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t23: pass
-Done dartk-vm debug_x64 co19/Language/Classes/member_definition_t16: pass
-Done dartk-vm debug_x64 co19/Language/Classes/method_definition_t10: pass
-Done dartk-vm debug_x64 co19/Language/Classes/definition_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/definition_t20: pass
-Done dartk-vm debug_x64 co19/Language/Classes/definition_t17: pass
-Done dartk-vm debug_x64 co19/Language/Classes/member_definition_t21: pass
-Done dartk-vm debug_x64 co19/Language/Classes/member_definition_t25: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_members_t08: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t30: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_type_variable_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t26: pass
-Done dartk-vm debug_x64 co19/Language/Classes/member_definition_t19: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t25: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t31: pass
-Done dartk-vm debug_x64 co19/Language/Classes/method_definition_t08: pass
-Done dartk-vm debug_x64 co19/Language/Classes/member_definition_t11: pass
-Done dartk-vm debug_x64 co19/Language/Classes/member_definition_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t34: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_members_t10: pass
-Done dartk-vm debug_x64 co19/Language/Classes/method_definition_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_members_t09: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_members_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/definition_t11: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/definition_t09: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_members_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/definition_t13: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_members_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/definition_t14: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_instance_and_static_members_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t33: pass
-Done dartk-vm debug_x64 co19/Language/Classes/member_definition_t15: pass
-Done dartk-vm debug_x64 co19/Language/Classes/definition_t21: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_members_t07: pass
-Done dartk-vm debug_x64 co19/Language/Classes/member_definition_t07: pass
-Done dartk-vm debug_x64 co19/Language/Classes/implements_clause_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t17: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t32: pass
-Done dartk-vm debug_x64 co19/Language/Classes/member_definition_t09: pass
-Done dartk-vm debug_x64 co19/Language/Classes/definition_t22: pass
-Done dartk-vm debug_x64 co19/Language/Classes/method_definition_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_instance_and_static_members_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_member_and_class_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/override_default_value_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/override_not_a_subtype_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/override_default_value_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/override_default_value_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/invocation_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/inherited_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/invocation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/inherited_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/inherited_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/inherited_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/same_name_static_method_in_superclass_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/override_more_required_parameters_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/inherited_t11: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/inherited_t09: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/invocation_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/same_name_static_method_in_superclass_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/override_no_named_parameters_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/override_more_required_parameters_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/inherited_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/override_default_value_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/same_name_static_method_in_superclass_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/override_default_value_t08: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/inherited_t08: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/override_less_positional_parameters_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/invocation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/override_not_a_subtype_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/inherited_t07: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/override_no_named_parameters_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/inherited_t10: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/override_no_named_parameters_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/override_default_value_t07: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/override_no_named_parameters_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/no_implementation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/override_less_positional_parameters_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/override_more_required_parameters_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/override_default_value_t09: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/override_not_a_subtype_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/override_more_required_parameters_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/override_not_a_subtype_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/override_no_named_parameters_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/override_default_value_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/inherited_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/inherited_t12: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/same_name_static_method_in_superclass_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/override_default_value_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/member_definition_t10: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/override_no_named_parameters_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/same_name_static_method_in_superclass_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/member_definition_t12: pass
-Done dartk-vm debug_x64 co19/Language/Classes/definition_t23: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_members_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t13: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_instance_and_static_members_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Static_Variables/inheritance_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t19: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/same_name_method_t09: pass
-Done dartk-vm debug_x64 co19/Language/Classes/method_definition_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/same_name_method_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/same_name_method_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/same_name_method_t11: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/instance_getter_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/void_return_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/static_getter_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/instance_getter_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/static_getter_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/static_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/static_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/static_getter_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/override_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/instance_getter_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/same_name_method_t08: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/same_name_method_t10: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/return_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/type_object_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/override_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/override_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/instance_getter_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/same_name_method_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/static_getter_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/same_name_method_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/instance_getter_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/instance_getter_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/same_name_method_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/same_name_method_t12: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/definition_t08: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/type_object_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/definition_t16: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/override_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/same_name_method_t07: pass
-Done dartk-vm debug_x64 co19/Language/Classes/member_definition_t13: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_type_variable_t08: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_type_variable_t09: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_type_variable_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/implements_clause_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/same_name_static_member_in_superclass_t08: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/override_more_parameters_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/override_subtype_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/same_name_static_member_in_superclass_t09: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/override_subtype_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/override_subtype_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/override_different_default_values_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/same_name_static_member_in_superclass_t07: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/override_named_parameters_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/same_name_static_member_in_superclass_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/override_subtype_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/override_named_parameters_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/override_named_parameters_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/override_subtype_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/override_named_parameters_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/override_named_parameters_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/same_name_static_member_in_superclass_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/override_different_default_values_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/same_name_static_member_in_superclass_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/arity_1_t13: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/override_more_parameters_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/same_name_setter_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/override_fewer_parameters_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/arity_1_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/allowed_names_t14: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/same_name_static_member_in_superclass_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/allowed_names_t08: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/arity_1_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/arity_1_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/allowed_names_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/arity_0_or_1_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/arity_1_t18: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/allowed_names_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/optional_parameter_t08: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/allowed_names_t18: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/arity_2_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/allowed_names_t16: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/arity_1_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/allowed_names_t21: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/arity_1_t12: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/allowed_names_t15: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/allowed_names_t10: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/optional_parameter_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/arity_0_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/arity_1_t10: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/allowed_names_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/allowed_names_t13: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/optional_parameter_t07: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/arity_1_t11: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/arity_1_t09: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/allowed_names_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/allowed_names_t07: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/arity_0_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/arity_1_t15: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/allowed_names_t22: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/arity_1_t17: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/allowed_names_t17: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/allowed_names_t09: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/optional_parameter_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/allowed_names_t20: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/allowed_names_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/return_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/arity_1_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/optional_parameter_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/allowed_names_t12: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/arity_1_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/allowed_names_t11: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/arity_2_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/arity_1_t14: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/arity_0_or_1_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/allowed_names_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/allowed_names_t19: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/optional_parameter_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/optional_parameter_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/arity_1_t07: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/optional_parameter_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/arity_1_t16: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/arity_1_t08: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/name_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/definition_t07: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/override_named_parameters_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_member_and_class_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/override_subtype_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/same_name_setter_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/same_name_static_member_in_superclass_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/override_fewer_parameters_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/name_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializing_other_function_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/name_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/name_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializers_t16: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/many_initializers_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/implicit_constructor_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/implicit_constructor_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializers_t11: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializers_t12: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/formal_parameter_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializing_other_function_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/superclass_constructor_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/superclass_constructor_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/execution_of_a_superinitializer_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/execution_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/formal_parameter_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializers_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/many_initializers_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/not_an_instance_variable_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializers_t09: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/formal_parameter_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/redirection_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializing_other_function_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/formal_parameter_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializers_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializer_for_a_variable_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/execution_of_an_initializer_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/formal_parameter_t08: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/redirection_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/execution_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/superclass_constructor_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializers_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/explicit_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/redirection_t11: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/explicit_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializing_other_function_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializers_t07: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/redirection_t09: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/redirection_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/many_initializers_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/formal_parameter_t07: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializers_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializers_t10: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/superclass_constructor_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/execution_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/redirection_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializers_t08: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializers_t14: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/fresh_instance_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializing_other_function_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/final_variables_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/execution_t12: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/redirection_t10: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializing_formals_execution_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/execution_t11: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/formal_parameter_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializers_t13: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/execution_t10: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializer_for_a_variable_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/implicit_superinitializer_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializing_this_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/superclass_constructor_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/redirection_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/execution_of_an_initializer_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/redirection_t08: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/execution_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializing_other_function_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/formal_parameter_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/not_an_instance_variable_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/superclass_constructor_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/explicit_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializing_other_function_t07: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/execution_t09: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/superinitializer_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/execution_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/execution_of_an_initializer_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/execution_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/redirection_t07: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/execution_t07: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/final_variables_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/not_an_instance_variable_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/redirection_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializing_formals_execution_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializing_this_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializing_this_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/superinitializer_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializers_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/not_an_instance_variable_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/superinitializer_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializers_t15: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/many_initializers_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/execution_t08: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/execution_of_an_initializer_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/wrong_name_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializers_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Constant_Constructors/potentially_constant_expression_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/implicit_superinitializer_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Constant_Constructors/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Constant_Constructors/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Constant_Constructors/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Constant_Constructors/invalid_constant_initializer_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Constant_Constructors/initializer_not_a_constant_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Constant_Constructors/potentially_constant_expression_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Constant_Constructors/potentially_constant_expression_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Constant_Constructors/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Constant_Constructors/const_parameter_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Constant_Constructors/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Constant_Constructors/invalid_constant_initializer_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Constant_Constructors/non_final_instance_variable_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Constant_Constructors/not_a_constant_in_superclass_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Constant_Constructors/non_final_instance_variable_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Constant_Constructors/superinitializer_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Constant_Constructors/not_a_constant_in_superclass_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Constant_Constructors/initializer_not_a_constant_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Constant_Constructors/superinitializer_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Constant_Constructors/invalid_constant_initializer_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Constant_Constructors/superinitializer_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Constant_Constructors/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Constant_Constructors/const_parameter_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/name_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/name_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Constant_Constructors/initializer_not_a_constant_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Constant_Constructors/superinitializer_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/redirecting_constructor_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/implicit_constructor_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/const_modifier_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/name_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/function_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/redirecting_constructor_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/return_wrong_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/return_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/default_value_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/name_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/function_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/return_wrong_type_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/redirecting_to_itself_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/arguments_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/return_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/redirecting_to_itself_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/name_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/const_modifier_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/return_type_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/accessible_class_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/accessible_class_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/return_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/return_type_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/redirecting_to_itself_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/return_wrong_type_t07: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/redirecting_constructor_call_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/default_value_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/return_wrong_type_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/redirecting_to_itself_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/return_type_t07: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/return_wrong_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/name_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/name_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/redirecting_constructor_call_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/return_wrong_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/redirecting_constructor_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/return_wrong_type_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/default_value_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/return_type_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/mixins_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/implicit_interface_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superclasses/Inheritance_and_Overriding/inheritance_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superclasses/Inheritance_and_Overriding/inheritance_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superclasses/Inheritance_and_Overriding/overriding_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superclasses/Inheritance_and_Overriding/overriding_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superclasses/Inheritance_and_Overriding/inheritance_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superclasses/superclass_of_itself_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superclasses/Inheritance_and_Overriding/overriding_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superclasses/wrong_superclass_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superclasses/Inheritance_and_Overriding/inheritance_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superclasses/Inheritance_and_Overriding/overriding_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superclasses/Inheritance_and_Overriding/inheritance_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superclasses/Inheritance_and_Overriding/inheritance_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superclasses/wrong_superclass_t07: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superclasses/wrong_superclass_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superclasses/wrong_superclass_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superclasses/no_extends_clause_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superclasses/wrong_superclass_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superclasses/wrong_superclass_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superclasses/wrong_superclass_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superclasses/transition_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superclasses/superclass_of_itself_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t24: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t16: pass
-Done dartk-vm debug_x64 co19/Language/Classes/definition_t12: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superclasses/extends_clause_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superclasses/wrong_superclass_t08: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superinterfaces/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superinterfaces/wrong_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_member_and_class_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superinterfaces/type_variable_as_superinterface_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/method_definition_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superinterfaces/wrong_type_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/accessible_class_t04/01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/accessible_class_t04/02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/accessible_class_t04/none: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/accessible_class_t03/none: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/accessible_class_t02/none: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/accessible_class_t02/01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superinterfaces/wrong_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/accessible_class_t03/01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superclasses/Inheritance_and_Overriding/abstract_method_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superinterfaces/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superclasses/Inheritance_and_Overriding/abstract_method_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superinterfaces/wrong_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superinterfaces/more_than_once_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superinterfaces/superclass_as_superinterface_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superinterfaces/no_member_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superinterfaces/no_member_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superinterfaces/no_member_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superinterfaces/dynamic_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superinterfaces/wrong_type_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superinterfaces/dynamic_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superinterfaces/no_member_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superinterfaces/itself_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superinterfaces/implicit_interface_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superinterfaces/implicit_interface_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superinterfaces/no_member_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Static_Methods/same_name_method_and_setter_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/definition_t15: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Static_Methods/declaration_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Static_Methods/type_object_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Static_Methods/declaration_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Static_Methods/declaration_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_members_t11: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_instance_and_static_members_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/definition_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Static_Methods/type_object_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/method_definition_t07: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t22: pass
-Done dartk-vm debug_x64 co19/Language/Classes/member_definition_t24: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_type_variable_t05: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t28: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t08: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t13: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/URIs/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/URIs/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/URIs/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/URIs/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/URIs/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/URIs/syntax_t15: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/URIs/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/URIs/syntax_t13: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/URIs/syntax_t12: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/URIs/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/URIs/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/URIs/syntax_t14: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/URIs/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/top_level_syntax_t14: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/URIs/syntax_t11: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/top_level_syntax_t19: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/URIs/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/top_level_syntax_t11: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/top_level_syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/top_level_syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/private_access_t03: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/top_level_syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/top_level_syntax_t17: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t14: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t21: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/top_level_syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t25: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t11: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/top_level_syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/private_access_t02: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/top_level_syntax_t13: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t24: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/top_level_syntax_t16: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t29: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t16: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/top_level_syntax_t18: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t15: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/top_level_syntax_t15: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/public_namespace_t01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/top_level_syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t12: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t30: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t40: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t04: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/static_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t08: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t37: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t18: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t23: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t14: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/deferred_import_t01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t06: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t24: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/implicit_hide_t02: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t27: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t11: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t07: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/invalid_uri_deferred_t03: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t26: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/invalid_uri_t02: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t28: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t38: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/invalid_uri_t01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t21: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t22: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t22: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t16: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t16: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t15: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t33: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/library_name_t02: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t39: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t11: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t38: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t05: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/implicit_hide_t01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t27: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t19: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t13: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t08: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/invalid_uri_t03: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t12: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t23: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t39: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t30: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t28: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t04: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t14: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t09: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t21: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t34: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/library_name_t03: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t32: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t10: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/dart_core_t04: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t35: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/dart_core_t01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t25: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t19: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t10: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t28: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t03: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t17: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t02: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/deferred_import_t02: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t31: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t27: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t12: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t14: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t36: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t25: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t26: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t13: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t07: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t20: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t23: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t32: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t33: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t22: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t29: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t21: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t18: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/dart_core_t03: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t36: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t05: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t35: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t20: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t11: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t06: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t31: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/invalid_uri_deferred_t02: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/library_name_t01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t18: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t16: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t13: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t29: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t29: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t41: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t03: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t42: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t30: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t15: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t24: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/dart_core_t02: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t20: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t25: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t19: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t17: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t26: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t43: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t20: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t37: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/top_level_syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t17: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t26: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t17: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Exports/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Exports/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Exports/invalid_uri_t02: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Exports/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Exports/same_name_t02: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Exports/invalid_uri_t01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Exports/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Exports/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Exports/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Exports/invalid_uri_t03: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Exports/show_hide_t01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Exports/show_hide_t02: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Exports/reexport__itself_t02: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Exports/implicit_hide_t01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Exports/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Exports/syntax_t13: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Exports/syntax_t12: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Exports/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Exports/reexport__itself_t01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Exports/public_namespace_t01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Exports/syntax_t14: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Exports/reexport_t02: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Exports/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t27: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Exports/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Exports/same_name_t01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t18: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Exports/syntax_t11: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Exports/reexport_t01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/top_level_syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Parts/compilation_t12: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Parts/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Parts/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Parts/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Parts/compilation_t09: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/private_access_t04: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Parts/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Parts/compilation_t04: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Parts/compilation_t11: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Parts/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Parts/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Parts/compilation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Parts/compilation_t08: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Parts/static_warning_t01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Parts/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Parts/compilation_t03: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Parts/compilation_t06: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Parts/compilation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Parts/compilation_t10: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Parts/compilation_t07: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Parts/compilation_t14: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Parts/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Parts/compilation_t13: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t19: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Parts/compilation_t15: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Parts/compilation_t05: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/top_level_syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/private_access_t01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/top_level_syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/top_level_syntax_t14: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/top_level_syntax_t11: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/top_level_syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/top_level_syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/syntax_t13: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/syntax_t15: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/syntax_t16: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/top_level_syntax_t17: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/top_level_syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/top_level_syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/top_level_syntax_t13: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/syntax_t12: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/top_level_syntax_t16: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/top_level_syntax_t18: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/top_level_syntax_t15: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/top_level_syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/syntax_t17: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/top_level_main_t04: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/top_level_syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/syntax_t14: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/top_level_syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/top_level_syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/top_level_main_t03: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/top_level_main_t05: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/syntax_t11: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/top_level_syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/syntax_t18: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/top_level_syntax_t12: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t22: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/top_level_syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t23: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/top_level_syntax_t12: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/top_level_main_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/static_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/execution_sync_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/execution_async_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/execution_sync_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/execution_async_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/execution_async_t08: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t02/none: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t02/01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t09/none: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t09/01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/invalid_uri_deferred_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t34/none: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/invalid_uri_deferred_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t34/01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t12/none: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t12/01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/location_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/execution_async_t07: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/execution_sync_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/location_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/execution_async_t11: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/execution_async_t10: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/execution_sync_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/location_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/execution_async_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/execution_async_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/execution_sync_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/execution_sync_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/location_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/execution_async_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/location_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/location_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/execution_async_t09: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/static_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/execution_async_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/execution_async_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/execution_sync_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/execution_async_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/execution_async_t08: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/location_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/location_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/execution_async_t07: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/execution_sync_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/execution_async_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/location_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/execution_sync_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/execution_async_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/location_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/location_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/location_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/execution_async_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/execution_async_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Variable_Declaration/executing_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Variable_Declaration/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Variable_Declaration/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Variable_Declaration/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Variable_Declaration/executing_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Variable_Declaration/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Variable_Declaration/syntax_t13: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Variable_Declaration/syntax_t15: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t15/none: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t24/none: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t15/01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t24/01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Variable_Declaration/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Variable_Declaration/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Variable_Declaration/syntax_t12: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Variable_Declaration/syntax_t11: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Variable_Declaration/syntax_t20: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Variable_Declaration/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Variable_Declaration/default_initializer_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Expression_Statements/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Variable_Declaration/syntax_t14: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Variable_Declaration/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Variable_Declaration/syntax_t18: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Expression_Statements/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Expression_Statements/syntax_t13: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Expression_Statements/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Variable_Declaration/syntax_t19: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Expression_Statements/syntax_t12: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Expression_Statements/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Expression_Statements/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/While/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/While/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Expression_Statements/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Expression_Statements/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/While/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Expression_Statements/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/While/condition_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/While/execution_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/While/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/While/condition_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/label_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/label_t08: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/label_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/While/condition_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/While/execution_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/While/execution_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/label_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/label_t07: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/async_loops_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/execution_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/label_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/execution_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/async_loops_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/label_t12: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/label_t09: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/label_t11: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/execution_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/label_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/async_loops_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/label_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/execution_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/async_loops_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/async_loop_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/execution_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/execution_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/execution_t09: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/async_loops_t10: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/async_loop_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/async_loops_t08: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/execution_t07: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/label_t10: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/async_loops_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/async_loops_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/execution_t08: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/async_loops_t09: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/async_loops_t07: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/syntax_t15: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/last_statement_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/syntax_t16: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/labels_constants_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/execution_case_no_default_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/labels_constants_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/syntax_t12: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/expressions_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/scope_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/expressions_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/syntax_t17: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/equal_operator_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/syntax_t14: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/equal_operator_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/scope_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/execution_case_no_default_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/expressions_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/execution_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/execution_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/last_statement_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/expressions_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/syntax_t11: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/syntax_t18: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/execution_case_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/label_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/last_statement_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/label_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/execution_case_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/syntax_t19: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/label_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/label_t08: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/control_transfer_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/label_t16: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/async_loops_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/label_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/label_t07: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/async_loops_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/label_t09: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/async_loops_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/control_transfer_t08: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/label_t12: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/control_transfer_t07: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/async_loops_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/label_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/label_t11: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/label_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/label_t17: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/control_transfer_t09: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/control_transfer_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/async_loops_t10: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/async_loops_t08: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/control_transfer_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/label_t15: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/label_t13: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/label_t14: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/control_transfer_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/async_loops_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/async_loops_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/control_transfer_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Labels/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/async_loops_t09: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Labels/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/label_t10: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/async_loops_t07: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Labels/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/control_transfer_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Labels/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Labels/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Labels/scope_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Labels/scope_t07: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Labels/scope_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Labels/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Labels/scope_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Labels/scope_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Labels/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Labels/namespace_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Labels/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Labels/scope_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Do/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Do/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Do/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Labels/scope_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Do/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Do/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Do/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Do/execution_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Do/condition_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Do/condition_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Do/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Do/execution_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Do/condition_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Do/execution_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Do/execution_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Assert/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Assert/production_mode_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Assert/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Assert/type_t09: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Assert/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Assert/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Assert/execution_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Assert/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Assert/execution_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Assert/type_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Assert/execution_t11: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Assert/type_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Assert/type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Assert/execution_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Assert/type_t08: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Assert/execution_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Assert/execution_t09: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Assert/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Assert/type_t07: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Assert/execution_t08: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/execution_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/type_t09: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/wrong_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/syntax_t12: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/type_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/type_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/condition_evaluation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/condition_evaluation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/no_else_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/execution_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/wrong_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/execution_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/type_t08: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/type_t07: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/syntax_t11: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Rethrow/on_catch_clause_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/type_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Rethrow/execution_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Rethrow/control_transfer_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Rethrow/execution_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Rethrow/execution_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Rethrow/control_transfer_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Rethrow/execution_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Rethrow/control_transfer_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Rethrow/control_transfer_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Rethrow/on_catch_clause_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Blocks/execution_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Blocks/execution_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Rethrow/control_transfer_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Blocks/execution_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Blocks/execution_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Blocks/scope_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Blocks/execution_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Blocks/execution_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/generative_constructor_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/generator_function_t07: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/no_expression_function_t09: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/runtime_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/generator_function_t08: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/generator_function_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/execution_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/many_return_statements_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/no_expression_not_function_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/no_expression_function_t11: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/syntax_t15: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/runtime_type_t07: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/no_expression_function_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/generator_function_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/generative_constructor_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/runtime_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/syntax_t16: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/runtime_type_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/generator_function_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/syntax_t13: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/no_expression_function_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/generator_function_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/syntax_t12: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/generator_function_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/no_expression_not_function_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/type_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/many_return_statements_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/no_expression_function_t07: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/syntax_t14: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/syntax_t17: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/generative_constructor_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/generator_function_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/execution_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/execution_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/no_expression_function_t16: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/no_expression_function_t13: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/no_expression_function_t14: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/no_expression_function_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/many_return_statements_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/syntax_t11: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/many_return_statements_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/no_expression_function_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/no_expression_function_t12: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/runtime_type_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/no_expression_function_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/no_expression_function_t10: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/no_expression_function_t15: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/runtime_type_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/no_expression_function_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/no_expression_function_t08: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/runtime_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/syntax_t16: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/syntax_t15: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/For_in/execution_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/For_in/execution_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/For_in/execution_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/For_in/execution_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/For_in/execution_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/For_in/execution_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/For_Loop/execution_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/For_Loop/execution_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/For_Loop/execution_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/For_Loop/execution_t10: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/For_Loop/execution_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/For_Loop/execution_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/For_Loop/execution_t09: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/For_Loop/execution_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/For_Loop/execution_t07: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/syntax_t13: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/syntax_t17: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/For_Loop/execution_t08: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/syntax_t14: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/syntax_t12: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/Asynchronous_For_in/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/Asynchronous_For_in/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/syntax_t20: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/syntax_t11: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/Asynchronous_For_in/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/syntax_t18: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/Asynchronous_For_in/enclosing_loop_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/Asynchronous_For_in/execution_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/Asynchronous_For_in/execution_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/Asynchronous_For_in/execution_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/Asynchronous_For_in/execution_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/syntax_t19: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/matching_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/no_finally_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/exception_handler_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/syntax_t21: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/single_parameter_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/exception_in_catch_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/dynamic_scope_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/syntax_t15: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/exception_handler_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/syntax_t22: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/syntax_t16: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/syntax_t13: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/syntax_t12: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/syntax_t17: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/exception_in_catch_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/stack_trace_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/matching_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/syntax_t20: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/exception_in_catch_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/catch_scope_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/syntax_t14: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/dynamic_catch_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/malformed_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/execution_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/exception_in_catch_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/syntax_t11: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/execution_finally_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/syntax_t18: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/malformed_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/matching_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/single_parameter_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/single_parameter_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/malformed_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/syntax_t19: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/exception_handler_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/malformed_type_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Function_Declaration/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Function_Declaration/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Function_Declaration/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Function_Declaration/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Function_Declaration/reference_before_declaration_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Function_Declaration/reference_before_declaration_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Function_Declaration/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Function_Declaration/reference_before_declaration_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Function_Declaration/scope_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Function_Declaration/parameters_scope_t02: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t40: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Function_Declaration/reference_before_declaration_t02: pass
-Done dartk-vm debug_x64 co19/Language/Functions/ctor_modifier_t15: pass
-Done dartk-vm debug_x64 co19/Language/Functions/ctor_modifier_t07: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Function_Declaration/parameters_scope_t01: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Function_Declaration/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Functions/ctor_modifier_t03: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t38: pass
-Done dartk-vm debug_x64 co19/Language/Functions/function_body_t01: pass
-Done dartk-vm debug_x64 co19/Language/Functions/function_body_short_syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t21: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Type_of_a_Function/function_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Type_of_a_Function/return_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Type_of_a_Function/return_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t15: pass
-Done dartk-vm debug_x64 co19/Language/Functions/setter_modifier_t02: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Functions/ctor_modifier_t18: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Optional_Formals/name_t01: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Optional_Formals/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t22: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Optional_Formals/syntax_t15: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Optional_Formals/name_t02: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Optional_Formals/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Optional_Formals/implicit_default_value_t01: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Optional_Formals/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Optional_Formals/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Optional_Formals/syntax_t12: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Optional_Formals/syntax_t13: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Optional_Formals/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Optional_Formals/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Optional_Formals/syntax_t16: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Optional_Formals/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Optional_Formals/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Optional_Formals/default_value_t02: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Optional_Formals/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Optional_Formals/syntax_t17: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Optional_Formals/syntax_t14: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/syntax_t21: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Optional_Formals/default_value_t01: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/syntax_t16: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/declare_as_constant_t05: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/syntax_t15: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Required_Formals/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Required_Formals/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Required_Formals/syntax_t13: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Required_Formals/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Required_Formals/syntax_t12: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Required_Formals/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Required_Formals/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Required_Formals/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Required_Formals/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Required_Formals/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Required_Formals/syntax_t11: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/syntax_t13: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/declare_as_constant_t03: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/declare_as_constant_t02: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Required_Formals/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/scope_t01: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/syntax_t17: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/syntax_t12: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/syntax_t20: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/syntax_t14: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/declare_as_constant_t01: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/declare_as_constant_t06: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/declare_as_constant_t04: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t33: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t16: pass
-Done dartk-vm debug_x64 co19/Language/Functions/setter_modifier_t06: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/scope_t02: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t39: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t13: pass
-Done dartk-vm debug_x64 co19/Language/Functions/ctor_modifier_t02: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t12: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Function_Declarations/external_function_t02: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Functions/implicit_return_t02: pass
-Done dartk-vm debug_x64 co19/Language/Functions/External_Functions/not_connected_to_a_body_t01: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Function_Declarations/external_function_t01: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Function_Declarations/static_preface_t02: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Function_Declarations/static_preface_t01: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t28: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Function_Declarations/scope_t01: pass
-Done dartk-vm debug_x64 co19/Language/Functions/setter_modifier_t01: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t34: pass
-Done dartk-vm debug_x64 co19/Language/Functions/ctor_modifier_t05: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t25: pass
-Done dartk-vm debug_x64 co19/Language/Functions/ctor_modifier_t12: pass
-Done dartk-vm debug_x64 co19/Language/Functions/ctor_modifier_t06: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t17: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t44: pass
-Done dartk-vm debug_x64 co19/Language/Functions/ctor_modifier_t09: pass
-Done dartk-vm debug_x64 co19/Language/Functions/ctor_modifier_t11: pass
-Done dartk-vm debug_x64 co19/Language/Functions/setter_modifier_t03: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t46: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t31: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t14: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t36: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t45: pass
-Done dartk-vm debug_x64 co19/Language/Functions/setter_modifier_t04: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t23: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t20: pass
-Done dartk-vm debug_x64 co19/Language/Functions/ctor_modifier_t13: pass
-Done dartk-vm debug_x64 co19/Language/Functions/generator_return_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Functions/ctor_modifier_t08: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t32: pass
-Done dartk-vm debug_x64 co19/Language/Functions/ctor_modifier_t16: pass
-Done dartk-vm debug_x64 co19/Language/Functions/implicit_return_t01: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t35: pass
-Done dartk-vm debug_x64 co19/Language/Functions/ctor_modifier_t01: pass
-Done dartk-vm debug_x64 co19/Language/Functions/ctor_modifier_t04: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t18: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t29: pass
-Done dartk-vm debug_x64 co19/Language/Functions/ctor_modifier_t10: pass
-Done dartk-vm debug_x64 co19/Language/Functions/async_return_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Functions/generator_return_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t11: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t41: pass
-Done dartk-vm debug_x64 co19/Language/Functions/ctor_modifier_t14: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t30: pass
-Done dartk-vm debug_x64 co19/Language/Functions/ctor_modifier_t17: pass
-Done dartk-vm debug_x64 co19/Language/Functions/setter_modifier_t05: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t42: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t24: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t19: pass
-Done dartk-vm debug_x64 co19/Language/Generics/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Functions/function_body_short_syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Generics/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t43: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t37: pass
-Done dartk-vm debug_x64 co19/Language/Generics/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Generics/syntax_t15: pass
-Done dartk-vm debug_x64 co19/Language/Generics/malformed_t03: pass
-Done dartk-vm debug_x64 co19/Language/Generics/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Generics/syntax_t13: pass
-Done dartk-vm debug_x64 co19/Language/Generics/scope_t07: pass
-Done dartk-vm debug_x64 co19/Language/Generics/syntax_t16: pass
-Done dartk-vm debug_x64 co19/Language/Generics/no_extends_clause_t01: pass
-Done dartk-vm debug_x64 co19/Language/Generics/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Generics/scope_t01: pass
-Done dartk-vm debug_x64 co19/Language/Generics/syntax_t12: pass
-Done dartk-vm debug_x64 co19/Language/Generics/scope_t06: pass
-Done dartk-vm debug_x64 co19/Language/Generics/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Generics/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Generics/syntax_t14: pass
-Done dartk-vm debug_x64 co19/Language/Generics/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Generics/syntax_t17: pass
-Done dartk-vm debug_x64 co19/Language/Generics/scope_t03: pass
-Done dartk-vm debug_x64 co19/Language/Generics/scope_t02: pass
-Done dartk-vm debug_x64 co19/Language/Generics/syntax_t11: pass
-Done dartk-vm debug_x64 co19/Language/Generics/upper_bound_t01: pass
-Done dartk-vm debug_x64 co19/Language/Generics/malformed_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Generics/malformed_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t25: pass
-Done dartk-vm debug_x64 co19/Language/Generics/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/variable_increment_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/variable_increment_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/variable_decrement_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/variable_negative_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/variable_negative_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/variable_decrement_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/variable_negative_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/method_invocation_equivalent_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t24: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t26: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/super_equivalent_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t21/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t02/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t21/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t02/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t22/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t22/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t01/02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t13/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t12/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t13/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t12/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t05/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t05/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t17/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t17/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t27/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t27/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t27/03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t27/02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t27/05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t27/04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t27/06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t27/07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t27/08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t27/11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t27/10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t27/09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t27/12: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t27/13: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t27/14: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t27/15: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t27/16: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t27/17: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t27/19: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t27/18: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t27/20: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t27/21: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t27/22: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t20/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t20/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/12: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/13: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/14: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/15: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/16: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/17: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/18: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/19: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/20: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/21: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/22: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/23: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/24: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/25: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/26: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/27: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/28: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/29: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/30: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/31: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/33: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/32: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t11/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t11/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t18/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t18/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t21: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t04/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t04/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t22: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t25: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t20: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/equivalent_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t23: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/equivalent_super_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t18: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t27: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t26: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t24: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t19: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t21: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t22: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t13: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t16: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t15: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t12: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t17: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t25: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t14: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t23: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t20: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/identifier_expression_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/getter_invocation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t18: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t24: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/super_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t19: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/getter_invocation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/subscript_expression_super_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/parentheses_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/subscript_expression_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t15/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t15/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t19/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t19/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t16/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t16/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t01/02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t01/03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t01/05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t01/04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t01/06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t01/07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t01/08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t01/09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t01/10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t01/11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t01/13: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t01/12: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t01/15: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t01/14: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t01/16: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t01/17: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t17/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t14/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t17/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t14/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t10/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t10/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t11/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t11/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t08/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t08/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t06/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t06/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t09/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t09/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/12: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/13: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/16: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/14: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/15: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/17: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/19: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/18: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/20: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/21: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/22: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/23: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/24: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/25: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/28: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/27: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/26: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/29: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/30: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/32: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/31: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/33: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/35: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/34: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/36: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/37: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/38: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/40: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/39: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/41: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/42: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/43: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t26/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t26/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t26/02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Null/extend_or_implement_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Null/instance_of_class_null_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Null/extend_or_implement_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Null/instance_of_class_null_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Null/invoking_a_method_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Null/extend_or_implement_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Null/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Null/extend_or_implement_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Throw/no_catch_clause_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Null/extend_or_implement_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Null/instantiate_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Null/invoking_a_method_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Throw/throw_various_types_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Throw/evaluation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Throw/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Throw/evaluation_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Throw/current_exception_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Throw/evaluation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Throw/no_catch_clause_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Throw/stack_trace_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Throw/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Throw/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Throw/no_catch_clause_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Throw/no_catch_clause_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Throw/no_catch_clause_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Throw/no_catch_clause_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Booleans/extend_or_implement_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Booleans/extend_or_implement_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Booleans/extend_or_implement_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Throw/evaluation_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Booleans/extend_or_implement_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Throw/evaluation_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Booleans/static_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Booleans/runtime_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Booleans/boolean_literals_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Booleans/boolean_literals_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Booleans/extend_or_implement_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Booleans/boolean_literals_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Booleans/extend_or_implement_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Booleans/class_bool_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Booleans/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/If_null_Expressions/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Booleans/Boolean_Conversion/definition_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/If_null_Expressions/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Booleans/Boolean_Conversion/definition_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Booleans/Boolean_Conversion/definition_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Booleans/Boolean_Conversion/conversion_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/If_null_Expressions/static_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/If_null_Expressions/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/If_null_Expressions/evaluation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/If_null_Expressions/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/If_null_Expressions/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/If_null_Expressions/evaluation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/If_null_Expressions/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/If_null_Expressions/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/If_null_Expressions/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/If_null_Expressions/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/static_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/evaluation_super_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/syntax_t16: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/syntax_t15: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/syntax_t12: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/not_equal_equivalent_super_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/evaluation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/syntax_t11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/not_equal_equivalent_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/evaluation_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/syntax_t20: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/syntax_t23: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/evaluation_super_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/evaluation_super_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/evaluation_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/syntax_t24: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/syntax_t19: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/static_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/conditional_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/conditional_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/static_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/conditional_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/static_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/method_lookup_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/static_type_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/static_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/getter_value_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/proxy_annotation_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/proxy_annotation_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/proxy_annotation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/static_member_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/static_type_warning_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/static_type_warning_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/instance_of_type_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/class_object_member_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/method_lookup_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/no_such_method_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/getter_value_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/class_object_member_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/instance_of_type_getter_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/proxy_annotation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/instance_of_type_getter_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/expression_evaluation_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/class_object_member_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/static_type_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/class_object_member_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/expression_evaluation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/getter_value_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/class_object_member_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/method_lookup_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/instance_of_type_getter_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/proxy_annotation_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/instance_of_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/syntax_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/syntax_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/syntax_t01/04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/syntax_t01/02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/syntax_t01/05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/syntax_t01/03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/syntax_t01/07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/syntax_t01/06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/syntax_t01/08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/static_type_warning_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/static_type_warning_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/static_type_warning_t04/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/static_type_warning_t04/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/expression_evaluation_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/expression_evaluation_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/proxy_annotation_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/getter_value_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/static_type_warning_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/proxy_annotation_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/static_type_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/instance_of_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/static_type_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/static_member_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/getter_value_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/class_object_member_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/class_object_member_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/expression_evaluation_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/static_type_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/method_lookup_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/expression_evaluation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/class_object_member_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/class_object_member_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/proxy_annotation_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/no_such_method_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/instance_of_type_getter_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/getter_value_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/instance_of_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Super_Closurization/method_closurization_named_params_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Super_Closurization/method_closurization_named_params_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Super_Closurization/method_closurization_positional_params_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Super_Closurization/method_closurization_positional_params_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/conditional_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/conditional_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/conditional_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/conditional_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Super_Getter_Access_and_Method_Closurization/static_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Super_Getter_Access_and_Method_Closurization/static_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Super_Getter_Access_and_Method_Closurization/static_type_warning_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Super_Getter_Access_and_Method_Closurization/getter_invocation_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Super_Getter_Access_and_Method_Closurization/method_extraction_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Super_Getter_Access_and_Method_Closurization/method_extraction_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Super_Getter_Access_and_Method_Closurization/method_extraction_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Super_Getter_Access_and_Method_Closurization/no_such_method_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Super_Getter_Access_and_Method_Closurization/getter_invocation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Super_Getter_Access_and_Method_Closurization/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Super_Getter_Access_and_Method_Closurization/getter_invocation_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Super_Getter_Access_and_Method_Closurization/getter_invocation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Super_Getter_Access_and_Method_Closurization/no_such_method_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Ordinary_Member_Closurization/method_closurization_named_params_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Ordinary_Member_Closurization/method_closurization_named_params_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Ordinary_Member_Closurization/method_closurization_positional_params_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Ordinary_Member_Closurization/method_closurization_positional_params_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/conditional_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/async_generator_invokation_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/async_generator_invokation_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/async_cleanup_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/sync_generator_invokation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Super_Getter_Access_and_Method_Closurization/no_instance_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Super_Getter_Access_and_Method_Closurization/no_instance_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Unqualified_Invocation/instance_context_invocation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Unqualified_Invocation/static_method_invocation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Unqualified_Invocation/instance_context_invocation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Unqualified_Invocation/method_invocation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Unqualified_Invocation/function_expr_invocation_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Unqualified_Invocation/static_method_invocation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Unqualified_Invocation/function_expr_invocation_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Unqualified_Invocation/function_expr_invocation_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Unqualified_Invocation/instance_method_invocation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Unqualified_Invocation/function_expr_invocation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Unqualified_Invocation/function_expr_invocation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Unqualified_Invocation/prefix_object_invocation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Unqualified_Invocation/instance_method_invocation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Unqualified_Invocation/static_context_invocation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Unqualified_Invocation/instance_context_invocation_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Unqualified_Invocation/static_context_invocation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Unqualified_Invocation/static_context_invocation_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Unqualified_Invocation/function_expr_invocation_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Unqualified_Invocation/instance_context_invocation_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Function_Expression_Invocation/static_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Function_Expression_Invocation/not_a_function_expression_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Function_Expression_Invocation/property_extraction_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Function_Expression_Invocation/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/same_name_arguments_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Function_Expression_Invocation/invocation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Function_Expression_Invocation/static_type_dynamic_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Function_Expression_Invocation/static_type_dynamic_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Function_Expression_Invocation/property_extraction_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/wrong_static_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/optional_parameter_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/binding_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/optional_parameter_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/wrong_static_type_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/wrong_static_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/binding_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/optional_parameter_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/binding_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/actual_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/binding_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/optional_parameter_type_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/binding_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/actual_type_not_a_subtype_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/wrong_static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/sync_generator_iterable_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Actual_Argument_List_Evaluation/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/sync_generator_iterable_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/async_cleanup_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/terminate_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/number_of_arguments_t05/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/number_of_arguments_t05/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/names_matching_t02/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/names_matching_t02/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/names_matching_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/number_of_arguments_t08/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/names_matching_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/number_of_arguments_t08/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/number_of_arguments_t07/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/number_of_arguments_t07/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/number_of_arguments_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/number_of_arguments_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/number_of_arguments_t02/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/number_of_arguments_t02/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/names_matching_t04/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/names_matching_t04/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/names_matching_t03/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/number_of_arguments_t03/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/names_matching_t03/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/number_of_arguments_t03/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/number_of_arguments_t04/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Actual_Argument_List_Evaluation/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/number_of_arguments_t04/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/number_of_arguments_t06/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/number_of_arguments_t06/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Actual_Argument_List_Evaluation/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Actual_Argument_List_Evaluation/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Actual_Argument_List_Evaluation/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Actual_Argument_List_Evaluation/evaluation_order_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/sync_generator_iterable_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/async_cleanup_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/allowed_characters_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/async_generator_invokation_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/async_cleanup_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/sync_generator_iterable_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/sync_generator_iteration_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/async_generator_invokation_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/async_invokation_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/sync_generator_iteration_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/sync_generator_iteration_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/async_cleanup_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/sync_generator_iteration_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/async_generator_invokation_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/sync_generator_invokation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/terminate_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/async_invokation_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/async_invokation_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/async_generator_invokation_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/async_cleanup_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/sync_generator_iterable_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/sync_generator_iterable_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/async_invokation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/async_invokation_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/async_generator_invokation_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/sync_generator_iteration_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/async_generator_invokation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/async_cleanup_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/async_cleanup_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/async_invokation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/async_generator_invokation_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/sync_generator_iteration_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/terminate_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/sync_generator_iteration_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/async_generator_invokation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/static_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/sync_generator_iteration_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/runtime_map_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/static_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/constant_map_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/identical_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/constant_map_key_value_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/constant_map_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/order_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/constant_map_key_value_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/key_value_equals_operator_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/runtime_map_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/constant_map_key_value_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/static_type_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/mutate_a_constant_map_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/mutate_a_constant_map_t01/02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/mutate_a_constant_map_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/mutate_a_constant_map_t01/04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/mutate_a_constant_map_t01/03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/mutate_a_constant_map_t01/05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/constant_map_key_value_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/constant_map_key_value_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/constant_map_key_value_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/static_type_dynamic_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/constant_map_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/key_value_equals_operator_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/identical_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/runtime_map_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/runtime_map_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/equal_keys_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/constant_map_key_value_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/static_type_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/value_of_a_constant_map_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/value_of_a_constant_map_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/static_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/type_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/static_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/evaluation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/type_not_bool_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t15: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/evaluation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/allowed_characters_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t13: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/type_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/type_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/type_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/type_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/evaluation_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/type_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/evaluation_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/static_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/constant_list_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/constant_list_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/indices_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/static_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/identical_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/value_of_a_constant_list_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t01/02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t01/05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t01/04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t01/03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t01/14: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t01/06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t01/07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t01/08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t01/11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t01/09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t01/13: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t12/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t01/10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t01/12: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t12/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t14/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t14/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t10/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t10/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/mutate_a_constant_list_t01/02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/mutate_a_constant_list_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/mutate_a_constant_list_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/mutate_a_constant_list_t01/03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/mutate_a_constant_list_t01/04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/mutate_a_constant_list_t01/05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/mutate_a_constant_list_t01/06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/runtime_list_literal_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/static_type_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/runtime_list_literal_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/static_type_dynamic_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/identical_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/runtime_list_literal_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/value_of_a_constant_list_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/static_type_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/runtime_list_literal_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/evaluation_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/definition_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/definition_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/definition_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/definition_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/evaluation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/definition_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/evaluation_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/is_not_equivalent_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/evaluation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/evaluation_t12: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/is_not_equivalent_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/evaluation_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/definition_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/definition_t11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/definition_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/is_not_equivalent_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/evaluation_t11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/evaluation_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/evaluation_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/evaluation_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/definition_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/evaluation_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/definition_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/evaluation_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/definition_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/static_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/indexed_decrement_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/conditional_increment_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/static_type_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/static_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/expression_decrement_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/static_type_t11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/indexed_increment_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/expression_increment_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/property_increment_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/static_type_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/getter_called_once_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t02/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t02/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/variable_increment_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/getter_called_once_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/expression_decrement_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/static_type_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/expression_increment_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/getter_called_once_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/static_type_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/variable_increment_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/variable_decrement_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/conditional_decrement_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/indexed_increment_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/property_increment_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/static_type_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/static_type_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/conditional_increment_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/property_decrement_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/static_type_t12: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/variable_decrement_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/conditional_decrement_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/indexed_decrement_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/static_type_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/getter_called_once_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/property_decrement_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Method_Lookup/method_lookup_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Method_Lookup/superclass_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Method_Lookup/superclass_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Method_Lookup/method_lookup_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Method_Lookup/lookup_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Method_Lookup/instance_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Method_Lookup/method_lookup_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Method_Lookup/superclass_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Method_Lookup/superclass_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Method_Lookup/superclass_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Method_Lookup/superclass_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Method_Lookup/superclass_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Method_Lookup/superclass_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Method_Lookup/instance_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Method_Lookup/method_lookup_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Method_Lookup/instance_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Method_Lookup/superclass_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Getter_and_Setter_Lookup/definition_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Getter_and_Setter_Lookup/definition_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Getter_and_Setter_Lookup/definition_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Getter_and_Setter_Lookup/finding_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Getter_and_Setter_Lookup/definition_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Getter_and_Setter_Lookup/definition_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Getter_and_Setter_Lookup/definition_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Getter_and_Setter_Lookup/definition_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Getter_and_Setter_Lookup/definition_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Getter_and_Setter_Lookup/finding_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Getter_and_Setter_Lookup/definition_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Getter_and_Setter_Lookup/definition_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/12: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/15: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/13: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/14: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/16: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/17: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/18: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/19: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/20: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/22: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/21: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/24: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/23: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/25: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/26: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/27: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/29: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/30: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/31: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/32: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/33: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/34: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/35: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/36: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/37: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/38: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/40: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/39: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t03/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t03/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t05/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t05/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/static_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/conditional_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/evaluation_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/method_lookup_failed_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/function_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/conditional_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/method_lookup_failed_t16: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/accessible_instance_member_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/accessible_instance_member_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/static_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/evaluation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/function_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/method_lookup_failed_t15: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/conditional_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/conditional_static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/method_lookup_failed_t13: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/conditional_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/evaluation_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/conditional_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/evaluation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/conditional_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/method_lookup_failed_t20: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/method_lookup_failed_t14: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/conditional_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/method_lookup_failed_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/method_lookup_failed_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/method_lookup_failed_t11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/accessible_instance_member_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/accessible_instance_member_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/method_lookup_failed_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/accessible_instance_member_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/method_lookup_failed_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/evaluation_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/accessible_instance_member_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/method_lookup_failed_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/method_lookup_failed_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/accessible_instance_member_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/accessible_instance_member_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/evaluation_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/object_method_invocation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/method_lookup_failed_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/evaluation_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/method_lookup_failed_t19: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/method_lookup_failed_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/object_method_invocation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/method_lookup_failed_t18: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/method_lookup_failed_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/static_type_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/evaluation_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/method_lookup_failed_t12: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/conditional_warning_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/conditional_warning_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Cascaded_Invocations/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/accessible_instance_member_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Cascaded_Invocations/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/method_lookup_failed_t17: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Cascaded_Invocations/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Cascaded_Invocations/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/conditional_warning_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Cascaded_Invocations/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Cascaded_Invocations/cascaded_expression_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Cascaded_Invocations/syntax_t15: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Cascaded_Invocations/syntax_t13: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Cascaded_Invocations/syntax_t12: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Cascaded_Invocations/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Cascaded_Invocations/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Cascaded_Invocations/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Cascaded_Invocations/syntax_t14: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Cascaded_Invocations/syntax_t17: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Cascaded_Invocations/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Cascaded_Invocations/syntax_t11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Cascaded_Invocations/cascaded_expression_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Cascaded_Invocations/syntax_t18: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Cascaded_Invocations/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/invocation_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Cascaded_Invocations/syntax_t20: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/invocation_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/invocation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Cascaded_Invocations/syntax_t19: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/accessible_instance_member_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/evaluation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/wrong_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/invocation_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/evaluation_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/evaluation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/getter_lookup_failed_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/invocation_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/accessible_instance_member_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/invocation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/getter_lookup_failed_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/static_type_dynamic_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/static_type_dynamic_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/accessible_instance_member_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/method_lookup_failed_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/evaluation_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/invocation_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/accessible_instance_member_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/method_lookup_failed_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/getter_lookup_failed_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/method_lookup_failed_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/method_lookup_failed_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/malformed_or_malbounded_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/evaluation_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/parameterized_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/accessibility_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/deferred_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/getter_lookup_failed_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/accessible_instance_member_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/accessibility_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/malformed_or_malbounded_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/allowed_characters_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/accessibility_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/parameterized_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/constant_constructor_name_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/arguments_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/constant_constructor_name_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/canonicalized_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/arguments_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/accessibility_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/constant_constructor_same_name_as_class_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/constant_constructor_name_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/accessibility_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/accessibility_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/deferred_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/accessibility_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/canonicalized_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/constant_constructor_same_name_as_class_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/canonicalized_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/arguments_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/canonicalized_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/constant_constructor_name_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/exception_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/abstract_class_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/abstract_class_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/canonicalized_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/malformed_or_malbounded_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/malformed_or_malbounded_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/malformed_or_malbounded_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/evaluation_t20: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/generic_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/evaluation_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/execution_t14: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/redirecting_factory_constructor_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/generative_constructor_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/execution_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/evaluation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/argument_static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/evaluation_t15: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/type_argument_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/generic_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/constructor_same_name_as_class_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/evaluation_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/execution_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/generic_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/evaluation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/body_execution_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/execution_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/abstract_class_t03/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/abstract_class_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/abstract_class_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/evaluation_t12: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/generative_constructor_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/abstract_class_t03/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/evaluation_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/type_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/evaluation_t16: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/redirecting_factory_constructor_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/execution_t12: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/execution_t11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/execution_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/body_execution_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/argument_static_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/execution_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/evaluation_t17: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/execution_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/body_execution_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/evaluation_t11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/execution_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/generative_constructor_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/execution_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/evaluation_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/evaluation_t18: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/evaluation_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/type_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/evaluation_t19: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/constructor_same_name_as_class_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/execution_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/evaluation_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/evaluation_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/execution_t13: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/type_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/named_constructor_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/evaluation_t14: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/evaluation_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/execution_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/body_execution_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/evaluation_t13: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/named_constructor_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t15: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/allowed_characters_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/abstract_class_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/equivalent_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/equivalent_super_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/abstract_class_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/abstract_class_t02/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t09/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/abstract_class_t02/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t09/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t01/02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t01/05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t01/04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t01/03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t01/06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t01/07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t01/08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t01/10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t01/09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t01/13: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t01/11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t01/12: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t01/14: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t01/15: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t01/16: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t01/17: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t01/18: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t01/20: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t01/19: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t13/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t13/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t12/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t14/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t12/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t14/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t10/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t10/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t11/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t11/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t16: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t15: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t12: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t13: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t14: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/equivalent_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t17: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t24: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/equivalent_super_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Cast/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Cast/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Cast/static_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Cast/evaluation_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Cast/evaluation_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Cast/evaluation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Cast/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Cast/evaluation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Cast/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Cast/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Cast/evaluation_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Cast/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Cast/evaluation_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Cast/evaluation_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Cast/evaluation_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Cast/evaluation_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Cast/evaluation_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Cast/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/method_invocation_super_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/method_invocation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/method_invocation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/allowed_characters_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/method_invocation_super_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/method_invocation_super_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t21/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t21/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t22/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t22/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t01/03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t01/02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t01/04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t01/05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t01/06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t01/07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t01/09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t01/08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t01/11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t01/10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t01/12: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t01/14: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t01/13: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t01/15: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t01/16: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t01/18: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t01/17: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t01/19: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t01/20: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t01/21: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t01/22: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t01/23: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t01/24: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t01/25: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t01/26: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t01/27: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t20/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t20/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t23/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t23/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t18/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t19/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t18/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t15/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t19/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t15/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t16/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t16/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t01/02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t01/04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t01/03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t01/05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t01/24: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t01/06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t01/07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t01/08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t01/09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t01/11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t01/10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t01/12: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t01/13: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t01/14: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t01/15: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t01/16: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t01/17: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t01/18: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t01/19: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t01/20: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t01/21: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t01/22: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t01/23: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t13/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t13/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t12/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t12/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/method_invocation_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t14: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/This/definition_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/This/placement_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/This/definition_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/This/definition_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/This/static_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/This/placement_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/This/placement_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/This/definition_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/This/definition_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/This/placement_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/This/placement_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/This/placement_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/This/placement_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/This/definition_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/This/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/This/placement_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_dynamic_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_form_3_asyncs_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_form_3_async_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_form_2_async_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_form_3_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_form_2_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_form_2_async_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_form_1_async_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_form_3_async_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_dynamic_async_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_form_3_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_form_3_async_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_dynamic_syncs_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_dynamic_asyncs_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_form_3_asyncs_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_form_1_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_form_1_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_dynamic_asyncs_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_dynamic_async_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_form_3_syncs_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_form_3_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_form_3_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_dynamic_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_dynamic_asyncs_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_form_1_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_form_1_async_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_dynamic_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_dynamic_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_dynamic_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_dynamic_async_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_form_1_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_form_2_async_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_form_2_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_form_2_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t17/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t17/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_form_2_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_form_1_async_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/class_function_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_form_3_syncs_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_form_3_syncs_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_dynamic_syncs_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_form_3_asyncs_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t15: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t16: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_dynamic_syncs_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/static_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/allowed_characters_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/equivalent_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/equivalent_super_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Top_level_Getter_Invocation/evaluation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t17: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Top_level_Getter_Invocation/evaluation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Top_level_Getter_Invocation/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Top_level_Getter_Invocation/evaluation_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/parentheses_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t20: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/static_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t19: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t23: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/syntax_t16: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t28: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t30: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/allowed_characters_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t32: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/evaluation_form_or_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/evaluation_form_and_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t29: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t13: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t07/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t07/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t08/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t08/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t01/02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t01/03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t01/04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t01/05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t01/06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t01/07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t01/08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t01/09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t01/10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t01/11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t01/12: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t01/13: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t01/14: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t01/15: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t13/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t13/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t12/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t12/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t14/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t14/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t11/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t11/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/syntax_t15/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/syntax_t15/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/syntax_t13/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/syntax_t13/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/syntax_t12/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/syntax_t12/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/evaluation_form_or_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t16: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t26: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t17: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t25: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t21: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t31: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/evaluation_form_and_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t15: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t14: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t22: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t18: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t24: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t12: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t24: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t27: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/u_four_hex_digits_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/escape_unicode_scalar_value_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t16: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/static_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/extend_or_implement_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/escape_tab_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t40: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t14: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/static_type_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/u_four_hex_digits_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t32: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/runtime_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/escape_hex_digit_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t18: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t18: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/static_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t45: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t31: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t25: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t26: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t19: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/escape_vertical_tab_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/u_four_hex_digits_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t12: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t47: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/implement_class_string_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t22: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t28: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t19: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/syntax_t14/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/syntax_t10/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/escape_hexadecimal_digits_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/syntax_t14/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/syntax_t10/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/syntax_t11/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/syntax_t11/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t15: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t17: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/escape_hexadecimal_digits_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t49: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/adjacent_strings_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t21: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/static_type_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t27: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/extend_or_implement_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/String_Interpolation/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/escape_backspace_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/adjacent_strings_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t43: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/raw_string_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/String_Interpolation/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/String_Interpolation/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/String_Interpolation/syntax_t15: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/String_Interpolation/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/String_Interpolation/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/String_Interpolation/syntax_t16: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/String_Interpolation/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/String_Interpolation/single_quote_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/String_Interpolation/double_quote_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/String_Interpolation/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/String_Interpolation/syntax_t13: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/String_Interpolation/syntax_t12: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/String_Interpolation/no_quote_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/String_Interpolation/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/String_Interpolation/syntax_t14: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/String_Interpolation/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/String_Interpolation/syntax_t17: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/String_Interpolation/double_quote_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/String_Interpolation/single_quote_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/String_Interpolation/syntax_t11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/String_Interpolation/double_quote_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/String_Interpolation/no_quote_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t13: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/String_Interpolation/single_quote_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/String_Interpolation/double_quote_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/String_Interpolation/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/escape_newline_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/ignore_whitespaces_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t34: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/adjacent_strings_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t36: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t38: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/adjacent_strings_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/extend_or_implement_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t24: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/u_four_hex_digits_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t29: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/static_type_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t35: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t33: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t22: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/escape_characters_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t14: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t21: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t29: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t23: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/u_four_hex_digits_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t27: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t41: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/escape_unicode_scalar_value_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t39: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t28: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t13: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/escape_carriage_return_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t42: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t25: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t15: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t12: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t17: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/escape_unicode_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t20: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t30: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/escape_hexadecimal_digits_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t34: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t16: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/raw_string_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/extend_or_implement_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/static_type_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/static_type_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t31: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/escape_hexadecimal_digits_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/extend_or_implement_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t44: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t32: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t20: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t26: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t30: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t33: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/escape_form_feed_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t23: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/static_type_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/escape_unicode_scalar_value_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/adjacent_strings_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t37: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/static_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/static_assignment_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/variable_assignment_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/no_such_method_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/super_assignment_failed_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/top_level_assignment_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/indexed_expression_super_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/expression_assignment_failed_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/super_assignment_dynamic_error_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/static_warning_t03/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/static_warning_t03/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/super_assignment_failed_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/expression_assignment_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/expression_assignment_failed_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/static_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/no_such_method_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/top_level_assignment_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/variable_assignment_static_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/null_aware_assignment_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/top_level_assignment_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/prefix_object_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/indexed_expression_static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/expression_assignment_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/null_aware_assignment_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/super_assignment_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/no_such_method_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/indexed_expression_super_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/no_such_method_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/super_assignment_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/no_such_method_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/prefix_object_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/expression_assignment_dynamic_error_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/null_aware_assignment_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/expression_assignment_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/expression_assignment_dynamic_error_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/expression_assignment_static_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/static_assignment_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/no_such_method_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/variable_assignment_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/expression_assignment_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/indexed_expression_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/static_type_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/super_assignment_static_warning_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/variable_assignment_static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/expression_assignment_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/expression_assignment_failed_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/indexed_expression_super_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/indexed_expression_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/expression_assignment_value_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/expression_assignment_static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/no_such_method_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/expression_assignment_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/super_assignment_static_warning_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/no_such_method_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/super_assignment_static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/variable_assignment_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/expression_assignment_failed_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/null_aware_assignment_static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/top_level_assignment_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/top_level_assignment_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/expression_assignment_failed_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/setter_assignment_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/variable_assignment_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_compound_assignment_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/setter_assignment_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/variable_assignment_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/static_warning_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/static_warning_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/static_warning_t02/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/static_warning_t02/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/variable_assignment_static_type_t04/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/variable_assignment_static_type_t04/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/indexed_expression_static_type_t02/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/static_warning_t04/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/static_warning_t04/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/super_assignment_static_warning_t04/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/indexed_expression_static_type_t02/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/super_assignment_static_warning_t04/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/null_aware_assignment_static_warning_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/null_aware_assignment_static_warning_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_compound_assignment_static_t11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/expression_assignment_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/setter_assignment_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_compound_assignment_static_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_compound_assignment_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/indexed_expression_assignment_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_compound_assignment_static_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/expression_assignment_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_expression_assignment_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_compound_assignment_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_compound_assignment_t11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/setter_assignment_t11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_compound_assignment_static_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_compound_assignment_static_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/setter_assignment_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_compound_assignment_static_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/expression_assignment_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_static_assignment_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/variable_assignment_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/variable_assignment_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/expression_assignment_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/setter_assignment_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/indexed_expression_assignment_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_expression_assignment_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/variable_assignment_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_compound_assignment_static_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_indexed_assignment_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/expression_assignment_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_conditional_static_assignment_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/variable_assignment_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_compound_assignment_static_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_super_assignment_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_compound_assignment_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_super_assignment_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/expression_assignment_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_compound_assignment_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/indexed_expression_assignment_t11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/expression_assignment_t11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/setter_assignment_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_compound_assignment_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/expression_assignment_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/variable_assignment_t11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_variable_assignment_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/variable_assignment_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_compound_assignment_static_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/setter_assignment_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_static_assignment_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_static_assignment_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/variable_assignment_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/setter_assignment_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_conditional_expression_assignment_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_conditional_static_assignment_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_variable_assignment_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/setter_assignment_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/indexed_expression_assignment_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/variable_assignment_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_indexed_assignment_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_compound_assignment_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/indexed_expression_assignment_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_static_warning_super_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_static_warning_super_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_static_warning_variable_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_static_warning_variable_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_static_warning_static_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_static_warning_static_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_static_warning_indexed_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/expression_assignment_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_static_warning_indexed_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_conditional_static_assignment_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/indexed_expression_assignment_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_compound_assignment_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/variable_assignment_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_variable_assignment_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_Conditional_expression_assignment_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_indexed_assignment_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/indexed_expression_assignment_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_compound_assignment_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/indexed_expression_assignment_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_compound_assignment_static_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/setter_assignment_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/indexed_expression_assignment_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/indexed_expression_assignment_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/expression_assignment_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/expression_assignment_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_compound_assignment_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_expression_assignment_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/indexed_expression_assignment_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_compound_assignment_static_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/this_assignment_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/variable_assignment_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/variable_assignment_dynamic_error_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/indexed_expression_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/expression_assignment_static_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/super_assignment_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/super_assignment_value_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/expression_assignment_static_warning_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/static_type_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/expression_assignment_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/indexed_expression_super_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/super_assignment_failed_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/expression_assignment_failed_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/super_assignment_static_warning_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/expression_assignment_static_warning_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/super_assignment_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/expression_assignment_static_warning_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/super_assignment_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/super_assignment_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/expression_assignment_static_type_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/variable_assignment_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/this_assignment_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/expression_assignment_value_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/top_level_assignment_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/static_type_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/super_assignment_value_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/super_assignment_failed_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/static_assignment_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/indexed_expression_super_static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/super_assignment_failed_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/top_level_assignment_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/no_such_method_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/variable_assignment_static_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/expression_assignment_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/static_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/indexed_expression_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_static_warning_expression_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/execution_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_static_warning_expression_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_static_warning_compound_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_static_warning_compound_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/indexed_expression_super_static_type_t02/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/indexed_expression_super_static_type_t02/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/static_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/value_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/value_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/execution_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/value_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/no_static_warning_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/execution_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/evaluation_throws_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/value_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/evaluation_throws_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/evaluation_throws_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/evaluation_throws_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/execution_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/evaluation_throws_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/execution_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/execution_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/extend_or_implement_int_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/evaluation_throws_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/implement_num_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/evaluation_throws_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/static_type_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/syntax_t21: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/syntax_t22: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/syntax_t16: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/syntax_t33: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/static_type_of_int_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/extend_or_implement_int_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/implement_num_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/extend_or_implement_int_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/implement_num_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/syntax_t25: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/extend_or_implement_double_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/static_type_of_int_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/extend_or_implement_double_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/syntax_t17: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/extend_or_implement_int_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/extend_or_implement_double_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/syntax_t31: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/syntax_t27: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/extend_or_implement_double_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/syntax_t23: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/extend_or_implement_int_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/syntax_t32: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/implement_num_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/implement_num_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/static_type_of_double_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/implement_num_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/syntax_t18: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/static_type_of_double_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/syntax_t29: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/extend_or_implement_double_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/extend_or_implement_double_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/syntax_t30: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/extend_or_implement_int_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/syntax_t26: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/syntax_t24: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Symbols/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Symbols/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Symbols/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Object_Identity/integer_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Object_Identity/string_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Object_Identity/bool_or_null_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Object_Identity/constant_lists_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Object_Identity/double_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Object_Identity/object_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Object_Identity/constant_objects_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Object_Identity/integer_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Object_Identity/constant_lists_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Object_Identity/double_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Object_Identity/bool_or_null_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Object_Identity/double_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/literal_string_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/equals_expression_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Object_Identity/constant_maps_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Object_Identity/constant_maps_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/string_length_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Object_Identity/object_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/literal_symbol_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/identical_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/bitwise_operators_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/exception_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/no_other_constant_expressions_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/no_other_constant_expressions_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/constant_list_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/constant_list_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/no_other_constant_expressions_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/no_other_constant_expressions_t13: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/logical_expression_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/exception_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/math_operators_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/no_other_constant_expressions_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/bitwise_operators_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/constant_map_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/identifier_denotes_a_constant_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/static_constant_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/static_constant_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/parenthesized_expression_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/no_other_constant_expressions_t15: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/no_other_constant_expressions_t21: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/top_level_function_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/identifier_denotes_a_constant_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/literal_string_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/no_other_constant_expressions_t12: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/static_constant_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/top_level_function_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/top_level_function_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/bitwise_operators_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/literal_string_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/depending_on_itself_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/literal_boolean_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/no_other_constant_expressions_t14: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/static_constant_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/literal_string_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/identical_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/string_length_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/no_other_constant_expressions_t31: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/constant_constructor_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/no_other_constant_expressions_t11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/static_constant_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/constant_constructor_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/identifier_denotes_a_constant_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/null_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/no_other_constant_expressions_t18: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/top_level_function_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/logical_expression_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/equals_expression_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/exception_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/ternary_operator_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/bitwise_operators_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/static_method_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/logical_expression_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/math_operators_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/exception_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/math_operators_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/static_constant_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/math_operators_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/depending_on_itself_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/identical_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/identifier_denotes_a_constant_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/ternary_operator_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/identifier_denotes_a_constant_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/bitwise_operators_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/static_method_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/literal_string_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/static_constant_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/no_other_constant_expressions_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/top_level_function_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/math_operators_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/math_operators_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/static_method_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/constant_map_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/bitwise_operators_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/no_other_constant_expressions_t17: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/no_other_constant_expressions_t20: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/exception_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/string_length_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/logical_expression_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/depending_on_itself_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/identifier_denotes_a_constant_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t16: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/equals_expression_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/literal_number_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/constant_constructor_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/math_operators_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/identifier_denotes_a_constant_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t48: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/static_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t32: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t60: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t50: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t13: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t25: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/syntax_built_in_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t35: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t58: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/async_and_generator_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/evaluation_function_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t20: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t14: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t30: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t59: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t28: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/async_and_generator_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/static_type_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/static_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t41: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/async_and_generator_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/evaluation_library_or_getter_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/evaluation_property_extraction_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t43: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/evaluation_function_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/evaluation_property_extraction_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t27: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t20: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t46: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t61: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/async_and_generator_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t57: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t26: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t22: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/undeclared_identifier_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/evaluation_alias_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t47: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t17: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/evaluation_static_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/undeclared_identifier_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/undeclared_identifier_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t21: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t44: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t54: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/async_and_generator_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/evaluation_variable_or_parameter_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/undeclared_identifier_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t13: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t31: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/evaluation_undeclared_identifier_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t29: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t29: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t37: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t15: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t65: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/undeclared_identifier_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/evaluation_library_or_getter_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t39: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t52: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t64: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/evaluation_alias_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t27: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t56: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/evaluation_type_parameter_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t66: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/evaluation_static_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t28: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t19: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/evaluation_variable_or_parameter_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/evaluation_library_or_getter_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/async_and_generator_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t55: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/static_type_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t14: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t62: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t53: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t33: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t30: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/evaluation_constant_variable_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t68: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/syntax_built_in_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/evaluation_library_or_getter_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t34: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t18: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t51: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/evaluation_function_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/qualified_identifiers_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t49: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/evaluation_type_parameter_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t12: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t25: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/undeclared_identifier_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t12: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t15: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/evaluation_variable_or_parameter_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t24: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/evaluation_prefix_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t23: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/async_and_generator_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t45: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t67: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t26: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/static_type_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t17: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t16: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/evaluation_library_or_getter_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t38: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/async_and_generator_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/async_and_generator_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t42: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t36: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t31: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t63: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/undeclared_identifier_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/undeclared_identifier_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t21: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t24: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/evaluation_property_extraction_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/static_type_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t19: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t32: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t18: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t40: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t23: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/async_and_generator_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/evaluation_variable_or_parameter_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t22: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/whitespace_t11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/evaluation_property_extraction_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/unicode_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/whitespace_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/whitespace_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/unicode_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/unicode_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/whitespace_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/unicode_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/unicode_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/whitespace_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Spawning_an_Isolate/new_isolate_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/whitespace_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/whitespace_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/unicode_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/whitespace_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/unicode_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/unicode_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/whitespace_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/unicode_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/whitespace_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/unicode_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/for_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/unicode_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/final_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/case_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/break_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/finally_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/is_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/assert_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/finally_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/break_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/default_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/super_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/final_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/return_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/enum_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/final_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/is_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/super_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/false_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/var_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/throw_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/new_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/while_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/catch_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/var_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/const_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/this_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/true_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/extends_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/if_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/if_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/final_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/if_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/switch_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/this_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/final_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/void_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/true_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/new_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/case_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/if_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/const_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/continue_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/while_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/default_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/return_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/true_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/while_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/switch_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/catch_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/assert_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/true_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/is_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/switch_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/else_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/continue_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/false_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/finally_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/var_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/catch_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/class_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/class_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/else_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/false_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/null_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/for_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/var_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/switch_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/is_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/new_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/return_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/class_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/new_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/with_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/try_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/for_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/break_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/return_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/try_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/new_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/var_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/finally_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/extends_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/with_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/assert_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/finally_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/enum_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/while_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/case_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/var_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/final_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/try_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/extends_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/extends_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/with_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/const_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/rethrow_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/final_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/default_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/final_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/switch_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/case_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/new_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/super_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/break_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/rethrow_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/var_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/this_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/throw_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/try_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/else_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/default_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/default_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/assert_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/case_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/super_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/null_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/null_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/catch_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/if_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/while_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/extends_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/while_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/new_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/case_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/const_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/break_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/true_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/with_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/do_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/try_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/false_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/assert_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/switch_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/switch_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/const_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/new_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/enum_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/true_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/var_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/is_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/else_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/is_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/is_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/throw_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/rethrow_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/do_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/in_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/this_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/new_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/continue_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/for_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/while_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/class_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/default_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/switch_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/in_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/const_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/if_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/this_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/null_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/break_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/enum_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/class_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/finally_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/is_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/throw_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/else_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/rethrow_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/null_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/continue_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/void_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/do_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/rethrow_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/finally_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/false_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/return_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/rethrow_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/final_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/true_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/catch_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/do_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/for_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/catch_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/case_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/true_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/do_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/this_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/for_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/with_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/var_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/while_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/void_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/this_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/do_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/in_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/for_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/const_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/finally_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/default_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/for_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/return_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/in_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/continue_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/is_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/rethrow_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/false_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/false_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/throw_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/assert_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/do_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/catch_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/while_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/try_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/continue_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/break_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/if_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/rethrow_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/do_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/with_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/break_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/finally_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/const_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/class_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/class_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/extends_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/case_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/return_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/case_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/false_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/in_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/return_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/continue_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/with_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/while_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/const_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/case_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/if_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/true_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/default_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/whitespace_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/assert_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/if_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/if_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/in_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/default_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/null_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/default_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/finally_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/with_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/void_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/in_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/return_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/assert_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/do_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/false_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/catch_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/throw_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/throw_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/whitespace_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/in_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/class_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/is_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/super_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/enum_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/null_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/class_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/for_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/with_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/enum_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/for_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/continue_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/enum_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/switch_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/void_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/this_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/throw_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/enum_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/try_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/return_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/extends_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/super_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/extends_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/new_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/extends_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/assert_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/return_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/break_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/catch_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/false_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/super_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/with_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/super_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/null_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/extends_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/for_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/case_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/rethrow_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/continue_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/catch_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/false_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/final_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/extends_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/default_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/try_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/else_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/case_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/whitespace_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/throw_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/with_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/is_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/switch_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/const_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/finally_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/null_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/void_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/assert_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/const_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/rethrow_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/else_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/enum_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/is_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/in_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/throw_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/try_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/for_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/default_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/while_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/throw_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/in_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/try_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/if_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/extends_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/null_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/super_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/var_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/class_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/do_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/true_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/new_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/var_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/void_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/enum_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/new_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/rethrow_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/with_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/do_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/whitespace_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/super_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/continue_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/void_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/if_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/in_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/void_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/switch_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/class_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/in_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/while_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/else_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/null_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/else_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/void_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/class_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/enum_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/break_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/false_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/true_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/continue_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/final_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/void_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/else_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/return_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/super_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/try_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/continue_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/else_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/this_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/var_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/enum_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/true_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/void_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/switch_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/rethrow_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/break_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/final_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/this_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/do_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/this_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/this_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/assert_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/super_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/throw_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/const_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/break_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/catch_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/catch_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/finally_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/null_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/try_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/assert_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/else_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/single_line_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/documentation_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/documentation_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/multi_line_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/documentation_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/multi_line_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/documentation_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/multi_line_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/documentation_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/documentation_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/multi_line_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/multi_line_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/documentation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/multi_line_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/single_line_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/single_line_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/single_line_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/documentation_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/single_line_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/single_line_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/single_line_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/multi_line_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/multi_line_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/multi_line_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/single_line_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/documentation_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/documentation_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/single_line_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/documentation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/documentation_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/multi_line_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/single_line_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/multi_line_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/single_line_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/whitespace_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/single_line_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_12_Shift_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_02_cascade_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_01_assignment_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_08_relational_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_14_multiplicative_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_16_unary_postfix_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_10_bitwise_xor_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_15_unary_prefix_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_08_relational_t14: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_08_relational_t16: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_01_assignment_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_14_multiplicative_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_08_relational_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_15_unary_prefix_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_13_additive_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_08_relational_t18: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_01_assignment_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_01_assignment_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_11_bitwise_and_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_08_relational_t13: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_01_assignment_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_14_multiplicative_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_01_assignment_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_08_relational_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_05_logical_or_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_14_multiplicative_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_09_bitwise_or_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_07_equality_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_14_multiplicative_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_06_logical_and_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_01_assignment_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_12_Shift_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_13_additive_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_08_relational_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_16_unary_postfix_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_14_multiplicative_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_09_bitwise_or_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_13_additive_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_06_logical_and_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_07_equality_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_13_additive_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_15_unary_prefix_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_01_assignment_t13: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_08_relational_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_15_unary_prefix_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_04_if_null_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_08_relational_t15: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_14_multiplicative_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_14_multiplicative_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_08_relational_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_15_unary_prefix_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_03_conditional_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_08_relational_t17: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_16_unary_postfix_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_16_unary_postfix_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_08_relational_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_14_multiplicative_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_08_relational_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_14_multiplicative_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_07_equality_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_05_logical_or_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_04_if_null_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_01_assignment_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_11_bitwise_and_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_07_equality_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_15_unary_prefix_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_13_additive_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_16_unary_postfix_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_14_multiplicative_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_08_relational_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_15_unary_prefix_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_16_unary_postfix_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_08_relational_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_10_bitwise_xor_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_01_assignment_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_15_unary_prefix_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_15_unary_prefix_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_14_multiplicative_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_15_unary_prefix_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_08_relational_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_07_equality_t05: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/superinterface_of_itself_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_13_additive_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_01_assignment_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_12_Shift_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_08_relational_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_01_assignment_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_16_unary_postfix_t02: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/definition_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_01_assignment_t05: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/superinterface_of_itself_t03: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/same_name_getters_t02: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/inheritance_t01: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/inheritance_t05: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/same_name_getters_type_t06: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/not_overriden_members_t02: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/inheritance_t02: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/same_name_method_and_getter_t01: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/same_name_getters_type_t05: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/inheritance_t07: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/same_name_members_t02: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/same_name_getters_t01: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/same_name_getters_type_t08: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/same_name_getters_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/inheritance_t03: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/same_name_getters_type_t04: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/same_name_getters_type_t09: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/not_overriden_members_t01: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/inheritance_t06: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/same_name_method_and_getter_t02: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/same_name_members_t01: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/same_name_getters_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/same_name_getters_type_t07: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/inheritance_t08: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/definition_t05: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/inheritance_t04: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/superinterface_of_itself_t02: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/definition_t04: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/same_name_getters_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/definition_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/ExpectException/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/setEquals_A03_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/isFalse_A01_t02: pass
-Done dartk-vm debug_x64 co19/Utils/tests/ExpectException/ExpectException_A01_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/ExpectException/message_A01_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/isTrue_A01_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/identical_A01_t02: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/setEquals_A01_t02: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/isFalse_A01_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/equals_A01_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/listEquals_A03_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/throws_A01_t04: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/stringEquals_A02_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/approxEquals_A01_t02: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/approxEquals_A01_t03: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/notEquals_A01_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/approxEquals_A04_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/equals_A02_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/listEquals_A01_t02: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/listEquals_A01_t03: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/isNotNull_A01_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/throws_A01_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/isTrue_A01_t02: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/approxEquals_A01_t04: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/isNull_A02_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/notEquals_A01_t02: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/stringEquals_A01_t02: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/setEquals_A02_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/approxEquals_A01_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/notEquals_A02_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/approxEquals_A02_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/throws_A01_t03: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/identical_A01_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/identical_A02_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/isNotNull_A02_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/isTrue_A02_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/identical_A01_t03: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/isNull_A01_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/listEquals_A02_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/equals_A01_t04: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/throws_A02_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/fail_A02_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/throws_A01_t05: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/isNotNull_A01_t02: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/setEquals_A01_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/equals_A01_t03: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/listEquals_A01_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/approxEquals_A03_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/throws_A01_t02: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/isFalse_A02_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/equals_A01_t02: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/isNull_A01_t02: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/stringEquals_A01_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/fail_A01_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/notEquals_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/inSameErrorZone_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/handleUncaughtError_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/runUnary_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/scheduleMicrotask_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/bindBinaryCallback_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/handleUncaughtError_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/createTimer_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/registerCallback_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/fork_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/ROOT_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/run_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/handleUncaughtError_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/operator_subscript_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/current_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/bindBinaryCallback_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/createPeriodicTimer_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/handleUncaughtError_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/runUnaryGuarded_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/registerUnaryCallback_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/bindUnaryCallback_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/inSameErrorZone_A01_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/registerBinaryCallback_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/bindUnaryCallback_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/current_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/bindCallback_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/inSameErrorZone_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/print_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/inSameErrorZone_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/bindCallback_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/runBinary_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/inSameErrorZone_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/runGuarded_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/parent_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/runBinaryGuarded_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamTransformer/StreamTransformer.fromHandlers_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamTransformer/StreamTransformer_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/scheduleMicrotask_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamTransformer/bind_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamTransformer/StreamTransformer_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamTransformer/StreamTransformer_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamTransformer/StreamTransformer_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamTransformer/StreamTransformer_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamTransformer/StreamTransformer_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamTransformer/StreamTransformer.fromHandlers_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamTransformer/StreamTransformer.fromHandlers_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamTransformer/StreamTransformer_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamTransformer/StreamTransformer.fromHandlers_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/close_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/addStream_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/isPaused_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/StreamController.broadcast_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/StreamController_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/EventSink_class_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/add_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/StreamController.broadcast_A07_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/StreamConsumer_class_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/close_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/StreamController_A06_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/addError_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/addStream_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/StreamController_A06_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/StreamController.broadcast_A06_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/done_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/isPaused_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/done_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/sink_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/StreamController_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/isClosed_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/addStream_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/addStream_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/hasListener_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/hasListener_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/addStream_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/isClosed_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/addError_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/done_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/stream_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/isPaused_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/StreamController.broadcast_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/StreamController.broadcast_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/StreamController.broadcast_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/StreamController.broadcast_A07_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/addError_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/StreamController_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/StreamController.broadcast_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/StreamController_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/StreamController.broadcast_A08_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/StreamController_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Completer/complete_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Completer/complete_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Completer/completeError_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Completer/isCompleted_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Completer/completeError_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Completer/complete_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Completer/complete_A01_t06: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Completer/Completer.sync_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Completer/complete_A01_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Completer/complete_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Completer/completeError_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Completer/completeError_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Completer/complete_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Completer/future_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Completer/complete_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Completer/completeError_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Completer/completeError_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Completer/Completer_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Completer/completeError_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/catchError_A03_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/then_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/Future_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/wait_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/catchError_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/wait_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/catchError_A03_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/wait_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/wait_A01_t07: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/then_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/then_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/doWhile_A04_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/catchError_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/Future_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/wait_A04_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/Future.sync_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/forEach_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/doWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/asStream_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/wait_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/timeout_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/forEach_A04_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/Future.error_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/forEach_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/Future_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/catchError_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/asStream_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/wait_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/any_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/wait_A01_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/doWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/wait_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/then_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/then_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/timeout_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/whenComplete_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/catchError_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/doWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/then_A05_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/asStream_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/any_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/timeout_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/wait_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/asStream_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/wait_A01_t06: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/timeout_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/then_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/Future.delayed_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/whenComplete_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/whenComplete_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/Future_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/forEach_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/whenComplete_A04_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/forEach_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/then_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/Future.microtask_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/catchError_A03_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/Future.delayed_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/any_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/timeout_A02_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/Future.microtask_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/then_A05_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/Future.delayed_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/Future.value_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/doWhile_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/Future.microtask_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/then_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/Future.sync_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/doWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/Future.sync_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/Future.value_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/Future.microtask_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/Future.sync_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/doWhile_A04_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/whenComplete_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/Future.error_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/then_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/catchError_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/then_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/any_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/Future.delayed_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamIterator/StreamIterator_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamIterator/current_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamIterator/current_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamIterator/cancel_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamIterator/moveNext_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamIterator/current_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/elementAt_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamIterator/moveNext_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/lastWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/take_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/take_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/drain_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/first_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/reduce_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/listen_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/first_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/firstWhere_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/single_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/Stream.periodic_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/asyncExpand_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/lastWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/Stream.fromFuture_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/forEach_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/asBroadcastStream_A04_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/contains_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/Stream.fromFuture_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/asyncMap_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/asBroadcastStream_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/fold_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/single_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/timeout_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/asBroadcastStream_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/listen_A05_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/asBroadcastStream_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/where_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/Stream.fromIterable_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/Stream.periodic_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/join_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/last_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/drain_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/drain_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/any_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/reduce_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/forEach_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/last_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/Stream_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/Stream.periodic_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/distinct_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/timeout_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/asyncMap_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/singleWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/where_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/pipe_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/join_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/Stream.fromIterable_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/Stream.eventTransformed_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/expand_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/handleError_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/distinct_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/transform_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/map_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/firstWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/Stream.eventTransformed_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/lastWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/contains_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/contains_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/timeout_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/takeWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/asBroadcastStream_A04_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/first_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/handleError_A04_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/asBroadcastStream_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/handleError_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/singleWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/listen_A06_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/Stream.fromFutures_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/elementAt_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/forEach_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/asBroadcastStream_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/isEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/join_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/listen_A05_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/isBroadcast_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/firstWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/asyncMap_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/asyncExpand_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/join_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/last_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/skipWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/take_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/any_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/fold_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/Stream.fromIterable_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/Stream.fromFutures_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/Stream.empty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/lastWhere_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/elementAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/transform_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/handleError_A04_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/asBroadcastStream_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/toList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/listen_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/asBroadcastStream_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/Stream.fromFuture_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/reduce_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/every_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/handleError_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/skip_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/listen_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/every_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/length_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/Stream.fromFutures_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/handleError_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/timeout_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/single_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/asBroadcastStream_A03_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/firstWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/toSet_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/isBroadcast_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/listen_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/listen_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/first_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/elementAt_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/any_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/Stream.fromFutures_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Timer/Timer.periodic_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Timer/isActive_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Timer/run_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Timer/cancel_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Timer/isActive_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Timer/Timer.periodic_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Timer/run_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Timer/Timer_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Timer/Timer_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamSink/addStream_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamSink/close_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamSink/addStream_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamSink/add_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamSink/done_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamSink/done_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamSink/addStream_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamSink/addError_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamSink/addStream_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/math/min_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamSink/addStream_A01_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/math/sin_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Point/operator_mult_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Point/squaredDistanceTo_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Point/Point_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Point/operator_equality_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Point/magnitude_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Point/operator_equality_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Point/operator_equality_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Point/operator_mult_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Point/operator_subtraction_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Point/operator_addition_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Point/operator_subtraction_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Point/distanceTo_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Point/operator_equality_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Point/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Point/operator_addition_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Point/operator_mult_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/asin_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/exp_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/sqrt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Rectangle/operator_equality_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Rectangle/intersection_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Rectangle/operator_equality_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Rectangle/operator_equality_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Rectangle/Rectangle.fromPoints_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Rectangle/intersects_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Rectangle/containsPoint_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Rectangle/boundingBox_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Rectangle/operator_equality_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Rectangle/boundingBox_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Rectangle/Rectangle_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Rectangle/containsRectangle_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/cos_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/acos_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/cos_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/atan2_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/pow_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/math/sqrt_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/asin_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/log_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/pow_A09_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/pow_A10_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/atan_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/atan2_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/pow_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/log_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/pow_A16_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/sin_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/pow_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/MutableRectangle/operator_equality_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/MutableRectangle/intersection_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/MutableRectangle/operator_equality_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/MutableRectangle/MutableRectangle_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/MutableRectangle/operator_equality_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/MutableRectangle/intersects_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/MutableRectangle/containsPoint_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/MutableRectangle/MutableRectangle.fromPoints_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/MutableRectangle/boundingBox_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/MutableRectangle/operator_equality_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/MutableRectangle/containsRectangle_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/atan_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/MutableRectangle/boundingBox_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/math/pow_A08_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/sin_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/pow_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/pow_A13_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/sqrt_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/min_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/min_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/acos_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/pow_A14_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/log_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/pow_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/max_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/log_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/pow_A12_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/pow_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/pow_A07_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/pow_A15_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/acos_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/atan2_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/exp_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/tan_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/asin_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Random/nextInt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/tan_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Random/Random_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Random/nextDouble_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Random/nextBool_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/sqrt_A02_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/math/exp_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/math/atan_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/sqrt_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/math/atan2_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/sqrt_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/math/cos_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/pow_A17_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/exp_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/tan_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/sin_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/atan2_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/max_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/atan_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/math/pow_A06_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/max_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/atan2_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/math/pow_A11_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Stopwatch/elapsedTicks_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Stopwatch/elapsed_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Stopwatch/elapsed_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Stopwatch/stop_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Stopwatch/Stopwatch_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Stopwatch/elapsedTicks_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Stopwatch/elapsedInUs_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Stopwatch/start_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Stopwatch/elapsedTicks_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Stopwatch/frequency_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Stopwatch/elapsed_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Stopwatch/elapsedInMs_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Stopwatch/start_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Stopwatch/start_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/roundToDouble_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/toRadixString_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/operator_multiplication_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/remainder_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/hashCode_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/parse_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/floorToDouble_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/remainder_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/operator_right_shift_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/toStringAsExponential_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/round_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/operator_division_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/operator_left_shift_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/toRadixString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/operator_AND_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/isOdd_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/operator_OR_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/operator_truncating_division_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/toInt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/toDouble_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/isNaN_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/compareTo_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/operator_LT_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/parse_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/truncate_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/operator_NOT_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/operator_right_shift_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/toStringAsFixed_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/compareTo_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/toStringAsExponential_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/operator_addition_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/operator_GE_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/operator_remainder_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/isInfinite_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/operator_subtraction_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/truncateToDouble_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/floor_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/operator_remainder_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/isEven_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/operator_division_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/operator_left_shift_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/operator_XOR_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/operator_division_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/remainder_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/toStringAsPrecision_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/ceilToDouble_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/abs_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/toStringAsFixed_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/operator_GT_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/ceil_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/operator_truncating_division_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/operator_left_shift_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/operator_remainder_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/operator_right_shift_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/operator_LE_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/isNegative_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/toStringAsPrecision_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/operator_unary_minus_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/toStringAsExponential_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Null/Null_class_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_LT_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Null/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/abs_A01_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_multiplication_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toStringAsFixed_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/ceilToDouble_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/NAN_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_multiplication_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/roundToDouble_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_division_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/compareTo_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_division_A01_t08: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_multiplication_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/roundToDouble_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/roundToDouble_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_division_A01_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/remainder_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/floor_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/ceil_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/parse_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/isNaN_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toDouble_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toStringAsExponential_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toStringAsFixed_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/round_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/isNegative_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/truncate_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/floorToDouble_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_LE_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/round_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_GT_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_addition_A01_t06: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/ceilToDouble_A01_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toStringAsPrecision_A01_t07: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/remainder_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/NEGATIVE_INFINITY_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_GE_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_subtraction_A01_t07: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_remainder_A01_t07: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_remainder_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_division_A01_t12: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/round_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_subtraction_A01_t08: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_multiplication_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toStringAsExponential_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/ceilToDouble_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/round_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_division_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_multiplication_A01_t07: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_division_A01_t07: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_truncating_division_A01_t07: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/isInfinite_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/floorToDouble_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_GT_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/floorToDouble_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_GT_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/truncateToDouble_A01_t06: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toStringAsPrecision_A01_t06: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/truncateToDouble_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/abs_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toStringAsPrecision_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/truncate_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toStringAsExponential_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/round_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_multiplication_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_truncating_division_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_truncating_division_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/NAN_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toInt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/ceil_A01_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/NAN_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/ceilToDouble_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/NEGATIVE_INFINITY_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_unary_minus_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toStringAsFixed_A01_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toDouble_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_unary_minus_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toStringAsPrecision_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_addition_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/isNaN_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_division_A01_t06: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/compareTo_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_GT_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/parse_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/truncate_A01_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_GE_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_addition_A01_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toInt_A01_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_LT_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/truncate_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_remainder_A01_t06: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_truncating_division_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_addition_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_LT_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_remainder_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_LE_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/truncate_A01_t06: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toStringAsFixed_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/roundToDouble_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_multiplication_A01_t06: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/INFINITY_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_subtraction_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/truncate_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/truncateToDouble_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/floor_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_addition_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/NEGATIVE_INFINITY_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toStringAsPrecision_A01_t08: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_addition_A01_t08: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toStringAsFixed_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_multiplication_A01_t09: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toStringAsExponential_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/isInfinite_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toStringAsExponential_A01_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/floor_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/ceil_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/compareTo_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_addition_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/isInfinite_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_division_A01_t09: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_GE_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_subtraction_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_subtraction_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_truncating_division_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_remainder_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/double_class_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_truncating_division_A01_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/abs_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/isNaN_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_subtraction_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/truncateToDouble_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/remainder_A01_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_unary_minus_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_multiplication_A01_t08: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/ceil_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/floor_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/floor_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_remainder_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_division_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_subtraction_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/ceil_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/floorToDouble_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/ceil_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/remainder_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_LT_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_addition_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/truncateToDouble_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/remainder_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toDouble_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_remainder_A01_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_division_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_LE_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_truncating_division_A01_t08: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/abs_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/remainder_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toStringAsFixed_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toStringAsPrecision_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toStringAsExponential_A01_t06: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toInt_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_division_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toInt_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/abs_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/floorToDouble_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/remainder_A01_t07: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_LT_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toStringAsFixed_A02_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toInt_A01_t06: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toStringAsFixed_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/ceilToDouble_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_division_A01_t11: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toStringAsPrecision_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_addition_A01_t07: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/INFINITY_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/roundToDouble_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_subtraction_A01_t06: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_multiplication_A01_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/ceilToDouble_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_GT_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toInt_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_truncating_division_A01_t06: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/INFINITY_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toStringAsPrecision_A01_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/NAN_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_truncating_division_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/ceil_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/truncateToDouble_A01_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/isNegative_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_remainder_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/NEGATIVE_INFINITY_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_subtraction_A01_t09: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/roundToDouble_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/ceilToDouble_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/remainder_A01_t06: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/INFINITY_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_division_A01_t10: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/floorToDouble_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_LE_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toStringAsPrecision_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_unary_minus_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/round_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toStringAsExponential_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_subtraction_A01_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_GE_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/List/List.generate_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/List/List_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/List/List.from_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/List/List_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/List/List.generate_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/List/List.from_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/List/removeAt_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/List/List_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/List/List_class_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/List/List.filled_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/List/List.from_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/List/List_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/List/List_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/List/List.generate_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/StackOverflowError/StackOverflowError_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/StackOverflowError/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Exception/Exception_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Function/apply_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Function/Function_class_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/startsWith_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/lastIndexOf_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/codeUnitAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/endsWith_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/List/List_class_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/endsWith_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/String.fromCharCodes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/hashCode_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/trim_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/endsWith_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/split_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/contains_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/lastIndexOf_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/substring_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/operator_equality_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/String.fromCharCodes_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/operator_equality_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/operator_subscript_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/substring_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/String.fromCharCodes_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/indexOf_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/replaceAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/toUpperCase_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/contains_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/String_class_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/endsWith_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/toUpperCase_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/toUpperCase_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/compareTo_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/startsWith_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/operator_subscript_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/contains_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/toLowerCase_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/replaceFirst_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/isEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/indexOf_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/toLowerCase_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/codeUnitAt_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/replaceFirst_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/String_class_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/startsWith_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/split_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/indexOf_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/lastIndexOf_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/length_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/startsWith_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/contains_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/String_class_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/replaceAll_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/codeUnits_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/trim_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/toLowerCase_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/toUpperCase_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/codeUnitAt_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/toLowerCase_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RangeError/RangeError_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/split_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RangeError/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/StringBuffer/StringBuffer_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/StringBuffer/write_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/StringBuffer/writeAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/StringBuffer/write_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/StringBuffer/isEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/StringBuffer/writeAll_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/StringBuffer/clear_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/StringBuffer/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/StringBuffer/writeAll_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/StringBuffer/length_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/StringBuffer/StringBuffer_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/IntegerDivisionByZeroException/IntegerDivisionByZeroException_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/IntegerDivisionByZeroException/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/FormatException/FormatException_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/FormatException/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/AssertionError/AssertionError_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/AssertionError/AssertionError_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/AssertionError/AssertionError_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/AssertionError/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/AssertionError/message_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/toFilePath_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/Uri.file_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/Uri.http_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/operator_eq_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/encodeComponent_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/Uri_A07_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/hashCode_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/Uri.http_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/parse_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/Uri.file_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/Uri.https_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/Uri.https_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/splitQueryString_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/Uri_A06_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/fragment_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/hasAuthority_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/encodeComponent_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/scheme_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/pathSegments_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/Uri.file_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/parse_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/toFilePath_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/toFilePath_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/Uri.https_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/encodeQueryComponent_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/Uri_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/Uri.file_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/pathSegments_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/parse_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/Uri_A06_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/Uri.http_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/toFilePath_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/decodeQueryComponent_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/encodeQueryComponent_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/pathSegments_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/authority_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/Uri_A06_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/path_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/query_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/host_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/Uri_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/origin_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/port_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/pathSegments_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/encodeFull_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/Uri.http_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/userInfo_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/splitQueryString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/isAbsolute_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/resolveUri_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/path_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/queryParameters_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/resolve_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/decodeQueryComponent_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/Uri.https_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/queryParameters_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/decodeFull_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/Uri_A05_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/Uri_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/queryParameters_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/Uri_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/query_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/decodeComponent_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/toFilePath_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/Uri.file_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/Uri_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/toFilePath_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/encodeFull_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Match/pattern_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Match/str_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Match/groups_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Match/operator_subscript_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Match/end_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Match/groupCount_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Match/groups_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Match/operator_subscript_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Match/group_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Match/group_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Match/start_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/UnsupportedError/UnsupportedError_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/DateTime_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/timeZoneOffset_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/to8601String_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/microsecond_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/toString_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/hashCode_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/parse_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/DateTime_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/to8601String_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/add_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/millisecond_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/toLocal_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/to8601String_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/isAtSameMomentAs_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/millisecondsSinceEpoch_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/microsecondsSinceEpoch_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/parse_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/difference_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/DateTime.utc_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/add_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/subtract_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/parse_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/to8601String_A01_t06: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/add_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/hashCode_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/isAfter_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/operator_equality_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/DateTime.fromMillisecondsSinceEpoch_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/parse_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/difference_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/year_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/compareTo_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/DateTime_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/DateTime.fromMillisecondsSinceEpoch_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/microsecondsSinceEpoch_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/subtract_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/DateTime.now_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/isBefore_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/weekday_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/DateTime_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/difference_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/subtract_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/DateTime.now_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/subtract_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/to8601String_A01_t07: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/DateTime.fromMicrosecondsSinceEpoch_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/to8601String_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/millisecondsSinceEpoch_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/hour_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/day_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/month_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/second_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/to8601String_A01_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/toString_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/DateTime.fromMicrosecondsSinceEpoch_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/timeZoneName_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/add_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/parse_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/toUtc_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/DateTime.fromMillisecondsSinceEpoch_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/microsecondsSinceEpoch_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/DateTime.now_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/isUtc_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/minute_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Expando/Expando_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Expando/Expando_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Expando/Expando_A03_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Expando/Expando_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Expando/Expando_A03_t06: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Expando/Expando_A03_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Expando/Expando_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Expando/Expando_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Expando/Expando_A03_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Expando/Expando_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Expando/Expando_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_Atom_A06_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/hasMatch_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterEscape_A09_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterClassEscape_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterEscape_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_Assertion_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterEscape_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_Disjunction_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_Atom_A03_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_Assertion_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_Term_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_NonEmptyClassRanges_A01_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_Atom_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_Term_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterEscape_A07_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_AtomEscape_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_NonEmptyClassRanges_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterEscape_A06_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterClassEscape_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterClass_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_Atom_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_NonEmptyClassRanges_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_Quantifier_A06_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_Assertion_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterClass_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_Atom_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterEscape_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterClassEscape_A06_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_Term_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_Quantifier_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_DecimalEscape_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_Quantifier_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_Atom_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_NonEmptyClassRanges_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_NonEmptyClassRanges_A01_t06: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterClassEscape_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_Quantifier_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterEscape_A08_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_Quantifier_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterEscape_A08_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_Atom_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_Assertion_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterEscape_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_DecimalEscape_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_Term_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterEscape_A06_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_DecimalEscape_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/splitQueryString_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_Assertion_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_Quantifier_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_Atom_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_NonEmptyClassRanges_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterEscape_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterClassEscape_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_DecimalEscape_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/RegExp_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/pattern_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/stringMatch_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/firstMatch_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/hasMatch_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/stringMatch_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/isMultiLine_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/firstMatch_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/allMatches_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/RegExp_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/RegExp_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/hasMatch_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/isCaseSensitive_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/allMatches_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/firstMatch_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/RegExp_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/ArgumentError/ArgumentError_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/ArgumentError/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Invocation/isAccessor_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Invocation/isMethod_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Invocation/isSetter_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Invocation/isGetter_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Invocation/namedArguments_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Invocation/isAccessor_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Invocation/isGetter_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Invocation/isSetter_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Invocation/positionalArguments_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Invocation/memberName_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Invocation/isMethod_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Object/operator_equality_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Object/Object_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Object/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/NoSuchMethodError/NoSuchMethodError_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Map/Map_class_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/NoSuchMethodError/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Map/Map_class_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Map/Map_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Map/allTests_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Map/Map_class_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Map/Map_class_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Map/Map_class_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/StateError/StateError_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/StateError/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Iterable/Iterable.generate_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Iterable/Iterable.generate_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Iterable/Iterable.generate_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Iterable/Iterable.generate_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Iterable/Iterable.empty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/TypeError/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/bool/toString_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/bool/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/FallThroughError/FallThroughError_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/FallThroughError/toString_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/FallThroughError/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/movePrevious_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/RuneIterator_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/currentSize_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/moveNext_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/current_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/RuneIterator.at_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/currentAsString_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/rawIndex_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/rawIndex_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/reset_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/RuneIterator.at_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/reset_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/RuneIterator.at_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/currentAsString_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/reset_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/movePrevious_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/current_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/currentAsString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/currentAsString_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/RuneIterator.at_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/rawIndex_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/moveNext_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/rawIndex_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/reset_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/currentSize_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/reset_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/reset_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/string_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/currentSize_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/RuneIterator.at_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/string_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/rawIndex_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/moveNext_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/rawIndex_A04_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/movePrevious_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/remove_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/Set.identity_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/removeWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/retainAll_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/intersection_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/add_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/remove_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/remove_A01_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/Set_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/Set.from_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/containsAll_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/addAll_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/addAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/add_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/intersection_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/retainAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/forEach_A01_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/retainWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/removeAll_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/Set.from_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/every_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/remove_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/lookup_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/removeAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/contains_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/intersection_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/every_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/difference_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/intersection_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/addAll_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/forEach_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/union_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/contains_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/Set.identity_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/clear_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/isEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/forEach_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/forEach_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/Set.from_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/every_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/add_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/forEach_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/length_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/containsAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/add_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/operator_eq_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/operator_mult_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/Duration_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/SECONDS_PER_DAY_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/MILLISECONDS_PER_SECOND_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/inSeconds_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/operator_plus_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/HOURS_PER_DAY_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/MINUTES_PER_HOUR_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/static_properties_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/compareTo_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/inDays_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/operator_gt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/MILLISECONDS_PER_DAY_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/operator_minus_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/compareTo_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/operator_div_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/SECONDS_PER_MINUTE_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/inMinutes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/operator_lt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/operator_lte_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/MILLISECONDS_PER_HOUR_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/MILLISECONDS_PER_MINUTE_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/operator_gte_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/MINUTES_PER_DAY_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/SECONDS_PER_HOUR_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/Duration_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/inHours_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/inMilliseconds_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/Duration_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/UnimplementedError/UnimplementedError_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/UnimplementedError/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/AbstractClassInstantiationError/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/AbstractClassInstantiationError/AbstractClassInstantiationError_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Symbol/Symbol_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Symbol/Symbol_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Symbol/Symbol_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Symbol/Symbol_A01_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Symbol/Symbol_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/elementAt_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/lastWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/iterator_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/isEmpty_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/first_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/reduce_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/first_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/length_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/singleWhere_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/skipWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/lastWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/fold_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/single_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/map_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/where_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/last_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/any_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/take_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/last_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/singleWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/skipWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/expand_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/last_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/take_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/firstWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/lastWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/map_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/skip_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/first_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/contains_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/isNotEmpty_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/takeWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/first_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/skip_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/singleWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/forEach_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/where_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/takeWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/join_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/isEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/firstWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/reduce_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/isNotEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/join_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/skipWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/single_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/take_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/elementAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/toList_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/where_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/Runes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/toList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/string_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/toList_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/takeWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/every_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/skip_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/length_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/single_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/iterator_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/skipWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/single_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/map_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/firstWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/takeWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/string_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/toSet_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/OutOfMemoryError/OutOfMemoryError_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/OutOfMemoryError/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/elementAt_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/Int16List.view_A06_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/iterator_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/lastWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/elementSizeInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/offsetInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/isEmpty_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/first_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/removeWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/reduce_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/remove_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/offsetInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/first_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/singleWhere_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/setAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/lastIndexOf_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/hashCode_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/sublist_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/sort_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/operator_subscripted_assignment_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/skipWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/fillRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/replaceRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/lastWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/add_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/lastIndexOf_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/removeRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/Int16List.view_A05_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/fold_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/addAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/getRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/single_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/map_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/elementSizeInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/where_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/lastIndexOf_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/hashCode_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/operator_equality_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/last_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/asMap_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/getRange_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/buffer_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/take_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/any_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/runtimeType_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/operator_subscript_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/last_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/Int16List.view_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/setAll_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/Int16List.fromList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/singleWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/retainWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/skipWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/getRange_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/Int16List.view_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/expand_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/Int16List_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/last_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/take_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/map_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/asMap_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/getRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/setRange_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/firstWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/indexOf_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/skip_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/lastWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/contains_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/indexOf_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/first_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/setRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/setAll_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/isNotEmpty_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/takeWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/runtimeType_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/first_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/asMap_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/skip_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/singleWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/operator_subscript_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/forEach_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/iterator_moveNext_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/insertAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/where_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/clear_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/insert_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/takeWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/isEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/join_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/reduce_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/indexOf_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/firstWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/removeLast_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/setRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/sublist_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/Int16List_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/Int16List.view_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/fillRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/isNotEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/sublist_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/join_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/skipWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/single_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/take_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/Int16List_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/Int16List.fromList_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/sublist_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/elementAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/setRange_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/toList_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/where_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/toList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/reversed_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/toList_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/Int16List.view_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/lengthInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/takeWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/length_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/indexOf_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/skip_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/removeAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/lastIndexOf_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/single_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/every_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/length_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/iterator_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/buffer_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/Int16List.view_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/reversed_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/skipWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/single_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/firstWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/takeWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/map_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/Int16List.view_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/toSet_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/iterator_current_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/lengthInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/Int16List.view_A05_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/operator_subscripted_assignment_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/elementAt_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/lastWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/iterator_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/offsetInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/elementSizeInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/isEmpty_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/first_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/remove_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/removeWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/reduce_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/offsetInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/first_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/singleWhere_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/lastIndexOf_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/setAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/sort_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/Int64List_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/Int64List.view_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/sublist_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/hashCode_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/operator_subscripted_assignment_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/fillRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/skipWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/lastWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/replaceRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/add_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/lastIndexOf_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/removeRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/addAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/fold_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/getRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/single_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/lastIndexOf_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/map_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/Int64List.view_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/hashCode_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/where_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/elementSizeInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/last_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/operator_equality_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/asMap_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/getRange_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/buffer_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/runtimeType_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/take_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/any_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/last_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/setAll_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/operator_subscript_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/Int64List.view_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/singleWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/skipWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/retainWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/getRange_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/take_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/expand_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/last_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/Int64List_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/map_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/getRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/asMap_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/setRange_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/Int64List.fromList_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/firstWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/lastWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/Int64List.view_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/skip_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/indexOf_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/contains_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/first_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/setRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/indexOf_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/isNotEmpty_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/setAll_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/takeWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/runtimeType_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/skip_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/first_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/Int64List.view_A06_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/asMap_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/operator_subscript_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/singleWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/forEach_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/iterator_moveNext_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/where_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/insertAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/insert_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/takeWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/isEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/clear_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/join_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/reduce_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/indexOf_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/Int64List.view_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/setRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/removeLast_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/firstWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/sublist_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/fillRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/isNotEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/join_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/skipWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/sublist_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/single_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/take_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/sublist_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/elementAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/toList_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/setRange_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/where_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/Int64List.view_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/toList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/toList_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/Int64List_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/reversed_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/lengthInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/takeWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/length_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/Int64List.view_A05_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/indexOf_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/removeAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/skip_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/lastIndexOf_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/every_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/single_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/length_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/iterator_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/reversed_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/buffer_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/Int64List.fromList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/skipWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/single_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/firstWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/map_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/takeWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/Int64List.view_A05_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/toSet_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/iterator_current_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/lengthInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/elementAt_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/operator_subscripted_assignment_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/lastWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/iterator_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/offsetInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/elementSizeInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/isEmpty_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/first_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/remove_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/removeWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/Uint16List.view_A06_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/reduce_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/offsetInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/first_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/singleWhere_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/lastIndexOf_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/sort_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/setAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/sublist_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/hashCode_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/Uint16List.view_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/operator_subscripted_assignment_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/fillRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/skipWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/lastWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/replaceRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/add_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/Uint16List.view_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/lastIndexOf_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/removeRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/fold_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/addAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/Uint16List.view_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/getRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/single_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/lastIndexOf_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/map_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/elementSizeInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/where_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/hashCode_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/last_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/operator_equality_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/asMap_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/getRange_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/take_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/buffer_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/runtimeType_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/any_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/operator_subscript_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/last_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/Uint16List.view_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/Uint16List.view_A05_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/Uint16List.view_A05_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/setAll_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/singleWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/retainWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/skipWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/getRange_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/take_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/expand_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/last_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/map_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/asMap_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/getRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/firstWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/setRange_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/lastWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/Uint16List.fromList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/skip_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/indexOf_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/first_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/contains_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/setRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/indexOf_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/setAll_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/isNotEmpty_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/runtimeType_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/takeWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/first_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/skip_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/Uint16List_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/asMap_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/operator_subscript_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/singleWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/iterator_moveNext_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/forEach_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/insertAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/insert_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/where_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/clear_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/takeWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/isEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/join_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/reduce_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/indexOf_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/firstWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/setRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/sublist_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/removeLast_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/fillRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/isNotEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/join_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/sublist_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/skipWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/Uint16List.view_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/single_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/take_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/sublist_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/Uint16List_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/elementAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/toList_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/setRange_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/where_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/toList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/reversed_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/toList_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/Uint16List.fromList_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/lengthInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/Uint16List_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/takeWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/indexOf_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/length_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/Uint16List.view_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/skip_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/removeAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/lastIndexOf_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/every_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/single_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/iterator_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/length_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/reversed_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/buffer_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/skipWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/single_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/firstWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/takeWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/map_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/toSet_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/iterator_current_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/lengthInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/operator_subscripted_assignment_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/z_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/lessThan_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/sqrt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/lessThanOrEqual_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/operator_multiplication_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/clamp_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/greaterThanOrEqual_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/clamp_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/Float32x4_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/Float32x4_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/greaterThan_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/w_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/z_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/min_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/withZ_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/x_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/notEqual_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/withW_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/y_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/max_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/Float32x4.zero_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/Float32x4.fromInt32x4Bits_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/Float32x4.splat_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/operator_addition_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/withY_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/w_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/reciprocal_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/operator_subtraction_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/operator_division_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/x_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/Float32x4.fromInt32x4Bits_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/Float32x4.splat_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/operator_division_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/y_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/equal_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/reciprocalSqrt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/abs_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/shuffleMix_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/operator_unary_minus_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/shuffle_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/scale_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/withX_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/offsetInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/elementSizeInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setFloat64_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/offsetInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getInt64_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/hashCode_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getFloat32_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setInt16_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getFloat64_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setUint32_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setUint8_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/ByteData.view_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setInt32_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getFloat32_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setInt64_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/elementSizeInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getFloat64_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getFloat32_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getInt16_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/hashCode_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/operator_equality_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getInt64_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/buffer_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getInt8_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/runtimeType_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setFloat64_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setInt16_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getInt8_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setUint32_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/ByteData.view_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setUint16_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setInt8_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setUint64_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getUint16_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setUint8_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getInt32_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/ByteData_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/ByteData_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setUint32_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/ByteData.view_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setUint16_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setInt64_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/runtimeType_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/ByteData.view_A05_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getInt16_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/ByteData.view_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setUint8_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setInt8_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getUint32_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getFloat64_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getUint16_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/ByteData.view_A05_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setInt32_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getUint32_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getInt8_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/ByteData.view_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setInt8_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getUint64_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setFloat32_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getUint8_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getUint8_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getInt32_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setInt64_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/lengthInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setFloat64_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setUint64_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getUint32_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/buffer_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setFloat32_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getUint16_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getUint8_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setFloat32_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setUint16_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setInt16_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getInt16_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setUint64_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getUint64_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/ByteData.view_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/ByteData_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getUint64_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getInt32_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/lengthInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getInt64_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setInt32_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/lastWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/elementAt_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/iterator_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/offsetInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/elementSizeInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/isEmpty_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/first_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/Float32x4List.fromList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/remove_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/removeWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/reduce_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/offsetInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/first_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/setAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/singleWhere_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/sort_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/sublist_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/hashCode_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/operator_subscripted_assignment_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/fillRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/skipWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/replaceRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/lastWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/add_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/fold_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/removeRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/addAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/getRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/single_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/lastIndexOf_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/map_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/elementSizeInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/hashCode_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/where_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/operator_equality_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/last_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/Float32x4List.view_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/asMap_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/getRange_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/buffer_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/take_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/runtimeType_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/Float32x4List.view_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/Float32x4List.view_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/operator_subscript_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/any_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/last_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/setAll_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/Float32x4List_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/retainWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/singleWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/skipWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/Float32x4List.view_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/getRange_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/expand_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/last_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/take_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/asMap_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/map_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/getRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/setRange_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/firstWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/lastWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/skip_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/first_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/contains_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/Float32x4List_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/setRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/setAll_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/isNotEmpty_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/takeWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/Float32x4List.fromList_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/skip_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/runtimeType_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/first_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/asMap_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/Float32x4List.view_A06_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/singleWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/operator_subscript_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/forEach_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/iterator_moveNext_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/insertAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/where_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/insert_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/clear_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/takeWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/isEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/join_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/reduce_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/indexOf_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/setRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/firstWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/removeLast_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/sublist_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/fillRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/isNotEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/join_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/Float32x4List.view_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/sublist_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/skipWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/single_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/take_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/sublist_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/elementAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/setRange_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/toList_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/where_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/toList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/Float32x4List.view_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/Float32x4List_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/toList_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/lengthInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/reversed_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/takeWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/length_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/indexOf_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/skip_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/removeAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/every_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/lastIndexOf_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/single_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/length_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/iterator_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/buffer_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/reversed_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/Float32x4List.view_A05_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/Float32x4List.view_A05_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/skipWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/single_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/takeWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/firstWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/map_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/toSet_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/iterator_current_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/lengthInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/operator_subscripted_assignment_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/elementAt_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/lastWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/iterator_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/Int8List.view_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/offsetInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/elementSizeInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/Int8List.fromList_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/isEmpty_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/first_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/remove_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/removeWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/reduce_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/offsetInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/first_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/singleWhere_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/lastIndexOf_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/setAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/sort_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/Int8List.view_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/sublist_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/operator_subscripted_assignment_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/hashCode_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/fillRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/skipWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/replaceRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/lastWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/add_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/lastIndexOf_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/fold_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/removeRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/addAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/getRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/single_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/lastIndexOf_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/map_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/elementSizeInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/Int8List_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/where_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/hashCode_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/operator_equality_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/last_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/Int8List.view_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/asMap_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/getRange_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/buffer_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/take_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/runtimeType_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/any_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/operator_subscript_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/Int8List_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/last_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/setAll_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/singleWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/retainWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/skipWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/getRange_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/expand_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/take_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/last_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/Int8List.view_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/Int8List.view_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/map_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/asMap_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/getRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/firstWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/setRange_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/lastWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/skip_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/indexOf_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/first_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/contains_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/setRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/indexOf_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/isNotEmpty_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/setAll_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/takeWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/runtimeType_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/first_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/skip_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/asMap_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/operator_subscript_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/Int8List.view_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/singleWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/forEach_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/iterator_moveNext_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/where_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/insertAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/insert_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/isEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/takeWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/clear_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/join_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/reduce_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/indexOf_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/setRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/sublist_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/fillRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/removeLast_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/firstWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/isNotEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/join_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/skipWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/sublist_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/single_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/take_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/sublist_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/Int8List.fromList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/elementAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/toList_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/setRange_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/Int8List.view_A05_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/toList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/where_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/toList_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/reversed_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/lengthInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/takeWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/length_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/removeAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/lastIndexOf_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/indexOf_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/skip_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/every_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/single_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/length_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/iterator_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/buffer_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/single_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/reversed_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/skipWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/firstWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/takeWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/map_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/toSet_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/iterator_current_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/Int8List_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/lengthInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/Int8List.view_A05_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/operator_subscripted_assignment_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/elementAt_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/iterator_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/lastWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/offsetInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/elementSizeInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/isEmpty_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/first_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/remove_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/Uint8List.view_A05_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/removeWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/reduce_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/offsetInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/first_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/lastIndexOf_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/singleWhere_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/setAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/sublist_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/sort_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/hashCode_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/operator_subscripted_assignment_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/replaceRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/skipWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/fillRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/lastWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/add_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/lastIndexOf_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/Uint8List.fromList_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/removeRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/fold_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/Uint8List.view_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/addAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/Uint8List.fromList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/getRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/lastIndexOf_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/single_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/Uint8List.view_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/elementSizeInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/map_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/where_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/hashCode_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/operator_equality_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/Uint8List.view_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/last_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/asMap_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/buffer_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/take_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/getRange_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/Uint8List.view_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/runtimeType_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/any_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/operator_subscript_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/last_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/setAll_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/Uint8List.view_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/singleWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/skipWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/retainWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/expand_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/getRange_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/take_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/last_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/map_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/asMap_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/setRange_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/getRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/lastWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/firstWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/skip_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/indexOf_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/contains_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/first_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/Uint8List.view_A05_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/indexOf_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/setRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/setAll_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/takeWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/isNotEmpty_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/runtimeType_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/first_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/skip_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/Uint8List.view_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/asMap_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/singleWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/operator_subscript_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/forEach_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/iterator_moveNext_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/insertAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/where_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/insert_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/clear_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/takeWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/isEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/join_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/reduce_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/indexOf_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/removeLast_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/setRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/firstWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/sublist_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/fillRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/Uint8List_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/isNotEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/join_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/sublist_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/skipWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/single_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/take_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/sublist_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/toList_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/setRange_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/elementAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/toList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/where_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/Uint8List_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/toList_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/reversed_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/takeWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/lengthInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/length_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/indexOf_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/skip_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/removeAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/every_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/lastIndexOf_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/single_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/length_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/buffer_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/iterator_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/reversed_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/skipWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/single_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/firstWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/map_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/takeWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/toSet_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/iterator_current_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/Uint8List_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/lengthInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/elementAt_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/operator_subscripted_assignment_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/iterator_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/lastWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/offsetInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/isEmpty_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/elementSizeInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/first_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/remove_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/removeWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/reduce_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/offsetInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/first_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/singleWhere_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/lastIndexOf_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/setAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/sublist_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/sort_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/hashCode_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/operator_subscripted_assignment_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/fillRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/replaceRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/lastWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/skipWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/Uint64List.view_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/Uint64List_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/add_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/Uint64List.fromList_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/lastIndexOf_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/removeRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/Uint64List.view_A05_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/fold_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/addAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/getRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/lastIndexOf_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/map_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/single_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/elementSizeInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/where_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/hashCode_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/operator_equality_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/last_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/buffer_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/getRange_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/asMap_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/runtimeType_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/take_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/any_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/operator_subscript_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/last_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/Uint64List.view_A05_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/setAll_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/singleWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/retainWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/skipWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/getRange_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/Uint64List.view_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/Uint64List.view_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/expand_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/last_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/take_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/Uint64List_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/map_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/getRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/asMap_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/setRange_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/firstWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/skip_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/lastWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/indexOf_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/first_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/contains_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/indexOf_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/setRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/setAll_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/isNotEmpty_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/takeWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/runtimeType_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/first_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/Uint64List.view_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/skip_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/asMap_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/Uint64List.view_A06_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/singleWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/operator_subscript_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/forEach_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/iterator_moveNext_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/insertAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/where_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/Uint64List.view_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/insert_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/clear_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/takeWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/isEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/join_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/indexOf_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/reduce_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/setRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/firstWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/removeLast_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/Uint64List.view_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/sublist_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/fillRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/join_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/isNotEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/sublist_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/skipWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/single_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/take_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/sublist_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/elementAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/setRange_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/toList_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/where_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/toList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/Uint64List.fromList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/toList_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/reversed_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/lengthInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/takeWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/length_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/indexOf_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/skip_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/removeAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/lastIndexOf_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/every_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/single_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/length_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/iterator_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/reversed_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/buffer_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/skipWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/Uint64List_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/single_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/firstWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/takeWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/map_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/toSet_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/iterator_current_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/operator_subscripted_assignment_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/lengthInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/flagW_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/z_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/flagX_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/flagZ_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/withFlagY_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/flagY_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/withFlagZ_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/flagY_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/flagY_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/operator_AND_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/flagW_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/flagZ_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/operator_OR_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/w_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/z_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/flagW_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/withZ_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/x_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/Int32x4.fromFloat32x4Bits_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/withW_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/flagX_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/y_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/select_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/w_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/withY_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/x_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/withFlagW_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/Int32x4_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/operator_XOR_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/flagX_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/y_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/Int32x4.bool_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/Int32x4.fromFloat32x4Bits_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/withFlagX_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/flagZ_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/withX_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/elementAt_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/iterator_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/lastWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/offsetInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/elementSizeInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/Float64List.view_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/first_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/isEmpty_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/remove_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/removeWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/reduce_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/first_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/offsetInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/singleWhere_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/setAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/lastIndexOf_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/sort_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/Float64List.fromList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/sublist_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/Float64List.view_A05_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/operator_subscripted_assignment_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/hashCode_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/fillRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/skipWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/replaceRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/add_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/lastWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/Float64List.view_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/lastIndexOf_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/removeRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/fold_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/addAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/getRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/single_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/lastIndexOf_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/map_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/elementSizeInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/where_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/hashCode_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/operator_equality_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/last_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/asMap_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/getRange_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/runtimeType_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/buffer_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/take_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/any_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/operator_subscript_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/last_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/Float64List.fromList_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/setAll_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/singleWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/retainWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/skipWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/getRange_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/expand_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/take_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/last_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/map_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/asMap_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/getRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/setRange_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/firstWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/lastWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/skip_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/first_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/indexOf_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/contains_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/Float64List.view_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/indexOf_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/Float64List_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/Float64List_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/setRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/isNotEmpty_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/setAll_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/takeWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/first_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/runtimeType_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/skip_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/asMap_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/singleWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/operator_subscript_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/forEach_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/iterator_moveNext_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/where_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/insertAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/insert_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/clear_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/takeWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/isEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/join_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/reduce_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/indexOf_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/setRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/firstWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/removeLast_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/sublist_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/fillRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/isNotEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/join_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/sublist_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/skipWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/Float64List.view_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/single_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/take_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/Float64List.view_A05_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/sublist_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/elementAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/toList_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/setRange_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/where_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/toList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/Float64List.view_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/Float64List_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/toList_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/Float64List.view_A06_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/reversed_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/lengthInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/takeWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/length_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/indexOf_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/skip_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/removeAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/lastIndexOf_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/every_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/single_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/length_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/iterator_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/reversed_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/buffer_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/single_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/skipWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/firstWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/takeWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/map_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/toSet_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/iterator_current_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/Float64List.view_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/operator_subscripted_assignment_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/lengthInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/elementAt_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/lastWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/iterator_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/offsetInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/elementSizeInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/isEmpty_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/first_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/remove_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/reduce_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/removeWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/offsetInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/singleWhere_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/first_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/lastIndexOf_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/setAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/sort_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/Int32List.view_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/sublist_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/hashCode_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/operator_subscripted_assignment_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/fillRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/Int32List.view_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/skipWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/lastWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/replaceRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/add_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/lastIndexOf_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/removeRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/fold_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/addAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/getRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/single_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/map_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/lastIndexOf_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/elementSizeInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/where_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/hashCode_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/operator_equality_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/last_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/getRange_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/asMap_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/buffer_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/take_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/runtimeType_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/any_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/operator_subscript_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/last_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/retainWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/setAll_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/singleWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/skipWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/Int32List.view_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/getRange_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/expand_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/Int32List_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/take_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/last_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/Int32List.view_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/map_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/asMap_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/setRange_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/getRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/lastWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/firstWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/Int32List.view_A05_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/skip_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/indexOf_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/first_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/contains_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/indexOf_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/setRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/setAll_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/Int32List.view_A05_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/isNotEmpty_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/takeWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/runtimeType_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/first_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/skip_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/singleWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/forEach_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/operator_subscript_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/asMap_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/iterator_moveNext_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/insertAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/insert_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/where_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/clear_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/isEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/takeWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/join_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/reduce_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/indexOf_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/setRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/Int32List_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/firstWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/removeLast_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/fillRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/sublist_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/isNotEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/join_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/sublist_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/skipWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/take_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/Int32List.view_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/single_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/sublist_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/Int32List_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/elementAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/toList_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/setRange_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/where_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/Int32List.fromList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/toList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/toList_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/reversed_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/lengthInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/takeWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/skip_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/indexOf_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/length_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/lastIndexOf_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/removeAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/every_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/single_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/length_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/iterator_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/buffer_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/reversed_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/single_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/skipWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/takeWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/firstWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/map_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/Int32List.fromList_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/iterator_current_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/toSet_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/Int32List.view_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/lengthInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/operator_subscripted_assignment_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/Int32List.view_A06_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/elementAt_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/lastWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/iterator_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/elementSizeInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/offsetInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/isEmpty_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/first_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/remove_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/removeWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/reduce_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/offsetInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/singleWhere_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/first_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/lastIndexOf_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/sort_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/setAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/sublist_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/operator_subscripted_assignment_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/hashCode_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/skipWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/fillRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/replaceRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/lastWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/Float32List.view_A05_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/Float32List.view_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/Float32List_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/add_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/lastIndexOf_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/forEach_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/Float32List.view_A05_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/removeRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/fold_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/getRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/addAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/single_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/lastIndexOf_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/map_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/Float32List.view_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/elementSizeInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/where_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/hashCode_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/operator_equality_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/asMap_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/getRange_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/last_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/buffer_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/take_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/Float32List.view_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/any_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/runtimeType_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/last_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/operator_subscript_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/singleWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/setAll_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/Float32List.view_A06_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/skipWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/getRange_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/retainWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/expand_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/take_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/last_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/Float32List.fromList_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/map_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/asMap_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/getRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/setRange_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/firstWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/lastWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/skip_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/Float32List.fromList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/indexOf_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/first_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/contains_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/indexOf_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/setRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/setAll_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/isNotEmpty_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/takeWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/runtimeType_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/skip_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/first_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/operator_subscript_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/singleWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/asMap_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/forEach_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/iterator_moveNext_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/insertAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/Float32List_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/where_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/clear_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/insert_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/takeWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/isEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/join_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/reduce_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/removeLast_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/indexOf_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/firstWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/setRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/sublist_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/fillRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/isNotEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/join_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/sublist_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/skipWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/Float32List.view_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/single_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/take_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/sublist_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/Float32List.view_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/elementAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/toList_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/setRange_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/toList_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/reversed_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/toList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/where_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/lengthInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/takeWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/length_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/indexOf_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/skip_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/removeAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/lastIndexOf_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/every_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/single_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/length_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/buffer_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/reversed_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/skipWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/single_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/iterator_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/firstWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/takeWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/map_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/iterator_current_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/toSet_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/Float32List_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/Float32List.view_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/lengthInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/operator_subscripted_assignment_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/elementAt_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/lastWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/iterator_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/offsetInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/elementSizeInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/Uint32List.view_A06_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/isEmpty_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/first_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/remove_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/removeWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/reduce_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/offsetInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/first_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/lastIndexOf_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/singleWhere_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/setAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/sort_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/Uint32List.fromList_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/sublist_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/operator_subscripted_assignment_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/hashCode_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/skipWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/replaceRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/fillRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/lastWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/add_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/Uint32List_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/lastIndexOf_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/removeRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/addAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/Uint32List.view_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/fold_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/Uint32List.fromList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/getRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/single_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/lastIndexOf_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/map_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/elementSizeInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/hashCode_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/where_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/operator_equality_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/asMap_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/last_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/getRange_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/Uint32List.view_A05_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/take_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/buffer_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/runtimeType_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/any_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/operator_subscript_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/last_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/setAll_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/singleWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/skipWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/getRange_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/retainWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/expand_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/take_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/last_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/map_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/asMap_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/firstWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/getRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/setRange_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/Uint32List.view_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/lastWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/Uint32List.view_A05_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/Uint32List.view_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/skip_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/indexOf_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/indexOf_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/contains_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/first_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/setRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/setAll_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/Uint32List.view_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/isNotEmpty_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/runtimeType_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/takeWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/first_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/Uint32List.view_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/skip_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/asMap_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/singleWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/operator_subscript_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/forEach_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/insertAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/iterator_moveNext_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/where_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/insert_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/clear_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/takeWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/join_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/isEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/reduce_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/indexOf_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/setRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/firstWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/removeLast_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/sublist_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/join_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/fillRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/isNotEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/sublist_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/Uint32List_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/skipWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/single_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/take_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/elementAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/toList_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/sublist_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/setRange_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/where_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/toList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/Uint32List_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/toList_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/reversed_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/takeWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/lengthInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/length_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/indexOf_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/skip_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/removeAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/lastIndexOf_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/every_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/Uint32List.view_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/single_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/length_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/iterator_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/buffer_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/reversed_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/skipWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/single_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/firstWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/takeWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/map_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/toSet_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/iterator_current_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/operator_subscripted_assignment_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/lengthInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/elementAt_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/lastWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/iterator_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/offsetInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/elementSizeInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/isEmpty_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/remove_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/first_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/removeWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/first_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/offsetInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/reduce_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/singleWhere_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/lastIndexOf_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/setAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/sort_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/sublist_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/Uint8ClampedList_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/operator_subscripted_assignment_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/hashCode_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/fillRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/skipWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/replaceRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/lastWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/add_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/removeRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/lastIndexOf_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/fold_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/addAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/getRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/lastIndexOf_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/single_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/Uint8ClampedList_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/map_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/elementSizeInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/where_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/hashCode_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/operator_equality_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/last_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/asMap_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/getRange_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/buffer_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/take_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/runtimeType_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/any_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/operator_subscript_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/last_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/setAll_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/retainWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/singleWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/skipWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/getRange_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/expand_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/take_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/last_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/Uint8ClampedList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/map_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/Uint8ClampedList.view_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/asMap_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/getRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/setRange_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/firstWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/lastWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/skip_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/Uint8ClampedList.view_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/indexOf_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/first_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/contains_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/indexOf_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/setRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/setAll_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/isNotEmpty_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/Uint8ClampedList.view_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/takeWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/runtimeType_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/skip_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/first_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/asMap_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/Uint8ClampedList.fromList_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/singleWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/operator_subscript_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/forEach_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/iterator_moveNext_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/insertAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/where_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/insert_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/takeWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/clear_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/join_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/isEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/reduce_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/indexOf_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/setRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/firstWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/removeLast_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/sublist_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/fillRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/isNotEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/join_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/sublist_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/Uint8ClampedList.fromList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/skipWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/single_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/take_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/sublist_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/Uint8ClampedList.view_A05_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/Uint8ClampedList.view_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/elementAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/toList_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/setRange_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/where_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/toList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/reversed_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/toList_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/Uint8ClampedList.view_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/lengthInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/takeWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/Uint8ClampedList.view_A05_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/length_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/indexOf_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/skip_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/removeAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/lastIndexOf_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/every_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/single_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/iterator_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/length_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/buffer_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/reversed_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/skipWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/single_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/firstWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/takeWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/toSet_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/map_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/iterator_current_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/operator_subscripted_assignment_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/lengthInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/Uint8ClampedList.view_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteBuffer/hashCode_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteBuffer/hashCode_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteBuffer/operator_equality_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteBuffer/runtimeType_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteBuffer/runtimeType_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteBuffer/lengthInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteBuffer/lengthInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteBuffer/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeSet/SplayTreeSet.from_A02_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeSet/SplayTreeSet.from_A02_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeSet/SplayTreeSet.from_A02_t09: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeSet/SplayTreeSet_class_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeSet/SplayTreeSet_A03_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeSet/SplayTreeSet_A06_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeSet/SplayTreeSet_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeSet/SplayTreeSet.from_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeSet/SplayTreeSet_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeSet/SplayTreeSet.from_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeSet/SplayTreeSet_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeSet/SplayTreeSet.from_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeSet/SplayTreeSet_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeSet/SplayTreeSet_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeSet/SplayTreeSet_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeSet/SplayTreeSet.from_A02_t06: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeSet/SplayTreeSet.from_A02_t07: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeSet/SplayTreeSet_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeSet/SplayTreeSet_A04_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeSet/SplayTreeSet.from_A02_t08: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeSet/SplayTreeSet_A07_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueueEntry/remove_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeSet/SplayTreeSet.from_A02_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueueEntry/hashCode_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueueEntry/previousEntry_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueueEntry/prepend_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueueEntry/previousEntry_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueueEntry/element_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueueEntry/DoubleLinkedQueueEntry_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueueEntry/nextEntry_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueueEntry/DoubleLinkedQueueEntry_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueueEntry/nextEntry_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueueEntry/append_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashSet/LinkedHashSet_A05_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashSet/LinkedHashSet_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashSet/LinkedHashSet_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashSet/LinkedHashSet.from_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashSet/LinkedHashSet_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashSet/LinkedHashSet.identity_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashSet/LinkedHashSet_A05_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashSet/LinkedHashSet_class_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashSet/LinkedHashSet_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashSet/LinkedHashSet.from_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashSet/LinkedHashSet_A05_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashSet/LinkedHashSet.from_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashSet/LinkedHashSet_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashSet/LinkedHashSet_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedListEntry/insertAfter_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashSet/LinkedHashSet.from_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedListEntry/insertAfter_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedListEntry/unlink_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedListEntry/unlink_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedListEntry/unlink_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedListEntry/insertBefore_A02_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedListEntry/previous_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedListEntry/next_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedListEntry/unlink_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedListEntry/unlink_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedListEntry/insertBefore_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedListEntry/next_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedListEntry/next_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedListEntry/insertBefore_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedListEntry/previous_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedListEntry/list_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedListEntry/insertBefore_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedListEntry/list_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedListEntry/insertAfter_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedListEntry/list_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedListEntry/insertBefore_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedListEntry/insertAfter_A02_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedListEntry/previous_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedListEntry/insertAfter_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/elementAt_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/lastWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/iterator_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/LinkedList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/first_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/remove_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/reduce_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/singleWhere_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/addFirst_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/every_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/addAll_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/lastWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/skipWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/add_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/forEach_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/fold_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/addAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/single_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/map_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/where_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/last_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/any_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/last_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/ListQueue.from_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/singleWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/skipWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/expand_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/take_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/expand_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/map_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/firstWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/lastWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/skip_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/first_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/contains_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/every_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/takeWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/addAll_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/singleWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/skip_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/iterator_moveNext_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/forEach_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/clear_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/takeWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/isEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/join_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/forEach_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/firstWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/isNotEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/skipWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/where_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/take_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/elementAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/toList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/add_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/toList_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/takeWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/every_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/toList_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/skip_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/every_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/length_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/skipWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/addFirst_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/firstWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/takeWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/toSet_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/map_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/iterator_current_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/MapView/MapView_class_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Maps/putIfAbsent_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Maps/putIfAbsent_A01_t07: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Maps/putIfAbsent_A01_t09: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Maps/putIfAbsent_A01_t06: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Maps/forEach_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Maps/putIfAbsent_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Maps/putIfAbsent_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Maps/getValues_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Maps/forEach_A01_t06: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Maps/forEach_A01_t08: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/ListMixin/ListMixin_class_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Maps/forEach_A01_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Maps/Maps_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Maps/isEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Maps/forEach_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Maps/forEach_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Maps/containsValue_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Maps/isNotEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Maps/putIfAbsent_A01_t10: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Maps/forEach_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Maps/putIfAbsent_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Maps/mapToString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Maps/length_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Maps/putIfAbsent_A01_t08: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Maps/mapToString_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/IterableMixin/IterableMixin_class_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/IterableMixin/IterableMixin_class_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/ListMixin/ListMixin_class_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/IterableMixin/IterableMixin_class_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/ListBase/listToString_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/ListBase/listToString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SetBase/SetBase_class_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SetBase/setToString_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SetBase/setToString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/ListQueue/ListQueue_class_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/ListQueue/ListQueue.from_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/ListQueue/ListQueue_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/ListBase/ListBase_class_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/ListQueue/ListQueue.from_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/ListQueue/ListQueue.from_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/HasNextIterator/hasNext_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/HasNextIterator/next_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/HasNextIterator/HasNextIterator_class_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/HasNextIterator/hasNext_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/HashMap/HashMap.from_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/HashMap/HashMap.fromIteratables_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/HashMap/HashMap.fromIteratable_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/HashMap/HashMap_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/HashMap/HashMap.fromIteratable_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/HashMap/HashMap.fromIteratables_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/HashMap/HashMap.from_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/HashMap/HashMap.identity_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/HashMap/HashMap.fromIteratables_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/HashMap/HashMap_class_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/HashMap/HashMap.fromIteratable_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/HashMap/HashMap.fromIteratables_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Queue/Queue.from_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/ListBase/ListBase_class_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Queue/Queue.from_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Queue/Queue_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Queue/Queue.from_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Queue/Queue_class_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/HashSet/HashSet.identity_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/HashSet/HashSet_class_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/HashSet/HashSet.from_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/HashSet/HashSet.from_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/HashSet/HashSet_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SetMixin/SetMixin_class_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/firstKeyAfter_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/SplayTreeMap_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/SplayTreeMap.from_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/lastKeyBefore_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/SplayTreeMap_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/SplayTreeMap.fromIterable_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/SplayTreeMap.fromIterable_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/SplayTreeMap.fromIterables_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/SplayTreeMap.from_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/lastKeyBefore_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/SplayTreeMap.fromIterable_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/lastKey_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/SplayTreeMap.fromIterables_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/SplayTreeMap.fromIterable_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/inherited_tests_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/lastKey_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/SplayTreeMap_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/firstKey_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/SplayTreeMap.from_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/SplayTreeMap.fromIterable_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/SplayTreeMap.fromIterables_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/SplayTreeMap_A04_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/SplayTreeMap.fromIterables_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/SplayTreeMap_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/SplayTreeMap_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/SplayTreeMap.from_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/SplayTreeMap_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/firstKey_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/SplayTreeMap.fromIterable_A06_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/SplayTreeMap_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/firstKeyAfter_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/SplayTreeMap.fromIterable_A06_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/SplayTreeMap.fromIterables_A05_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/SplayTreeMap.fromIterables_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/SplayTreeMap.from_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/SplayTreeMap_A02_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/elementAt_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/iterator_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/lastWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/removeFirst_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/first_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/remove_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/removeWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/reduce_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/addLast_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/addFirst_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/singleWhere_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/lastEntry_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/forEachEntry_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/skipWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/lastWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/iterator_moveNext_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/firstEntry_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/add_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/fold_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/addAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/single_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/map_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/where_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/firstEntry_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/last_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/forEachEntry_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/last_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/DoubleLinkedQueue.from_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/forEachEntry_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/every_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/retainWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/singleWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/forEachEntry_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/skipWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/expand_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/expand_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/take_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/DoubleLinkedQueue_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/map_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/firstWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/lastWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/skip_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/every_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/contains_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/removeLast_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/takeWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/first_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/addAll_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/forEach_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/singleWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/skip_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/iterator_moveNext_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/lastEntry_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/clear_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/takeWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/isEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/join_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/forEach_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/removeFirst_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/firstWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/removeLast_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/isNotEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/forEach_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/skipWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/take_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/addLast_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/elementAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/toList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/expand_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/forEach_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/add_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/toList_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/takeWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/toList_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/skip_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/length_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/every_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/iterator_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/skipWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/addFirst_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/takeWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/firstWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/toSet_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/DoubleLinkedQueue_class_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/map_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/iterator_current_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/DoubleLinkedQueue.from_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/any_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/IterableBase/IterableBase_class_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/IterableBase/iterableToFullString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/IterableBase/IterableBase_class_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/IterableBase/iterableToShortString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/IterableBase/iterableToFullString_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/IterableBase/iterableToShortString_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/MapBase/MapBase_class_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/MapMixin/MapMixin_class_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashMap/LinkedHashMap.fromIterables_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashMap/LinkedHashMap_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashMap/LinkedHashMap.identity_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashMap/LinkedHashMap_A04_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashMap/LinkedHashMap_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashMap/LinkedHashMap_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashMap/LinkedHashMap.fromIterables_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashMap/LinkedHashMap_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashMap/LinkedHashMap.from_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashMap/LinkedHashMap_A04_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashMap/LinkedHashMap.from_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashMap/LinkedHashMap.fromIterable_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashMap/LinkedHashMap.fromIterable_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashMap/LinkedHashMap_class_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashMap/LinkedHashMap.fromIterables_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashMap/LinkedHashMap.fromIterable_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashMap/LinkedHashMap_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashMap/LinkedHashMap_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashMap/LinkedHashMap_A04_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashMap/LinkedHashMap.fromIterable_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/convert/JsonDecoder/convert_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/convert/JsonDecoder/fuse_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/convert/JsonDecoder/JsonDecoder_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/convert/JsonEncoder/JsonEncoder_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/convert/JsonDecoder/convert_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/convert/JsonDecoder/convert_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/convert/JsonEncoder/fuse_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/convert/JsonEncoder/convert_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/convert/JsonEncoder/convert_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/convert/JsonCodec/encode_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/convert/JsonCodec/encode_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/convert/JsonCodec/decode_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/convert/JsonCodec/JsonCodec_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/convert/JsonCodec/encode_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/convert/JsonCodec/encode_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/convert/JsonCodec/encode_A02_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/convert/JsonCodec/JsonCodec.withReviver_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/convert/JsonCodec/decode_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/convert/JsonCodec/encode_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/convert/JsonCodec/decode_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/take_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/drain_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/first_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/close_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/reduce_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/ReceivePort_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/lastWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/sendPort_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/lastWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/take_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/asBroadcastStream_A04_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/firstWhere_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/asBroadcastStream_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/asBroadcastStream_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/fold_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/asBroadcastStream_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/single_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/where_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/ReceivePort.fromRawReceivePort_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/drain_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/last_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/reduce_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/last_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/any_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/distinct_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/singleWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/where_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/pipe_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/transform_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/distinct_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/map_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/asBroadcastStream_A04_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/contains_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/first_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/asBroadcastStream_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/ReceivePort.fromRawReceivePort_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/firstWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/takeWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/isBroadcast_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/singleWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/expand_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/asBroadcastStream_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/join_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/forEach_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/isEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/join_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/fold_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/firstWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/skipWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/elementAt_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/transform_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/lastWhere_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/asBroadcastStream_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/close_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/reduce_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/listen_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/toList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/take_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/asBroadcastStream_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/asBroadcastStream_A03_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/isBroadcast_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/length_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/single_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/elementAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/toSet_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/any_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/first_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/RawReceivePort/close_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/RawReceivePort/sendPort_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/every_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/RawReceivePort/RawReceivePort_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/RawReceivePort/RawReceivePort_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/skip_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/SendPort/hashCode_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/RawReceivePort/handler_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/SendPort/operator_equality_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/SendPort/send_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/SendPort/send_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/SendPort/send_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/SendPort/send_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/SendPort/send_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawn_A03_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawn_A05_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawn_A01_t06: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawnUri_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawn_A04_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawn_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawn_A04_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawn_A01_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawn_A06_t06: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawn_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawnUri_A02_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawn_A02_t07: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawn_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawn_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawn_A02_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawn_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawnUri_A01_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawnUri_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawn_A06_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawnUri_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawnUri_A02_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawn_A03_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawn_A06_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawn_A05_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawn_A02_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawn_A06_t07: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawn_A02_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawnUri_A02_t06: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawn_A05_t01: pass
-Done dartk-vm debug_x64 vm/cc/GetRandomBytes: pass
-Done dartk-vm debug_x64 vm/cc/DirectoryCurrentNoScope: pass
-Done dartk-vm debug_x64 vm/cc/DirectoryCurrent: pass
-Done dartk-vm debug_x64 vm/cc/DirectoryExists: pass
-Done dartk-vm debug_x64 vm/cc/DirectorySystemTemp: pass
-Done dartk-vm debug_x64 vm/cc/DirectorySystemTempExists: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawnUri_A02_t07: pass
-Done dartk-vm debug_x64 vm/cc/DirectoryCreateTemp: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawn_A02_t06: pass
-Done dartk-vm debug_x64 vm/cc/DirectorySetCurrent: pass
-Done dartk-vm debug_x64 vm/cc/CircularLinkedList: pass
-Done dartk-vm debug_x64 vm/cc/Read: pass
-Done dartk-vm debug_x64 vm/cc/DirectoryCreateDelete: pass
-Done dartk-vm debug_x64 vm/cc/DirectoryRename: pass
-Done dartk-vm debug_x64 vm/cc/HashMap_Basic: pass
-Done dartk-vm debug_x64 vm/cc/StackAllocatedDestruction: pass
-Done dartk-vm debug_x64 vm/cc/FileLength: pass
-Done dartk-vm debug_x64 vm/cc/FilePosition: pass
-Done dartk-vm debug_x64 vm/cc/StackAllocatedLongJump: pass
-Done dartk-vm debug_x64 vm/cc/StackResourceDestruction: pass
-Done dartk-vm debug_x64 vm/cc/StackResourceLongJump: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawnUri_A01_t04: pass
-Done dartk-vm debug_x64 vm/cc/StoreIntoObject: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawnUri_A01_t02: pass
-Done dartk-vm debug_x64 vm/cc/ReadArgument: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawn_A06_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawnUri_A01_t07: pass
-Done dartk-vm debug_x64 vm/cc/AddressingModes: pass
-Done dartk-vm debug_x64 vm/cc/JumpAroundCrash: pass
-Done dartk-vm debug_x64 vm/cc/SimpleLoop: pass
-Done dartk-vm debug_x64 vm/cc/Cmpb: pass
-Done dartk-vm debug_x64 vm/cc/Increment: pass
-Done dartk-vm debug_x64 vm/cc/Testb: pass
-Done dartk-vm debug_x64 vm/cc/IncrementLong: pass
-Done dartk-vm debug_x64 vm/cc/Decrement: pass
-Done dartk-vm debug_x64 vm/cc/DecrementLong: pass
-Done dartk-vm debug_x64 vm/cc/SignedMultiply: pass
-Done dartk-vm debug_x64 vm/cc/UnsignedMultiply: pass
-Done dartk-vm debug_x64 vm/cc/SignedMultiply64: pass
-Done dartk-vm debug_x64 vm/cc/SignedMultiplyLong: pass
-Done dartk-vm debug_x64 vm/cc/OverflowSignedMultiply: pass
-Done dartk-vm debug_x64 vm/cc/SignedMultiply1: pass
-Done dartk-vm debug_x64 vm/cc/Negate: pass
-Done dartk-vm debug_x64 vm/cc/SignedMultiply2: pass
-Done dartk-vm debug_x64 vm/cc/UnsignedMultiplyLong: pass
-Done dartk-vm debug_x64 vm/cc/SignedDivide: pass
-Done dartk-vm debug_x64 vm/cc/UnsignedDivide: pass
-Done dartk-vm debug_x64 vm/cc/SignedDivideLong: pass
-Done dartk-vm debug_x64 vm/cc/UnsignedDivideLong: pass
-Done dartk-vm debug_x64 vm/cc/BitScanReverse: pass
-Done dartk-vm debug_x64 vm/cc/MoveExtend: pass
-Done dartk-vm debug_x64 vm/cc/MoveExtend32: pass
-Done dartk-vm debug_x64 vm/cc/MoveExtendMemory: pass
-Done dartk-vm debug_x64 vm/cc/MoveExtend32Memory: pass
-Done dartk-vm debug_x64 vm/cc/MoveWord: pass
-Done dartk-vm debug_x64 vm/cc/MoveWordRex: pass
-Done dartk-vm debug_x64 vm/cc/LongAddReg: pass
-Done dartk-vm debug_x64 vm/cc/LongAddAddress: pass
-Done dartk-vm debug_x64 vm/cc/LongAddImmediate: pass
-Done dartk-vm debug_x64 vm/cc/LongSubReg: pass
-Done dartk-vm debug_x64 vm/cc/LongSubImmediate: pass
-Done dartk-vm debug_x64 vm/cc/LongSubAddress: pass
-Done dartk-vm debug_x64 vm/cc/AddReg: pass
-Done dartk-vm debug_x64 vm/cc/AddImmediate: pass
-Done dartk-vm debug_x64 vm/cc/SubReg: pass
-Done dartk-vm debug_x64 vm/cc/AddAddress: pass
-Done dartk-vm debug_x64 vm/cc/SubImmediate: pass
-Done dartk-vm debug_x64 vm/cc/SubAddress: pass
-Done dartk-vm debug_x64 vm/cc/Bitwise: pass
-Done dartk-vm debug_x64 vm/cc/Bitwise64: pass
-Done dartk-vm debug_x64 vm/cc/LogicalOps: pass
-Done dartk-vm debug_x64 vm/cc/LogicalOps64: pass
-Done dartk-vm debug_x64 vm/cc/LogicalTestL: pass
-Done dartk-vm debug_x64 vm/cc/LogicalTestQ: pass
-Done dartk-vm debug_x64 vm/cc/CompareSwapEQ: pass
-Done dartk-vm debug_x64 vm/cc/CompareSwapNEQ: pass
-Done dartk-vm debug_x64 vm/cc/CompareSwapEQ32: pass
-Done dartk-vm debug_x64 vm/cc/CompareSwapNEQ32: pass
-Done dartk-vm debug_x64 vm/cc/LargeConstant: pass
-Done dartk-vm debug_x64 vm/cc/Exchange: pass
-Done dartk-vm debug_x64 vm/cc/CallSimpleLeaf: pass
-Done dartk-vm debug_x64 vm/cc/JumpIndirect: pass
-Done dartk-vm debug_x64 vm/cc/JumpSimpleLeaf: pass
-Done dartk-vm debug_x64 vm/cc/SingleFPMoves2: pass
-Done dartk-vm debug_x64 vm/cc/SingleFPMoves: pass
-Done dartk-vm debug_x64 vm/cc/PackedDoubleAdd: pass
-Done dartk-vm debug_x64 vm/cc/PackedDoubleSub: pass
-Done dartk-vm debug_x64 vm/cc/PackedDoubleNegate: pass
-Done dartk-vm debug_x64 vm/cc/PackedDoubleAbsolute: pass
-Done dartk-vm debug_x64 vm/cc/PackedDoubleMul: pass
-Done dartk-vm debug_x64 vm/cc/PackedDoubleMin: pass
-Done dartk-vm debug_x64 vm/cc/PackedDoubleSqrt: pass
-Done dartk-vm debug_x64 vm/cc/PackedDoubleDiv: pass
-Done dartk-vm debug_x64 vm/cc/PackedDoubleShuffle: pass
-Done dartk-vm debug_x64 vm/cc/PackedDoubleMax: pass
-Done dartk-vm debug_x64 vm/cc/PackedDoubleToSingle: pass
-Done dartk-vm debug_x64 vm/cc/PackedSingleToDouble: pass
-Done dartk-vm debug_x64 vm/cc/SingleFPOperations: pass
-Done dartk-vm debug_x64 vm/cc/PackedFPOperations: pass
-Done dartk-vm debug_x64 vm/cc/PackedIntOperations: pass
-Done dartk-vm debug_x64 vm/cc/PackedFPOperations2: pass
-Done dartk-vm debug_x64 vm/cc/PackedIntOperations2: pass
-Done dartk-vm debug_x64 vm/cc/PackedCompareEQ: pass
-Done dartk-vm debug_x64 vm/cc/PackedCompareNEQ: pass
-Done dartk-vm debug_x64 vm/cc/PackedCompareLT: pass
-Done dartk-vm debug_x64 vm/cc/PackedCompareNLT: pass
-Done dartk-vm debug_x64 vm/cc/PackedCompareLE: pass
-Done dartk-vm debug_x64 vm/cc/PackedCompareNLE: pass
-Done dartk-vm debug_x64 vm/cc/PackedNegate: pass
-Done dartk-vm debug_x64 vm/cc/PackedAbsolute: pass
-Done dartk-vm debug_x64 vm/cc/PackedSetWZero: pass
-Done dartk-vm debug_x64 vm/cc/PackedMin: pass
-Done dartk-vm debug_x64 vm/cc/PackedLogicalOr: pass
-Done dartk-vm debug_x64 vm/cc/PackedMax: pass
-Done dartk-vm debug_x64 vm/cc/PackedLogicalNot: pass
-Done dartk-vm debug_x64 vm/cc/PackedLogicalAnd: pass
-Done dartk-vm debug_x64 vm/cc/PackedUnpackHighPair: pass
-Done dartk-vm debug_x64 vm/cc/DoubleFPOperations: pass
-Done dartk-vm debug_x64 vm/cc/PackedMoveHighLow: pass
-Done dartk-vm debug_x64 vm/cc/PackedMoveLowHigh: pass
-Done dartk-vm debug_x64 vm/cc/PackedUnpackLow: pass
-Done dartk-vm debug_x64 vm/cc/PackedUnpackHigh: pass
-Done dartk-vm debug_x64 vm/cc/PackedUnpackLowPair: pass
-Done dartk-vm debug_x64 vm/cc/DoubleFPMoves: pass
-Done dartk-vm debug_x64 vm/cc/Int32ToDoubleConversion: pass
-Done dartk-vm debug_x64 vm/cc/Int64ToDoubleConversion: pass
-Done dartk-vm debug_x64 vm/cc/DoubleToInt64Conversion: pass
-Done dartk-vm debug_x64 vm/cc/TestObjectCompare: pass
-Done dartk-vm debug_x64 vm/cc/TestNop: pass
-Done dartk-vm debug_x64 vm/cc/TestAlign0: pass
-Done dartk-vm debug_x64 vm/cc/TestAlign1Offset1: pass
-Done dartk-vm debug_x64 vm/cc/TestAlign1: pass
-Done dartk-vm debug_x64 vm/cc/TestAlignLarge: pass
-Done dartk-vm debug_x64 vm/cc/TestAdds: pass
-Done dartk-vm debug_x64 vm/cc/TestNotInt32: pass
-Done dartk-vm debug_x64 vm/cc/XorpdZeroing: pass
-Done dartk-vm debug_x64 vm/cc/TestNot: pass
-Done dartk-vm debug_x64 vm/cc/XorpdZeroing2: pass
-Done dartk-vm debug_x64 vm/cc/Pxor: pass
-Done dartk-vm debug_x64 vm/cc/DoubleAbs: pass
-Done dartk-vm debug_x64 vm/cc/SquareRootDouble: pass
-Done dartk-vm debug_x64 vm/cc/DoubleFPUStackMoves: pass
-Done dartk-vm debug_x64 vm/cc/Sine: pass
-Done dartk-vm debug_x64 vm/cc/Cosine: pass
-Done dartk-vm debug_x64 vm/cc/IntToDoubleConversion: pass
-Done dartk-vm debug_x64 vm/cc/DoubleToDoubleTrunc: pass
-Done dartk-vm debug_x64 vm/cc/ExtractSignBits: pass
-Done dartk-vm debug_x64 vm/cc/Assert: pass
-Done dartk-vm debug_x64 vm/cc/Expect: pass
-Done dartk-vm debug_x64 vm/cc/TestSetCC: pass
-Done dartk-vm debug_x64 vm/cc/TestRepMovsBytes: pass
-Done dartk-vm debug_x64 vm/cc/Fail0: pass
-Done dartk-vm debug_x64 vm/cc/Fail2: pass
-Done dartk-vm debug_x64 vm/cc/ConditionalMovesCompare: pass
-Done dartk-vm debug_x64 vm/cc/FetchAndIncrement: pass
-Done dartk-vm debug_x64 vm/cc/FetchAndDecrement: pass
-Done dartk-vm debug_x64 vm/cc/BitTest: pass
-Done dartk-vm debug_x64 vm/cc/FetchAndDecrementSigned: pass
-Done dartk-vm debug_x64 vm/cc/FetchAndIncrementSigned: pass
-Done dartk-vm debug_x64 vm/cc/IncrementBy: pass
-Done dartk-vm debug_x64 vm/cc/DecrementBy: pass
-Done dartk-vm debug_x64 vm/cc/LoadRelaxed: pass
-Done dartk-vm debug_x64 vm/cc/ConditionalMovesNoOverflow: pass
-Done dartk-vm debug_x64 vm/cc/ConditionalMovesEqual: pass
-Done dartk-vm debug_x64 vm/cc/Fail1: pass
-Done dartk-vm debug_x64 vm/cc/AstPrinter: pass
-Done dartk-vm debug_x64 vm/cc/Ast: pass
-Done dartk-vm debug_x64 vm/cc/BigintHexStrings: pass
-Done dartk-vm debug_x64 vm/cc/CompareAndSwapWord: pass
-Done dartk-vm debug_x64 vm/cc/CompareAndSwapUint32: pass
-Done dartk-vm debug_x64 vm/cc/BigintSmi: pass
-Done dartk-vm debug_x64 vm/cc/BigintInt64: pass
-Done dartk-vm debug_x64 vm/cc/BigintUint64: pass
-Done dartk-vm debug_x64 vm/cc/BitFields: pass
-Done dartk-vm debug_x64 vm/cc/BigintDouble: pass
-Done dartk-vm debug_x64 vm/cc/BoolField: pass
-Done dartk-vm debug_x64 vm/cc/BigintDecStrings: pass
-Done dartk-vm debug_x64 vm/cc/BigintCompare: pass
-Done dartk-vm debug_x64 vm/cc/BigintDecimalStrings: pass
-Done dartk-vm debug_x64 vm/cc/BitSetBasic: pass
-Done dartk-vm debug_x64 vm/cc/BitVector: pass
-Done dartk-vm debug_x64 vm/cc/BitmapBuilder: pass
-Done dartk-vm debug_x64 vm/cc/ClassFinalizer: pass
-Done dartk-vm debug_x64 vm/cc/ClassFinalize_Cycles: pass
-Done dartk-vm debug_x64 vm/cc/ClassFinalize_Resolve: pass
-Done dartk-vm debug_x64 vm/cc/StackMapCodegen: pass
-Done dartk-vm debug_x64 vm/cc/DescriptorList_TokenPositions: pass
-Done dartk-vm debug_x64 vm/cc/SimpleReturnCodegen: pass
-Done dartk-vm debug_x64 vm/cc/SmiReturnCodegen: pass
-Done dartk-vm debug_x64 vm/cc/SimpleStaticCallCodegen: pass
-Done dartk-vm debug_x64 vm/cc/StaticCallReturnParameterCodegen: pass
-Done dartk-vm debug_x64 vm/cc/StaticCallSmiParamSumCodegen: pass
-Done dartk-vm debug_x64 vm/cc/ClassHierarchyAnalysis: pass
-Done dartk-vm debug_x64 vm/cc/SmiAddCodegen: pass
-Done dartk-vm debug_x64 vm/cc/SmiBinaryOpCodegen: pass
-Done dartk-vm debug_x64 vm/cc/GenericAddCodegen: pass
-Done dartk-vm debug_x64 vm/cc/StackMapGC: pass
-Done dartk-vm debug_x64 vm/cc/BoolNotCodegen: pass
-Done dartk-vm debug_x64 vm/cc/BinaryOpCodegen: pass
-Done dartk-vm debug_x64 vm/cc/BoolAndCodegen: pass
-Done dartk-vm debug_x64 vm/cc/SmiUnaryOpCodegen: pass
-Done dartk-vm debug_x64 vm/cc/DoubleUnaryOpCodegen: pass
-Done dartk-vm debug_x64 vm/cc/StaticCallCodegen: pass
-Done dartk-vm debug_x64 vm/cc/InstanceCallCodegen: pass
-Done dartk-vm debug_x64 vm/cc/CompileFunction: pass
-Done dartk-vm debug_x64 vm/cc/AllocateNewObjectCodegen: pass
-Done dartk-vm debug_x64 vm/cc/CompileScript: pass
-Done dartk-vm debug_x64 vm/cc/Id: pass
-Done dartk-vm debug_x64 vm/cc/IcDataAccess: pass
-Done dartk-vm debug_x64 vm/cc/GetCpuModelTest: pass
-Done dartk-vm debug_x64 vm/cc/CompileFunctionOnHelperThread: pass
-Done dartk-vm debug_x64 vm/cc/EvalExpressionWithLazyCompile: pass
-Done dartk-vm debug_x64 vm/cc/EvalExpressionExhaustCIDs: pass
-Done dartk-vm debug_x64 vm/cc/RegenerateAllocStubs: pass
-Done dartk-vm debug_x64 vm/cc/OutOfMemoryStackTraceInfo: pass
-Done dartk-vm debug_x64 vm/cc/EvalExpression: pass
-Done dartk-vm debug_x64 vm/cc/StackTraceInfo: pass
-Done dartk-vm debug_x64 vm/cc/ErrorHandleBasics: pass
-Done dartk-vm debug_x64 vm/cc/ErrorHandleTypes: pass
-Done dartk-vm debug_x64 vm/cc/Null: pass
-Done dartk-vm debug_x64 vm/cc/UnhandleExceptionError: pass
-Done dartk-vm debug_x64 vm/cc/Dart_Error: pass
-Done dartk-vm debug_x64 vm/cc/DeepStackTraceInfo: pass
-Done dartk-vm debug_x64 vm/cc/IdentityEquals: pass
-Done dartk-vm debug_x64 vm/cc/EmptyString: pass
-Done dartk-vm debug_x64 vm/cc/Dart_PropagateError: pass
-Done dartk-vm debug_x64 vm/cc/InstanceValues: pass
-Done dartk-vm debug_x64 vm/cc/ObjectEquals: pass
-Done dartk-vm debug_x64 vm/cc/CurrentStackTraceInfo: pass
-Done dartk-vm debug_x64 vm/cc/InstanceGetType: pass
-Done dartk-vm debug_x64 vm/cc/DoubleValues: pass
-Done dartk-vm debug_x64 vm/cc/BooleanValues: pass
-Done dartk-vm debug_x64 vm/cc/BooleanConstants: pass
-Done dartk-vm debug_x64 vm/cc/IntegerValues: pass
-Done dartk-vm debug_x64 vm/cc/IntegerFitsIntoInt64: pass
-Done dartk-vm debug_x64 vm/cc/CustomIsolates: pass
-Done dartk-vm debug_x64 vm/cc/IsString: pass
-Done dartk-vm debug_x64 vm/cc/ArrayValues: pass
-Done dartk-vm debug_x64 vm/cc/IntegerFitsIntoUint64: pass
-Done dartk-vm debug_x64 vm/cc/NewString: pass
-Done dartk-vm debug_x64 vm/cc/NumberValues: pass
-Done dartk-vm debug_x64 vm/cc/ExternalTypedDataPretenure: pass
-Done dartk-vm debug_x64 vm/cc/ExternalStringCallback: pass
-Done dartk-vm debug_x64 vm/cc/ExternalStringPretenure: pass
-Done dartk-vm debug_x64 vm/cc/TypedDataAccess: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawn_A01_t04: pass
-Done dartk-vm debug_x64 vm/cc/MalformedStringToUTF8: pass
-Done dartk-vm debug_x64 vm/cc/ListAccess: pass
-Done dartk-vm debug_x64 vm/cc/ByteBufferAccess: pass
-Done dartk-vm debug_x64 vm/cc/MapAccess: pass
-Done dartk-vm debug_x64 vm/cc/TypedDataDirectAccessUnverified: pass
-Done dartk-vm debug_x64 vm/cc/TypedDataViewListGetAsBytes: pass
-Done dartk-vm debug_x64 vm/cc/TypedDataDirectAccessVerified: pass
-Done dartk-vm debug_x64 vm/cc/IsFuture: pass
-Done dartk-vm debug_x64 vm/cc/TypedDataViewListIsTypedData: pass
-Done dartk-vm debug_x64 vm/cc/ByteDataAccess: pass
-Done dartk-vm debug_x64 vm/cc/ExternalByteDataAccess: pass
-Done dartk-vm debug_x64 vm/cc/OptimizedExternalByteDataAccess: pass
-Done dartk-vm debug_x64 vm/cc/ExternalClampedTypedDataAccess: pass
-Done dartk-vm debug_x64 vm/cc/ExternalTypedDataAccess: pass
-Done dartk-vm debug_x64 vm/cc/TypedDataViewDirectAccessUnverified: pass
-Done dartk-vm debug_x64 vm/cc/TypedDataDirectAccess1Verified: pass
-Done dartk-vm debug_x64 vm/cc/TypedDataViewDirectAccessVerified: pass
-Done dartk-vm debug_x64 vm/cc/ByteDataDirectAccessUnverified: pass
-Done dartk-vm debug_x64 vm/cc/TypedDataDirectAccess1Unverified: pass
-Done dartk-vm debug_x64 vm/cc/ExternalTypedDataCallback: pass
-Done dartk-vm debug_x64 vm/cc/SlowFinalizer: pass
-Done dartk-vm debug_x64 vm/cc/EnterExitScope: pass
-Done dartk-vm debug_x64 vm/cc/PersistentHandles: pass
-Done dartk-vm debug_x64 vm/cc/NewPersistentHandle_FromPersistentHandle: pass
-Done dartk-vm debug_x64 vm/cc/ByteDataDirectAccessVerified: pass
-Done dartk-vm debug_x64 vm/cc/AssignToPersistentHandle: pass
-Done dartk-vm debug_x64 vm/cc/WeakPersistentHandle: pass
-Done dartk-vm debug_x64 vm/cc/WeakPersistentHandleErrors: pass
-Done dartk-vm debug_x64 vm/cc/WeakPersistentHandleCallback: pass
-Done dartk-vm debug_x64 vm/cc/WeakPersistentHandleNoCallback: pass
-Done dartk-vm debug_x64 vm/cc/WeakPersistentHandlesCallbackShutdown: pass
-Done dartk-vm debug_x64 vm/cc/WeakPersistentHandleExternalAllocationSize: pass
-Done dartk-vm debug_x64 vm/cc/ExternalUint8ClampedArrayAccess: pass
-Done dartk-vm debug_x64 vm/cc/Float32x4List: pass
-Done dartk-vm debug_x64 vm/cc/WeakPersistentHandleExternalAllocationSizeNewspaceGC: pass
-Done dartk-vm debug_x64 vm/cc/WeakPersistentHandleExternalAllocationSizeOddReferents: pass
-Done dartk-vm debug_x64 vm/cc/WeakPersistentHandleExternalAllocationSizeOldspaceGC: pass
-Done dartk-vm debug_x64 vm/cc/ImplicitReferencesOldSpace: pass
-Done dartk-vm debug_x64 vm/cc/ImplicitReferencesNewSpace: pass
-Done dartk-vm debug_x64 vm/cc/SingleGarbageCollectionCallback: pass
-Done dartk-vm debug_x64 vm/cc/SetGarbageCollectionCallbacks: pass
-Done dartk-vm debug_x64 vm/cc/LocalHandles: pass
-Done dartk-vm debug_x64 vm/cc/LocalZoneMemory: pass
-Done dartk-vm debug_x64 vm/cc/CurrentIsolateData: pass
-Done dartk-vm debug_x64 vm/cc/Isolates: pass
-Done dartk-vm debug_x64 vm/cc/DebugName: pass
-Done dartk-vm debug_x64 vm/cc/SetMessageCallbacks: pass
-Done dartk-vm debug_x64 vm/cc/InjectNativeFields2: pass
-Done dartk-vm debug_x64 vm/cc/IsolateSetCheckedMode: pass
-Done dartk-vm debug_x64 vm/cc/TypeGetNonParamtericTypes: pass
-Done dartk-vm debug_x64 vm/cc/SetStickyError: pass
-Done dartk-vm debug_x64 vm/cc/TypeGetParameterizedTypes: pass
-Done dartk-vm debug_x64 vm/cc/SetField_FunnyValue: pass
-Done dartk-vm debug_x64 vm/cc/FieldAccess: pass
-Done dartk-vm debug_x64 vm/cc/InjectNativeFields3: pass
-Done dartk-vm debug_x64 vm/cc/NativeFieldAccess: pass
-Done dartk-vm debug_x64 vm/cc/InjectNativeFields4: pass
-Done dartk-vm debug_x64 vm/cc/TestNativeFieldsAccess: pass
-Done dartk-vm debug_x64 vm/cc/InjectNativeFieldsSuperClass: pass
-Done dartk-vm debug_x64 vm/cc/ImplicitNativeFieldAccess: pass
-Done dartk-vm debug_x64 vm/cc/NegativeNativeFieldAccess: pass
-Done dartk-vm debug_x64 vm/cc/NegativeNativeFieldInIsolateMessage: pass
-Done dartk-vm debug_x64 vm/cc/New_Issue2971: pass
-Done dartk-vm debug_x64 vm/cc/GetStaticField_RunsInitializer: pass
-Done dartk-vm debug_x64 vm/cc/Invoke_Null: pass
-Done dartk-vm debug_x64 vm/cc/Invoke_CrossLibrary: pass
-Done dartk-vm debug_x64 vm/cc/GetField_CheckIsolate: pass
-Done dartk-vm debug_x64 vm/cc/SetField_CheckIsolate: pass
-Done dartk-vm debug_x64 vm/cc/New: pass
-Done dartk-vm debug_x64 vm/cc/InvokeNoSuchMethod: pass
-Done dartk-vm debug_x64 vm/cc/Invoke: pass
-Done dartk-vm debug_x64 vm/cc/Invoke_PrivateStatic: pass
-Done dartk-vm debug_x64 vm/cc/Invoke_FunnyArgs: pass
-Done dartk-vm debug_x64 vm/cc/InvokeClosure: pass
-Done dartk-vm debug_x64 vm/cc/ThrowException: pass
-Done dartk-vm debug_x64 vm/cc/GetNativeArguments: pass
-Done dartk-vm debug_x64 vm/cc/LookupLibrary: pass
-Done dartk-vm debug_x64 vm/cc/GetNativeArgumentCount: pass
-Done dartk-vm debug_x64 vm/cc/LibraryName: pass
-Done dartk-vm debug_x64 vm/cc/LibraryId: pass
-Done dartk-vm debug_x64 vm/cc/LibraryUrl: pass
-Done dartk-vm debug_x64 vm/cc/LibraryGetClassNames: pass
-Done dartk-vm debug_x64 vm/cc/GetFunctionNames: pass
-Done dartk-vm debug_x64 vm/cc/GetType: pass
-Done dartk-vm debug_x64 vm/cc/LibraryImportLibrary: pass
-Done dartk-vm debug_x64 vm/cc/ImportLibraryWithPrefix: pass
-Done dartk-vm debug_x64 vm/cc/LoadLibrary_CompileError: pass
-Done dartk-vm debug_x64 vm/cc/LoadLibrary: pass
-Done dartk-vm debug_x64 vm/cc/LoadSource: pass
-Done dartk-vm debug_x64 vm/cc/LoadSource_LateLoad: pass
-Done dartk-vm debug_x64 vm/cc/LoadPatch: pass
-Done dartk-vm debug_x64 vm/cc/ParsePatchLibrary: pass
-Done dartk-vm debug_x64 vm/cc/LoadPatchSignatureMismatch: pass
-Done dartk-vm debug_x64 vm/cc/ImportLibrary3: pass
-Done dartk-vm debug_x64 vm/cc/ImportLibrary2: pass
-Done dartk-vm debug_x64 vm/cc/ImportLibrary4: pass
-Done dartk-vm debug_x64 vm/cc/ImportLibrary5: pass
-Done dartk-vm debug_x64 vm/cc/InstanceOf: pass
-Done dartk-vm debug_x64 vm/cc/LoadScript: pass
-Done dartk-vm debug_x64 vm/cc/LoadScript_CompileError: pass
-Done dartk-vm debug_x64 vm/cc/RootLibrary: pass
-Done dartk-vm debug_x64 vm/cc/IllegalNewSendPort: pass
-Done dartk-vm debug_x64 vm/cc/IllegalPost: pass
-Done dartk-vm debug_x64 vm/cc/IsolateShutdown: pass
-Done dartk-vm debug_x64 vm/cc/SetNativeResolver: pass
-Done dartk-vm debug_x64 vm/cc/NativePortPostInteger: pass
-Done dartk-vm debug_x64 vm/cc/NativePortReceiveInteger: pass
-Done dartk-vm debug_x64 vm/cc/NativePortReceiveNull: pass
-Done dartk-vm debug_x64 vm/cc/NewNativePort: pass
-Done dartk-vm debug_x64 vm/cc/RunLoop_Exception: pass
-Done dartk-vm debug_x64 vm/cc/RunLoop_Success: pass
-Done dartk-vm debug_x64 vm/cc/RangeLimits: pass
-Done dartk-vm debug_x64 vm/cc/NewString_Null: pass
-Done dartk-vm debug_x64 vm/cc/OneNewSpacePeer: pass
-Done dartk-vm debug_x64 vm/cc/InvalidGetSetPeer: pass
-Done dartk-vm debug_x64 vm/cc/CollectOneNewSpacePeer: pass
-Done dartk-vm debug_x64 vm/cc/TwoNewSpacePeers: pass
-Done dartk-vm debug_x64 vm/cc/NativeFunctionClosure: pass
-Done dartk-vm debug_x64 vm/cc/CollectTwoNewSpacePeers: pass
-Done dartk-vm debug_x64 vm/cc/CopyNewSpacePeers: pass
-Done dartk-vm debug_x64 vm/cc/OnePromotedPeer: pass
-Done dartk-vm debug_x64 vm/cc/TwoOldSpacePeers: pass
-Done dartk-vm debug_x64 vm/cc/OneOldSpacePeer: pass
-Done dartk-vm debug_x64 vm/cc/CollectOneOldSpacePeer: pass
-Done dartk-vm debug_x64 vm/cc/CollectTwoOldSpacePeers: pass
-Done dartk-vm debug_x64 vm/cc/NativeStaticFunctionClosure: pass
-Done dartk-vm debug_x64 vm/cc/MakeExternalString: pass
-Done dartk-vm debug_x64 vm/cc/ExternalizeConstantStrings: pass
-Done dartk-vm debug_x64 vm/cc/ExternalStringDeoptimize: pass
-Done dartk-vm debug_x64 vm/cc/ExternalStringPolymorphicDeoptimize: pass
-Done dartk-vm debug_x64 vm/cc/LazyLoadDeoptimizes: pass
-Done dartk-vm debug_x64 vm/cc/GuardExternalizedString: pass
-Done dartk-vm debug_x64 vm/cc/ExternalStringGuardFieldDeoptimize: pass
-Done dartk-vm debug_x64 vm/cc/ExternalStringStaticFieldDeoptimize: pass
-Done dartk-vm debug_x64 vm/cc/ExternalStringLoadElimination: pass
-Done dartk-vm debug_x64 vm/cc/Timeline_Dart_TimelineDuration: pass
-Done dartk-vm debug_x64 vm/cc/Timeline_Dart_TimelineAsyncDisabled: pass
-Done dartk-vm debug_x64 vm/cc/Timeline_Dart_TimelineAsync: pass
-Done dartk-vm debug_x64 vm/cc/Timeline_Dart_TimelineInstant: pass
-Done dartk-vm debug_x64 vm/cc/ExternalStringTrimDoubleParse: pass
-Done dartk-vm debug_x64 vm/cc/ExternalStringIndexOf: pass
-Done dartk-vm debug_x64 vm/cc/ExternalStringDoubleParse: pass
-Done dartk-vm debug_x64 vm/cc/StringFromExternalTypedData: pass
-Done dartk-vm debug_x64 vm/cc/Timeline_Dart_TimelineGetTrace: pass
-Done dartk-vm debug_x64 vm/cc/Timeline_Dart_TimelineGetTraceGlobalOverride: pass
-Done dartk-vm debug_x64 vm/cc/Timeline_Dart_EmbedderTimelineStartStopRecording: pass
-Done dartk-vm debug_x64 vm/cc/Timeline_Dart_TimelineGetTraceWithDartEvents: pass
-Done dartk-vm debug_x64 vm/cc/Timeline_Dart_TimelineGetTraceOnlyDartEvents: pass
-Done dartk-vm debug_x64 vm/cc/InvokeStatic_CompileError: pass
-Done dartk-vm debug_x64 vm/cc/DartEntry: pass
-Done dartk-vm debug_x64 vm/cc/Timeline_Dart_GlobalTimelineGetTrace_Threaded: pass
-Done dartk-vm debug_x64 vm/cc/Timeline_Dart_GlobalTimelineGetTrace: pass
-Done dartk-vm debug_x64 vm/cc/InvokeDynamic_CompileError: pass
-Done dartk-vm debug_x64 vm/cc/Dart_LoadLibraryPatch_1: pass
-Done dartk-vm debug_x64 vm/cc/Dart_LoadLibraryPatch_Error1: pass
-Done dartk-vm debug_x64 vm/cc/Dart_LoadLibraryPatch_Error3: pass
-Done dartk-vm debug_x64 vm/cc/Dart_LoadLibraryPatch_Error2: pass
-Done dartk-vm debug_x64 vm/cc/Debugger_SetBreakpointInPartOfLibrary: pass
-Done dartk-vm debug_x64 vm/cc/Debugger_GetBreakpointsById: pass
-Done dartk-vm debug_x64 vm/cc/Debugger_SetBreakpointInFunctionLiteralFieldInitializers: pass
-Done dartk-vm debug_x64 vm/cc/Debugger_RemoveBreakpoint: pass
-Done dartk-vm debug_x64 vm/cc/Debugger_PrintBreakpointsToJSONArray: pass
-Done dartk-vm debug_x64 vm/cc/Debugger_PauseEvent: pass
-Done dartk-vm debug_x64 vm/cc/Debugger_RewindOneFrame_Unoptimized: pass
-Done dartk-vm debug_x64 vm/cc/Debugger_RewindTwoFrames_Unoptimized: pass
-Done dartk-vm debug_x64 vm/cc/Debug_Breakpoint: pass
-Done dartk-vm debug_x64 vm/cc/Debug_InspectStack_NotOptimized: pass
-Done dartk-vm debug_x64 vm/cc/Debug_InspectStack_Optimized: pass
-Done dartk-vm debug_x64 vm/cc/Debug_InspectStackWithClosure_NotOptimized: pass
-Done dartk-vm debug_x64 vm/cc/Debug_InspectStackWithClosure_Optimized: pass
-Done dartk-vm debug_x64 vm/cc/Debug_StepOut: pass
-Done dartk-vm debug_x64 vm/cc/Debug_StepInto: pass
-Done dartk-vm debug_x64 vm/cc/Debug_IgnoreBP: pass
-Done dartk-vm debug_x64 vm/cc/Debug_SingleStep: pass
-Done dartk-vm debug_x64 vm/cc/Debug_DeoptimizeFunction: pass
-Done dartk-vm debug_x64 vm/cc/Debug_ClosureBreakpoint: pass
-Done dartk-vm debug_x64 vm/cc/Debug_ExprClosureBreakpoint: pass
-Done dartk-vm debug_x64 vm/cc/Debug_DeleteBreakpoint: pass
-Done dartk-vm debug_x64 vm/cc/Debug_InspectStaticField: pass
-Done dartk-vm debug_x64 vm/cc/Debug_BreakpointStubPatching: pass
-Done dartk-vm debug_x64 vm/cc/Debug_InspectObject: pass
-Done dartk-vm debug_x64 vm/cc/Debug_IsolateID: pass
-Done dartk-vm debug_x64 vm/cc/Debug_StackTraceDump1: pass
-Done dartk-vm debug_x64 vm/cc/Debug_StackTraceDump2: pass
-Done dartk-vm debug_x64 vm/cc/Debug_EvaluateExpr: pass
-Done dartk-vm debug_x64 vm/cc/Debug_EvaluateInActivationOfEvaluate: pass
-Done dartk-vm debug_x64 vm/cc/Debug_GetClosureInfo: pass
-Done dartk-vm debug_x64 vm/cc/Disassembler: pass
-Done dartk-vm debug_x64 vm/cc/Debug_BreakOnUnhandledException: pass
-Done dartk-vm debug_x64 vm/cc/ParseFlags: pass
-Done dartk-vm debug_x64 vm/cc/Debug_GetSupertype: pass
-Done dartk-vm debug_x64 vm/cc/BasicFlags: pass
-Done dartk-vm debug_x64 vm/cc/Debug_ListSuperType: pass
-Done dartk-vm debug_x64 vm/cc/Debug_ScriptGetTokenInfo_Basic: pass
-Done dartk-vm debug_x64 vm/cc/Debug_ScriptGetTokenInfo_MultiLineInterpolation: pass
-Done dartk-vm debug_x64 vm/cc/UnhandledExceptions: pass
-Done dartk-vm debug_x64 vm/cc/SourcePosition_If: pass
-Done dartk-vm debug_x64 vm/cc/SourcePosition_InstanceCalls: pass
-Done dartk-vm debug_x64 vm/cc/SourcePosition_ForLoop: pass
-Done dartk-vm debug_x64 vm/cc/SourcePosition_WhileContinueBreak: pass
-Done dartk-vm debug_x64 vm/cc/SourcePosition_While: pass
-Done dartk-vm debug_x64 vm/cc/SourcePosition_StoreIndexed: pass
-Done dartk-vm debug_x64 vm/cc/SourcePosition_LoadIndexed: pass
-Done dartk-vm debug_x64 vm/cc/SourcePosition_SyntheticTokens: pass
-Done dartk-vm debug_x64 vm/cc/SourcePosition_IfElse: pass
-Done dartk-vm debug_x64 vm/cc/RangeTests: pass
-Done dartk-vm debug_x64 vm/cc/SourcePosition_BitwiseOperations: pass
-Done dartk-vm debug_x64 vm/cc/SourcePosition_Switch: pass
-Done dartk-vm debug_x64 vm/cc/RangeTestsInfinity: pass
-Done dartk-vm debug_x64 vm/cc/SourcePosition_TryCatchFinally: pass
-Done dartk-vm debug_x64 vm/cc/RangeBinaryOp: pass
-Done dartk-vm debug_x64 vm/cc/RangeUtils: pass
-Done dartk-vm debug_x64 vm/cc/RangeAdd: pass
-Done dartk-vm debug_x64 vm/cc/SourcePosition_InstanceFields: pass
-Done dartk-vm debug_x64 vm/cc/FreeList: pass
-Done dartk-vm debug_x64 vm/cc/SourcePosition_Async: pass
-Done dartk-vm debug_x64 vm/cc/FreeListProtectedVariableSizeObjects: pass
-Done dartk-vm debug_x64 vm/cc/RangeAnd: pass
-Done dartk-vm debug_x64 vm/cc/RangeIntersectionMinMax: pass
-Done dartk-vm debug_x64 vm/cc/RangeSub: pass
-Done dartk-vm debug_x64 vm/cc/RangeJoinMinMax: pass
-Done dartk-vm debug_x64 vm/cc/FreeListProtected: pass
-Done dartk-vm debug_x64 vm/cc/FreeListProtectedTinyObjects: pass
-Done dartk-vm debug_x64 vm/cc/GrowableArray: pass
-Done dartk-vm debug_x64 vm/cc/MallocGrowableArray: pass
-Done dartk-vm debug_x64 vm/cc/GrowableArraySort: pass
-Done dartk-vm debug_x64 vm/cc/GrowableHandlePtr: pass
-Done dartk-vm debug_x64 vm/cc/AllocateScopeHandle: pass
-Done dartk-vm debug_x64 vm/cc/AllocateZoneHandle: pass
-Done dartk-vm debug_x64 vm/cc/DirectChainedHashMap: pass
-Done dartk-vm debug_x64 vm/cc/CheckHandleValidity: pass
-Done dartk-vm debug_x64 vm/cc/DirectChainedHashMapInsertRemove: pass
-Done dartk-vm debug_x64 vm/cc/GuardFieldSimpleTest: pass
-Done dartk-vm debug_x64 vm/cc/GuardFieldFinalListTest: pass
-Done dartk-vm debug_x64 vm/cc/GuardFieldFinalVariableLengthListTest: pass
-Done dartk-vm debug_x64 vm/cc/GuardFieldConstructorTest: pass
-Done dartk-vm debug_x64 vm/cc/MallocDirectChainedHashMap: pass
-Done dartk-vm debug_x64 vm/cc/GuardFieldConstructor2Test: pass
-Done dartk-vm debug_x64 vm/cc/DirectChainedHashMapIterator: pass
-Done dartk-vm debug_x64 vm/cc/HashTable: pass
-Done dartk-vm debug_x64 vm/cc/Sets: pass
-Done dartk-vm debug_x64 vm/cc/Maps: pass
-Done dartk-vm debug_x64 vm/cc/FindObject: pass
-Done dartk-vm debug_x64 vm/cc/IterateReadOnly: pass
-Done dartk-vm debug_x64 vm/cc/BecomeFowardOldToOld: pass
-Done dartk-vm debug_x64 vm/cc/BecomeFowardNewToNew: pass
-Done dartk-vm debug_x64 vm/cc/OldGC: pass
-Done dartk-vm debug_x64 vm/cc/BecomeFowardOldToNew: pass
-Done dartk-vm debug_x64 vm/cc/ClassHeapStats: pass
-Done dartk-vm debug_x64 vm/cc/BecomeFowardNewToOld: pass
-Done dartk-vm debug_x64 vm/cc/LargeSweep: pass
-Done dartk-vm debug_x64 vm/cc/OldGC_Unsync: pass
-Done dartk-vm debug_x64 vm/cc/ArrayHeapStats: pass
-Done dartk-vm debug_x64 vm/cc/BecomeForwardRememberedObject: pass
-Done dartk-vm debug_x64 vm/cc/CollectAllGarbage_DeadNewToOld: pass
-Done dartk-vm debug_x64 vm/cc/CollectAllGarbage_DeadOldToNew: pass
-Done dartk-vm debug_x64 vm/cc/CollectAllGarbage_LiveOldToNew: pass
-Done dartk-vm debug_x64 vm/cc/CollectAllGarbage_DeadGenCycle: pass
-Done dartk-vm debug_x64 vm/cc/CollectAllGarbage_LiveNewToOld: pass
-Done dartk-vm debug_x64 vm/cc/OptimizationTests: pass
-Done dartk-vm debug_x64 vm/cc/CollectAllGarbage_LiveOldDeadNew: pass
-Done dartk-vm debug_x64 vm/cc/CollectAllGarbage_LiveNewDeadOld: pass
-Done dartk-vm debug_x64 vm/cc/CollectAllGarbage_LiveNewToOldChain: pass
-Done dartk-vm debug_x64 vm/cc/InstructionTests: pass
-Done dartk-vm debug_x64 vm/cc/CollectAllGarbage_LiveOldToNewChain: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_BadClass: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_FunctionReplacement: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_StaticValuePreserved: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_ClassFieldAdded: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_SavedClosure: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_TopLevelFieldAdded: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_ClassFieldAdded2: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_ClassFieldRemoved: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_ClassAdded: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_LibraryImportRemoved: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_LibraryImportAdded: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_ImplicitConstructorChanged: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_LibraryDebuggable: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_ConstructorChanged: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_TypeIdentity: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_TypeIdentityGeneric: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_TypeIdentityParameter: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_SuperClassChanged: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_LiveStack: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_LibraryHide: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_Generics: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_MixinChanged: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_ImportedMixinFunction: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_SmiFastPathStubs: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_LibraryShow: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_PendingSuperCall: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_TearOff_Instance_Equality: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_TearOff_Class_Identity: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_LibraryLookup: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_ComplexInheritanceChange: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_TearOff_Library_Identity: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_TopLevelParseError: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_TearOff_List_Set: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_DanglingGetter_Instance: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_DanglingGetter_Library: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_DanglingGetter_Class: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_DanglingSetter_Instance: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_DanglingSetter_Class: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_DanglingSetter_Library: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_TearOff_AddArguments: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_TearOff_AddArguments2: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_EnumReorderIdentical: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_EnumEquality: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_EnumIdentical: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_EnumAddition: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_EnumDelete: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_EnumIdentityReload: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_ConstantIdentical: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_DirectSubclasses_Failure: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_EnumValuesToString: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_DirectSubclasses_GhostSubclass: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_ChangeInstanceFormat2: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_ChangeInstanceFormat0: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_ChangeInstanceFormat4: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_ChangeInstanceFormat5: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_NoLibsModified: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_MainLibModified: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_ImportedLibModified: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_ChangeInstanceFormat6: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_ExportedLibModified: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_PrefixImportedLibModified: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_ShapeChangeRetainsHash: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_StaticTearOffRetainsHash: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_SimpleConstFieldUpdate: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_ConstFieldUpdate: pass
-Done dartk-vm debug_x64 vm/cc/FindCodeObject: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_RunNewFieldInitializersSyntaxError: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_RunNewFieldInitializers: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_RunNewFieldInitializersMutateStaticField: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_RunNewFieldInitializersThrows: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_RunNewFieldInitializersReferenceStaticField: pass
-Done dartk-vm debug_x64 vm/cc/IsolateCurrent: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_RunNewFieldInitializersSyntaxError3: pass
-Done dartk-vm debug_x64 vm/cc/StackLimitInterrupts: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_RunNewFieldInitializersSyntaxError2: pass
-Done dartk-vm debug_x64 vm/cc/JSON_JSONStream_Primitives: pass
-Done dartk-vm debug_x64 vm/cc/NoOOBMessageScope: pass
-Done dartk-vm debug_x64 vm/cc/JSON_TextBuffer: pass
-Done dartk-vm debug_x64 vm/cc/IsolateSpawn: pass
-Done dartk-vm debug_x64 vm/cc/JSON_JSONStream_ObjectArray: pass
-Done dartk-vm debug_x64 vm/cc/JSON_JSONStream_ArrayArray: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_RunNewFieldInitialiazersSuperClass: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_TypedefToNotTypedef: pass
-Done dartk-vm debug_x64 vm/cc/JSON_JSONStream_Array: pass
-Done dartk-vm debug_x64 vm/cc/JSON_JSONStream_Object: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_NotTypedefToTypedef: pass
-Done dartk-vm debug_x64 vm/cc/JSON_JSONStream_NestedObject: pass
-Done dartk-vm debug_x64 vm/cc/JSON_JSONStream_Params: pass
-Done dartk-vm debug_x64 vm/cc/JSON_JSONStream_Printf: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_TypedefAddParameter: pass
-Done dartk-vm debug_x64 vm/cc/JSON_JSONStream_ObjectPrintf: pass
-Done dartk-vm debug_x64 vm/cc/JSON_JSONStream_DartObject: pass
-Done dartk-vm debug_x64 vm/cc/StackTraceMallocHookSimpleTest: pass
-Done dartk-vm debug_x64 vm/cc/StackTraceMallocHookLengthTest: pass
-Done dartk-vm debug_x64 vm/cc/JSON_JSONStream_EscapedString: pass
-Done dartk-vm debug_x64 vm/cc/NullRegion: pass
-Done dartk-vm debug_x64 vm/cc/NewRegion: pass
-Done dartk-vm debug_x64 vm/cc/Subregion: pass
-Done dartk-vm debug_x64 vm/cc/ExtendedRegion: pass
-Done dartk-vm debug_x64 vm/cc/JSON_JSONStream_AppendJSONStreamConsumer: pass
-Done dartk-vm debug_x64 vm/cc/MessageHandler_PostMessage: pass
-Done dartk-vm debug_x64 vm/cc/Log_Macro: pass
-Done dartk-vm debug_x64 vm/cc/MessageHandler_HasOOBMessages: pass
-Done dartk-vm debug_x64 vm/cc/MessageHandler_ClosePort: pass
-Done dartk-vm debug_x64 vm/cc/MessageHandler_CloseAllPorts: pass
-Done dartk-vm debug_x64 vm/cc/MessageHandler_HandleNextMessage: pass
-Done dartk-vm debug_x64 vm/cc/Log_Basic: pass
-Done dartk-vm debug_x64 vm/cc/MessageHandler_HandleNextMessage_ProcessOOBAfterError: pass
-Done dartk-vm debug_x64 vm/cc/MessageHandler_HandleNextMessage_Shutdown: pass
-Done dartk-vm debug_x64 vm/cc/Log_Block: pass
-Done dartk-vm debug_x64 vm/cc/MessageHandler_HandleOOBMessages: pass
-Done dartk-vm debug_x64 vm/cc/LongJump: pass
-Done dartk-vm debug_x64 vm/cc/StackTraceMallocHookSimpleJSONTest: pass
-Done dartk-vm debug_x64 vm/cc/MessageHandler_Run: pass
-Done dartk-vm debug_x64 vm/cc/MessageQueue_BasicOperations: pass
-Done dartk-vm debug_x64 vm/cc/Metric_Simple: pass
-Done dartk-vm debug_x64 vm/cc/Metric_OnDemand: pass
-Done dartk-vm debug_x64 vm/cc/MessageQueue_Clear: pass
-Done dartk-vm debug_x64 vm/cc/ObjectGraph: pass
-Done dartk-vm debug_x64 vm/cc/ObjectIdRingSerialWrapTest: pass
-Done dartk-vm debug_x64 vm/cc/JSON_JSONStream_DartString: pass
-Done dartk-vm debug_x64 vm/cc/Class: pass
-Done dartk-vm debug_x64 vm/cc/ObjectIdRingOldGCTest: pass
-Done dartk-vm debug_x64 vm/cc/ObjectIdRingExpiredEntryTest: pass
-Done dartk-vm debug_x64 vm/cc/TypeArguments: pass
-Done dartk-vm debug_x64 vm/cc/TokenStream: pass
-Done dartk-vm debug_x64 vm/cc/GenerateExactSource: pass
-Done dartk-vm debug_x64 vm/cc/InstanceClass: pass
-Done dartk-vm debug_x64 vm/cc/StringEncodeIRI: pass
-Done dartk-vm debug_x64 vm/cc/Smi: pass
-Done dartk-vm debug_x64 vm/cc/StringCompareTo: pass
-Done dartk-vm debug_x64 vm/cc/StringDecodeIRI: pass
-Done dartk-vm debug_x64 vm/cc/Class_ComputeEndTokenPos: pass
-Done dartk-vm debug_x64 vm/cc/StringDecodeIRIInvalid: pass
-Done dartk-vm debug_x64 vm/cc/ObjectIdRingScavengeMoveTest: pass
-Done dartk-vm debug_x64 vm/cc/StringIRITwoByte: pass
-Done dartk-vm debug_x64 vm/cc/Bigint: pass
-Done dartk-vm debug_x64 vm/cc/Mint: pass
-Done dartk-vm debug_x64 vm/cc/Double: pass
-Done dartk-vm debug_x64 vm/cc/Integer: pass
-Done dartk-vm debug_x64 vm/cc/String: pass
-Done dartk-vm debug_x64 vm/cc/StringFormat: pass
-Done dartk-vm debug_x64 vm/cc/StringConcat: pass
-Done dartk-vm debug_x64 vm/cc/StringHashConcat: pass
-Done dartk-vm debug_x64 vm/cc/StringSubStringDifferentWidth: pass
-Done dartk-vm debug_x64 vm/cc/StringEqualsUtf8: pass
-Done dartk-vm debug_x64 vm/cc/StringFromUtf8Literal: pass
-Done dartk-vm debug_x64 vm/cc/ExternalOneByteString: pass
-Done dartk-vm debug_x64 vm/cc/StringEqualsUTF32: pass
-Done dartk-vm debug_x64 vm/cc/EscapeSpecialCharactersOneByteString: pass
-Done dartk-vm debug_x64 vm/cc/EscapeSpecialCharactersExternalOneByteString: pass
-Done dartk-vm debug_x64 vm/cc/EscapeSpecialCharactersTwoByteString: pass
-Done dartk-vm debug_x64 vm/cc/EscapeSpecialCharactersExternalTwoByteString: pass
-Done dartk-vm debug_x64 vm/cc/ExternalTwoByteString: pass
-Done dartk-vm debug_x64 vm/cc/Symbol: pass
-Done dartk-vm debug_x64 vm/cc/Array: pass
-Done dartk-vm debug_x64 vm/cc/Bool: pass
-Done dartk-vm debug_x64 vm/cc/SymbolUnicode: pass
-Done dartk-vm debug_x64 vm/cc/ArrayLengthSmiMin: pass
-Done dartk-vm debug_x64 vm/cc/ArrayLengthNegativeOne: pass
-Done dartk-vm debug_x64 vm/cc/Int8ListLengthNegativeOne: pass
-Done dartk-vm debug_x64 vm/cc/ArrayLengthMaxElements: pass
-Done dartk-vm debug_x64 vm/cc/ArrayLengthOneTooMany: pass
-Done dartk-vm debug_x64 vm/cc/Int8ListLengthSmiMin: pass
-Done dartk-vm debug_x64 vm/cc/Int8ListLengthMaxElements: pass
-Done dartk-vm debug_x64 vm/cc/Int8ListLengthOneTooMany: pass
-Done dartk-vm debug_x64 vm/cc/StringCodePointIterator: pass
-Done dartk-vm debug_x64 vm/cc/StringCodePointIteratorRange: pass
-Done dartk-vm debug_x64 vm/cc/Closure: pass
-Done dartk-vm debug_x64 vm/cc/GrowableObjectArray: pass
-Done dartk-vm debug_x64 vm/cc/InternalTypedData: pass
-Done dartk-vm debug_x64 vm/cc/ExternalTypedData: pass
-Done dartk-vm debug_x64 vm/cc/CodeImmutability: pass
-Done dartk-vm debug_x64 vm/cc/EmbeddedScript: pass
-Done dartk-vm debug_x64 vm/cc/Context: pass
-Done dartk-vm debug_x64 vm/cc/ContextScope: pass
-Done dartk-vm debug_x64 vm/cc/CheckedHandle: pass
-Done dartk-vm debug_x64 vm/cc/ObjectPrinting: pass
-Done dartk-vm debug_x64 vm/cc/EmbedStringInCode: pass
-Done dartk-vm debug_x64 vm/cc/Code: pass
-Done dartk-vm debug_x64 vm/cc/EmbedSmiInCode: pass
-Done dartk-vm debug_x64 vm/cc/EmbedSmiIn64BitCode: pass
-Done dartk-vm debug_x64 vm/cc/ExceptionHandlers: pass
-Done dartk-vm debug_x64 vm/cc/PcDescriptorsLargeDeltas: pass
-Done dartk-vm debug_x64 vm/cc/PcDescriptors: pass
-Done dartk-vm debug_x64 vm/cc/ClassDictionaryIterator: pass
-Done dartk-vm debug_x64 vm/cc/Script: pass
-Done dartk-vm debug_x64 vm/cc/FieldTests: pass
-Done dartk-vm debug_x64 vm/cc/ICData: pass
-Done dartk-vm debug_x64 vm/cc/SubtypeTestCache: pass
-Done dartk-vm debug_x64 vm/cc/EqualsIgnoringPrivate: pass
-Done dartk-vm debug_x64 vm/cc/WeakProperty_PreserveCrossGen: pass
-Done dartk-vm debug_x64 vm/cc/WeakProperty_PreserveRecurse: pass
-Done dartk-vm debug_x64 vm/cc/WeakProperty_PreserveTwoShared_NewSpace: pass
-Done dartk-vm debug_x64 vm/cc/WeakProperty_PreserveTwo_NewSpace: pass
-Done dartk-vm debug_x64 vm/cc/WeakProperty_PreserveOne_NewSpace: pass
-Done dartk-vm debug_x64 vm/cc/WeakProperty_PreserveOne_OldSpace: pass
-Done dartk-vm debug_x64 vm/cc/WeakProperty_PreserveTwo_OldSpace: pass
-Done dartk-vm debug_x64 vm/cc/WeakProperty_PreserveTwoShared_OldSpace: pass
-Done dartk-vm debug_x64 vm/cc/FindClosureIndex: pass
-Done dartk-vm debug_x64 vm/cc/WeakProperty_ClearOne_NewSpace: pass
-Done dartk-vm debug_x64 vm/cc/WeakProperty_ClearOne_OldSpace: pass
-Done dartk-vm debug_x64 vm/cc/WeakProperty_ClearTwoShared_OldSpace: pass
-Done dartk-vm debug_x64 vm/cc/WeakProperty_ClearTwoShared_NewSpace: pass
-Done dartk-vm debug_x64 vm/cc/MirrorReference: pass
-Done dartk-vm debug_x64 vm/cc/StackTraceFormat: pass
-Done dartk-vm debug_x64 vm/cc/FindInvocationDispatcherFunctionIndex: pass
-Done dartk-vm debug_x64 vm/cc/SpecialClassesHaveEmptyArrays: pass
-Done dartk-vm debug_x64 vm/cc/PrintJSONPrimitives: pass
-Done dartk-vm debug_x64 vm/cc/Metadata: pass
-Done dartk-vm debug_x64 vm/cc/FunctionSourceFingerprint: pass
-Done dartk-vm debug_x64 vm/cc/Symbols_FromConcatAll: pass
-Done dartk-vm debug_x64 vm/cc/InstanceEquality: pass
-Done dartk-vm debug_x64 vm/cc/FunctionWithBreakpointNotInlined: pass
-Done dartk-vm debug_x64 vm/cc/OsFuncs: pass
-Done dartk-vm debug_x64 vm/cc/HashCode: pass
-Done dartk-vm debug_x64 vm/cc/SNPrint: pass
-Done dartk-vm debug_x64 vm/cc/LinkedHashMap: pass
-Done dartk-vm debug_x64 vm/cc/String_ScrubName: pass
-Done dartk-vm debug_x64 vm/cc/String_EqualsUTF32: pass
-Done dartk-vm debug_x64 vm/cc/Pages: pass
-Done dartk-vm debug_x64 vm/cc/LinkedHashMap_iteration: pass
-Done dartk-vm debug_x64 vm/cc/Parser_TopLevel: pass
-Done dartk-vm debug_x64 vm/cc/ParseClassDefinition: pass
-Done dartk-vm debug_x64 vm/cc/PortMap_CreateAndCloseOnePort: pass
-Done dartk-vm debug_x64 vm/cc/PrintJSON: pass
-Done dartk-vm debug_x64 vm/cc/PortMap_CreateAndCloseTwoPorts: pass
-Done dartk-vm debug_x64 vm/cc/Parser_AllocateVariables_CapturedVar: pass
-Done dartk-vm debug_x64 vm/cc/PortMap_ClosePorts: pass
-Done dartk-vm debug_x64 vm/cc/Parser_AllocateVariables_NestedCapturedVar: pass
-Done dartk-vm debug_x64 vm/cc/Parser_AllocateVariables_TwoChains: pass
-Done dartk-vm debug_x64 vm/cc/PortMap_PostNullMessage: pass
-Done dartk-vm debug_x64 vm/cc/Parser_AllocateVariables_Issue7681: pass
-Done dartk-vm debug_x64 vm/cc/Parser_AllocateVariables_CaptureLoopVar: pass
-Done dartk-vm debug_x64 vm/cc/PortMap_CreateManyPorts: pass
-Done dartk-vm debug_x64 vm/cc/Parser_AllocateVariables_MiddleChain: pass
-Done dartk-vm debug_x64 vm/cc/PortMap_SetPortState: pass
-Done dartk-vm debug_x64 vm/cc/PortMap_PostMessage: pass
-Done dartk-vm debug_x64 vm/cc/PortMap_PostIntegerMessage: pass
-Done dartk-vm debug_x64 vm/cc/PortMap_PostMessageClosedPort: pass
-Done dartk-vm debug_x64 vm/cc/Profiler_SampleBufferWrapTest: pass
-Done dartk-vm debug_x64 vm/cc/Profiler_SampleBufferIterateTest: pass
-Done dartk-vm debug_x64 vm/cc/Profiler_AllocationSampleTest: pass
-Done dartk-vm debug_x64 vm/cc/Profiler_TrivialRecordAllocation: pass
-Done dartk-vm debug_x64 vm/cc/Profiler_CodeTicks: pass
-Done dartk-vm debug_x64 vm/cc/Profiler_FunctionTicks: pass
-Done dartk-vm debug_x64 vm/cc/Profiler_ToggleRecordAllocation: pass
-Done dartk-vm debug_x64 vm/cc/Profiler_ArrayAllocation: pass
-Done dartk-vm debug_x64 vm/cc/Profiler_IntrinsicAllocation: pass
-Done dartk-vm debug_x64 vm/cc/Profiler_ContextAllocation: pass
-Done dartk-vm debug_x64 vm/cc/Profiler_ClosureAllocation: pass
-Done dartk-vm debug_x64 vm/cc/Profiler_TypedArrayAllocation: pass
-Done dartk-vm debug_x64 vm/cc/Profiler_StringAllocation: pass
-Done dartk-vm debug_x64 vm/cc/Profiler_BasicSourcePosition: pass
-Done dartk-vm debug_x64 vm/cc/Profiler_StringInterpolation: pass
-Done dartk-vm debug_x64 vm/cc/Profiler_ChainedSamples: pass
-Done dartk-vm debug_x64 vm/cc/Profiler_BinaryOperatorSourcePosition: pass
-Done dartk-vm debug_x64 vm/cc/Profiler_SourcePosition: pass
-Done dartk-vm debug_x64 vm/cc/Profiler_ProfileCodeTableTest: pass
-Done dartk-vm debug_x64 vm/cc/RegExp_OneByteString: pass
-Done dartk-vm debug_x64 vm/cc/RegExp_TwoByteString: pass
-Done dartk-vm debug_x64 vm/cc/RegExp_ExternalTwoByteString: pass
-Done dartk-vm debug_x64 vm/cc/RegExp_ExternalOneByteString: pass
-Done dartk-vm debug_x64 vm/cc/Profiler_FunctionInline: pass
-Done dartk-vm debug_x64 vm/cc/Profiler_GetSourceReport: pass
-Done dartk-vm debug_x64 vm/cc/DartStaticResolve: pass
-Done dartk-vm debug_x64 vm/cc/RingBuffer: pass
-Done dartk-vm debug_x64 vm/cc/Scanner_Test: pass
-Done dartk-vm debug_x64 vm/cc/DartDynamicResolve: pass
-Done dartk-vm debug_x64 vm/cc/LocalScope: pass
-Done dartk-vm debug_x64 vm/cc/Service_IdZones: pass
-Done dartk-vm debug_x64 vm/cc/Service_IsolateStickyError: pass
-Done dartk-vm debug_x64 vm/cc/Service_Code: pass
-Done dartk-vm debug_x64 vm/cc/Service_Address: pass
-Done dartk-vm debug_x64 vm/cc/Service_TokenStream: pass
-Done dartk-vm debug_x64 vm/cc/Service_EmbedderRootHandler: pass
-Done dartk-vm debug_x64 vm/cc/Service_LocalVarDescriptors: pass
-Done dartk-vm debug_x64 vm/cc/Service_PcDescriptors: pass
-Done dartk-vm debug_x64 vm/cc/Service_PersistentHandles: pass
-Done dartk-vm debug_x64 vm/cc/SerializeSmi1: pass
-Done dartk-vm debug_x64 vm/cc/SerializeMints: pass
-Done dartk-vm debug_x64 vm/cc/SerializeDouble: pass
-Done dartk-vm debug_x64 vm/cc/SerializeSmi2: pass
-Done dartk-vm debug_x64 vm/cc/SerializeTrue: pass
-Done dartk-vm debug_x64 vm/cc/SerializeFalse: pass
-Done dartk-vm debug_x64 vm/cc/SerializeCapability: pass
-Done dartk-vm debug_x64 vm/cc/SerializeBigint: pass
-Done dartk-vm debug_x64 vm/cc/SerializeNull: pass
-Done dartk-vm debug_x64 vm/cc/SerializeNull: pass
-Done dartk-vm debug_x64 vm/cc/SerializeSingletons: pass
-Done dartk-vm debug_x64 vm/cc/Service_EmbedderIsolateHandler: pass
-Done dartk-vm debug_x64 vm/cc/FailSerializeLargeNestedArray: pass
-Done dartk-vm debug_x64 vm/cc/SerializeBigint2: pass
-Done dartk-vm debug_x64 vm/cc/Service_Profile: pass
-Done dartk-vm debug_x64 vm/cc/SerializeString: pass
-Done dartk-vm debug_x64 vm/cc/SerializeArray: pass
-Done dartk-vm debug_x64 vm/cc/FailSerializeLargeTypedDataInt8: pass
-Done dartk-vm debug_x64 vm/cc/FailSerializeLargeArray: pass
-Done dartk-vm debug_x64 vm/cc/FailSerializeLargeExternalTypedData: pass
-Done dartk-vm debug_x64 vm/cc/FailSerializeLargeTypedDataUint8: pass
-Done dartk-vm debug_x64 vm/cc/SerializeEmptyArray: pass
-Done dartk-vm debug_x64 vm/cc/SerializeByteArray: pass
-Done dartk-vm debug_x64 vm/cc/SerializeTypedArray: pass
-Done dartk-vm debug_x64 vm/cc/SerializeExternalTypedArray: pass
-Done dartk-vm debug_x64 vm/cc/SerializeScript: pass
-Done dartk-vm debug_x64 vm/cc/SerializeEmptyByteArray: pass
-Done dartk-vm debug_x64 vm/cc/ScriptSnapshot: pass
-Done dartk-vm debug_x64 vm/cc/ScriptSnapshot2: pass
-Done dartk-vm debug_x64 vm/cc/IntArrayMessage: pass
-Done dartk-vm debug_x64 vm/cc/CanonicalizationInScriptSnapshots: pass
-Done dartk-vm debug_x64 vm/cc/ScriptSnapshotsUpdateSubclasses: pass
-Done dartk-vm debug_x64 vm/cc/FullSnapshot: pass
-Done dartk-vm debug_x64 vm/cc/ScriptSnapshot1: pass
-Done dartk-vm debug_x64 vm/cc/GenerateSource: pass
-Done dartk-vm debug_x64 vm/cc/MismatchedSnapshotKinds: pass
-Done dartk-vm debug_x64 vm/cc/FullSnapshot1: pass
-Done dartk-vm debug_x64 vm/cc/OmittedObjectEncodingLength: pass
-Done dartk-vm debug_x64 vm/cc/DartGeneratedMessages: pass
-Done dartk-vm debug_x64 vm/cc/DartGeneratedListMessages: pass
-Done dartk-vm debug_x64 vm/cc/DartGeneratedArrayLiteralMessages: pass
-Done dartk-vm debug_x64 vm/cc/DartGeneratedListMessagesWithBackref: pass
-Done dartk-vm debug_x64 vm/cc/DartGeneratedListMessagesWithTypedData: pass
-Done dartk-vm debug_x64 vm/cc/PostCObject: pass
-Done dartk-vm debug_x64 vm/cc/DartGeneratedArrayLiteralMessagesWithBackref: pass
-Done dartk-vm debug_x64 vm/cc/SourceReport_Coverage_NoCalls: pass
-Done dartk-vm debug_x64 vm/cc/SourceReport_Coverage_SimpleCall: pass
-Done dartk-vm debug_x64 vm/cc/SourceReport_Coverage_ForceCompile: pass
-Done dartk-vm debug_x64 vm/cc/SourceReport_Coverage_UnusedClass_NoForceCompile: pass
-Done dartk-vm debug_x64 vm/cc/SourceReport_Coverage_UnusedClass_ForceCompileError: pass
-Done dartk-vm debug_x64 vm/cc/SourceReport_Coverage_UnusedClass_ForceCompile: pass
-Done dartk-vm debug_x64 vm/cc/SourceReport_Coverage_NestedFunctions: pass
-Done dartk-vm debug_x64 vm/cc/SourceReport_Coverage_RestrictedRange: pass
-Done dartk-vm debug_x64 vm/cc/EmptyStackFrameIteration: pass
-Done dartk-vm debug_x64 vm/cc/EmptyDartStackFrameIteration: pass
-Done dartk-vm debug_x64 vm/cc/SourceReport_Coverage_AllFunctions: pass
-Done dartk-vm debug_x64 vm/cc/SourceReport_CallSites_SimpleCall: pass
-Done dartk-vm debug_x64 vm/cc/SourceReport_CallSites_PolymorphicCall: pass
-Done dartk-vm debug_x64 vm/cc/SourceReport_MultipleReports: pass
-Done dartk-vm debug_x64 vm/cc/CallRuntimeStubCode: pass
-Done dartk-vm debug_x64 vm/cc/ThreadPool_RunOne: pass
-Done dartk-vm debug_x64 vm/cc/CallLeafRuntimeStubCode: pass
-Done dartk-vm debug_x64 vm/cc/SourceReport_PossibleBreakpoints_Simple: pass
-Done dartk-vm debug_x64 vm/cc/ThreadPool_RunMany: pass
-Done dartk-vm debug_x64 vm/cc/ThreadPool_Create: pass
-Done dartk-vm debug_x64 vm/cc/ThreadPool_WorkerTimeout: pass
-Done dartk-vm debug_x64 vm/cc/ThreadPool_WorkerShutdown: pass
-Done dartk-vm debug_x64 vm/cc/ThreadPool_RecursiveSpawn: pass
-Done dartk-vm debug_x64 vm/cc/ThreadBarrier: pass
-Done dartk-vm debug_x64 vm/cc/Mutex: pass
-Done dartk-vm debug_x64 vm/cc/ValidateNoSuchMethodStackFrameIteration: pass
-Done dartk-vm debug_x64 vm/cc/ValidateStackFrameIteration: pass
-Done dartk-vm debug_x64 vm/cc/ManySimpleTasksWithZones: pass
-Done dartk-vm debug_x64 vm/cc/ThreadRegistry: pass
-Done dartk-vm debug_x64 vm/cc/ManyTasksWithZones: pass
-Done dartk-vm debug_x64 vm/cc/SafepointTestVM: pass
-Done dartk-vm debug_x64 vm/cc/RecursiveSafepointTest1: pass
-Done dartk-vm debug_x64 vm/cc/ThreadIterator_Count: pass
-Done dartk-vm debug_x64 vm/cc/ThreadIterator_AddFindRemove: pass
-Done dartk-vm debug_x64 vm/cc/ThreadIterator_FindSelf: pass
-Done dartk-vm debug_x64 vm/cc/SafepointTestVM2: pass
-Done dartk-vm debug_x64 vm/cc/Monitor: pass
-Done dartk-vm debug_x64 vm/cc/RecursiveSafepointTest2: pass
-Done dartk-vm debug_x64 vm/cc/HelperAllocAndGC: pass
-Done dartk-vm debug_x64 vm/cc/TimelineEventIsValid: pass
-Done dartk-vm debug_x64 vm/cc/TimelineEventDuration: pass
-Done dartk-vm debug_x64 vm/cc/TimelineEventPrintSystrace: pass
-Done dartk-vm debug_x64 vm/cc/TimelineEventDurationPrintJSON: pass
-Done dartk-vm debug_x64 vm/cc/TimelineEventArguments: pass
-Done dartk-vm debug_x64 vm/cc/TimelinePauses_Basic: pass
-Done dartk-vm debug_x64 vm/cc/TimelineEventArgumentsPrintJSON: pass
-Done dartk-vm debug_x64 vm/cc/TimelineEventBufferPrintJSON: pass
-Done dartk-vm debug_x64 vm/cc/TimelineAnalysis_ThreadBlockCount: pass
-Done dartk-vm debug_x64 vm/cc/TimelineEventCallbackRecorderBasic: pass
-Done dartk-vm debug_x64 vm/cc/TimelineRingRecorderJSONOrder: pass
-Done dartk-vm debug_x64 vm/cc/TimelinePauses_BeginEnd: pass
-Done dartk-vm debug_x64 vm/cc/Utf8Decode: pass
-Done dartk-vm debug_x64 vm/cc/ParseUri_WithScheme_NoQueryNoUser: pass
-Done dartk-vm debug_x64 vm/cc/ParseUri_WithScheme_WithQuery: pass
-Done dartk-vm debug_x64 vm/cc/ParseUri_WithScheme_WithFragment: pass
-Done dartk-vm debug_x64 vm/cc/ParseUri_WithScheme_WithQueryWithFragment: pass
-Done dartk-vm debug_x64 vm/cc/ParseUri_WithScheme_WithUser: pass
-Done dartk-vm debug_x64 vm/cc/ParseUri_NoScheme_AbsPath_NoAuthority: pass
-Done dartk-vm debug_x64 vm/cc/ParseUri_WithScheme_EmptyPath: pass
-Done dartk-vm debug_x64 vm/cc/ParseUri_WithScheme_ShortPath: pass
-Done dartk-vm debug_x64 vm/cc/ParseUri_WithScheme_Rootless2: pass
-Done dartk-vm debug_x64 vm/cc/ParseUri_WithScheme_Rootless1: pass
-Done dartk-vm debug_x64 vm/cc/ParseUri_NoScheme_AbsPath_WithAuthority: pass
-Done dartk-vm debug_x64 vm/cc/ParseUri_NoScheme_AbsPath_StrayColon: pass
-Done dartk-vm debug_x64 vm/cc/ParseUri_NoScheme_Rootless1: pass
-Done dartk-vm debug_x64 vm/cc/ParseUri_NoScheme_Empty: pass
-Done dartk-vm debug_x64 vm/cc/ParseUri_NoScheme_Rootless2: pass
-Done dartk-vm debug_x64 vm/cc/SourceReport_Coverage_AllFunctions_ForceCompile: pass
-Done dartk-vm debug_x64 vm/cc/ParseUri_NoScheme_QueryOnly: pass
-Done dartk-vm debug_x64 vm/cc/ParseUri_NoScheme_FragmentOnly: pass
-Done dartk-vm debug_x64 vm/cc/ParseUri_NormalizeEscapes_UppercaseEscapesPreferred: pass
-Done dartk-vm debug_x64 vm/cc/ParseUri_LowerCaseScheme: pass
-Done dartk-vm debug_x64 vm/cc/ParseUri_NormalizeEscapes_PathQueryFragment: pass
-Done dartk-vm debug_x64 vm/cc/ParseUri_NormalizeEscapes_Authority: pass
-Done dartk-vm debug_x64 vm/cc/ParseUri_NormalizeEscapes_UppercaseEscapeInHost: pass
-Done dartk-vm debug_x64 vm/cc/ParseUri_BrokenEscapeSequence: pass
-Done dartk-vm debug_x64 vm/cc/ResolveUri_WithScheme_NoAuthorityNoQuery: pass
-Done dartk-vm debug_x64 vm/cc/ResolveUri_NoSchemeNoAuthority_AbsolutePath: pass
-Done dartk-vm debug_x64 vm/cc/SafepointTestDart: pass
-Done dartk-vm debug_x64 vm/cc/ResolveUri_WithScheme_WithAuthorityWithQuery: pass
-Done dartk-vm debug_x64 vm/cc/ResolveUri_NoScheme_WithAuthority: pass
-Done dartk-vm debug_x64 vm/cc/ResolveUri_NoSchemeNoAuthority_RelativePath: pass
-Done dartk-vm debug_x64 vm/cc/ResolveUri_NoSchemeNoAuthority_RelativePathEmptyBasePath: pass
-Done dartk-vm debug_x64 vm/cc/ResolveUri_NoSchemeNoAuthority_RelativePathWeirdBasePath: pass
-Done dartk-vm debug_x64 vm/cc/ResolveUri_NoSchemeNoAuthority_EmptyPath: pass
-Done dartk-vm debug_x64 vm/cc/ResolveUri_NoSchemeNoAuthority_EmptyPathWithQuery: pass
-Done dartk-vm debug_x64 vm/cc/ResolveUri_NoSchemeNoAuthority_EmptyPathWithFragment: pass
-Done dartk-vm debug_x64 vm/cc/ResolveUri_RemoveDots_RemoveTwoDotSegments: pass
-Done dartk-vm debug_x64 vm/cc/ResolveUri_RemoveDots_RemoveOneDotSegment: pass
-Done dartk-vm debug_x64 vm/cc/ResolveUri_RemoveDots_RemoveOneDotDotSegment: pass
-Done dartk-vm debug_x64 vm/cc/ResolveUri_RemoveDots_RemoveTwoDotDotSegments: pass
-Done dartk-vm debug_x64 vm/cc/ResolveUri_RemoveDots_RemoveTooManyDotDotSegments: pass
-Done dartk-vm debug_x64 vm/cc/ResolveUri_RemoveDots_RemoveDotSegmentsNothingLeft1: pass
-Done dartk-vm debug_x64 vm/cc/ResolveUri_RemoveDots_RemoveDotSegmentsNothingLeft2: pass
-Done dartk-vm debug_x64 vm/cc/ResolveUri_RemoveDots_RemoveDotSegmentsMixed: pass
-Done dartk-vm debug_x64 vm/cc/ResolveUri_RemoveDots_RemoveDotSegmentsInitialPrefix: pass
-Done dartk-vm debug_x64 vm/cc/ResolveUri_NormalizeEscapes_PathQueryFragment: pass
-Done dartk-vm debug_x64 vm/cc/ResolveUri_NormalizeEscapes_UppercaseHexPreferred: pass
-Done dartk-vm debug_x64 vm/cc/Minimum: pass
-Done dartk-vm debug_x64 vm/cc/ResolveUri_NormalizeEscapes_Authority: pass
-Done dartk-vm debug_x64 vm/cc/Maximum: pass
-Done dartk-vm debug_x64 vm/cc/ShiftForPowerOfTwo: pass
-Done dartk-vm debug_x64 vm/cc/IsPowerOfTwo: pass
-Done dartk-vm debug_x64 vm/cc/ResolveUri_NormalizeEscapes_BrokenEscapeSequence: pass
-Done dartk-vm debug_x64 vm/cc/RoundDown: pass
-Done dartk-vm debug_x64 vm/cc/IsAligned: pass
-Done dartk-vm debug_x64 vm/cc/RoundUp: pass
-Done dartk-vm debug_x64 vm/cc/ResolveUri_DataUri: pass
-Done dartk-vm debug_x64 vm/cc/RoundUpToPowerOfTwo: pass
-Done dartk-vm debug_x64 vm/cc/CountOneBits: pass
-Done dartk-vm debug_x64 vm/cc/IsInt: pass
-Done dartk-vm debug_x64 vm/cc/IsUint: pass
-Done dartk-vm debug_x64 vm/cc/Endianity: pass
-Done dartk-vm debug_x64 vm/cc/LowBits: pass
-Done dartk-vm debug_x64 vm/cc/DoublesBitEqual: pass
-Done dartk-vm debug_x64 vm/cc/AllocateVirtualMemory: pass
-Done dartk-vm debug_x64 vm/cc/FreeVirtualMemory: pass
-Done dartk-vm debug_x64 vm/cc/VirtualMemoryCommitPartial: pass
-Done dartk-vm debug_x64 vm/cc/ResolveUri_RelativeBase_NotImplemented: pass
-Done dartk-vm debug_x64 vm/cc/ResolveUri_TestUriPerRFCs: pass
-Done dartk-vm debug_x64 vm/cc/NativeScopeZoneAllocation: pass
-Done dartk-vm debug_x64 vm/cc/ResolveUri_MoreDotSegmentTests: pass
-Done dartk-vm debug_x64 vm/cc/CountZeros: pass
-Done dartk-vm debug_x64 vm/cc/IsAbsoluteUint: pass
-Done dartk-vm debug_x64 vm/cc/Dart2JSCompilerStats: pass
-Done dartk-vm debug_x64 vm/cc/ZoneAllocated: pass
-Done dartk-vm debug_x64 vm/cc/AllocGeneric_Success: pass
-Done dartk-vm debug_x64 vm/cc/AllocateZone: pass
-Done dartk-vm debug_x64 vm/cc/Dart2JSCompileAll: pass
-Done dartk-vm debug_x64 vm/cc/PrintToString: pass
-Done dartk-vm debug_x64 vm/cc/UseDartApi: pass
-Done dartk-vm debug_x64 vm/cc/StandaloneSnapshotSize: pass
-Done dartk-vm debug_x64 vm/cc/CoreSnapshotSize: pass
-Done dartk-vm debug_x64 vm/cc/FrameLookup: pass
-Done dartk-vm debug_x64 vm/cc/CreateMirrorSystem: pass
-Done dartk-vm debug_x64 vm/cc/InitialRSS: pass
-Done dartk-vm debug_x64 vm/cc/FixedCacheEmpty: pass
-Done dartk-vm debug_x64 vm/cc/FixedCacheHalfFull: pass
-Done dartk-vm debug_x64 vm/cc/FixedCacheFullResource: pass
-Done dartk-vm debug_x64 vm/cc/BasicMallocHookTest: pass
-Done dartk-vm debug_x64 vm/cc/FreeUnseenMemoryMallocHookTest: pass
-Done dartk-vm debug_x64 vm/cc/SerializeSmi: pass
-Done dartk-vm debug_x64 vm/cc/CorelibCompileAll: pass
-Done dartk-vm debug_x64 vm/cc/DartStringAccess: pass
-Done dartk-vm debug_x64 vm/cc/CorelibCompilerStats: pass
-Done dartk-vm debug_x64 vm/cc/EnterExitIsolate: pass
-Done dartk-vm debug_x64 vm/cc/SimpleMessage: pass
-Done dartk-vm debug_x64 vm/cc/LargeMap: pass
-
-=== Failure summary:
-
-
-FAILED: dartk-vm debug_x64 corelib_2/package_resource_test
-Expected: Pass
-Actual: CompileTimeError
-CommandOutput[vm]:
-
-stdout:
-tests/corelib_2/package_resource_test.dart:9:26: Error: Method not found: 'Resource'.
- const resource = const Resource(uriText);
- ^
-
-
-stderr:
-Method not found: 'Resource'.
-
-
-Command[vm]: DART_CONFIGURATION=DebugX64 out/DebugX64/dart --dfe=out/DebugX64/gen/kernel-service.dart.snapshot --kernel-binaries=out/DebugX64/patched_sdk --no-background-compilation --no-enable-malloc-hooks --ignore-unrecognized-flags --packages=/b/build/slave/vm-kernel-linux-debug-x64-be/build/sdk/.packages /b/build/slave/vm-kernel-linux-debug-x64-be/build/sdk/tests/corelib_2/package_resource_test.dart
-Took 0:00:02.684946
-
-Short reproduction command (experimental):
- python tools/test.py -c dartk --builder-tag no_ipv6 --vm-options --no-enable-malloc-hooks corelib_2/package_resource_test
-
-
-FAILED: dartk-vm debug_x64 corelib_2/map_keys2_test
-Expected: RuntimeError
-Actual: Pass
-CommandOutput[vm]:
-
-Command[vm]: DART_CONFIGURATION=DebugX64 out/DebugX64/dart --dfe=out/DebugX64/gen/kernel-service.dart.snapshot --kernel-binaries=out/DebugX64/patched_sdk --no-background-compilation --no-enable-malloc-hooks --ignore-unrecognized-flags --packages=/b/build/slave/vm-kernel-linux-debug-x64-be/build/sdk/.packages /b/build/slave/vm-kernel-linux-debug-x64-be/build/sdk/tests/corelib_2/map_keys2_test.dart
-Took 0:00:06.459264
-
-Short reproduction command (experimental):
- python tools/test.py -c dartk --builder-tag no_ipv6 --vm-options --no-enable-malloc-hooks corelib_2/map_keys2_test
-
-
-
-===
-=== 2 tests failed
-===
-
-
---- Total time: 186:39 ---
-0:02:20.395930 - vm - dartk-vm debug_x64/standalone/io/file_lock_test
-0:02:00.098936 - vm - dartk-vm debug_x64/isolate/spawn_function_custom_class_test
-0:02:00.077210 - vm - dartk-vm debug_x64/isolate/spawn_uri_nested_vm_test
-0:02:00.072143 - vm - dartk-vm debug_x64/isolate/ping_pause_test
-0:01:12.876918 - vm - dartk-vm debug_x64/language/large_class_declaration_test
-0:01:11.453702 - vm - dartk-vm debug_x64/isolate/mandel_isolate_test
-0:00:58.073577 - vm - dartk-vm debug_x64/co19/LibTest/isolate/ReceivePort/elementAt_A01_t01
-0:00:52.470580 - vm - dartk-vm debug_x64/lib/convert/streamed_conversion_json_utf8_decode_test
-0:00:47.744563 - vm - dartk-vm debug_x64/standalone/fragmentation_test
-0:00:47.206394 - vm - dartk-vm debug_x64/isolate/function_send_test
-0:00:43.721259 - vm - dartk-vm debug_x64/co19/LibTest/isolate/ReceivePort/take_A01_t01
-0:00:42.997432 - vm - dartk-vm debug_x64/co19/LibTest/isolate/ReceivePort/expand_A01_t01
-0:00:41.816135 - vm - dartk-vm debug_x64/co19/LibTest/isolate/Isolate/spawn_A01_t04
-0:00:39.680453 - vm - dartk-vm debug_x64/co19/LibTest/isolate/ReceivePort/skip_A01_t01
-0:00:39.342954 - vm - dartk-vm debug_x64/co19/LibTest/isolate/Isolate/spawnUri_A01_t04
-0:00:39.078865 - run_vm_unittest - dartk-vm debug_x64/vm/cc/FindCodeObject
-0:00:36.475995 - vm - dartk-vm debug_x64/co19/LibTest/isolate/ReceivePort/elementAt_A03_t01
-0:00:36.446936 - vm - dartk-vm debug_x64/standalone/io/process_sync_test
-0:00:35.568075 - vm - dartk-vm debug_x64/co19/LibTest/isolate/ReceivePort/every_A01_t01
-0:00:33.581931 - vm - dartk-vm debug_x64/standalone/io/http_advanced_test
-step returned non-zero exit code: 1
-@@@STEP_FAILURE@@@
diff --git a/tools/gardening/test/data/vm-kernel-linux-debug-x64-be/1884/vm_tests.log b/tools/gardening/test/data/vm-kernel-linux-debug-x64-be/1884/vm_tests.log
deleted file mode 100644
index 0d934c0..0000000
--- a/tools/gardening/test/data/vm-kernel-linux-debug-x64-be/1884/vm_tests.log
+++ /dev/null
@@ -1,15892 +0,0 @@
-@@@STEP_CURSOR@vm tests@@@
-@@@STEP_STARTED@@@
-python -u /b/build/slave/vm-kernel-linux-debug-x64-be/build/sdk/tools/test.py -mdebug '--arch=x64' '--progress=line' --report --time --write-debug-log --write-test-outcome-log --copy-coredumps --append_logs -cdartk -rvm '--builder-tag=no_ipv6' '--vm-options=--no-enable-malloc-hooks'
-@@@STEP_LINK@stdout-->stdio@https://luci-logdog.appspot.com/v/?s=chromium%2Fbb%2Fclient.dart%2Fvm-kernel-linux-debug-x64-be%2F1884%2F%2B%2Frecipes%2Fsteps%2Fvm_tests%2F0%2Fstdout@@@
-in dir /b/build/slave/vm-kernel-linux-debug-x64-be/build/sdk:
- allow_subannotations: False
- base_name: 'vm tests'
- cmd: ['python',
- '-u',
- '/b/build/slave/vm-kernel-linux-debug-x64-be/build/sdk/tools/test.py',
- '-mdebug',
- '--arch=x64',
- '--progress=line',
- '--report',
- '--time',
- '--write-debug-log',
- '--write-test-outcome-log',
- '--copy-coredumps',
- '--append_logs',
- '-cdartk',
- '-rvm',
- '--builder-tag=no_ipv6',
- '--vm-options=--no-enable-malloc-hooks']
- cwd: '/b/build/slave/vm-kernel-linux-debug-x64-be/build/sdk'
- env: {}
- env_prefixes: {}
- infra_step: False
- name: 'vm tests'
- nest_level: 0
- ok_ret: frozenset([0])
- trigger_specs: ()
-full environment:
- AWS_CREDENTIAL_FILE: /b/build/site_config/.boto
- BOTO_CONFIG: /b/build/site_config/.boto
- BUILDBOT_BLAMELIST: [u'bkonyi@google.com']
- BUILDBOT_BRANCH: master
- BUILDBOT_BUILDBOTURL: None
- BUILDBOT_BUILDERNAME: vm-kernel-linux-debug-x64-be
- BUILDBOT_BUILDNUMBER: 1884
- BUILDBOT_CLOBBER:
- BUILDBOT_GOT_REVISION: None
- BUILDBOT_MASTERNAME: client.dart
- BUILDBOT_REVISION: c78b338a52120bef388f7cdcd6e7f4fe04c56484
- BUILDBOT_SCHEDULER: main-be
- BUILDBOT_SLAVENAME: slave146-c3
- CHROME_HEADLESS: 1
- CIPD_CACHE_DIR: /b/c/cipd
- DISPLAY: :0.0
- GIT_USER_AGENT: linux2 git/2.10.2 slave146-c3.c.chromecompute.google.com.internal
- HOME: /home/chrome-bot
- LANG: en_US.UTF-8
- LOGDOG_COORDINATOR_HOST: luci-logdog.appspot.com
- LOGDOG_STREAM_PREFIX: bb/client.dart/vm-kernel-linux-debug-x64-be/1884
- LOGDOG_STREAM_PROJECT: chromium
- LOGDOG_STREAM_SERVER_PATH: unix:/b/build/.recipe_runtime/tmpiTxs3d/butler.sock
- PAGER: cat
- PATH: /b/cipd_path_tools:/b/cipd_client:/home/chrome-bot/slavebin:/b/depot_tools:/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
- PWD: /b/build/slave/vm-kernel-linux-debug-x64-be/build
- PYTHONIOENCODING: UTF-8
- PYTHONPATH: /b/build/site_config:/b/build/scripts:/b/build/scripts/release:/b/build/third_party:/b/build/third_party/requests_2_10_0:/b/build_internal/site_config:/b/build_internal/symsrc:/b/build/slave:/b/build/third_party/buildbot_slave_8_4:/b/build/third_party/twisted_10_2:
- PYTHONUNBUFFERED: 1
- TESTING_SLAVENAME: slave146-c3
- USER: chrome-bot
- USERNAME: chrome-bot
- VPYTHON_VIRTUALENV_ROOT: /b/c/vpython
-
-Test configurations: dartk_vm_debug_x64 dartk_vm_debug_x64
-Done dartk-vm debug_x64 vm/dart/optimized_stacktrace_line_test: pass
-Done dartk-vm debug_x64 vm/dart/error_stacktrace_test: pass
-Done dartk-vm debug_x64 vm/dart/regress29620_test: pass
-Done dartk-vm debug_x64 vm/dart/optimized_stacktrace_line_and_column_test: pass
-Done dartk-vm debug_x64 vm/dart/truncating_ints_test: pass
-Done dartk-vm debug_x64 vm/dart/snapshot_version_test: pass
-Done dartk-vm debug_x64 vm/dart/double_materialize_test: pass
-Done dartk-vm debug_x64 vm/dart/double_to_smi_test: pass
-Done dartk-vm debug_x64 vm/dart/data_uri_import_test/percentencoded: pass
-Total: 19756 tests
- * 4000 tests will be skipped (3587 skipped by design)
- * 26 tests are expected to be flaky but not crash
- * 14 tests are expected to flaky crash
- * 14963 tests are expected to pass
- * 37 tests are expected to fail that we won't fix
- * 590 tests are expected to fail that we should fix
- * 109 tests are expected to crash that we should fix
- * 0 tests are allowed to timeout
- * 0 tests are skipped on browsers due to compile-time error
- * 17 could not be categorized or are in multiple categories
-
-Done dartk-vm debug_x64 vm/dart/regress29846_test: pass
-Done dartk-vm debug_x64 vm/dart/inline_stack_frame_test: pass
-Done dartk-vm debug_x64 vm/dart/data_uri_import_test/wrongmime: pass
-Done dartk-vm debug_x64 vm/dart/data_uri_spawn_test: pass
-Done dartk-vm debug_x64 vm/dart/hello_fuchsia_test: pass
-Done dartk-vm debug_x64 vm/dart/spawn_infinite_loop_test: pass
-Done dartk-vm debug_x64 vm/dart/data_uri_import_test/utf16: pass
-Done dartk-vm debug_x64 vm/dart/data_uri_import_test/nomime: pass
-Done dartk-vm debug_x64 vm/dart/data_uri_import_test/nocharset: pass
-Done dartk-vm debug_x64 vm/dart/data_uri_import_test/badencodeddate: pass
-Done dartk-vm debug_x64 vm/dart/data_uri_import_test/base64: pass
-Done dartk-vm debug_x64 vm/dart/byte_array_test: pass
-Done dartk-vm debug_x64 vm/dart/byte_array_optimized_test: pass
-Done dartk-vm debug_x64 vm/dart/redirection_type_shuffling_test/none: pass
-Done dartk-vm debug_x64 vm/dart/redirection_type_shuffling_test/00: pass
-Done dartk-vm debug_x64 service/next_through_call_on_field_in_class_test: pass
-Done dartk-vm debug_x64 service/get_instances_rpc_test: pass
-Done dartk-vm debug_x64 service/causal_async_stack_contents_test: pass
-Done dartk-vm debug_x64 service/issue_25465_test: pass
-Done dartk-vm debug_x64 service/gc_test: pass
-Done dartk-vm debug_x64 service/object_graph_user_test: pass
-Done dartk-vm debug_x64 service/get_isolate_after_stack_overflow_error_test: pass
-Done dartk-vm debug_x64 service/steal_breakpoint_test: pass
-Done dartk-vm debug_x64 service/type_arguments_test: pass
-Done dartk-vm debug_x64 service/get_user_level_retaining_path_rpc_test: pass
-Done dartk-vm debug_x64 service/get_object_rpc_test: pass
-Done dartk-vm debug_x64 service/pause_on_start_and_exit_test: pass
-Done dartk-vm debug_x64 service/dev_fs_http_put_weird_char_test: pass
-Done dartk-vm debug_x64 service/tcp_socket_service_test: pass
-Done dartk-vm debug_x64 service/issue_27238_test: pass
-Done dartk-vm debug_x64 service/get_allocation_samples_test: pass
-Done dartk-vm debug_x64 service/pause_on_exceptions_test: pass
-Done dartk-vm debug_x64 service/external_service_asynchronous_invocation_test: pass
-Done dartk-vm debug_x64 service/allocations_test: pass
-Done dartk-vm debug_x64 service/next_through_function_expression_test: pass
-Done dartk-vm debug_x64 service/native_metrics_test: pass
-Done dartk-vm debug_x64 service/get_zone_memory_info_rpc_test: pass
-Done dartk-vm debug_x64 service/local_variable_declaration_test: pass
-Done dartk-vm debug_x64 service/dev_fs_spawn_test: pass
-Done dartk-vm debug_x64 service/next_through_assign_int_test: pass
-Done dartk-vm debug_x64 service/crash_dump_test: pass
-Done dartk-vm debug_x64 service/set_name_rpc_test: pass
-Done dartk-vm debug_x64 service/dominator_tree_user_test: pass
-Done dartk-vm debug_x64 service/issue_27287_test: pass
-Done dartk-vm debug_x64 service/causal_async_stack_presence_test: pass
-Done dartk-vm debug_x64 service/next_through_is_and_as_test: pass
-Done dartk-vm debug_x64 service/weak_properties_test: pass
-Done dartk-vm debug_x64 service/pause_on_start_then_step_test: pass
-Done dartk-vm debug_x64 service/get_flag_list_rpc_test: pass
-Done dartk-vm debug_x64 service/next_through_call_on_field_test: pass
-Done dartk-vm debug_x64 service/regress_28980_test: pass
-Done dartk-vm debug_x64 service/object_graph_vm_test: pass
-Done dartk-vm debug_x64 service/debugger_location_second_test: pass
-Done dartk-vm debug_x64 service/library_dependency_test: pass
-Done dartk-vm debug_x64 service/awaiter_async_stack_contents_test: pass
-Done dartk-vm debug_x64 service/address_mapper_test: pass
-Done dartk-vm debug_x64 service/set_library_debuggable_test: pass
-Done dartk-vm debug_x64 service/next_through_catch_test: pass
-Done dartk-vm debug_x64 service/vm_test: pass
-Done dartk-vm debug_x64 service/observatory_assets_test: pass
-Done dartk-vm debug_x64 service/get_isolate_after_language_error_test: pass
-Done dartk-vm debug_x64 service/developer_service_get_isolate_id_test: pass
-Done dartk-vm debug_x64 service/inbound_references_test: pass
-Done dartk-vm debug_x64 service/auth_token_test: pass
-Done dartk-vm debug_x64 service/get_allocation_profile_rpc_test: pass
-Done dartk-vm debug_x64 service/get_version_rpc_test: pass
-Done dartk-vm debug_x64 service/debugger_inspect_test: pass
-Done dartk-vm debug_x64 service/mirror_references_test: pass
-Done dartk-vm debug_x64 service/parameters_in_scope_at_entry_test: pass
-Done dartk-vm debug_x64 service/step_through_switch_test: pass
-Done dartk-vm debug_x64 service/pause_on_unhandled_async_exceptions2_test: pass
-Done dartk-vm debug_x64 service/pause_on_unhandled_async_exceptions2_test: pass
-Done dartk-vm debug_x64 service/set_library_debuggable_rpc_test: pass
-Done dartk-vm debug_x64 service/next_through_simple_linear_2_test: pass
-Done dartk-vm debug_x64 service/regexp_function_test: pass
-Done dartk-vm debug_x64 service/field_script_test: pass
-Done dartk-vm debug_x64 service/regexp_function_test: pass
-Done dartk-vm debug_x64 service/command_test: pass
-Done dartk-vm debug_x64 service/step_through_arithmetic_test: pass
-Done dartk-vm debug_x64 service/external_service_registration_via_notification_test: pass
-Done dartk-vm debug_x64 service/capture_stdio_test: pass
-Done dartk-vm debug_x64 service/caching_test: pass
-Done dartk-vm debug_x64 service/read_stream_test: pass
-Done dartk-vm debug_x64 service/dev_fs_weird_char_test: pass
-Done dartk-vm debug_x64 service/malformed_test: pass
-Done dartk-vm debug_x64 service/next_through_new_test: pass
-Done dartk-vm debug_x64 service/get_cpu_profile_timeline_rpc_test: pass
-Done dartk-vm debug_x64 service/async_scope_test: pass
-Done dartk-vm debug_x64 service/pause_on_unhandled_exceptions_test: pass
-Done dartk-vm debug_x64 service/logging_test: pass
-Done dartk-vm debug_x64 service/async_next_test: pass
-Done dartk-vm debug_x64 service/instance_field_order_rpc_test: pass
-Done dartk-vm debug_x64 service/next_through_for_each_loop_test: pass
-Done dartk-vm debug_x64 service/string_escaping_test: pass
-Done dartk-vm debug_x64 service/step_test: pass
-Done dartk-vm debug_x64 service/dev_fs_uri_test: pass
-Done dartk-vm debug_x64 service/step_through_function_2_test: pass
-Done dartk-vm debug_x64 service/async_single_step_into_test: pass
-Done dartk-vm debug_x64 service/positive_token_pos_test: pass
-Done dartk-vm debug_x64 service/regress_28443_test: pass
-Done dartk-vm debug_x64 service/typed_data_test: pass
-Done dartk-vm debug_x64 service/next_through_simple_linear_test: pass
-Done dartk-vm debug_x64 service/break_on_function_test: pass
-Done dartk-vm debug_x64 service/step_through_property_get_test: pass
-Done dartk-vm debug_x64 service/vm_timeline_events_test: pass
-Done dartk-vm debug_x64 service/external_service_disappear_test: pass
-Done dartk-vm debug_x64 service/async_single_step_out_test: pass
-Done dartk-vm debug_x64 service/debugging_test: pass
-Done dartk-vm debug_x64 service/get_object_store_rpc_test: pass
-Done dartk-vm debug_x64 service/collect_all_garbage_test: pass
-Done dartk-vm debug_x64 service/developer_server_control_test: pass
-Done dartk-vm debug_x64 service/step_through_getter_test: pass
-Done dartk-vm debug_x64 service/step_through_setter_test: pass
-Done dartk-vm debug_x64 service/process_service_test: pass
-Done dartk-vm debug_x64 service/get_heap_map_rpc_test: pass
-Done dartk-vm debug_x64 service/udp_socket_service_test: pass
-Done dartk-vm debug_x64 service/get_retaining_path_rpc_test: pass
-Done dartk-vm debug_x64 service/debugger_location_test: pass
-Done dartk-vm debug_x64 service/external_service_registration_test: pass
-Done dartk-vm debug_x64 service/get_ports_rpc_test: pass
-Done dartk-vm debug_x64 service/contexts_test: pass
-Done dartk-vm debug_x64 service/developer_extension_test: pass
-Done dartk-vm debug_x64 service/auth_token1_test: pass
-Done dartk-vm debug_x64 service/get_vm_rpc_test: pass
-Done dartk-vm debug_x64 service/implicit_getter_setter_test: pass
-Done dartk-vm debug_x64 service/next_through_simple_async_with_returns_test: pass
-Done dartk-vm debug_x64 service/causal_async_star_stack_contents_test: pass
-Done dartk-vm debug_x64 service/tcp_socket_closing_service_test: pass
-Done dartk-vm debug_x64 service/add_breakpoint_rpc_kernel_test: pass
-Done dartk-vm debug_x64 service/vm_timeline_flags_test: pass
-Done dartk-vm debug_x64 service/pause_on_unhandled_async_exceptions_test: pass
-Done dartk-vm debug_x64 service/get_vm_timeline_rpc_test: pass
-Done dartk-vm debug_x64 service/step_over_await_test: pass
-Done dartk-vm debug_x64 service/bad_web_socket_address_test: pass
-Done dartk-vm debug_x64 service/get_isolate_rpc_test: pass
-Done dartk-vm debug_x64 service/dominator_tree_vm_test: pass
-Done dartk-vm debug_x64 service/external_service_notification_invocation_test: pass
-Done dartk-vm debug_x64 service/step_through_property_set_test: pass
-Done dartk-vm debug_x64 service/debugging_inlined_finally_test: pass
-Done dartk-vm debug_x64 service/async_star_step_out_test: pass
-Done dartk-vm debug_x64 service/get_isolate_after_sync_error_test: pass
-Done dartk-vm debug_x64 service/object_graph_stack_reference_test: pass
-Done dartk-vm debug_x64 service/step_through_constructor_calls_test: pass
-Done dartk-vm debug_x64 service/rewind_test: pass
-Done dartk-vm debug_x64 service/rewind_optimized_out_test: pass
-Done dartk-vm debug_x64 service/next_through_create_list_and_map_test: pass
-Done dartk-vm debug_x64 service/external_service_synchronous_invocation_test: pass
-Done dartk-vm debug_x64 service/async_step_out_test: pass
-Done dartk-vm debug_x64 service/step_through_function_test: pass
-Done dartk-vm debug_x64 service/next_through_assign_call_test: pass
-Done dartk-vm debug_x64 service/step_into_async_no_await_test: pass
-Done dartk-vm debug_x64 service/next_through_closure_test: pass
-Done dartk-vm debug_x64 service/get_isolate_after_async_error_test: pass
-Done dartk-vm debug_x64 service/file_service_test: pass
-Done dartk-vm debug_x64 service/async_star_single_step_into_test: pass
-Done dartk-vm debug_x64 service/next_through_simple_async_test: pass
-Done dartk-vm debug_x64 service/get_retained_size_rpc_test: pass
-Done dartk-vm debug_x64 service/next_through_for_loop_with_break_and_continue_test: pass
-Done dartk-vm debug_x64 service/next_through_call_on_static_field_in_class_test: pass
-Done dartk-vm debug_x64 service/causal_async_star_stack_presence_test: pass
-Done dartk-vm debug_x64 service/breakpoint_two_args_checked_test: pass
-Done dartk-vm debug_x64 service/reachable_size_test: pass
-Done dartk-vm debug_x64 service/get_stack_rpc_test: pass
-Done dartk-vm debug_x64 service/dev_fs_test: pass
-Done dartk-vm debug_x64 service/dev_fs_http_put_test: pass
-Done dartk-vm debug_x64 service/code_test: pass
-Done dartk-vm debug_x64 service/break_on_activation_test: pass
-Done dartk-vm debug_x64 service/set_vm_name_rpc_test: pass
-Done dartk-vm debug_x64 samples/build_dart_simple/test/build_dart_simple_test: pass
-Done dartk-vm debug_x64 service/eval_test: pass
-Done dartk-vm debug_x64 service/reload_sources_test: pass
-Done dartk-vm debug_x64 service/get_source_report_test: pass
-Done dartk-vm debug_x64 samples/sample_extension/test/sample_extension_script_snapshot_test: pass
-Done dartk-vm debug_x64 service/echo_test: pass
-Done dartk-vm debug_x64 samples/sample_extension/test/sample_extension_app_snapshot_test: pass
-Done dartk-vm debug_x64 samples/build_dart/test/build_dart_test: pass
-Done dartk-vm debug_x64 service/metrics_test: pass
-Done dartk-vm debug_x64 samples/sample_extension/test/sample_extension_test: pass
-Done dartk-vm debug_x64 corelib/growable_list_test: pass
-Done dartk-vm debug_x64 service/async_single_step_exception_test: pass
-Done dartk-vm debug_x64 corelib/list_set_all_test: pass
-Done dartk-vm debug_x64 corelib/iterable_first_where_test: pass
-Done dartk-vm debug_x64 corelib/iterable_first_test: pass
-Done dartk-vm debug_x64 corelib/linked_hash_map_from_iterables_test: pass
-Done dartk-vm debug_x64 corelib/duration2_test: pass
-Done dartk-vm debug_x64 corelib/iterable_expand_test: pass
-Done dartk-vm debug_x64 corelib/errors_test: pass
-Done dartk-vm debug_x64 corelib/double_truncate_to_double_test: pass
-Done dartk-vm debug_x64 corelib/list_sublist_test: pass
-Done dartk-vm debug_x64 corelib/format_exception_test: pass
-Done dartk-vm debug_x64 corelib/linked_hash_map_from_iterable_test: pass
-Done dartk-vm debug_x64 corelib/list_insert_test: pass
-Done dartk-vm debug_x64 corelib/double_round_to_double2_test: pass
-Done dartk-vm debug_x64 corelib/error_stack_trace1_test: pass
-Done dartk-vm debug_x64 corelib/error_stack_trace2_test: pass
-Done dartk-vm debug_x64 corelib/list_replace_range_test: pass
-Done dartk-vm debug_x64 corelib/list_map_test: pass
-Done dartk-vm debug_x64 corelib/iterable_tostring_test: pass
-Done dartk-vm debug_x64 corelib/double_round_to_double_test: pass
-Done dartk-vm debug_x64 corelib/list_last_test: pass
-Done dartk-vm debug_x64 corelib/duration_big_num_test: pass
-Done dartk-vm debug_x64 corelib/iterable_take_test: pass
-Done dartk-vm debug_x64 corelib/list_index_of_test: pass
-Done dartk-vm debug_x64 corelib/list_index_of2_test: pass
-Done dartk-vm debug_x64 corelib/double_ceil2_test: pass
-Done dartk-vm debug_x64 corelib/list_fill_range_test: pass
-Done dartk-vm debug_x64 corelib/int_to_int_test: pass
-Done dartk-vm debug_x64 corelib/duration_double_multiplication_test: pass
-Done dartk-vm debug_x64 corelib/exception_implementation_test: pass
-Done dartk-vm debug_x64 corelib/expression_test: pass
-Done dartk-vm debug_x64 corelib/int_truncate_to_double_test: pass
-Done dartk-vm debug_x64 corelib/regexp/compile-crash_test: pass
-Done dartk-vm debug_x64 corelib/regexp/early-acid3-86_test: pass
-Done dartk-vm debug_x64 corelib/regexp/constructor_test: pass
-Done dartk-vm debug_x64 corelib/regexp/indexof_test: pass
-Done dartk-vm debug_x64 corelib/regexp/extended-characters-match_test: pass
-Done dartk-vm debug_x64 corelib/regexp/extended-characters-more_test: pass
-Done dartk-vm debug_x64 corelib/regexp/dotstar_test: pass
-Done dartk-vm debug_x64 corelib/regexp/find-first-asserted_test: pass
-Done dartk-vm debug_x64 corelib/regexp/ecma-regex-examples_test: pass
-Done dartk-vm debug_x64 corelib/int_truncate_test: pass
-Done dartk-vm debug_x64 corelib/regexp/default_arguments_test: pass
-Done dartk-vm debug_x64 corelib/regexp/compile_test: pass
-Done dartk-vm debug_x64 corelib/error_stack_trace_test: pass
-Done dartk-vm debug_x64 corelib/iterable_test: pass
-Done dartk-vm debug_x64 corelib/is_operator_basic_types_test: pass
-Done dartk-vm debug_x64 corelib/iterable_fold_test: pass
-Done dartk-vm debug_x64 corelib/double_round3_test: pass
-Done dartk-vm debug_x64 corelib/list_set_range_test: pass
-Done dartk-vm debug_x64 corelib/int_round_test: pass
-Done dartk-vm debug_x64 corelib/iterable_reduce_test: pass
-Done dartk-vm debug_x64 corelib/int_parse_radix_bad_handler_test: pass
-Done dartk-vm debug_x64 corelib/list_to_string2_test: pass
-Done dartk-vm debug_x64 corelib/iterable_single_test: pass
-Done dartk-vm debug_x64 corelib/list_contains_argument_order_test: pass
-Done dartk-vm debug_x64 corelib/for_in_test: pass
-Done dartk-vm debug_x64 corelib/iterable_generate_test/none: pass
-Done dartk-vm debug_x64 corelib/iterable_generate_test/01: pass
-Done dartk-vm debug_x64 corelib/integer_to_string_test/none: pass
-Done dartk-vm debug_x64 corelib/integer_to_string_test/01: pass
-Done dartk-vm debug_x64 corelib/iterable_to_list_test/01: pass
-Done dartk-vm debug_x64 corelib/int_parse_radix_test/none: pass
-Done dartk-vm debug_x64 corelib/iterable_to_list_test/none: pass
-Done dartk-vm debug_x64 corelib/int_parse_radix_test/01: pass
-Done dartk-vm debug_x64 corelib/linked_hash_map_test: pass
-Done dartk-vm debug_x64 corelib/iterable_skip_test: pass
-Done dartk-vm debug_x64 corelib/int_parse_radix_test/02: pass
-Done dartk-vm debug_x64 corelib/list_removeat_test: pass
-Done dartk-vm debug_x64 corelib/iterable_contains2_test: pass
-Done dartk-vm debug_x64 corelib/iterable_element_at_test: pass
-Done dartk-vm debug_x64 corelib/iterable_join_test: pass
-Done dartk-vm debug_x64 corelib/list_get_range_test: pass
-Done dartk-vm debug_x64 corelib/iterable_take_while_test: pass
-Done dartk-vm debug_x64 corelib/list_literal_is_growable_test: pass
-Done dartk-vm debug_x64 corelib/stacktrace_current_test: pass
-Done dartk-vm debug_x64 corelib/list_sort_test: pass
-Done dartk-vm debug_x64 corelib/has_next_iterator_test: pass
-Done dartk-vm debug_x64 corelib/list_to_string_test: pass
-Done dartk-vm debug_x64 corelib/double_round_to_double3_test: pass
-Done dartk-vm debug_x64 corelib/list_insert_all_test: pass
-Done dartk-vm debug_x64 corelib/json_map_test: pass
-Done dartk-vm debug_x64 corelib/expando_test: pass
-Done dartk-vm debug_x64 corelib/list_literal_test: pass
-Done dartk-vm debug_x64 corelib/duration_test: pass
-Done dartk-vm debug_x64 corelib/iterable_last_where_test: pass
-Done dartk-vm debug_x64 corelib/list_fixed_test: pass
-Done dartk-vm debug_x64 corelib/list_for_each_test: pass
-Done dartk-vm debug_x64 corelib/list_as_map_test: pass
-Done dartk-vm debug_x64 corelib/double_truncate2_test: pass
-Done dartk-vm debug_x64 corelib/iterable_single_where_test: pass
-Done dartk-vm debug_x64 corelib/iterable_to_set_test: pass
-Done dartk-vm debug_x64 corelib/double_round2_test: pass
-Done dartk-vm debug_x64 corelib/int_round_to_double_test: pass
-Done dartk-vm debug_x64 corelib/list_iterators_test: pass
-Done dartk-vm debug_x64 corelib/list_filled_type_argument_test: pass
-Done dartk-vm debug_x64 corelib/set_test: pass
-Done dartk-vm debug_x64 corelib/iterable_mapping_test: pass
-Done dartk-vm debug_x64 corelib/iterable_contains_test: pass
-Done dartk-vm debug_x64 corelib/iterable_skip_while_test: pass
-Done dartk-vm debug_x64 corelib/double_truncate_test: pass
-Done dartk-vm debug_x64 corelib/iterable_length_test: pass
-Done dartk-vm debug_x64 corelib/double_round4_test: pass
-Done dartk-vm debug_x64 corelib/hash_map2_test: pass
-Done dartk-vm debug_x64 corelib/iterable_last_test: pass
-Done dartk-vm debug_x64 corelib/integer_to_radix_string_test: pass
-Done dartk-vm debug_x64 corelib/list_unmodifiable_test: pass
-Done dartk-vm debug_x64 corelib/double_round_test: pass
-Done dartk-vm debug_x64 corelib/list_reversed_test: pass
-Done dartk-vm debug_x64 corelib/list_growable_test: pass
-Done dartk-vm debug_x64 corelib/list_first_test: pass
-Done dartk-vm debug_x64 corelib/iterable_empty_test: pass
-Done dartk-vm debug_x64 corelib/iterable_return_type_test/none: pass
-Done dartk-vm debug_x64 corelib/list_remove_range_test: pass
-Done dartk-vm debug_x64 corelib/iterable_return_type_test/01: pass
-Done dartk-vm debug_x64 corelib/iterable_return_type_test/02: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_undefined_test/none: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_undefined_test/02: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_undefined_test/01: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_undefined_test/03: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_undefined_test/05: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_undefined_test/04: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_undefined_test/06: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_undefined_test/07: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_undefined_test/08: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_undefined_test/10: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_undefined_test/09: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_undefined_test/11: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_undefined_test/12: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_undefined_test/13: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_undefined_test/14: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_undefined_test/15: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_undefined_test/16: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_test/none: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_test/01: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_test/02: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_test/03: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_test/04: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_test/05: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_test/06: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_test/08: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_test/07: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_test/09: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_test/10: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_test/11: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_test/12: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_test/13: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_test/14: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_test/15: pass
-Done dartk-vm debug_x64 corelib/from_environment_const_type_test/16: pass
-Done dartk-vm debug_x64 corelib/list_test/none: pass
-Done dartk-vm debug_x64 corelib/list_test/01: pass
-Done dartk-vm debug_x64 corelib_2/reg_exp_all_matches_test: pass
-Done dartk-vm debug_x64 corelib_2/reg_exp_first_match_test: pass
-Done dartk-vm debug_x64 corelib_2/double_floor2_test: pass
-Done dartk-vm debug_x64 corelib_2/bit_twiddling_bigint_test: pass
-Done dartk-vm debug_x64 corelib_2/const_list_literal_test: pass
-Done dartk-vm debug_x64 corelib_2/map_from_iterable_test: pass
-Done dartk-vm debug_x64 corelib_2/queue_first_test: pass
-Done dartk-vm debug_x64 corelib_2/uri_ipv4_test: pass
-Done dartk-vm debug_x64 corelib_2/string_replace_static_test: pass
-Done dartk-vm debug_x64 corelib_2/double_compare_test: pass
-Done dartk-vm debug_x64 corelib_2/string_trim2_test: pass
-Done dartk-vm debug_x64 corelib_2/string_from_list_test: pass
-Done dartk-vm debug_x64 corelib_2/reg_exp_groups_test: pass
-Done dartk-vm debug_x64 corelib_2/set_iterator_test: pass
-Done dartk-vm debug_x64 corelib_2/map_from_iterables_test: pass
-Done dartk-vm debug_x64 corelib_2/regress_11099_test: pass
-Done dartk-vm debug_x64 corelib_2/set_contains_test: pass
-Done dartk-vm debug_x64 corelib_2/collection_from_test: pass
-Done dartk-vm debug_x64 corelib_2/string_split_test: pass
-Done dartk-vm debug_x64 corelib_2/unicode2_test: pass
-Done dartk-vm debug_x64 corelib_2/map_values3_test: pass
-Done dartk-vm debug_x64 corelib_2/string_fromcharcodes_test: pass
-Done dartk-vm debug_x64 corelib_2/string_fromcharcode_test: pass
-Done dartk-vm debug_x64 corelib_2/uri_parse_test: pass
-Done dartk-vm debug_x64 corelib_2/unicode_test: pass
-Done dartk-vm debug_x64 corelib_2/shuffle_test: pass
-Done dartk-vm debug_x64 corelib_2/int_from_environment2_test: pass
-Done dartk-vm debug_x64 corelib_2/string_static_test: pass
-Done dartk-vm debug_x64 corelib_2/collection_length_test: pass
-Done dartk-vm debug_x64 corelib_2/hash_set_type_check_test: pass
-Done dartk-vm debug_x64 corelib_2/int_from_environment_test: pass
-Done dartk-vm debug_x64 corelib_2/string_trim_test: pass
-Done dartk-vm debug_x64 corelib_2/double_ceil_test: pass
-Done dartk-vm debug_x64 corelib_2/string_replace_test: pass
-Done dartk-vm debug_x64 corelib_2/map_keys_test: pass
-Done dartk-vm debug_x64 corelib_2/date_time4_test: pass
-Done dartk-vm debug_x64 corelib_2/uri_test: pass
-Done dartk-vm debug_x64 corelib_2/apply_test: pass
-Done dartk-vm debug_x64 corelib_2/type_hashcode_test: pass
-Done dartk-vm debug_x64 corelib_2/toInt_test: pass
-Done dartk-vm debug_x64 corelib_2/int_floor_test: pass
-Done dartk-vm debug_x64 corelib_2/hashcode_boxed_test: pass
-Done dartk-vm debug_x64 corelib_2/set_removeAll_test: pass
-Done dartk-vm debug_x64 corelib_2/string_buffer_test: pass
-Done dartk-vm debug_x64 corelib_2/string_base_vm_test: pass
-Done dartk-vm debug_x64 corelib_2/map_values_test: pass
-Done dartk-vm debug_x64 corelib_2/map_contains_value_test: pass
-Done dartk-vm debug_x64 corelib_2/hash_map_test: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_parsed_arith_vm_test: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_parsed_arith_vm_test: pass
-Done dartk-vm debug_x64 corelib_2/collection_test: pass
-Done dartk-vm debug_x64 corelib_2/map_to_string_test: pass
-Done dartk-vm debug_x64 corelib_2/uri_path_test: pass
-Done dartk-vm debug_x64 corelib_2/map_values4_test: pass
-Done dartk-vm debug_x64 corelib_2/string_to_lower_case_test: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_parsed_mul_div_vm_test: pass
-Done dartk-vm debug_x64 corelib_2/reg_exp_group_test: pass
-Done dartk-vm debug_x64 corelib_2/reg_exp_has_match_test: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_parsed_mul_div_vm_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/char-insensitive_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/non-capturing-groups_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/stack-overflow_test: pass
-Done dartk-vm debug_x64 corelib_2/symbol_reserved_word_test/none: pass
-Done dartk-vm debug_x64 corelib_2/symbol_reserved_word_test/01: pass
-Done dartk-vm debug_x64 corelib_2/symbol_reserved_word_test/02: pass
-Done dartk-vm debug_x64 corelib_2/symbol_reserved_word_test/03: pass
-Done dartk-vm debug_x64 corelib_2/symbol_reserved_word_test/08: pass
-Done dartk-vm debug_x64 corelib_2/symbol_reserved_word_test/05: pass
-Done dartk-vm debug_x64 corelib_2/symbol_reserved_word_test/04: pass
-Done dartk-vm debug_x64 corelib_2/symbol_reserved_word_test/06: pass
-Done dartk-vm debug_x64 corelib_2/symbol_reserved_word_test/07: pass
-Done dartk-vm debug_x64 corelib_2/symbol_reserved_word_test/11: pass
-Done dartk-vm debug_x64 corelib_2/symbol_reserved_word_test/09: pass
-Done dartk-vm debug_x64 corelib_2/symbol_reserved_word_test/12: pass
-Done dartk-vm debug_x64 corelib_2/symbol_reserved_word_test/10: pass
-Done dartk-vm debug_x64 corelib_2/nan_infinity_test/01: pass
-Done dartk-vm debug_x64 corelib_2/bool_from_environment2_test/none: pass
-Done dartk-vm debug_x64 corelib_2/nan_infinity_test/none: pass
-Done dartk-vm debug_x64 corelib_2/bool_from_environment2_test/01: pass
-Done dartk-vm debug_x64 corelib_2/bool_from_environment2_test/02: pass
-Done dartk-vm debug_x64 corelib_2/bool_from_environment2_test/03: pass
-Done dartk-vm debug_x64 corelib_2/bool_from_environment2_test/04: pass
-Done dartk-vm debug_x64 corelib_2/bool_from_environment2_test/05: pass
-Done dartk-vm debug_x64 corelib_2/regexp/regexp_kde_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/parentheses_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/pcre-test-4_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/regress-regexp-construct-result_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/overflow_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/non-character_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/stack-overflow2_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/issue_19193_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/loop-capture_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/pcre_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/results-cache_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/malformed-escapes_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/no-extensions_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/negative-special-characters_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/unicodeCaseInsensitive_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/capture-3_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/capture_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/regress-regexp-codeflush_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/captures_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/unicode-handling_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/backreferences_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/non-bmp_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/alternatives_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/ranges-and-escaped-hyphens_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/many-brackets_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/UC16_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/non-greedy-parentheses_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/range-out-of-order_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/invalid-range-in-class_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/assertion_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/multiline_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/non-capturing-backtracking_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/lastindex_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/bol-with-multiline_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/ascii-regexp-subject_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/quantified-assertions_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/norepeat_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/character-match-out-of-order_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/standalones_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/toString_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/range-bound-ffff_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/regress-6-9-regexp_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/look-ahead_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/bol_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/regexp_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/alternative-length-miscalculation_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/lookahead_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/zero-length-alternatives_test: pass
-Done dartk-vm debug_x64 corelib_2/regexp/repeat-match-waldemar_test: pass
-Done dartk-vm debug_x64 corelib_2/string_runes_test: pass
-Done dartk-vm debug_x64 corelib_2/compare_to2_test: pass
-Done dartk-vm debug_x64 corelib_2/collection_to_string_test: pass
-Done dartk-vm debug_x64 corelib_2/queue_iterator_test: pass
-Done dartk-vm debug_x64 corelib_2/int_parse_with_limited_ints_test: pass
-Done dartk-vm debug_x64 corelib_2/date_time_parse_test: pass
-Done dartk-vm debug_x64 corelib_2/date_time3_test: pass
-Done dartk-vm debug_x64 corelib_2/splay_tree_from_iterables_test: pass
-Done dartk-vm debug_x64 corelib_2/reg_exp_cache_test: pass
-Done dartk-vm debug_x64 corelib_2/compare_to_test: pass
-Done dartk-vm debug_x64 corelib_2/strings_test: pass
-Done dartk-vm debug_x64 corelib_2/uri_http_test: pass
-Done dartk-vm debug_x64 corelib_2/set_intersection_test: pass
-Done dartk-vm debug_x64 corelib_2/symbol_test/01: pass
-Done dartk-vm debug_x64 corelib_2/symbol_test/none: pass
-Done dartk-vm debug_x64 corelib_2/symbol_test/02: pass
-Done dartk-vm debug_x64 corelib_2/symbol_test/03: pass
-Done dartk-vm debug_x64 corelib_2/map_from_test: pass
-Done dartk-vm debug_x64 corelib_2/string_from_environment2_test: pass
-Done dartk-vm debug_x64 corelib_2/bit_twiddling_test: pass
-Done dartk-vm debug_x64 corelib_2/date_time10_test: pass
-Done dartk-vm debug_x64 corelib_2/map_contains_key_test: pass
-Done dartk-vm debug_x64 corelib_2/reg_exp4_test: pass
-Done dartk-vm debug_x64 corelib_2/bool_hashcode_test: pass
-Done dartk-vm debug_x64 corelib_2/uri_query_test: pass
-Done dartk-vm debug_x64 corelib_2/uri_normalize_path_test: pass
-Done dartk-vm debug_x64 corelib_2/int_ceil_test: pass
-Done dartk-vm debug_x64 corelib_2/map_index_test: pass
-Done dartk-vm debug_x64 corelib_2/sort_test: pass
-Done dartk-vm debug_x64 corelib_2/main_test: pass
-Done dartk-vm debug_x64 corelib_2/uri_base_test: pass
-Done dartk-vm debug_x64 corelib_2/uri_parameters_all_test: pass
-Done dartk-vm debug_x64 corelib_2/stacktrace_fromstring_test: pass
-Done dartk-vm debug_x64 corelib_2/bool_from_environment_test: pass
-Done dartk-vm debug_x64 corelib_2/hashcode_test: pass
-Done dartk-vm debug_x64 corelib_2/const_list_set_range_test: pass
-Done dartk-vm debug_x64 corelib_2/int_floor_to_double_test: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_parsed_div_rem_vm_test: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_parsed_div_rem_vm_test: pass
-Done dartk-vm debug_x64 corelib_2/uri_normalize_test: pass
-Done dartk-vm debug_x64 corelib_2/regress_r21715_test: pass
-Done dartk-vm debug_x64 corelib_2/string_replace_all_test: pass
-Done dartk-vm debug_x64 corelib_2/date_time2_test: pass
-Done dartk-vm debug_x64 corelib_2/date_time9_test: pass
-Done dartk-vm debug_x64 corelib_2/set_containsAll_test: pass
-Done dartk-vm debug_x64 corelib_2/string_base_vm_static_test: pass
-Done dartk-vm debug_x64 corelib_2/double_ceil_to_double_test: pass
-Done dartk-vm debug_x64 corelib_2/num_sign_test: pass
-Done dartk-vm debug_x64 corelib_2/queue_last_test: pass
-Done dartk-vm debug_x64 corelib_2/num_sign_test: pass
-Done dartk-vm debug_x64 corelib_2/map_remove_test: pass
-Done dartk-vm debug_x64 corelib_2/stopwatch_test: pass
-Done dartk-vm debug_x64 corelib_2/null_nosuchmethod_test: pass
-Done dartk-vm debug_x64 corelib_2/const_list_remove_range_test: pass
-Done dartk-vm debug_x64 corelib_2/uri_file_test: pass
-Done dartk-vm debug_x64 corelib_2/apply2_test: pass
-Done dartk-vm debug_x64 corelib_2/int_ceil_to_double_test: pass
-Done dartk-vm debug_x64 corelib_2/queue_single_test: pass
-Done dartk-vm debug_x64 corelib_2/set_retainAll_test: pass
-Done dartk-vm debug_x64 corelib_2/maps_test: pass
-
-FAILED: dartk-vm debug_x64 corelib_2/map_keys2_test
-Expected: RuntimeError
-Actual: Pass
-CommandOutput[vm]:
-
-Command[vm]: DART_CONFIGURATION=DebugX64 out/DebugX64/dart --dfe=out/DebugX64/gen/kernel-service.dart.snapshot --kernel-binaries=out/DebugX64/patched_sdk --no-background-compilation --no-enable-malloc-hooks --ignore-unrecognized-flags --packages=/b/build/slave/vm-kernel-linux-debug-x64-be/build/sdk/.packages /b/build/slave/vm-kernel-linux-debug-x64-be/build/sdk/tests/corelib_2/map_keys2_test.dart
-Took 0:00:06.289269
-
-Short reproduction command (experimental):
- python tools/test.py -c dartk --builder-tag no_ipv6 --vm-options --no-enable-malloc-hooks corelib_2/map_keys2_test
-
-Done dartk-vm debug_x64 corelib_2/map_keys2_test: fail
-Done dartk-vm debug_x64 corelib_2/date_time7_test: pass
-Done dartk-vm debug_x64 corelib_2/uri_ipv6_test: pass
-Done dartk-vm debug_x64 corelib_2/uri_scheme_test: pass
-Done dartk-vm debug_x64 corelib_2/range_error_test: pass
-Done dartk-vm debug_x64 corelib_2/string_source_test: pass
-Done dartk-vm debug_x64 corelib_2/null_test: pass
-Done dartk-vm debug_x64 corelib_2/string_substring_test: pass
-Done dartk-vm debug_x64 corelib_2/queue_test: pass
-Done dartk-vm debug_x64 corelib_2/splay_tree_from_iterable_test: pass
-Done dartk-vm debug_x64 corelib_2/set_test: pass
-Done dartk-vm debug_x64 corelib_2/data_uri_test: pass
-Done dartk-vm debug_x64 corelib_2/core_runtime_types_static_test: pass
-Done dartk-vm debug_x64 corelib_2/int_modulo_arith_test/bignum: pass
-Done dartk-vm debug_x64 corelib_2/int_modulo_arith_test/none: pass
-Done dartk-vm debug_x64 corelib_2/int_modulo_arith_test/modPow: pass
-Done dartk-vm debug_x64 corelib_2/splay_tree_test/none: pass
-Done dartk-vm debug_x64 corelib_2/splay_tree_test/01: pass
-Done dartk-vm debug_x64 corelib_2/splay_tree_test/02: pass
-Done dartk-vm debug_x64 corelib_2/hidden_library2_test/01: pass
-Done dartk-vm debug_x64 corelib_2/hidden_library2_test/none: pass
-Done dartk-vm debug_x64 corelib_2/double_parse_test/none: pass
-Done dartk-vm debug_x64 corelib_2/double_parse_test/01: pass
-Done dartk-vm debug_x64 corelib_2/double_parse_test/none: pass
-Done dartk-vm debug_x64 corelib_2/double_parse_test/01: pass
-Done dartk-vm debug_x64 corelib_2/double_parse_test/03: pass
-Done dartk-vm debug_x64 corelib_2/double_parse_test/03: pass
-Done dartk-vm debug_x64 corelib_2/double_parse_test/02: pass
-Done dartk-vm debug_x64 corelib_2/double_parse_test/02: pass
-Done dartk-vm debug_x64 corelib_2/double_parse_test/04: pass
-Done dartk-vm debug_x64 corelib_2/double_parse_test/04: pass
-Done dartk-vm debug_x64 corelib_2/num_parse_test/none: pass
-Done dartk-vm debug_x64 corelib_2/num_parse_test/01: pass
-Done dartk-vm debug_x64 corelib_2/throw_half_surrogate_pair_test/none: pass
-Done dartk-vm debug_x64 corelib_2/throw_half_surrogate_pair_test/02: pass
-Done dartk-vm debug_x64 corelib_2/throw_half_surrogate_pair_test/01: pass
-Done dartk-vm debug_x64 corelib_2/string_from_environment3_test/none: pass
-Done dartk-vm debug_x64 corelib_2/string_from_environment3_test/01: pass
-Done dartk-vm debug_x64 corelib_2/string_from_environment3_test/02: pass
-Done dartk-vm debug_x64 corelib_2/string_from_environment3_test/03: pass
-Done dartk-vm debug_x64 corelib_2/string_from_environment3_test/05: pass
-Done dartk-vm debug_x64 corelib_2/string_from_environment3_test/04: pass
-Done dartk-vm debug_x64 corelib_2/stopwatch2_test: pass
-Done dartk-vm debug_x64 corelib_2/string_codeunits_test: pass
-Done dartk-vm debug_x64 corelib_2/apply5_test: pass
-Done dartk-vm debug_x64 corelib_2/reg_exp1_test: pass
-Done dartk-vm debug_x64 corelib_2/set_to_string_test: pass
-Done dartk-vm debug_x64 corelib_2/string_from_environment_test: pass
-Done dartk-vm debug_x64 corelib_2/date_time8_test: pass
-Done dartk-vm debug_x64 corelib_2/map_values2_test: pass
-Done dartk-vm debug_x64 corelib_2/string_replace_dollar_test: pass
-Done dartk-vm debug_x64 corelib_2/apply4_test: pass
-Done dartk-vm debug_x64 corelib_2/typed_data_with_limited_ints_test: pass
-Done dartk-vm debug_x64 corelib_2/date_time6_test: pass
-Done dartk-vm debug_x64 corelib_2/double_floor_to_double_test: pass
-Done dartk-vm debug_x64 corelib_2/safe_to_string_test: pass
-Done dartk-vm debug_x64 corelib_2/date_time5_test: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_huge_mul_vm_test: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_huge_mul_vm_test: pass
-Done dartk-vm debug_x64 corelib_2/apply3_test: pass
-Done dartk-vm debug_x64 corelib_2/set_remove_test: pass
-Done dartk-vm debug_x64 corelib_2/reg_exp_start_end_test: pass
-Done dartk-vm debug_x64 corelib_2/collection_removes_test: pass
-Done dartk-vm debug_x64 corelib_2/double_floor_test: pass
-Done dartk-vm debug_x64 corelib_2/string_test: pass
-Done dartk-vm debug_x64 corelib_2/reg_exp_string_match_test: pass
-Done dartk-vm debug_x64 corelib_2/date_time_test: pass
-Done dartk-vm debug_x64 corelib_2/num_clamp_test: pass
-Done dartk-vm debug_x64 corelib_2/string_operations_with_null_test: pass
-Done dartk-vm debug_x64 corelib_2/reg_exp5_test: pass
-Done dartk-vm debug_x64 corelib_2/reg_exp_pattern_test: pass
-Done dartk-vm debug_x64 corelib_2/map_test: pass
-Done dartk-vm debug_x64 corelib_2/string_pattern_test: pass
-Done dartk-vm debug_x64 corelib_2/core_runtime_types_test: pass
-Done dartk-vm debug_x64 corelib_2/symbol_operator_test/none: pass
-Done dartk-vm debug_x64 corelib_2/string_case_test/none: pass
-Done dartk-vm debug_x64 corelib_2/symbol_operator_test/03: pass
-Done dartk-vm debug_x64 corelib_2/string_case_test/01: pass
-Done dartk-vm debug_x64 corelib_2/string_case_test/02: pass
-Done dartk-vm debug_x64 corelib_2/string_case_test/03: pass
-Done dartk-vm debug_x64 corelib_2/hash_set_test/01: pass
-Done dartk-vm debug_x64 corelib_2/hash_set_test/none: pass
-Done dartk-vm debug_x64 corelib_2/string_trimlr_test/none: pass
-Done dartk-vm debug_x64 corelib_2/string_trimlr_test/02: pass
-Done dartk-vm debug_x64 corelib_2/string_trimlr_test/01: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/none: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/none: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/none: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/overflow: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/overflow: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/add: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/add: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/overflow: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/sub: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/add: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/sub: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/sub: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/mul: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/mul: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/mul: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/trunDiv: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/trunDiv: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/trunDiv: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/div: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/div: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/mod: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/mod: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/div: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/mod: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/modPow: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/modPow: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/modInv: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/modPow: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/modInv: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/gcd: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/gcd: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/modInv: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/gcd: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/negate: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/negate: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/shift: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/negate: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/shift: pass
-Done dartk-vm debug_x64 corelib_2/big_integer_arith_vm_test/shift: pass
-Done dartk-vm debug_x64 isolate/function_send1_test: pass
-Done dartk-vm debug_x64 isolate/spawn_uri_exported_main_test: pass
-Done dartk-vm debug_x64 isolate/handle_error_test: pass
-Done dartk-vm debug_x64 isolate/error_exit_at_spawn_test: pass
-Done dartk-vm debug_x64 isolate/message_test: pass
-Done dartk-vm debug_x64 isolate/isolate_current_test: pass
-Done dartk-vm debug_x64 isolate/exit_at_spawnuri_test: pass
-Done dartk-vm debug_x64 isolate/ondone_test: pass
-Done dartk-vm debug_x64 isolate/spawn_function_test: pass
-Done dartk-vm debug_x64 isolate/spawn_uri_missing_from_isolate_test: pass
-Done dartk-vm debug_x64 isolate/message2_test: pass
-Done dartk-vm debug_x64 isolate/issue_21398_parent_isolate_test: pass
-Done dartk-vm debug_x64 isolate/request_reply_test: pass
-Done dartk-vm debug_x64 isolate/count_test: pass
-Done dartk-vm debug_x64 isolate/checked_test: pass
-Done dartk-vm debug_x64 isolate/mint_maker_test: pass
-Done dartk-vm debug_x64 isolate/raw_port_test: pass
-Done dartk-vm debug_x64 isolate/start_paused_test: pass
-Done dartk-vm debug_x64 isolate/timer_isolate_test: pass
-Done dartk-vm debug_x64 isolate/nested_spawn2_test: pass
-Done dartk-vm debug_x64 isolate/spawn_uri_test: pass
-Done dartk-vm debug_x64 isolate/bool_from_environment_default_value_test: pass
-Done dartk-vm debug_x64 isolate/issue_21398_parent_isolate1_test: pass
-Done dartk-vm debug_x64 isolate/spawn_uri_vm_test: pass
-Done dartk-vm debug_x64 isolate/simple_message_test/none: pass
-Done dartk-vm debug_x64 isolate/simple_message_test/01: pass
-Done dartk-vm debug_x64 isolate/message3_test/none: pass
-Done dartk-vm debug_x64 isolate/message3_test/constList: pass
-Done dartk-vm debug_x64 isolate/message3_test/constList_identical: pass
-Done dartk-vm debug_x64 isolate/message3_test/byteBuffer: pass
-Done dartk-vm debug_x64 isolate/message3_test/int32x4: pass
-Done dartk-vm debug_x64 isolate/message3_test/constMap: pass
-Done dartk-vm debug_x64 isolate/unresolved_ports_test: pass
-Done dartk-vm debug_x64 isolate/message3_test/fun: pass
-Done dartk-vm debug_x64 isolate/isolate_import_test/01: pass
-Done dartk-vm debug_x64 isolate/isolate_import_test/none: pass
-Done dartk-vm debug_x64 isolate/resolve_package_uri_test: pass
-Done dartk-vm debug_x64 isolate/message3_test/constInstance: pass
-Done dartk-vm debug_x64 isolate/kill2_test: pass
-Done dartk-vm debug_x64 isolate/error_at_spawnuri_test: pass
-Done dartk-vm debug_x64 isolate/capability_test: pass
-Done dartk-vm debug_x64 isolate/ping_test: pass
-Done dartk-vm debug_x64 isolate/int_from_environment_default_value_test: pass
-Done dartk-vm debug_x64 isolate/send_private_test: pass
-Done dartk-vm debug_x64 isolate/isolate_complex_messages_test: pass
-Done dartk-vm debug_x64 isolate/handle_error2_test: pass
-Done dartk-vm debug_x64 isolate/port_test: pass
-Done dartk-vm debug_x64 isolate/kill_test: pass
-Done dartk-vm debug_x64 isolate/handle_error3_test: pass
-Done dartk-vm debug_x64 isolate/error_at_spawn_test: pass
-Done dartk-vm debug_x64 isolate/cross_isolate_message_test: pass
-Done dartk-vm debug_x64 isolate/illegal_msg_mirror_test: pass
-Done dartk-vm debug_x64 isolate/error_exit_at_spawnuri_test: pass
-Done dartk-vm debug_x64 isolate/exit_at_spawn_test: pass
-Done dartk-vm debug_x64 isolate/illegal_msg_function_test: pass
-Done dartk-vm debug_x64 isolate/stacktrace_message_test: pass
-Done dartk-vm debug_x64 isolate/compile_time_error_test/none: pass
-Done dartk-vm debug_x64 isolate/compile_time_error_test/01: pass
-Done dartk-vm debug_x64 isolate/typed_message_test: pass
-Done dartk-vm debug_x64 isolate/issue_22778_test: pass
-Done dartk-vm debug_x64 isolate/function_send_test: pass
-Done dartk-vm debug_x64 isolate/message4_test: pass
-Done dartk-vm debug_x64 isolate/pause_test: pass
-Done dartk-vm debug_x64 isolate/kill_self_test: pass
-Done dartk-vm debug_x64 isolate/issue_24243_parent_isolate_test: pass
-Done dartk-vm debug_x64 isolate/message_enum_test: pass
-Done dartk-vm debug_x64 isolate/object_leak_test: pass
-Done dartk-vm debug_x64 isolate/spawn_function_custom_class_test: pass
-Done dartk-vm debug_x64 isolate/nested_spawn_test: pass
-Done dartk-vm debug_x64 isolate/spawn_uri_missing_test: pass
-Done dartk-vm debug_x64 isolate/enum_const_test/none: pass
-Done dartk-vm debug_x64 isolate/enum_const_test/01: pass
-Done dartk-vm debug_x64 isolate/enum_const_test/02: pass
-Done dartk-vm debug_x64 isolate/string_from_environment_default_value_test: pass
-Done dartk-vm debug_x64 isolate/issue_21398_parent_isolate2_test/01: pass
-Done dartk-vm debug_x64 isolate/issue_21398_parent_isolate2_test/none: pass
-Done dartk-vm debug_x64 kernel/unsorted/try_context_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/this_capture_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/constant_evaluator_regression_test: pass
-Done dartk-vm debug_x64 isolate/spawn_uri_multi_test/none: pass
-Done dartk-vm debug_x64 isolate/spawn_uri_multi_test/01: pass
-Done dartk-vm debug_x64 kernel/unsorted/closures_regression_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/symbol_literal_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/getters_and_setters_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/global_field_initializer_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/try_finally_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/types_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/for_in_loop_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/switch_case_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/closures_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/as_is_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/return_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/superclass_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/super_initializer_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/instance_getters_and_setters_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/string_buffer_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/klass_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/string_concatenation_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/rethrow_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/mapliteral_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/invocation_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/klass_field_initializer_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/super_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/invocation_errors_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/block_scope_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/type_args_regression_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/finally_contexts_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/super_mixin_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/loop_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/mixin_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/nullable_operator_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/local_function_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/nsm_dispatcher_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/this_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/field_dispatcher_test: pass
-Done dartk-vm debug_x64 isolate/mandel_isolate_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/breakable_statement_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/throw_try_catch_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/load_store_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/conditional_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/simple_literal_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/global_function_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/let_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/generic_function_test: pass
-Done dartk-vm debug_x64 language/function_subtype_checked0_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/factory_regression_test: pass
-Done dartk-vm debug_x64 kernel/unsorted/constant_expressions_test: pass
-Done dartk-vm debug_x64 language/string_literals_test: pass
-Done dartk-vm debug_x64 language/double_modulo_test: pass
-Done dartk-vm debug_x64 language/script1_negative_test: pass
-Done dartk-vm debug_x64 isolate/ping_pause_test: pass
-Done dartk-vm debug_x64 language/dangling_else_test: pass
-Done dartk-vm debug_x64 language/prefix22_test: pass
-Done dartk-vm debug_x64 language/regress_16640_test: pass
-Done dartk-vm debug_x64 language/compile_time_constant11_test: pass
-Done dartk-vm debug_x64 language/private_clash_test: pass
-Done dartk-vm debug_x64 language/number_identity_test: pass
-Done dartk-vm debug_x64 language/await_regression_test: pass
-Done dartk-vm debug_x64 language/duplicate_import_prefix_test: pass
-Done dartk-vm debug_x64 language/checked_setter_test: pass
-Done dartk-vm debug_x64 language/list_tracer_in_map_test: pass
-Done dartk-vm debug_x64 language/import_core_prefix_test: pass
-Done dartk-vm debug_x64 language/prefix5_negative_test: pass
-Done dartk-vm debug_x64 language/gc_test: pass
-Done dartk-vm debug_x64 language/operator_negate_and_method_negate_test: pass
-Done dartk-vm debug_x64 language/closure7_test: pass
-Done dartk-vm debug_x64 language/type_variable_scope2_test: pass
-Done dartk-vm debug_x64 language/label3_negative_test: pass
-Done dartk-vm debug_x64 language/bad_initializer2_negative_test: pass
-Done dartk-vm debug_x64 language/inferrer_constructor3_test: pass
-Done dartk-vm debug_x64 language/field4_negative_test: pass
-Done dartk-vm debug_x64 language/switch_label_test: pass
-Done dartk-vm debug_x64 language/for2_test: pass
-Done dartk-vm debug_x64 language/regress_27700_test: pass
-Done dartk-vm debug_x64 language/no_such_method_empty_selector_test: pass
-Done dartk-vm debug_x64 language/licm3_test: pass
-Done dartk-vm debug_x64 language/implicit_closure_test: pass
-Done dartk-vm debug_x64 language/implicit_closure_test: pass
-Done dartk-vm debug_x64 language/deferred_regression_22995_test: pass
-Done dartk-vm debug_x64 language/deferred_call_empty_before_load_test: pass
-Done dartk-vm debug_x64 language/state_mangling4_test: pass
-Done dartk-vm debug_x64 language/function_subtype_local4_test: pass
-Done dartk-vm debug_x64 language/compile_time_constant_e_test: pass
-Done dartk-vm debug_x64 language/generic_instanceof_test: pass
-Done dartk-vm debug_x64 language/map_literal2_test: pass
-Done dartk-vm debug_x64 language/mixin_with_two_implicit_constructors_test: pass
-Done dartk-vm debug_x64 language/prefix12_negative_test: pass
-Done dartk-vm debug_x64 language/mega_load_test: pass
-Done dartk-vm debug_x64 language/prefix7_negative_test: pass
-Done dartk-vm debug_x64 language/prefix11_negative_test: pass
-Done dartk-vm debug_x64 language/variable_declaration_metadata_test/01: pass
-Done dartk-vm debug_x64 language/critical_edge2_test: pass
-Done dartk-vm debug_x64 language/void_type_test: pass
-Done dartk-vm debug_x64 language/enum_mirror_test: pass
-Done dartk-vm debug_x64 language/string_interpolation_newline_test: pass
-Done dartk-vm debug_x64 language/string_interpolate_null_test: pass
-Done dartk-vm debug_x64 language/variable_declaration_metadata_test/none: pass
-Done dartk-vm debug_x64 language/variable_declaration_metadata_test/02: pass
-Done dartk-vm debug_x64 language/variable_declaration_metadata_test/03: pass
-Done dartk-vm debug_x64 language/variable_declaration_metadata_test/04: pass
-Done dartk-vm debug_x64 language/variable_declaration_metadata_test/05: pass
-Done dartk-vm debug_x64 language/variable_declaration_metadata_test/06: pass
-Done dartk-vm debug_x64 language/variable_declaration_metadata_test/07: pass
-Done dartk-vm debug_x64 language/variable_declaration_metadata_test/08: pass
-Done dartk-vm debug_x64 language/variable_declaration_metadata_test/09: pass
-Done dartk-vm debug_x64 language/variable_declaration_metadata_test/10: pass
-Done dartk-vm debug_x64 language/variable_declaration_metadata_test/11: pass
-Done dartk-vm debug_x64 language/variable_declaration_metadata_test/12: pass
-Done dartk-vm debug_x64 language/variable_declaration_metadata_test/13: pass
-Done dartk-vm debug_x64 language/variable_declaration_metadata_test/14: pass
-Done dartk-vm debug_x64 language/variable_declaration_metadata_test/16: pass
-Done dartk-vm debug_x64 language/variable_declaration_metadata_test/15: pass
-Done dartk-vm debug_x64 language/mixin_cyclic_test/01: pass
-Done dartk-vm debug_x64 language/mixin_cyclic_test/02: pass
-Done dartk-vm debug_x64 language/mixin_cyclic_test/none: pass
-Done dartk-vm debug_x64 language/toplevel_collision1_test/00: pass
-Done dartk-vm debug_x64 language/toplevel_collision1_test/01: pass
-Done dartk-vm debug_x64 language/regress_28217_test/none: pass
-Done dartk-vm debug_x64 language/regress_28217_test/01: pass
-Done dartk-vm debug_x64 language/toplevel_collision1_test/none: pass
-Done dartk-vm debug_x64 language/regress_28217_test/02: pass
-Done dartk-vm debug_x64 language/toplevel_collision1_test/02: pass
-Done dartk-vm debug_x64 language/scope_variable_test/01: pass
-Done dartk-vm debug_x64 language/constructor_redirect2_test/02: pass
-Done dartk-vm debug_x64 language/constructor_redirect2_test/03: pass
-Done dartk-vm debug_x64 language/constructor_redirect2_test/04: pass
-Done dartk-vm debug_x64 language/scope_variable_test/none: pass
-Done dartk-vm debug_x64 language/constructor_redirect2_test/01: pass
-Done dartk-vm debug_x64 language/constructor_redirect2_test/none: pass
-Done dartk-vm debug_x64 language/compile_time_constant_r_test/01: pass
-Done dartk-vm debug_x64 language/compile_time_constant_r_test/02: pass
-Done dartk-vm debug_x64 language/compile_time_constant_r_test/03: pass
-Done dartk-vm debug_x64 language/compile_time_constant_r_test/none: pass
-Done dartk-vm debug_x64 isolate/spawn_uri_nested_vm_test: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked_test/none: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked_test/01: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked_test/02: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked_test/03: pass
-Done dartk-vm debug_x64 language/tree_shake_typed_selector_test: pass
-Done dartk-vm debug_x64 language/field_wierd_name_test: pass
-Done dartk-vm debug_x64 language/is_not_class4_negative_test: pass
-Done dartk-vm debug_x64 language/inferrer_synthesized_super_constructor2_test: pass
-Done dartk-vm debug_x64 language/cond_expr_test: pass
-Done dartk-vm debug_x64 language/switch1_negative_test: pass
-Done dartk-vm debug_x64 language/compile_time_constant_j_test: pass
-Done dartk-vm debug_x64 language/ct_const_test: pass
-Done dartk-vm debug_x64 language/named_parameters_with_dollars_test: pass
-Done dartk-vm debug_x64 language/const_local_test: pass
-Done dartk-vm debug_x64 language/compile_time_constant_d_test: pass
-Done dartk-vm debug_x64 language/generic_list_checked_test: pass
-Done dartk-vm debug_x64 language/issue10321_test: pass
-Done dartk-vm debug_x64 language/state_mangling2_test: pass
-Done dartk-vm debug_x64 language/list_literal2_test: pass
-Done dartk-vm debug_x64 language/prefix11_test: pass
-Done dartk-vm debug_x64 language/switch_try_catch_test: pass
-Done dartk-vm debug_x64 language/non_const_constructor_without_body_test: pass
-Done dartk-vm debug_x64 language/factory_type_parameter_test: pass
-Done dartk-vm debug_x64 language/setter0_test: pass
-Done dartk-vm debug_x64 language/intrinsified_methods_test: pass
-Done dartk-vm debug_x64 language/deoptimized_function_on_stack_test: pass
-Done dartk-vm debug_x64 language/double_to_string_as_fixed_test: pass
-Done dartk-vm debug_x64 language/throw3_test: pass
-Done dartk-vm debug_x64 language/export_main_override_test: pass
-Done dartk-vm debug_x64 language/is_operator_clash_test: pass
-Done dartk-vm debug_x64 language/parameter_types_specialization_test: pass
-Done dartk-vm debug_x64 language/factory_test: pass
-Done dartk-vm debug_x64 language/instance_incr_deopt_test: pass
-Done dartk-vm debug_x64 language/integer_division_by_zero_test: pass
-Done dartk-vm debug_x64 language/method_override6_test: pass
-Done dartk-vm debug_x64 language/full_stacktrace3_test: pass
-Done dartk-vm debug_x64 language/setter1_test: pass
-Done dartk-vm debug_x64 language/function_type_alias8_test: pass
-Done dartk-vm debug_x64 language/operator1_negative_test: pass
-Done dartk-vm debug_x64 language/double_nan_comparison_test: pass
-Done dartk-vm debug_x64 language/function_type_parameter2_test: pass
-Done dartk-vm debug_x64 language/local_export_test: pass
-Done dartk-vm debug_x64 language/unbalanced_brace_test/01: pass
-Done dartk-vm debug_x64 language/unbalanced_brace_test/02: pass
-Done dartk-vm debug_x64 language/reg_exp_test: pass
-Done dartk-vm debug_x64 language/forwarding_factory_constructor_default_values_test: pass
-Done dartk-vm debug_x64 language/unbalanced_brace_test/none: pass
-Done dartk-vm debug_x64 language/constant_type_literal_test/01: pass
-Done dartk-vm debug_x64 language/metadata_scope2_test/none: pass
-Done dartk-vm debug_x64 language/metadata_scope2_test/01: pass
-Done dartk-vm debug_x64 language/constant_type_literal_test/none: pass
-Done dartk-vm debug_x64 language/const_constructor3_test/none: pass
-Done dartk-vm debug_x64 language/static_top_level_test/00: pass
-Done dartk-vm debug_x64 language/const_constructor3_test/01: pass
-Done dartk-vm debug_x64 language/const_constructor3_test/02: pass
-Done dartk-vm debug_x64 language/const_constructor3_test/03: pass
-Done dartk-vm debug_x64 language/static_top_level_test/01: pass
-Done dartk-vm debug_x64 language/const_constructor3_test/04: pass
-Done dartk-vm debug_x64 language/static_top_level_test/none: pass
-Done dartk-vm debug_x64 language/static_top_level_test/02: pass
-Done dartk-vm debug_x64 language/static_top_level_test/03: pass
-Done dartk-vm debug_x64 language/static_top_level_test/04: pass
-Done dartk-vm debug_x64 language/static_top_level_test/06: pass
-Done dartk-vm debug_x64 language/static_top_level_test/05: pass
-Done dartk-vm debug_x64 language/static_top_level_test/07: pass
-Done dartk-vm debug_x64 language/default_factory2_test/none: pass
-Done dartk-vm debug_x64 language/default_factory2_test/01: pass
-Done dartk-vm debug_x64 language/method_override2_test/none: pass
-Done dartk-vm debug_x64 language/method_override2_test/00: pass
-Done dartk-vm debug_x64 language/method_override2_test/02: pass
-Done dartk-vm debug_x64 language/method_override2_test/01: pass
-Done dartk-vm debug_x64 language/method_override2_test/03: pass
-Done dartk-vm debug_x64 language/named_parameters_aggregated_test/02: pass
-Done dartk-vm debug_x64 language/named_parameters_aggregated_test/01: pass
-Done dartk-vm debug_x64 language/named_parameters_aggregated_test/none: pass
-Done dartk-vm debug_x64 language/named_parameters_aggregated_test/03: pass
-Done dartk-vm debug_x64 language/named_parameters_aggregated_test/04: pass
-Done dartk-vm debug_x64 language/named_parameters_aggregated_test/06: pass
-Done dartk-vm debug_x64 language/call_nonexistent_static_test/none: pass
-Done dartk-vm debug_x64 language/call_nonexistent_static_test/05: pass
-Done dartk-vm debug_x64 language/named_parameters_aggregated_test/05: pass
-Done dartk-vm debug_x64 language/call_nonexistent_static_test/04: pass
-Done dartk-vm debug_x64 language/call_nonexistent_static_test/09: pass
-Done dartk-vm debug_x64 language/call_nonexistent_static_test/10: pass
-Done dartk-vm debug_x64 language/call_nonexistent_static_test/01: pass
-Done dartk-vm debug_x64 language/call_nonexistent_static_test/02: pass
-Done dartk-vm debug_x64 language/call_nonexistent_static_test/06: pass
-Done dartk-vm debug_x64 language/call_nonexistent_static_test/03: pass
-Done dartk-vm debug_x64 language/call_nonexistent_static_test/07: pass
-Done dartk-vm debug_x64 language/call_nonexistent_static_test/08: pass
-Done dartk-vm debug_x64 language/symbol_literal_test/none: pass
-Done dartk-vm debug_x64 language/symbol_literal_test/01: pass
-Done dartk-vm debug_x64 language/compile_time_constant_c_test/none: pass
-Done dartk-vm debug_x64 language/compile_time_constant_c_test/01: pass
-Done dartk-vm debug_x64 language/compile_time_constant_c_test/03: pass
-Done dartk-vm debug_x64 language/field6_negative_test: pass
-Done dartk-vm debug_x64 language/compile_time_constant_c_test/02: pass
-Done dartk-vm debug_x64 language/super_call4_test: pass
-Done dartk-vm debug_x64 language/first_test: pass
-Done dartk-vm debug_x64 language/incr_op_test: pass
-Done dartk-vm debug_x64 language/issue13179_test: pass
-Done dartk-vm debug_x64 language/switch_label2_test: pass
-Done dartk-vm debug_x64 language/generics2_test: pass
-Done dartk-vm debug_x64 language/regress_23498_test: pass
-Done dartk-vm debug_x64 language/interface_injection2_negative_test: pass
-Done dartk-vm debug_x64 language/generic_is_check_test: pass
-Done dartk-vm debug_x64 language/osr_test: pass
-Done dartk-vm debug_x64 language/super_implicit_closure_test: pass
-Done dartk-vm debug_x64 language/function_type_parameter_negative_test: pass
-Done dartk-vm debug_x64 language/fixed_length_test: pass
-Done dartk-vm debug_x64 language/function_type2_test: pass
-Done dartk-vm debug_x64 language/loop_hoist_test: pass
-Done dartk-vm debug_x64 language/field1_negative_test: pass
-Done dartk-vm debug_x64 language/mixin_super_use_test: pass
-Done dartk-vm debug_x64 language/getter_setter_in_lib_test: pass
-Done dartk-vm debug_x64 language/instance_field_initializer_test: pass
-Done dartk-vm debug_x64 language/mixin_type_parameters_super_extends_test: pass
-Done dartk-vm debug_x64 language/type_error_test: pass
-Done dartk-vm debug_x64 language/reify_typevar_test: pass
-Done dartk-vm debug_x64 language/inferrer_named_parameter_test: pass
-Done dartk-vm debug_x64 language/regress_13494_test: pass
-Done dartk-vm debug_x64 language/function_subtype_bound_closure5_test: pass
-Done dartk-vm debug_x64 language/function_type_alias3_test: pass
-Done dartk-vm debug_x64 language/generic_instanceof5_test: pass
-Done dartk-vm debug_x64 language/issue10721_test: pass
-Done dartk-vm debug_x64 language/double_comparison_test: pass
-Done dartk-vm debug_x64 language/asyncstar_yieldstar_test: pass
-Done dartk-vm debug_x64 language/map_literal2_negative_test: pass
-Done dartk-vm debug_x64 language/for_inlining_test: pass
-Done dartk-vm debug_x64 language/type_variable_closure_test: pass
-Done dartk-vm debug_x64 language/switch7_negative_test: pass
-Done dartk-vm debug_x64 language/regress_22777_test: pass
-Done dartk-vm debug_x64 language/bad_initializer1_negative_test: pass
-Done dartk-vm debug_x64 language/logical_expression5_test: pass
-Done dartk-vm debug_x64 language/function_subtype0_test: pass
-Done dartk-vm debug_x64 language/non_parameterized_factory2_test: pass
-Done dartk-vm debug_x64 language/function_subtype_cast0_test: pass
-Done dartk-vm debug_x64 language/proxy5_test: pass
-Done dartk-vm debug_x64 language/const_constructor_nonconst_field_test/none: pass
-Done dartk-vm debug_x64 language/duplicate_constructor_test/01: pass
-Done dartk-vm debug_x64 language/const_constructor_nonconst_field_test/01: pass
-Done dartk-vm debug_x64 language/duplicate_constructor_test/none: pass
-Done dartk-vm debug_x64 language/compile_time_constant_o_test/none: pass
-Done dartk-vm debug_x64 language/compile_time_constant_o_test/01: pass
-Done dartk-vm debug_x64 language/compile_time_constant_o_test/02: pass
-Done dartk-vm debug_x64 language/mixin_super_constructor_named_test/none: pass
-Done dartk-vm debug_x64 language/mixin_super_constructor_named_test/01: pass
-Done dartk-vm debug_x64 language/cast_test/none: pass
-Done dartk-vm debug_x64 language/cast_test/01: pass
-Done dartk-vm debug_x64 language/cast_test/02: pass
-Done dartk-vm debug_x64 language/cast_test/03: pass
-Done dartk-vm debug_x64 language/cast_test/04: pass
-Done dartk-vm debug_x64 language/cast_test/07: pass
-Done dartk-vm debug_x64 language/cast_test/05: pass
-Done dartk-vm debug_x64 language/cast_test/08: pass
-Done dartk-vm debug_x64 language/cast_test/10: pass
-Done dartk-vm debug_x64 language/cast_test/12: pass
-Done dartk-vm debug_x64 language/cast_test/13: pass
-Done dartk-vm debug_x64 language/cast_test/14: pass
-Done dartk-vm debug_x64 language/cast_test/15: pass
-Done dartk-vm debug_x64 language/type_literal_prefix_call_test/none: pass
-Done dartk-vm debug_x64 language/type_literal_prefix_call_test/00: pass
-Done dartk-vm debug_x64 language/type_variable_conflict2_test/02: pass
-Done dartk-vm debug_x64 language/type_variable_conflict2_test/none: pass
-Done dartk-vm debug_x64 language/type_variable_conflict2_test/01: pass
-Done dartk-vm debug_x64 language/type_variable_conflict2_test/06: pass
-Done dartk-vm debug_x64 language/type_variable_conflict2_test/08: pass
-Done dartk-vm debug_x64 language/type_variable_conflict2_test/03: pass
-Done dartk-vm debug_x64 language/type_variable_conflict2_test/05: pass
-Done dartk-vm debug_x64 language/type_variable_conflict2_test/10: pass
-Done dartk-vm debug_x64 language/type_variable_conflict2_test/04: pass
-Done dartk-vm debug_x64 language/type_variable_conflict2_test/07: pass
-Done dartk-vm debug_x64 language/super_conditional_operator_test/01: pass
-Done dartk-vm debug_x64 language/type_variable_conflict2_test/09: pass
-Done dartk-vm debug_x64 language/super_conditional_operator_test/02: pass
-Done dartk-vm debug_x64 language/super_conditional_operator_test/03: pass
-Done dartk-vm debug_x64 language/super_conditional_operator_test/04: pass
-Done dartk-vm debug_x64 language/super_conditional_operator_test/05: pass
-Done dartk-vm debug_x64 language/super_conditional_operator_test/07: pass
-Done dartk-vm debug_x64 language/super_conditional_operator_test/none: pass
-Done dartk-vm debug_x64 language/super_conditional_operator_test/06: pass
-Done dartk-vm debug_x64 language/super_conditional_operator_test/09: pass
-Done dartk-vm debug_x64 language/super_conditional_operator_test/08: pass
-Done dartk-vm debug_x64 language/super_conditional_operator_test/11: pass
-Done dartk-vm debug_x64 language/super_conditional_operator_test/10: pass
-Done dartk-vm debug_x64 language/super_conditional_operator_test/12: pass
-Done dartk-vm debug_x64 language/super_conditional_operator_test/13: pass
-Done dartk-vm debug_x64 language/super_conditional_operator_test/14: pass
-Done dartk-vm debug_x64 language/super_conditional_operator_test/17: pass
-Done dartk-vm debug_x64 language/super_conditional_operator_test/15: pass
-Done dartk-vm debug_x64 language/super_conditional_operator_test/16: pass
-Done dartk-vm debug_x64 language/super_conditional_operator_test/18: pass
-Done dartk-vm debug_x64 language/factory_redirection2_test/01: pass
-Done dartk-vm debug_x64 language/field_decl_missing_var_type_test/01: pass
-Done dartk-vm debug_x64 language/cyclic_constructor_test/none: pass
-Done dartk-vm debug_x64 language/cyclic_constructor_test/01: pass
-Done dartk-vm debug_x64 language/factory_redirection2_test/none: pass
-Done dartk-vm debug_x64 language/cast2_test/none: pass
-Done dartk-vm debug_x64 language/field_decl_missing_var_type_test/none: pass
-Done dartk-vm debug_x64 language/cast2_test/01: pass
-Done dartk-vm debug_x64 language/void_block_return_test/none: pass
-Done dartk-vm debug_x64 language/void_block_return_test/00: pass
-Done dartk-vm debug_x64 language/final_for_in_variable_test/none: pass
-Done dartk-vm debug_x64 language/final_for_in_variable_test/01: pass
-Done dartk-vm debug_x64 language/inline_test: pass
-Done dartk-vm debug_x64 language/private_member2_negative_test: pass
-Done dartk-vm debug_x64 language/const_named_test: pass
-Done dartk-vm debug_x64 language/execute_finally8_test: pass
-Done dartk-vm debug_x64 language/context_args_with_defaults_test: pass
-Done dartk-vm debug_x64 language/label8_negative_test: pass
-Done dartk-vm debug_x64 language/index_test: pass
-Done dartk-vm debug_x64 language/constructor_name_clash_test: pass
-Done dartk-vm debug_x64 language/null_inline_test: pass
-Done dartk-vm debug_x64 language/named_parameters_named_count_test: pass
-Done dartk-vm debug_x64 language/large_implicit_getter_test: pass
-Done dartk-vm debug_x64 language/rewrite_variable_initializer_test: pass
-Done dartk-vm debug_x64 language/regress_23089_test: pass
-Done dartk-vm debug_x64 language/class_syntax2_test: pass
-Done dartk-vm debug_x64 language/function_subtype_typearg2_test: pass
-Done dartk-vm debug_x64 language/pure_function2_test: pass
-Done dartk-vm debug_x64 language/for_in2_test: pass
-Done dartk-vm debug_x64 language/constructor3_negative_test: pass
-Done dartk-vm debug_x64 language/compile_time_constant7_test: pass
-Done dartk-vm debug_x64 language/function_subtype_typearg0_test: pass
-Done dartk-vm debug_x64 language/inst_field_initializer_test: pass
-Done dartk-vm debug_x64 language/class_codegen_test: pass
-Done dartk-vm debug_x64 language/factory3_negative_test: pass
-Done dartk-vm debug_x64 language/optimize_redundant_array_load_test: pass
-Done dartk-vm debug_x64 language/const_optional_args_negative_test: pass
-Done dartk-vm debug_x64 language/issue7513_test: pass
-Done dartk-vm debug_x64 language/type_variable_identifier_expression_test: pass
-Done dartk-vm debug_x64 language/regress_28255_test: pass
-Done dartk-vm debug_x64 language/issue12288_test: pass
-Done dartk-vm debug_x64 language/string_split_test: pass
-Done dartk-vm debug_x64 language/named_parameter_clash_test: pass
-Done dartk-vm debug_x64 language/type_intersection_test: pass
-Done dartk-vm debug_x64 language/fibo_test: pass
-Done dartk-vm debug_x64 language/call_function_apply_test: pass
-Done dartk-vm debug_x64 language/ct_const3_test: pass
-Done dartk-vm debug_x64 language/mixin_only_for_rti_test: pass
-Done dartk-vm debug_x64 language/generic_constructor_mixin3_test: pass
-Done dartk-vm debug_x64 language/compile_time_constant6_test: pass
-Done dartk-vm debug_x64 language/null_is_bottom_type_test/none: pass
-Done dartk-vm debug_x64 language/null_is_bottom_type_test/01: pass
-Done dartk-vm debug_x64 language/null_is_bottom_type_test/02: pass
-Done dartk-vm debug_x64 language/null_is_bottom_type_test/03: pass
-Done dartk-vm debug_x64 language/null_is_bottom_type_test/04: pass
-Done dartk-vm debug_x64 language/null_is_bottom_type_test/05: pass
-Done dartk-vm debug_x64 language/null_is_bottom_type_test/07: pass
-Done dartk-vm debug_x64 language/null_is_bottom_type_test/06: pass
-Done dartk-vm debug_x64 language/null_is_bottom_type_test/08: pass
-Done dartk-vm debug_x64 language/null_is_bottom_type_test/09: pass
-Done dartk-vm debug_x64 language/null_is_bottom_type_test/10: pass
-Done dartk-vm debug_x64 language/null_is_bottom_type_test/12: pass
-Done dartk-vm debug_x64 language/null_is_bottom_type_test/11: pass
-Done dartk-vm debug_x64 language/null_is_bottom_type_test/13: pass
-Done dartk-vm debug_x64 language/null_is_bottom_type_test/14: pass
-Done dartk-vm debug_x64 language/null_is_bottom_type_test/15: pass
-Done dartk-vm debug_x64 language/redirecting_factory_malbounded_test/none: pass
-Done dartk-vm debug_x64 language/null_is_bottom_type_test/16: pass
-Done dartk-vm debug_x64 language/enum_syntax_test/01: pass
-Done dartk-vm debug_x64 language/enum_syntax_test/02: pass
-Done dartk-vm debug_x64 language/redirecting_factory_malbounded_test/01: pass
-Done dartk-vm debug_x64 language/enum_syntax_test/03: pass
-Done dartk-vm debug_x64 language/enum_syntax_test/04: pass
-Done dartk-vm debug_x64 language/enum_syntax_test/05: pass
-Done dartk-vm debug_x64 language/enum_syntax_test/06: pass
-Done dartk-vm debug_x64 language/enum_syntax_test/07: pass
-Done dartk-vm debug_x64 language/enum_syntax_test/none: pass
-Done dartk-vm debug_x64 language/enum_syntax_test/10: pass
-Done dartk-vm debug_x64 language/enum_syntax_test/08: pass
-Done dartk-vm debug_x64 language/enum_syntax_test/09: pass
-Done dartk-vm debug_x64 language/enum_syntax_test/11: pass
-Done dartk-vm debug_x64 language/enum_syntax_test/20: pass
-Done dartk-vm debug_x64 language/enum_syntax_test/21: pass
-Done dartk-vm debug_x64 language/enum_syntax_test/22: pass
-Done dartk-vm debug_x64 language/enum_syntax_test/30: pass
-Done dartk-vm debug_x64 language/type_variable_scope_test/01: pass
-Done dartk-vm debug_x64 language/type_variable_scope_test/none: pass
-Done dartk-vm debug_x64 language/type_variable_scope_test/00: pass
-Done dartk-vm debug_x64 language/type_variable_scope_test/02: pass
-Done dartk-vm debug_x64 language/type_variable_scope_test/04: pass
-Done dartk-vm debug_x64 language/type_variable_scope_test/03: pass
-Done dartk-vm debug_x64 language/type_variable_scope_test/05: pass
-Done dartk-vm debug_x64 language/super_no_such_method5_test/none: pass
-Done dartk-vm debug_x64 language/identical_const_test/02: pass
-Done dartk-vm debug_x64 language/super_no_such_method5_test/01: pass
-Done dartk-vm debug_x64 language/identical_const_test/none: pass
-Done dartk-vm debug_x64 language/identical_const_test/01: pass
-Done dartk-vm debug_x64 language/identical_const_test/03: pass
-Done dartk-vm debug_x64 language/identical_const_test/04: pass
-Done dartk-vm debug_x64 language/identical_const_test/05: pass
-Done dartk-vm debug_x64 language/identical_const_test/06: pass
-Done dartk-vm debug_x64 language/factory_redirection3_cyclic_test/01: pass
-Done dartk-vm debug_x64 language/function_syntax_test/00: pass
-Done dartk-vm debug_x64 language/factory_redirection3_cyclic_test/none: pass
-Done dartk-vm debug_x64 language/identical_const_test/07: pass
-Done dartk-vm debug_x64 language/function_syntax_test/01: pass
-Done dartk-vm debug_x64 language/identical_const_test/08: pass
-Done dartk-vm debug_x64 language/function_syntax_test/02: pass
-Done dartk-vm debug_x64 language/function_syntax_test/03: pass
-Done dartk-vm debug_x64 language/function_syntax_test/none: pass
-Done dartk-vm debug_x64 language/function_syntax_test/04: pass
-Done dartk-vm debug_x64 language/function_syntax_test/06: pass
-Done dartk-vm debug_x64 language/function_syntax_test/05: pass
-Done dartk-vm debug_x64 language/function_syntax_test/07: pass
-Done dartk-vm debug_x64 language/function_syntax_test/08: pass
-Done dartk-vm debug_x64 language/function_syntax_test/10: pass
-Done dartk-vm debug_x64 language/function_syntax_test/09: pass
-Done dartk-vm debug_x64 language/function_syntax_test/11: pass
-Done dartk-vm debug_x64 language/function_syntax_test/12: pass
-Done dartk-vm debug_x64 language/function_syntax_test/13: pass
-Done dartk-vm debug_x64 language/function_syntax_test/14: pass
-Done dartk-vm debug_x64 language/function_syntax_test/15: pass
-Done dartk-vm debug_x64 language/function_syntax_test/18: pass
-Done dartk-vm debug_x64 language/function_syntax_test/16: pass
-Done dartk-vm debug_x64 language/function_syntax_test/17: pass
-Done dartk-vm debug_x64 language/function_syntax_test/19: pass
-Done dartk-vm debug_x64 language/function_syntax_test/20: pass
-Done dartk-vm debug_x64 language/function_syntax_test/21: pass
-Done dartk-vm debug_x64 language/function_syntax_test/22: pass
-Done dartk-vm debug_x64 language/function_syntax_test/24: pass
-Done dartk-vm debug_x64 language/function_syntax_test/25: pass
-Done dartk-vm debug_x64 language/function_syntax_test/23: pass
-Done dartk-vm debug_x64 language/function_syntax_test/26: pass
-Done dartk-vm debug_x64 language/function_syntax_test/27: pass
-Done dartk-vm debug_x64 language/function_syntax_test/28: pass
-Done dartk-vm debug_x64 language/function_syntax_test/29: pass
-Done dartk-vm debug_x64 language/function_syntax_test/30: pass
-Done dartk-vm debug_x64 language/function_syntax_test/32: pass
-Done dartk-vm debug_x64 language/function_syntax_test/31: pass
-Done dartk-vm debug_x64 language/function_syntax_test/33: pass
-Done dartk-vm debug_x64 language/function_syntax_test/34: pass
-Done dartk-vm debug_x64 language/function_syntax_test/36: pass
-Done dartk-vm debug_x64 language/function_syntax_test/35: pass
-Done dartk-vm debug_x64 language/function_syntax_test/37: pass
-Done dartk-vm debug_x64 language/function_syntax_test/44: pass
-Done dartk-vm debug_x64 language/function_syntax_test/45: pass
-Done dartk-vm debug_x64 language/function_syntax_test/46: pass
-Done dartk-vm debug_x64 language/function_syntax_test/47: pass
-Done dartk-vm debug_x64 language/function_syntax_test/48: pass
-Done dartk-vm debug_x64 language/function_syntax_test/49: pass
-Done dartk-vm debug_x64 language/function_syntax_test/50: pass
-Done dartk-vm debug_x64 language/function_syntax_test/51: pass
-Done dartk-vm debug_x64 language/function_syntax_test/52: pass
-Done dartk-vm debug_x64 language/function_syntax_test/53: pass
-Done dartk-vm debug_x64 language/function_syntax_test/54: pass
-Done dartk-vm debug_x64 language/function_syntax_test/55: pass
-Done dartk-vm debug_x64 language/function_syntax_test/64: pass
-Done dartk-vm debug_x64 language/function_syntax_test/65: pass
-Done dartk-vm debug_x64 language/function_syntax_test/66: pass
-Done dartk-vm debug_x64 language/function_syntax_test/67: pass
-Done dartk-vm debug_x64 language/function_syntax_test/68: pass
-Done dartk-vm debug_x64 language/function_syntax_test/69: pass
-Done dartk-vm debug_x64 language/function_syntax_test/70: pass
-Done dartk-vm debug_x64 language/function_syntax_test/71: pass
-Done dartk-vm debug_x64 language/function_syntax_test/72: pass
-Done dartk-vm debug_x64 language/function_syntax_test/73: pass
-Done dartk-vm debug_x64 language/part_refers_to_core_library_test/01: pass
-Done dartk-vm debug_x64 language/function_syntax_test/74: pass
-Done dartk-vm debug_x64 language/part_refers_to_core_library_test/none: pass
-Done dartk-vm debug_x64 language/proxy_test/none: pass
-Done dartk-vm debug_x64 language/proxy_test/01: pass
-Done dartk-vm debug_x64 language/proxy_test/02: pass
-Done dartk-vm debug_x64 language/proxy_test/03: pass
-Done dartk-vm debug_x64 language/proxy_test/05: pass
-Done dartk-vm debug_x64 language/proxy_test/06: pass
-Done dartk-vm debug_x64 language/proxy_test/04: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked2_test/none: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked2_test/01: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked2_test/04: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked2_test/03: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked2_test/05: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked2_test/02: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked2_test/06: pass
-Done dartk-vm debug_x64 language/malformed_bound_test/none: pass
-Done dartk-vm debug_x64 language/function_type_alias5_test/00: pass
-Done dartk-vm debug_x64 language/function_type_alias5_test/02: pass
-Done dartk-vm debug_x64 language/function_type_alias5_test/01: pass
-Done dartk-vm debug_x64 language/malformed_bound_test/01: pass
-Done dartk-vm debug_x64 language/function_type_alias5_test/none: pass
-Done dartk-vm debug_x64 language/regress_22579_test: pass
-Done dartk-vm debug_x64 language/stacktrace_test: pass
-Done dartk-vm debug_x64 language/is_function_test: pass
-Done dartk-vm debug_x64 language/type_parameter_literal_test: pass
-Done dartk-vm debug_x64 language/lazy_static8_test: pass
-Done dartk-vm debug_x64 language/closure_type_variable_test: pass
-Done dartk-vm debug_x64 language/inlined_throw_test: pass
-Done dartk-vm debug_x64 language/deferred_regression_28678_test: pass
-Done dartk-vm debug_x64 language/try_catch_optimized2_test: pass
-Done dartk-vm debug_x64 language/field_initialization_order_test: pass
-Done dartk-vm debug_x64 language/closure_parameter_types_test: pass
-Done dartk-vm debug_x64 language/type_check_test: pass
-Done dartk-vm debug_x64 language/while_test: pass
-Done dartk-vm debug_x64 language/hello_script_test: pass
-Done dartk-vm debug_x64 language/super_operator_index2_test: pass
-Done dartk-vm debug_x64 language/bound_closure_primitives_test: pass
-Done dartk-vm debug_x64 language/cha_deopt3_test: pass
-Done dartk-vm debug_x64 language/cha_deopt3_test: pass
-Done dartk-vm debug_x64 language/generic_test: pass
-Done dartk-vm debug_x64 language/prefix21_test: pass
-Done dartk-vm debug_x64 language/const_qq_test: pass
-Done dartk-vm debug_x64 language/regress_26668_test: pass
-Done dartk-vm debug_x64 language/type_propagation_assert_assignable_test: pass
-Done dartk-vm debug_x64 language/expect_test: pass
-Done dartk-vm debug_x64 language/try_finally_regress_25333_test: pass
-Done dartk-vm debug_x64 language/invocation_mirror_invoke_on2_test: pass
-Done dartk-vm debug_x64 language/field_optimization2_test: pass
-Done dartk-vm debug_x64 language/try_catch4_test: pass
-Done dartk-vm debug_x64 language/instance_compound_assignment_operator_test: pass
-Done dartk-vm debug_x64 language/void_check_test: pass
-Done dartk-vm debug_x64 language/extends_test: pass
-Done dartk-vm debug_x64 language/no_such_method_dispatcher_test: pass
-Done dartk-vm debug_x64 language/cha_deopt1_test: pass
-Done dartk-vm debug_x64 language/issue13556_test: pass
-Done dartk-vm debug_x64 language/no_such_method2_test: pass
-Done dartk-vm debug_x64 language/type_propagation2_test: pass
-Done dartk-vm debug_x64 language/try_catch_optimized1_test: pass
-Done dartk-vm debug_x64 language/regress_12615_test: pass
-Done dartk-vm debug_x64 language/super_first_constructor_test: pass
-Done dartk-vm debug_x64 language/duplicate_export_negative_test: pass
-Done dartk-vm debug_x64 language/regress_21795_test: pass
-Done dartk-vm debug_x64 language/mixin_class_from_core_library_test: pass
-Done dartk-vm debug_x64 language/prefix4_negative_test: pass
-Done dartk-vm debug_x64 language/mixin_super_constructor_default_test: pass
-Done dartk-vm debug_x64 language/code_motion_crash_test: pass
-Done dartk-vm debug_x64 language/compile_time_constant_a_test: pass
-Done dartk-vm debug_x64 language/field2_negative_test: pass
-Done dartk-vm debug_x64 language/this_conditional_operator_test/01: pass
-Done dartk-vm debug_x64 language/mixin_extends_field_test: pass
-Done dartk-vm debug_x64 language/mixin_type_parameter3_test: pass
-Done dartk-vm debug_x64 language/interface_cycle_test/01: pass
-Done dartk-vm debug_x64 language/issue14014_2_test: pass
-Done dartk-vm debug_x64 language/interface_cycle_test/02: pass
-Done dartk-vm debug_x64 language/this_conditional_operator_test/none: pass
-Done dartk-vm debug_x64 language/interface_cycle_test/none: pass
-Done dartk-vm debug_x64 language/factory_redirection_test/04: pass
-Done dartk-vm debug_x64 language/factory_redirection_test/none: pass
-Done dartk-vm debug_x64 language/factory_redirection_test/01: pass
-Done dartk-vm debug_x64 language/factory_redirection_test/03: pass
-Done dartk-vm debug_x64 language/factory_redirection_test/02: pass
-Done dartk-vm debug_x64 language/factory_redirection_test/05: pass
-Done dartk-vm debug_x64 language/factory_redirection_test/06: pass
-Done dartk-vm debug_x64 language/factory_redirection_test/07: pass
-Done dartk-vm debug_x64 language/factory_redirection_test/08: pass
-Done dartk-vm debug_x64 language/factory_redirection_test/09: pass
-Done dartk-vm debug_x64 language/factory_redirection_test/10: pass
-Done dartk-vm debug_x64 language/factory_redirection_test/12: pass
-Done dartk-vm debug_x64 language/factory_redirection_test/11: pass
-Done dartk-vm debug_x64 language/factory_redirection_test/13: pass
-Done dartk-vm debug_x64 language/factory_redirection_test/14: pass
-Done dartk-vm debug_x64 language/switch_case_test/none: pass
-Done dartk-vm debug_x64 language/switch_case_test/00: pass
-Done dartk-vm debug_x64 language/switch_case_test/01: pass
-Done dartk-vm debug_x64 language/switch_case_test/02: pass
-Done dartk-vm debug_x64 language/regress_21912_test/none: pass
-Done dartk-vm debug_x64 language/regress_21912_test/01: pass
-Done dartk-vm debug_x64 language/regress_21912_test/02: pass
-Done dartk-vm debug_x64 language/malformed_inheritance_test/01: pass
-Done dartk-vm debug_x64 language/inferrer_constructor5_test/none: pass
-Done dartk-vm debug_x64 language/inferrer_constructor5_test/01: pass
-Done dartk-vm debug_x64 language/malformed_inheritance_test/none: pass
-Done dartk-vm debug_x64 language/malformed_inheritance_test/03: pass
-Done dartk-vm debug_x64 language/malformed_inheritance_test/05: pass
-Done dartk-vm debug_x64 language/malformed_inheritance_test/07: pass
-Done dartk-vm debug_x64 language/malformed_inheritance_test/02: pass
-Done dartk-vm debug_x64 language/malformed_inheritance_test/08: pass
-Done dartk-vm debug_x64 language/malformed_inheritance_test/09: pass
-Done dartk-vm debug_x64 language/malformed_inheritance_test/10: pass
-Done dartk-vm debug_x64 language/malformed_inheritance_test/04: pass
-Done dartk-vm debug_x64 language/malformed_inheritance_test/11: pass
-Done dartk-vm debug_x64 language/malformed_inheritance_test/12: pass
-Done dartk-vm debug_x64 language/malformed_inheritance_test/06: pass
-Done dartk-vm debug_x64 language/private_member3_negative_test: pass
-Done dartk-vm debug_x64 language/mixin_super_constructor_multiple_test: pass
-Done dartk-vm debug_x64 language/try_catch_osr_test: pass
-Done dartk-vm debug_x64 language/try_catch3_test: pass
-Done dartk-vm debug_x64 language/mixin_type_parameters_mixin_test: pass
-Done dartk-vm debug_x64 language/string_optimizations_test: pass
-Done dartk-vm debug_x64 language/operator5_test: pass
-Done dartk-vm debug_x64 language/getters_setters_type3_test: pass
-Done dartk-vm debug_x64 language/mixin_mixin7_test: pass
-Done dartk-vm debug_x64 language/part2_test: pass
-Done dartk-vm debug_x64 language/super_setter_interceptor_test: pass
-Done dartk-vm debug_x64 language/closure_in_constructor_test: pass
-Done dartk-vm debug_x64 language/list_tracer_in_list_test: pass
-Done dartk-vm debug_x64 language/enum_index_test: pass
-Done dartk-vm debug_x64 language/issue9687_test: pass
-Done dartk-vm debug_x64 language/prefix16_test: pass
-Done dartk-vm debug_x64 language/export_ambiguous_main_negative_test: pass
-Done dartk-vm debug_x64 language/const_counter_negative_test: pass
-Done dartk-vm debug_x64 language/function_subtype_bound_closure4_test: pass
-Done dartk-vm debug_x64 language/issue21159_test: pass
-Done dartk-vm debug_x64 language/core_type_check_test: pass
-Done dartk-vm debug_x64 language/regress_25246_1_test: pass
-Done dartk-vm debug_x64 language/rewrite_if_empty_then_test: pass
-Done dartk-vm debug_x64 language/mixin_super_bound_test: pass
-Done dartk-vm debug_x64 language/constructor_test: pass
-Done dartk-vm debug_x64 language/deferred_mixin_test: pass
-Done dartk-vm debug_x64 language/regress_26175_test: pass
-Done dartk-vm debug_x64 language/function_subtype_cast1_test: pass
-Done dartk-vm debug_x64 language/redirecting_constructor_initializer_test: pass
-Done dartk-vm debug_x64 language/int_test: pass
-Done dartk-vm debug_x64 language/list_tracer_return_from_tearoff_closure_test: pass
-Done dartk-vm debug_x64 language/hello_dart_test: pass
-Done dartk-vm debug_x64 language/recursive_loop_phis_test: pass
-Done dartk-vm debug_x64 language/generic_deep_test: pass
-Done dartk-vm debug_x64 language/closure_break2_test: pass
-Done dartk-vm debug_x64 language/unresolved_top_level_var_negative_test: pass
-Done dartk-vm debug_x64 language/value_range_test: pass
-Done dartk-vm debug_x64 language/execute_finally2_test: pass
-Done dartk-vm debug_x64 language/const_syntax_test/01: pass
-Done dartk-vm debug_x64 language/const_syntax_test/02: pass
-Done dartk-vm debug_x64 language/cascade_in_expression_function_test: pass
-Done dartk-vm debug_x64 language/const_syntax_test/03: pass
-Done dartk-vm debug_x64 language/const_syntax_test/none: pass
-Done dartk-vm debug_x64 language/const_syntax_test/07: pass
-Done dartk-vm debug_x64 language/const_syntax_test/04: pass
-Done dartk-vm debug_x64 language/const_syntax_test/06: pass
-Done dartk-vm debug_x64 language/const_syntax_test/11: pass
-Done dartk-vm debug_x64 language/const_syntax_test/12: pass
-Done dartk-vm debug_x64 language/const_syntax_test/05: pass
-Done dartk-vm debug_x64 language/cyclic_typedef_test/01: pass
-Done dartk-vm debug_x64 language/const_syntax_test/09: pass
-Done dartk-vm debug_x64 language/const_syntax_test/08: pass
-Done dartk-vm debug_x64 language/const_syntax_test/10: pass
-Done dartk-vm debug_x64 language/cyclic_typedef_test/10: pass
-Done dartk-vm debug_x64 language/cyclic_typedef_test/02: pass
-Done dartk-vm debug_x64 language/cyclic_typedef_test/03: pass
-Done dartk-vm debug_x64 language/cyclic_typedef_test/none: pass
-Done dartk-vm debug_x64 language/cyclic_typedef_test/05: pass
-Done dartk-vm debug_x64 language/cyclic_typedef_test/11: pass
-Done dartk-vm debug_x64 language/cyclic_typedef_test/04: pass
-Done dartk-vm debug_x64 language/cyclic_typedef_test/06: pass
-Done dartk-vm debug_x64 language/cyclic_typedef_test/07: pass
-Done dartk-vm debug_x64 language/cyclic_typedef_test/08: pass
-Done dartk-vm debug_x64 language/cyclic_typedef_test/09: pass
-Done dartk-vm debug_x64 language/regress_23051_test/01: pass
-Done dartk-vm debug_x64 language/cyclic_typedef_test/13: pass
-Done dartk-vm debug_x64 language/cyclic_typedef_test/12: pass
-Done dartk-vm debug_x64 language/regress_23051_test/none: pass
-Done dartk-vm debug_x64 language/type_promotion_functions_test/none: pass
-Done dartk-vm debug_x64 language/type_promotion_functions_test/01: pass
-Done dartk-vm debug_x64 language/type_promotion_functions_test/11: pass
-Done dartk-vm debug_x64 language/type_promotion_functions_test/12: pass
-Done dartk-vm debug_x64 language/type_promotion_functions_test/09: pass
-Done dartk-vm debug_x64 language/type_promotion_functions_test/13: pass
-Done dartk-vm debug_x64 language/type_promotion_functions_test/14: pass
-Done dartk-vm debug_x64 language/type_promotion_functions_test/10: pass
-Done dartk-vm debug_x64 language/type_promotion_functions_test/02: pass
-Done dartk-vm debug_x64 language/type_promotion_functions_test/04: pass
-Done dartk-vm debug_x64 language/type_promotion_functions_test/05: pass
-Done dartk-vm debug_x64 language/type_promotion_functions_test/03: pass
-Done dartk-vm debug_x64 language/type_promotion_functions_test/06: pass
-Done dartk-vm debug_x64 language/type_promotion_functions_test/08: pass
-Done dartk-vm debug_x64 language/type_promotion_functions_test/07: pass
-Done dartk-vm debug_x64 language/generic_methods_type_expression_test/none: pass
-Done dartk-vm debug_x64 language/generic_methods_type_expression_test/01: pass
-Done dartk-vm debug_x64 language/string_interpolation1_test/01: pass
-Done dartk-vm debug_x64 language/generic_methods_type_expression_test/03: pass
-Done dartk-vm debug_x64 language/const_switch2_test/none: pass
-Done dartk-vm debug_x64 language/const_switch2_test/01: pass
-Done dartk-vm debug_x64 language/string_interpolation1_test/none: pass
-Done dartk-vm debug_x64 language/field_override_test/01: pass
-Done dartk-vm debug_x64 language/field_override_test/none: pass
-Done dartk-vm debug_x64 language/field_override_test/02: pass
-Done dartk-vm debug_x64 language/setter_override_test/none: pass
-Done dartk-vm debug_x64 language/setter_override_test/00: pass
-Done dartk-vm debug_x64 language/setter_override_test/01: pass
-Done dartk-vm debug_x64 language/setter_override_test/02: pass
-Done dartk-vm debug_x64 language/setter_override_test/03: pass
-Done dartk-vm debug_x64 language/implicit_this_test/none: pass
-Done dartk-vm debug_x64 language/implicit_this_test/01: pass
-Done dartk-vm debug_x64 language/implicit_this_test/04: pass
-Done dartk-vm debug_x64 language/implicit_this_test/02: pass
-Done dartk-vm debug_x64 language/duplicate_implements_test/none: pass
-Done dartk-vm debug_x64 language/duplicate_implements_test/02: pass
-Done dartk-vm debug_x64 language/duplicate_implements_test/01: pass
-Done dartk-vm debug_x64 language/mixin_invalid_inheritance1_test/01: pass
-Done dartk-vm debug_x64 language/duplicate_implements_test/03: pass
-Done dartk-vm debug_x64 language/mixin_invalid_inheritance1_test/02: pass
-Done dartk-vm debug_x64 language/duplicate_implements_test/04: pass
-Done dartk-vm debug_x64 language/mixin_invalid_inheritance1_test/03: pass
-Done dartk-vm debug_x64 language/mixin_invalid_inheritance1_test/none: pass
-Done dartk-vm debug_x64 language/deferred_no_prefix_test/01: pass
-Done dartk-vm debug_x64 language/deferred_no_prefix_test/none: pass
-Done dartk-vm debug_x64 language/setter_declaration_negative_test: pass
-Done dartk-vm debug_x64 language/typed_selector_test: pass
-Done dartk-vm debug_x64 language/raw_string_test: pass
-Done dartk-vm debug_x64 language/function_subtype_call1_test: pass
-Done dartk-vm debug_x64 language/bool_test: pass
-Done dartk-vm debug_x64 language/execute_finally9_test: pass
-Done dartk-vm debug_x64 language/issue10204_test: pass
-Done dartk-vm debug_x64 language/truncdiv_uint32_test: pass
-Done dartk-vm debug_x64 language/parameter_initializer3_negative_test: pass
-Done dartk-vm debug_x64 language/await_for_cancel_test: pass
-Done dartk-vm debug_x64 language/class_test: pass
-Done dartk-vm debug_x64 language/factory_type_parameter2_test: pass
-Done dartk-vm debug_x64 language/default_implementation2_test: pass
-Done dartk-vm debug_x64 language/factory4_test: pass
-Done dartk-vm debug_x64 language/resolve_test: pass
-Done dartk-vm debug_x64 language/type_variable_static_context_negative_test: pass
-Done dartk-vm debug_x64 language/function_subtype_closure1_test: pass
-Done dartk-vm debug_x64 language/regress_26543_3_test: pass
-Done dartk-vm debug_x64 language/constructor_redirect2_negative_test: pass
-Done dartk-vm debug_x64 language/regress_21998_3_test: pass
-Done dartk-vm debug_x64 language/call_with_no_such_method_test: pass
-Done dartk-vm debug_x64 language/mixin_extends_method_test: pass
-Done dartk-vm debug_x64 language/named_argument_test: pass
-Done dartk-vm debug_x64 language/parameter_initializer2_test: pass
-Done dartk-vm debug_x64 language/inference_super_constructor_call_test: pass
-Done dartk-vm debug_x64 language/naming2_test: pass
-Done dartk-vm debug_x64 language/dynamic_call_test: pass
-Done dartk-vm debug_x64 language/getters_setters_test: pass
-Done dartk-vm debug_x64 language/mixin_implements2_test: pass
-Done dartk-vm debug_x64 language/getter_setter_order_test: pass
-Done dartk-vm debug_x64 language/statement_test: pass
-Done dartk-vm debug_x64 language/type_variable_field_initializer_closure_test: pass
-Done dartk-vm debug_x64 language/mixin_getter_regression_test: pass
-Done dartk-vm debug_x64 language/bailout3_test: pass
-Done dartk-vm debug_x64 language/malbounded_type_cast2_test: pass
-Done dartk-vm debug_x64 language/regress_21998_4_test: pass
-Done dartk-vm debug_x64 language/string_interpolation9_test/1: pass
-Done dartk-vm debug_x64 language/const_list_test: pass
-Done dartk-vm debug_x64 language/mixin_type_parameters_simple_test: pass
-Done dartk-vm debug_x64 language/string_interpolation9_test/2: pass
-Done dartk-vm debug_x64 language/string_interpolation9_test/3: pass
-Done dartk-vm debug_x64 language/string_interpolation9_test/4: pass
-Done dartk-vm debug_x64 language/string_interpolation9_test/5: pass
-Done dartk-vm debug_x64 language/string_interpolation9_test/none: pass
-Done dartk-vm debug_x64 language/string_interpolation9_test/6: pass
-Done dartk-vm debug_x64 language/string_interpolation9_test/8: pass
-Done dartk-vm debug_x64 language/string_interpolation9_test/7: pass
-Done dartk-vm debug_x64 language/string_interpolation9_test/9: pass
-Done dartk-vm debug_x64 language/string_interpolation9_test/10: pass
-Done dartk-vm debug_x64 language/string_interpolation9_test/11: pass
-Done dartk-vm debug_x64 language/string_interpolation9_test/12: pass
-Done dartk-vm debug_x64 language/string_interpolation9_test/13: pass
-Done dartk-vm debug_x64 language/string_interpolation9_test/14: pass
-Done dartk-vm debug_x64 language/string_interpolation9_test/16: pass
-Done dartk-vm debug_x64 language/string_interpolation9_test/15: pass
-Done dartk-vm debug_x64 language/string_interpolation9_test/17: pass
-Done dartk-vm debug_x64 language/string_interpolation9_test/18: pass
-Done dartk-vm debug_x64 language/string_interpolation9_test/19: pass
-Done dartk-vm debug_x64 language/string_interpolation9_test/20: pass
-Done dartk-vm debug_x64 language/getter_no_setter_test/02: pass
-Done dartk-vm debug_x64 language/getter_no_setter_test/none: pass
-Done dartk-vm debug_x64 language/getter_no_setter_test/00: pass
-Done dartk-vm debug_x64 language/getter_no_setter_test/01: pass
-Done dartk-vm debug_x64 language/checked_null_test/none: pass
-Done dartk-vm debug_x64 language/checked_null_test/01: pass
-Done dartk-vm debug_x64 language/type_variable_bounds_test/00: pass
-Done dartk-vm debug_x64 language/type_variable_bounds_test/none: pass
-Done dartk-vm debug_x64 language/type_variable_bounds_test/01: pass
-Done dartk-vm debug_x64 language/type_variable_bounds_test/02: pass
-Done dartk-vm debug_x64 language/type_variable_bounds_test/03: pass
-Done dartk-vm debug_x64 language/type_variable_bounds_test/05: pass
-Done dartk-vm debug_x64 language/type_variable_bounds_test/04: pass
-Done dartk-vm debug_x64 language/type_variable_bounds_test/06: pass
-Done dartk-vm debug_x64 language/type_variable_bounds_test/07: pass
-Done dartk-vm debug_x64 language/type_variable_bounds_test/08: pass
-Done dartk-vm debug_x64 language/type_variable_bounds_test/09: pass
-Done dartk-vm debug_x64 language/field_override4_test/00: pass
-Done dartk-vm debug_x64 language/type_variable_bounds_test/10: pass
-Done dartk-vm debug_x64 language/field_override4_test/none: pass
-Done dartk-vm debug_x64 language/field_override4_test/01: pass
-Done dartk-vm debug_x64 language/field_override4_test/02: pass
-Done dartk-vm debug_x64 language/field_override4_test/03: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/none: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/01: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/03: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/02: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/05: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/04: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/06: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/07: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/08: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/09: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/10: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/11: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/12: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/13: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/14: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/15: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/17: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/16: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/19: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/18: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/21: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/22: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/20: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/23: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/25: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/24: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/26: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/28: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/30: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/29: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/27: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/31: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/32: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/33: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/34: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/35: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/37: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/36: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/38: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/39: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/40: pass
-Done dartk-vm debug_x64 language/type_promotion_local_test/41: pass
-Done dartk-vm debug_x64 language/mixin_type_variable_test/none: pass
-Done dartk-vm debug_x64 language/mixin_type_variable_test/06: pass
-Done dartk-vm debug_x64 language/mixin_type_variable_test/04: pass
-Done dartk-vm debug_x64 language/mixin_type_variable_test/03: pass
-Done dartk-vm debug_x64 language/mixin_type_variable_test/07: pass
-Done dartk-vm debug_x64 language/mixin_type_variable_test/08: pass
-Done dartk-vm debug_x64 language/mixin_type_variable_test/01: pass
-Done dartk-vm debug_x64 language/mixin_type_variable_test/02: pass
-Done dartk-vm debug_x64 language/mixin_type_variable_test/05: pass
-Done dartk-vm debug_x64 language/async_throw_in_catch_test/forceAwait: pass
-Done dartk-vm debug_x64 language/async_throw_in_catch_test/none: pass
-Done dartk-vm debug_x64 language/bad_named_parameters_test/01: pass
-Done dartk-vm debug_x64 language/bad_named_parameters_test/02: pass
-Done dartk-vm debug_x64 language/bad_named_parameters_test/none: pass
-Done dartk-vm debug_x64 language/bad_named_parameters_test/03: pass
-Done dartk-vm debug_x64 language/bad_named_parameters_test/04: pass
-Done dartk-vm debug_x64 language/bad_named_parameters_test/05: pass
-Done dartk-vm debug_x64 language/super_no_such_method1_test/01: pass
-Done dartk-vm debug_x64 language/super_no_such_method1_test/none: pass
-Done dartk-vm debug_x64 language/new_expression_type_args_test/none: pass
-Done dartk-vm debug_x64 language/new_expression_type_args_test/01: pass
-Done dartk-vm debug_x64 language/new_expression_type_args_test/00: pass
-Done dartk-vm debug_x64 language/new_expression_type_args_test/02: pass
-Done dartk-vm debug_x64 language/final_initializer_instance_reference_test/01: pass
-Done dartk-vm debug_x64 language/final_initializer_instance_reference_test/none: pass
-Done dartk-vm debug_x64 language/prefix_assignment_test/01: pass
-Done dartk-vm debug_x64 language/prefix_assignment_test/02: pass
-Done dartk-vm debug_x64 language/import_self_test/01: pass
-Done dartk-vm debug_x64 language/import_self_test/none: pass
-Done dartk-vm debug_x64 language/prefix_assignment_test/none: pass
-Done dartk-vm debug_x64 language/const_nested_test: pass
-Done dartk-vm debug_x64 language/throw4_test: pass
-Done dartk-vm debug_x64 language/mixin_forwarding_constructor1_test: pass
-Done dartk-vm debug_x64 language/super_operator_index7_test: pass
-Done dartk-vm debug_x64 language/type_variable_closure3_test: pass
-Done dartk-vm debug_x64 language/implicit_scope_test: pass
-Done dartk-vm debug_x64 language/for_variable_capture_test: pass
-Done dartk-vm debug_x64 language/mixin_forwarding_constructor2_test: pass
-Done dartk-vm debug_x64 language/function_propagation_test: pass
-Done dartk-vm debug_x64 language/issue21079_test: pass
-Done dartk-vm debug_x64 language/bailout5_test: pass
-Done dartk-vm debug_x64 language/disassemble_test: pass
-Done dartk-vm debug_x64 language/disassemble_test: pass
-Done dartk-vm debug_x64 language/bool_check_test: pass
-Done dartk-vm debug_x64 language/compile_time_constant_m_test: pass
-Done dartk-vm debug_x64 language/top_level_getter_arrow_syntax_test: pass
-Done dartk-vm debug_x64 language/generic_methods_new_test: pass
-Done dartk-vm debug_x64 language/error_stacktrace_test: pass
-Done dartk-vm debug_x64 language/function_subtype2_test: pass
-Done dartk-vm debug_x64 language/new_expression2_negative_test: pass
-Done dartk-vm debug_x64 language/regress_18435_test: pass
-Done dartk-vm debug_x64 language/mixin_super_constructor2_test: pass
-Done dartk-vm debug_x64 language/canonical_const2_test: pass
-Done dartk-vm debug_x64 language/overridden_no_such_method_test: pass
-Done dartk-vm debug_x64 language/regress_29481_test: pass
-Done dartk-vm debug_x64 language/constructor2_test: pass
-Done dartk-vm debug_x64 language/deferred_closurize_load_library_test: pass
-Done dartk-vm debug_x64 language/precedence_test: pass
-Done dartk-vm debug_x64 language/regress_25550_test: pass
-Done dartk-vm debug_x64 language/operator4_test: pass
-Done dartk-vm debug_x64 language/many_overridden_no_such_method_test: pass
-Done dartk-vm debug_x64 language/fast_method_extraction_test: pass
-Done dartk-vm debug_x64 language/generic_inheritance_test: pass
-Done dartk-vm debug_x64 language/cascade_precedence_test: pass
-Done dartk-vm debug_x64 language/function_subtype_local5_test: pass
-Done dartk-vm debug_x64 language/map_literal5_test: pass
-Done dartk-vm debug_x64 language/function_subtype_typearg4_test: pass
-Done dartk-vm debug_x64 language/proxy4_test: pass
-Done dartk-vm debug_x64 language/regress_20074_test: pass
-Done dartk-vm debug_x64 language/super_setter_test: pass
-Done dartk-vm debug_x64 language/inferrer_constructor4_test: pass
-Done dartk-vm debug_x64 language/unresolved_top_level_method_negative_test: pass
-Done dartk-vm debug_x64 language/const_constructor_super_test/02: pass
-Done dartk-vm debug_x64 language/identical_test: pass
-Done dartk-vm debug_x64 language/instance_inline_test: pass
-Done dartk-vm debug_x64 language/const_constructor_super_test/01: pass
-Done dartk-vm debug_x64 language/const_constructor_super_test/none: pass
-Done dartk-vm debug_x64 language/setter_no_getter_test/01: pass
-Done dartk-vm debug_x64 language/setter_no_getter_test/none: pass
-Done dartk-vm debug_x64 language/mixin_type_parameters_errors_test/none: pass
-Done dartk-vm debug_x64 language/mixin_type_parameters_errors_test/02: pass
-Done dartk-vm debug_x64 language/mixin_type_parameters_errors_test/05: pass
-Done dartk-vm debug_x64 language/mixin_type_parameters_errors_test/03: pass
-Done dartk-vm debug_x64 language/mixin_type_parameters_errors_test/01: pass
-Done dartk-vm debug_x64 language/mixin_type_parameters_errors_test/04: pass
-Done dartk-vm debug_x64 language/final_attempt_reinitialization_test/none: pass
-Done dartk-vm debug_x64 language/final_attempt_reinitialization_test/01: pass
-Done dartk-vm debug_x64 language/mixin_of_mixin_test/none: pass
-Done dartk-vm debug_x64 language/final_attempt_reinitialization_test/02: pass
-Done dartk-vm debug_x64 language/mixin_of_mixin_test/01: pass
-Done dartk-vm debug_x64 language/mixin_of_mixin_test/02: pass
-Done dartk-vm debug_x64 language/mixin_of_mixin_test/03: pass
-Done dartk-vm debug_x64 language/mixin_of_mixin_test/04: pass
-Done dartk-vm debug_x64 language/mixin_of_mixin_test/06: pass
-Done dartk-vm debug_x64 language/mixin_of_mixin_test/07: pass
-Done dartk-vm debug_x64 language/mixin_of_mixin_test/05: pass
-Done dartk-vm debug_x64 language/mixin_of_mixin_test/08: pass
-Done dartk-vm debug_x64 language/mixin_of_mixin_test/09: pass
-Done dartk-vm debug_x64 language/mixin_of_mixin_test/10: pass
-Done dartk-vm debug_x64 language/mixin_of_mixin_test/11: pass
-Done dartk-vm debug_x64 language/mixin_of_mixin_test/12: pass
-Done dartk-vm debug_x64 language/mixin_of_mixin_test/15: pass
-Done dartk-vm debug_x64 language/mixin_of_mixin_test/13: pass
-Done dartk-vm debug_x64 language/mixin_of_mixin_test/14: pass
-Done dartk-vm debug_x64 language/mixin_of_mixin_test/17: pass
-Done dartk-vm debug_x64 language/mixin_of_mixin_test/16: pass
-Done dartk-vm debug_x64 language/mixin_of_mixin_test/19: pass
-Done dartk-vm debug_x64 language/mixin_of_mixin_test/18: pass
-Done dartk-vm debug_x64 language/mixin_of_mixin_test/20: pass
-Done dartk-vm debug_x64 language/keyword_type_expression_test/01: pass
-Done dartk-vm debug_x64 language/keyword_type_expression_test/02: pass
-Done dartk-vm debug_x64 language/mixin_of_mixin_test/21: pass
-Done dartk-vm debug_x64 language/mixin_of_mixin_test/22: pass
-Done dartk-vm debug_x64 language/constructor9_test/none: pass
-Done dartk-vm debug_x64 language/constructor9_test/01: pass
-Done dartk-vm debug_x64 language/keyword_type_expression_test/03: pass
-Done dartk-vm debug_x64 language/keyword_type_expression_test/none: pass
-Done dartk-vm debug_x64 language/generic_function_typedef2_test/00: pass
-Done dartk-vm debug_x64 language/generic_function_typedef2_test/01: pass
-Done dartk-vm debug_x64 language/generic_function_typedef2_test/02: pass
-Done dartk-vm debug_x64 language/generic_function_typedef2_test/03: pass
-Done dartk-vm debug_x64 language/generic_function_typedef2_test/05: pass
-Done dartk-vm debug_x64 language/generic_function_typedef2_test/06: pass
-Done dartk-vm debug_x64 language/generic_function_typedef2_test/none: pass
-Done dartk-vm debug_x64 language/compile_time_constant13_test/02: pass
-Done dartk-vm debug_x64 language/compile_time_constant13_test/04: pass
-Done dartk-vm debug_x64 language/generic_function_typedef2_test/04: pass
-Done dartk-vm debug_x64 language/compile_time_constant13_test/03: pass
-Done dartk-vm debug_x64 language/compile_time_constant13_test/05: pass
-Done dartk-vm debug_x64 language/compile_time_constant13_test/none: pass
-Done dartk-vm debug_x64 language/compile_time_constant13_test/01: pass
-Done dartk-vm debug_x64 language/method_override8_test/none: pass
-Done dartk-vm debug_x64 language/method_override8_test/00: pass
-Done dartk-vm debug_x64 language/method_override8_test/02: pass
-Done dartk-vm debug_x64 language/method_override8_test/03: pass
-Done dartk-vm debug_x64 language/method_override8_test/01: pass
-Done dartk-vm debug_x64 language/callable_test/none: pass
-Done dartk-vm debug_x64 language/callable_test/00: pass
-Done dartk-vm debug_x64 language/callable_test/01: pass
-Done dartk-vm debug_x64 language/issue_25671b_test/none: pass
-Done dartk-vm debug_x64 language/issue_25671b_test/01: pass
-Done dartk-vm debug_x64 language/compile_time_constant5_test: pass
-Done dartk-vm debug_x64 language/bit_operations_test/none: pass
-Done dartk-vm debug_x64 language/bit_operations_test/01: pass
-Done dartk-vm debug_x64 language/bit_operations_test/02: pass
-Done dartk-vm debug_x64 language/nested_if_test: pass
-Done dartk-vm debug_x64 language/bit_operations_test/03: pass
-Done dartk-vm debug_x64 language/default_implementation_test: pass
-Done dartk-vm debug_x64 language/bit_operations_test/04: pass
-Done dartk-vm debug_x64 language/operator6_test: pass
-Done dartk-vm debug_x64 language/prefix23_test: pass
-Done dartk-vm debug_x64 language/list_double_index_in_loop_test: pass
-Done dartk-vm debug_x64 language/label_test: pass
-Done dartk-vm debug_x64 language/execute_finally7_test: pass
-Done dartk-vm debug_x64 language/numbers_test: pass
-Done dartk-vm debug_x64 language/generic_local_functions_test: pass
-Done dartk-vm debug_x64 language/smi_type_test: pass
-Done dartk-vm debug_x64 language/parameter_initializer6_negative_test: pass
-Done dartk-vm debug_x64 language/bound_closure_equality_test: pass
-Done dartk-vm debug_x64 language/inferrer_constructor_test: pass
-Done dartk-vm debug_x64 language/strict_equal_test: pass
-Done dartk-vm debug_x64 language/pure_function_test: pass
-Done dartk-vm debug_x64 language/prefix8_negative_test: pass
-Done dartk-vm debug_x64 language/enum_test: pass
-Done dartk-vm debug_x64 language/partial_min_test: pass
-Done dartk-vm debug_x64 language/unicode_bom_middle_test: pass
-Done dartk-vm debug_x64 language/function_subtype_not0_test: pass
-Done dartk-vm debug_x64 language/regress_28341_test: pass
-Done dartk-vm debug_x64 language/many_generic_instanceof_test: pass
-Done dartk-vm debug_x64 language/list_length_tracer_test: pass
-Done dartk-vm debug_x64 language/first_class_types_libraries_test: pass
-Done dartk-vm debug_x64 language/scanner_test: pass
-Done dartk-vm debug_x64 language/interceptor7_test: pass
-Done dartk-vm debug_x64 language/exhaustive_for_test: pass
-Done dartk-vm debug_x64 language/regress_26133_test: pass
-Done dartk-vm debug_x64 language/function_type_test: pass
-Done dartk-vm debug_x64 language/execute_finally6_test: pass
-Done dartk-vm debug_x64 language/null_is2_test: pass
-Done dartk-vm debug_x64 language/throw1_test: pass
-Done dartk-vm debug_x64 language/const_constructor_super2_test: pass
-Done dartk-vm debug_x64 language/f_bounded_equality_test: pass
-Done dartk-vm debug_x64 language/function_subtype_bound_closure6_test: pass
-Done dartk-vm debug_x64 language/compile_time_constant_f_test: pass
-Done dartk-vm debug_x64 language/super_operator_index4_test: pass
-Done dartk-vm debug_x64 language/function_test: pass
-Done dartk-vm debug_x64 language/execute_finally3_test: pass
-Done dartk-vm debug_x64 language/is_interfaces2_test: pass
-Done dartk-vm debug_x64 language/covariant_test/00: pass
-Done dartk-vm debug_x64 language/covariant_test/00b: pass
-Done dartk-vm debug_x64 language/deopt_lazy_finalization_test: pass
-Done dartk-vm debug_x64 language/covariant_test/none: pass
-Done dartk-vm debug_x64 language/covariant_test/01: pass
-Done dartk-vm debug_x64 language/covariant_test/02: pass
-Done dartk-vm debug_x64 language/covariant_test/03: pass
-Done dartk-vm debug_x64 language/covariant_test/04: pass
-Done dartk-vm debug_x64 language/covariant_test/00c: pass
-Done dartk-vm debug_x64 language/covariant_test/06: pass
-Done dartk-vm debug_x64 language/covariant_test/05: pass
-Done dartk-vm debug_x64 language/covariant_test/06b: pass
-Done dartk-vm debug_x64 language/covariant_test/10: pass
-Done dartk-vm debug_x64 language/covariant_test/07: pass
-Done dartk-vm debug_x64 language/covariant_test/08: pass
-Done dartk-vm debug_x64 language/covariant_test/11: pass
-Done dartk-vm debug_x64 language/covariant_test/14: pass
-Done dartk-vm debug_x64 language/covariant_test/13: pass
-Done dartk-vm debug_x64 language/covariant_test/12: pass
-Done dartk-vm debug_x64 language/covariant_test/16: pass
-Done dartk-vm debug_x64 language/covariant_test/15: pass
-Done dartk-vm debug_x64 language/covariant_test/17: pass
-Done dartk-vm debug_x64 language/covariant_test/20: pass
-Done dartk-vm debug_x64 language/covariant_test/19: pass
-Done dartk-vm debug_x64 language/covariant_test/21: pass
-Done dartk-vm debug_x64 language/covariant_test/20b: pass
-Done dartk-vm debug_x64 language/covariant_test/22: pass
-Done dartk-vm debug_x64 language/covariant_test/21b: pass
-Done dartk-vm debug_x64 language/covariant_test/24: pass
-Done dartk-vm debug_x64 language/covariant_test/23: pass
-Done dartk-vm debug_x64 language/covariant_test/25: pass
-Done dartk-vm debug_x64 language/covariant_test/27: pass
-Done dartk-vm debug_x64 language/covariant_test/20c: pass
-Done dartk-vm debug_x64 language/covariant_test/26b: pass
-Done dartk-vm debug_x64 language/covariant_test/30: pass
-Done dartk-vm debug_x64 language/covariant_test/26: pass
-Done dartk-vm debug_x64 language/covariant_test/28: pass
-Done dartk-vm debug_x64 language/covariant_test/27b: pass
-Done dartk-vm debug_x64 language/covariant_test/30b: pass
-Done dartk-vm debug_x64 language/covariant_test/35: pass
-Done dartk-vm debug_x64 language/covariant_test/31: pass
-Done dartk-vm debug_x64 language/covariant_test/34: pass
-Done dartk-vm debug_x64 language/covariant_test/36: pass
-Done dartk-vm debug_x64 language/covariant_test/33: pass
-Done dartk-vm debug_x64 language/covariant_test/31b: pass
-Done dartk-vm debug_x64 language/covariant_test/32: pass
-Done dartk-vm debug_x64 language/covariant_test/37: pass
-Done dartk-vm debug_x64 language/covariant_test/39: pass
-Done dartk-vm debug_x64 language/covariant_test/41: pass
-Done dartk-vm debug_x64 language/covariant_test/44: pass
-Done dartk-vm debug_x64 language/covariant_test/43: pass
-Done dartk-vm debug_x64 language/covariant_test/40b: pass
-Done dartk-vm debug_x64 language/covariant_test/40: pass
-Done dartk-vm debug_x64 language/covariant_test/46: pass
-Done dartk-vm debug_x64 language/covariant_test/45: pass
-Done dartk-vm debug_x64 language/covariant_test/40c: pass
-Done dartk-vm debug_x64 language/covariant_test/47: pass
-Done dartk-vm debug_x64 language/covariant_test/46b: pass
-Done dartk-vm debug_x64 language/covariant_test/42: pass
-Done dartk-vm debug_x64 language/covariant_test/50: pass
-Done dartk-vm debug_x64 language/covariant_test/51: pass
-Done dartk-vm debug_x64 language/covariant_test/53: pass
-Done dartk-vm debug_x64 language/covariant_test/55: pass
-Done dartk-vm debug_x64 language/covariant_test/48: pass
-Done dartk-vm debug_x64 language/covariant_test/56: pass
-Done dartk-vm debug_x64 language/covariant_test/57: pass
-Done dartk-vm debug_x64 language/covariant_test/52: pass
-Done dartk-vm debug_x64 language/covariant_test/59: pass
-Done dartk-vm debug_x64 language/covariant_test/54: pass
-Done dartk-vm debug_x64 language/setter_no_getter_call_test/01: pass
-Done dartk-vm debug_x64 language/setter_no_getter_call_test/none: pass
-Done dartk-vm debug_x64 language/const_factory_with_body_test/none: pass
-Done dartk-vm debug_x64 language/class_override_test/none: pass
-Done dartk-vm debug_x64 language/class_override_test/00: pass
-Done dartk-vm debug_x64 language/const_factory_with_body_test/01: pass
-Done dartk-vm debug_x64 language/string_interpolation2_test/01: pass
-Done dartk-vm debug_x64 language/sync_generator1_test/01: pass
-Done dartk-vm debug_x64 language/sync_generator1_test/none: pass
-Done dartk-vm debug_x64 language/string_interpolation2_test/none: pass
-Done dartk-vm debug_x64 language/literal_unary_plus_test/01: pass
-Done dartk-vm debug_x64 language/literal_unary_plus_test/02: pass
-Done dartk-vm debug_x64 language/literal_unary_plus_test/03: pass
-Done dartk-vm debug_x64 language/fauxverride_test/none: pass
-Done dartk-vm debug_x64 language/literal_unary_plus_test/none: pass
-Done dartk-vm debug_x64 language/fauxverride_test/03: pass
-Done dartk-vm debug_x64 language/await_backwards_compatibility_test/await1: pass
-Done dartk-vm debug_x64 language/fauxverride_test/05: pass
-Done dartk-vm debug_x64 language/await_backwards_compatibility_test/await2: pass
-Done dartk-vm debug_x64 language/await_backwards_compatibility_test/await3: pass
-Done dartk-vm debug_x64 language/await_backwards_compatibility_test/none: pass
-Done dartk-vm debug_x64 language/await_backwards_compatibility_test/await4: pass
-Done dartk-vm debug_x64 language/try_catch_on_syntax_test/03: pass
-Done dartk-vm debug_x64 language/try_catch_on_syntax_test/02: pass
-Done dartk-vm debug_x64 language/try_catch_on_syntax_test/04: pass
-Done dartk-vm debug_x64 language/try_catch_on_syntax_test/05: pass
-Done dartk-vm debug_x64 language/try_catch_on_syntax_test/06: pass
-Done dartk-vm debug_x64 language/try_catch_on_syntax_test/none: pass
-Done dartk-vm debug_x64 language/try_catch_on_syntax_test/07: pass
-Done dartk-vm debug_x64 language/final_syntax_test/01: pass
-Done dartk-vm debug_x64 language/try_catch_on_syntax_test/11: pass
-Done dartk-vm debug_x64 language/try_catch_on_syntax_test/10: pass
-Done dartk-vm debug_x64 language/call_non_method_field_test/none: pass
-Done dartk-vm debug_x64 language/call_non_method_field_test/01: pass
-Done dartk-vm debug_x64 language/call_non_method_field_test/02: pass
-Done dartk-vm debug_x64 language/final_syntax_test/none: pass
-Done dartk-vm debug_x64 language/final_syntax_test/03: pass
-Done dartk-vm debug_x64 language/final_syntax_test/04: pass
-Done dartk-vm debug_x64 language/final_syntax_test/02: pass
-Done dartk-vm debug_x64 language/final_syntax_test/09: pass
-Done dartk-vm debug_x64 language/final_syntax_test/08: pass
-Done dartk-vm debug_x64 language/for_in3_test: pass
-Done dartk-vm debug_x64 language/final_syntax_test/10: pass
-Done dartk-vm debug_x64 language/return_this_type_test: pass
-Done dartk-vm debug_x64 language/regress_25620_test: pass
-Done dartk-vm debug_x64 language/no_such_method_negative_test: pass
-Done dartk-vm debug_x64 language/value_range3_test: pass
-Done dartk-vm debug_x64 language/issue12336_test: pass
-Done dartk-vm debug_x64 language/invocation_mirror_invoke_on_test: pass
-Done dartk-vm debug_x64 language/dead_field_access_test: pass
-Done dartk-vm debug_x64 language/implicit_closure2_test: pass
-Done dartk-vm debug_x64 language/override_field_method5_negative_test: pass
-Done dartk-vm debug_x64 language/interceptor9_test: pass
-Done dartk-vm debug_x64 language/factory5_test: pass
-Done dartk-vm debug_x64 language/static_call_wrong_argument_count_negative_test: pass
-Done dartk-vm debug_x64 language/conditional_import_test: pass
-Done dartk-vm debug_x64 language/property_field_override_test: pass
-Done dartk-vm debug_x64 language/method_invocation_test: pass
-Done dartk-vm debug_x64 language/field_optimization3_test: pass
-Done dartk-vm debug_x64 language/factory3_test: pass
-Done dartk-vm debug_x64 language/const_factory_redirection_test: pass
-Done dartk-vm debug_x64 language/nested_switch_label_test: pass
-Done dartk-vm debug_x64 language/generic_parameterized_extends_test: pass
-Done dartk-vm debug_x64 language/closure_with_super_send_test: pass
-Done dartk-vm debug_x64 language/unresolved_in_factory_negative_test: pass
-Done dartk-vm debug_x64 language/loop_exchange_test: pass
-Done dartk-vm debug_x64 language/string_supertype_checked_test: pass
-Done dartk-vm debug_x64 language/regress_18865_test: pass
-Done dartk-vm debug_x64 language/super_assign_test: pass
-Done dartk-vm debug_x64 language/script2_negative_test: pass
-Done dartk-vm debug_x64 language/finally_test: pass
-Done dartk-vm debug_x64 language/bad_named_constructor_negative_test: pass
-Done dartk-vm debug_x64 language/unary_test: pass
-Done dartk-vm debug_x64 language/regress_17382_test: pass
-Done dartk-vm debug_x64 language/map_literal7_test: pass
-Done dartk-vm debug_x64 language/override_field_method2_negative_test: pass
-Done dartk-vm debug_x64 language/part_of_uri_test: pass
-Done dartk-vm debug_x64 language/multiple_field_assignment_constructor_test: pass
-Done dartk-vm debug_x64 language/megamorphic_no_such_method_test: pass
-Done dartk-vm debug_x64 language/exception_test: pass
-Done dartk-vm debug_x64 language/function_subtype_closure0_test: pass
-Done dartk-vm debug_x64 language/type_checks_in_factory_method_test: pass
-Done dartk-vm debug_x64 language/issue9939_test: pass
-Done dartk-vm debug_x64 language/field_increment_bailout_test: pass
-Done dartk-vm debug_x64 language/typed_equality_test: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/none: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/04: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/03: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/02: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/01: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/05: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/06: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/07: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/08: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/10: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/09: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/11: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/12: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/13: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/14: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/15: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/16: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/18: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/19: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/17: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/20: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/21: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/22: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/23: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/25: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/24: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/27: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/26: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/28: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/29: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/30: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/31: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/32: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/33: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/34: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/35: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/36: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/37: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/38: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/39: pass
-Done dartk-vm debug_x64 language/const_switch_test/none: pass
-Done dartk-vm debug_x64 language/null_is_bottom_test/40: pass
-Done dartk-vm debug_x64 language/const_switch_test/01: pass
-Done dartk-vm debug_x64 language/const_switch_test/04: pass
-Done dartk-vm debug_x64 language/const_switch_test/02: pass
-Done dartk-vm debug_x64 language/const_switch_test/03: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/none: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/01: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/02: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/03: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/04: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/05: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/07: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/06: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/08: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/09: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/10: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/11: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/12: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/15: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/14: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/13: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/16: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/17: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/19: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/18: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/20: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/21: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/22: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/23: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/24: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/26: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/27: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/25: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/28: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/29: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/30: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/31: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/32: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/34: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/33: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/35: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/36: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/37: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/38: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/39: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/41: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/42: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/40: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/43: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/44: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/45: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/46: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/47: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/48: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/51: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/49: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/50: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/52: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/54: pass
-Done dartk-vm debug_x64 language/constructor_duplicate_initializers_test/01: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/56: pass
-Done dartk-vm debug_x64 language/constructor_duplicate_initializers_test/02: pass
-Done dartk-vm debug_x64 language/type_promotion_parameter_test/55: pass
-Done dartk-vm debug_x64 language/constructor_duplicate_initializers_test/03: pass
-Done dartk-vm debug_x64 language/mixin_illegal_syntax_test/00: pass
-Done dartk-vm debug_x64 language/constructor_duplicate_initializers_test/none: pass
-Done dartk-vm debug_x64 language/mixin_illegal_syntax_test/01: pass
-Done dartk-vm debug_x64 language/mixin_illegal_syntax_test/02: pass
-Done dartk-vm debug_x64 language/mixin_illegal_syntax_test/05: pass
-Done dartk-vm debug_x64 language/mixin_illegal_syntax_test/04: pass
-Done dartk-vm debug_x64 language/mixin_illegal_syntax_test/03: pass
-Done dartk-vm debug_x64 language/mixin_illegal_syntax_test/none: pass
-Done dartk-vm debug_x64 language/mixin_illegal_syntax_test/06: pass
-Done dartk-vm debug_x64 language/mixin_illegal_syntax_test/07: pass
-Done dartk-vm debug_x64 language/mixin_illegal_syntax_test/09: pass
-Done dartk-vm debug_x64 language/mixin_illegal_syntax_test/11: pass
-Done dartk-vm debug_x64 language/mixin_illegal_syntax_test/08: pass
-Done dartk-vm debug_x64 language/mixin_illegal_syntax_test/12: pass
-Done dartk-vm debug_x64 language/mixin_illegal_syntax_test/10: pass
-Done dartk-vm debug_x64 language/mixin_illegal_syntax_test/14: pass
-Done dartk-vm debug_x64 language/const_getter_test/01: pass
-Done dartk-vm debug_x64 language/illegal_initializer_test/01: pass
-Done dartk-vm debug_x64 language/const_getter_test/02: pass
-Done dartk-vm debug_x64 language/illegal_initializer_test/02: pass
-Done dartk-vm debug_x64 language/illegal_initializer_test/03: pass
-Done dartk-vm debug_x64 language/const_getter_test/none: pass
-Done dartk-vm debug_x64 language/mixin_illegal_syntax_test/13: pass
-Done dartk-vm debug_x64 language/illegal_initializer_test/04: pass
-Done dartk-vm debug_x64 language/illegal_initializer_test/none: pass
-Done dartk-vm debug_x64 language/create_unresolved_type_test/none: pass
-Done dartk-vm debug_x64 language/create_unresolved_type_test/01: pass
-Done dartk-vm debug_x64 language/no_such_constructor_test/none: pass
-Done dartk-vm debug_x64 language/no_such_constructor_test/01: pass
-Done dartk-vm debug_x64 language/mixin_invalid_bound2_test/01: pass
-Done dartk-vm debug_x64 language/mixin_invalid_bound2_test/none: pass
-Done dartk-vm debug_x64 language/mixin_invalid_bound2_test/03: pass
-Done dartk-vm debug_x64 language/mixin_invalid_bound2_test/02: pass
-Done dartk-vm debug_x64 language/mixin_invalid_bound2_test/04: pass
-Done dartk-vm debug_x64 language/mixin_invalid_bound2_test/06: pass
-Done dartk-vm debug_x64 language/mixin_invalid_bound2_test/05: pass
-Done dartk-vm debug_x64 language/mixin_invalid_bound2_test/07: pass
-Done dartk-vm debug_x64 language/mixin_invalid_bound2_test/08: pass
-Done dartk-vm debug_x64 language/mixin_invalid_bound2_test/09: pass
-Done dartk-vm debug_x64 language/mixin_invalid_bound2_test/10: pass
-Done dartk-vm debug_x64 language/mixin_invalid_bound2_test/11: pass
-Done dartk-vm debug_x64 language/deferred_load_library_wrong_args_test/01: pass
-Done dartk-vm debug_x64 language/deferred_load_library_wrong_args_test/none: pass
-Done dartk-vm debug_x64 language/mixin_invalid_bound2_test/12: pass
-Done dartk-vm debug_x64 language/mixin_invalid_bound2_test/13: pass
-Done dartk-vm debug_x64 language/mixin_invalid_bound2_test/14: pass
-Done dartk-vm debug_x64 language/generic_methods_generic_function_parameter_test: pass
-Done dartk-vm debug_x64 language/mixin_mixin3_test: pass
-Done dartk-vm debug_x64 language/deferred_constant_list_test: pass
-Done dartk-vm debug_x64 language/compound_assignment_operator_test: pass
-Done dartk-vm debug_x64 language/patch_test: pass
-Done dartk-vm debug_x64 language/type_variable_field_initializer2_test: pass
-Done dartk-vm debug_x64 language/break_test: pass
-Done dartk-vm debug_x64 language/call_test: pass
-Done dartk-vm debug_x64 language/operator_index_evaluation_order_test: pass
-Done dartk-vm debug_x64 language/vm/regress_27201_test: pass
-Done dartk-vm debug_x64 language/equality_test: pass
-Done dartk-vm debug_x64 language/mixin_lib_extends_field_test: pass
-Done dartk-vm debug_x64 language/reg_ex2_test: pass
-Done dartk-vm debug_x64 language/try_catch_optimized4_test: pass
-Done dartk-vm debug_x64 language/vm/deopt_hoisted_smi_check_vm_test: pass
-Done dartk-vm debug_x64 language/vm/optimized_list_constructor_test: pass
-Done dartk-vm debug_x64 language/vm/if_conversion_vm_test: pass
-Done dartk-vm debug_x64 language/vm/optimized_identical_test: pass
-Done dartk-vm debug_x64 language/vm/optimized_shl_test: pass
-Done dartk-vm debug_x64 language/vm/uint32_right_shift_test: pass
-Done dartk-vm debug_x64 language/vm/load_elimination_mark_stored_values_escaping_test: pass
-Done dartk-vm debug_x64 language/vm/load_elimination_has_loads_from_place_test: pass
-Done dartk-vm debug_x64 language/vm/no_such_method_error_message_callable_vm_test: pass
-Done dartk-vm debug_x64 language/vm/optimized_check_class_test: pass
-Done dartk-vm debug_x64 language/vm/causal_async_exception_stack_test: pass
-Done dartk-vm debug_x64 language/vm/optimized_try_catch_cha_test: pass
-Done dartk-vm debug_x64 language/vm/unique_selector_test: pass
-Done dartk-vm debug_x64 language/vm/regress_22621_vm_test: pass
-Done dartk-vm debug_x64 language/vm/uint32_add_test: pass
-Done dartk-vm debug_x64 language/vm/store_elimination_vm_test: pass
-Done dartk-vm debug_x64 language/vm/optimized_await_regress_test: pass
-Done dartk-vm debug_x64 language/vm/regress_16873_test: pass
-Done dartk-vm debug_x64 language/vm/reflect_core_vm_test: pass
-Done dartk-vm debug_x64 language/vm/regress_23238_test: pass
-Done dartk-vm debug_x64 language/vm/type_vm_test: pass
-Done dartk-vm debug_x64 language/vm/typed_data_polymorphic_view_test: pass
-Done dartk-vm debug_x64 language/vm/create_array_instr_deopt_test: pass
-Done dartk-vm debug_x64 language/vm/load_elimination_two_redefinitions_test: pass
-Done dartk-vm debug_x64 language/vm/unaligned_float_access_register_index_test: pass
-Done dartk-vm debug_x64 language/vm/regress_28325_test: pass
-Done dartk-vm debug_x64 language/vm/integer_type_propagation2_test: pass
-Done dartk-vm debug_x64 language/vm/load_elimination_any_use_creates_alias_test: pass
-Done dartk-vm debug_x64 language/vm/causal_async_exception_stack2_test: pass
-Done dartk-vm debug_x64 language/vm/deopt_smi_check_vm_test: pass
-Done dartk-vm debug_x64 language/vm/unaligned_float_access_literal_index_test: pass
-Done dartk-vm debug_x64 language/vm/optimized_polymorphic_list_access_test: pass
-Done dartk-vm debug_x64 language/vm/optimization_test: pass
-Done dartk-vm debug_x64 language/vm/optimized_guarded_field_test: pass
-Done dartk-vm debug_x64 language/getters_setters2_test/none: pass
-Done dartk-vm debug_x64 language/vm/regress_14903_test: pass
-Done dartk-vm debug_x64 language/getters_setters2_test/01: pass
-Done dartk-vm debug_x64 language/getters_setters2_test/03: pass
-Done dartk-vm debug_x64 language/getters_setters2_test/02: pass
-Done dartk-vm debug_x64 language/async_switch_test/none: pass
-Done dartk-vm debug_x64 language/constructor_initializer_test/01: pass
-Done dartk-vm debug_x64 language/vm/optimized_guarded_field_isolates_test: pass
-Done dartk-vm debug_x64 language/async_switch_test/withDefault: pass
-Done dartk-vm debug_x64 language/const_constructor_mixin3_test/01: pass
-Done dartk-vm debug_x64 language/constructor_initializer_test/none: pass
-Done dartk-vm debug_x64 language/const_constructor_mixin3_test/none: pass
-Done dartk-vm debug_x64 language/method_override7_test/00: pass
-Done dartk-vm debug_x64 language/method_override7_test/none: pass
-Done dartk-vm debug_x64 language/method_override7_test/01: pass
-Done dartk-vm debug_x64 language/vm/debug_break_vm_test/02: pass
-Done dartk-vm debug_x64 language/method_override7_test/02: pass
-Done dartk-vm debug_x64 language/method_override7_test/03: pass
-Done dartk-vm debug_x64 language/vm/debug_break_vm_test/03: pass
-Done dartk-vm debug_x64 language/vm/debug_break_vm_test/none: pass
-Done dartk-vm debug_x64 language/vm/debug_break_vm_test/01: pass
-Done dartk-vm debug_x64 language/deferred_duplicate_prefix1_test/01: pass
-Done dartk-vm debug_x64 language/vm/debug_break_enabled_vm_test/01: pass
-Done dartk-vm debug_x64 language/vm/debug_break_enabled_vm_test/none: pass
-Done dartk-vm debug_x64 language/deferred_duplicate_prefix1_test/none: pass
-Done dartk-vm debug_x64 language/enum_private_test/none: pass
-Done dartk-vm debug_x64 language/enum_private_test/01: pass
-Done dartk-vm debug_x64 language/enum_private_test/02: pass
-Done dartk-vm debug_x64 language/vm/lazy_deopt_with_exception_and_stacktrace_test: pass
-Done dartk-vm debug_x64 language/vm/regress_21245_test: pass
-Done dartk-vm debug_x64 language/vm/create_array_instr_deopt2_test: pass
-Done dartk-vm debug_x64 language/vm/precompiled_static_initializer_test: pass
-Done dartk-vm debug_x64 language/vm/unaligned_integer_access_literal_index_test: pass
-Done dartk-vm debug_x64 language/vm/regress_24517_test: pass
-Done dartk-vm debug_x64 language/vm/regress_23117_vm_test: pass
-Done dartk-vm debug_x64 language/vm/null_hashcode_optimized_vm_test: pass
-Done dartk-vm debug_x64 language/vm/issue21220_vm_test: pass
-Done dartk-vm debug_x64 language/vm/allocation_sinking_vm_test: pass
-Done dartk-vm debug_x64 language/vm/regress_29137_vm_test: pass
-Done dartk-vm debug_x64 language/vm/regress_22480_test: pass
-Done dartk-vm debug_x64 language/vm/lazy_deopt_vm_test: pass
-Done dartk-vm debug_x64 language/vm/regress_22693_vm_test: pass
-Done dartk-vm debug_x64 language/vm/no_such_method_error_message_vm_test: pass
-Done dartk-vm debug_x64 language/vm/math_vm_test: pass
-Done dartk-vm debug_x64 language/vm/issue11087_vm_test: pass
-Done dartk-vm debug_x64 language/vm/async_await_catch_stacktrace_test: pass
-Done dartk-vm debug_x64 language/vm/lazy_deopt_with_exception_test: pass
-Done dartk-vm debug_x64 language/vm/type_cast_vm_test: pass
-Done dartk-vm debug_x64 language/vm/function_equality_vm_test: pass
-Done dartk-vm debug_x64 language/vm/type_propagation_test: pass
-Done dartk-vm debug_x64 language/vm/load_to_load_unaligned_forwarding_vm_test: pass
-Done dartk-vm debug_x64 language/vm/integer_type_propagation_test: pass
-Done dartk-vm debug_x64 language/vm/regress_22541_vm_test: pass
-Done dartk-vm debug_x64 language/vm/regress_27671_test: pass
-Done dartk-vm debug_x64 language/vm/reusable_boxes_test: pass
-Done dartk-vm debug_x64 language/vm/regress_licm_test: pass
-Done dartk-vm debug_x64 language/vm/optimized_testsmi_test: pass
-Done dartk-vm debug_x64 language/vm/load_to_load_forwarding_vm_test: pass
-Done dartk-vm debug_x64 language/vm/string_polymorphic_test: pass
-Done dartk-vm debug_x64 language/vm/licm_constant_redefinition_vm_test: pass
-Done dartk-vm debug_x64 language/vm/no_such_args_error_message_vm_test: pass
-Done dartk-vm debug_x64 language/vm/canonicalization_preserves_deopt_test: pass
-Done dartk-vm debug_x64 language/vm/store_to_load_forwarding_phis_vm_test: pass
-Done dartk-vm debug_x64 language/vm/unaligned_integer_access_register_index_test: pass
-Done dartk-vm debug_x64 language/vm/optimized_unique_selector_test: pass
-Done dartk-vm debug_x64 language/vm/uint32_shift_test: pass
-Done dartk-vm debug_x64 language/generic_object_type_test: pass
-Done dartk-vm debug_x64 language/top_level_prefixed_declaration_test: pass
-Done dartk-vm debug_x64 language/liveness_test: pass
-Done dartk-vm debug_x64 language/compile_time_constant_b_test: pass
-Done dartk-vm debug_x64 language/lazy_static6_test: pass
-Done dartk-vm debug_x64 language/rethrow_test: pass
-Done dartk-vm debug_x64 language/field_test: pass
-Done dartk-vm debug_x64 language/compile_time_constant_n_test: pass
-Done dartk-vm debug_x64 language/const_redirecting_factory_test: pass
-Done dartk-vm debug_x64 language/state_mangling3_test: pass
-Done dartk-vm debug_x64 language/interface_injection1_negative_test: pass
-Done dartk-vm debug_x64 language/regress_11800_test: pass
-Done dartk-vm debug_x64 language/duplicate_export_test: pass
-Done dartk-vm debug_x64 language/constants_test/01: pass
-Done dartk-vm debug_x64 language/constants_test/02: pass
-Done dartk-vm debug_x64 language/list_tracer_call_last_test: pass
-Done dartk-vm debug_x64 language/constants_test/03: pass
-Done dartk-vm debug_x64 language/constants_test/none: pass
-Done dartk-vm debug_x64 language/constants_test/04: pass
-Done dartk-vm debug_x64 language/bad_raw_string_test/01: pass
-Done dartk-vm debug_x64 language/bad_raw_string_test/02: pass
-Done dartk-vm debug_x64 language/bad_raw_string_test/03: pass
-Done dartk-vm debug_x64 language/bad_raw_string_test/none: pass
-Done dartk-vm debug_x64 language/constants_test/05: pass
-Done dartk-vm debug_x64 language/final_variable_assignment_test/none: pass
-Done dartk-vm debug_x64 language/final_variable_assignment_test/01: pass
-Done dartk-vm debug_x64 language/dynamic2_test/01: pass
-Done dartk-vm debug_x64 language/dynamic2_test/00: pass
-Done dartk-vm debug_x64 language/final_variable_assignment_test/03: pass
-Done dartk-vm debug_x64 language/final_variable_assignment_test/02: pass
-Done dartk-vm debug_x64 language/final_variable_assignment_test/04: pass
-Done dartk-vm debug_x64 language/dynamic2_test/none: pass
-Done dartk-vm debug_x64 language/mixin_illegal_object_test/02: pass
-Done dartk-vm debug_x64 language/mixin_illegal_object_test/01: pass
-Done dartk-vm debug_x64 language/deferred_load_constants_test/none: pass
-Done dartk-vm debug_x64 language/type_promotion_logical_and_test/none: pass
-Done dartk-vm debug_x64 language/type_promotion_logical_and_test/01: pass
-Done dartk-vm debug_x64 language/type_promotion_logical_and_test/03: pass
-Done dartk-vm debug_x64 language/type_promotion_logical_and_test/02: pass
-Done dartk-vm debug_x64 language/mixin_illegal_object_test/none: pass
-Done dartk-vm debug_x64 language/deferred_load_constants_test/01: pass
-Done dartk-vm debug_x64 language/deferred_load_constants_test/02: pass
-Done dartk-vm debug_x64 language/deferred_load_constants_test/04: pass
-Done dartk-vm debug_x64 language/deferred_load_constants_test/03: pass
-Done dartk-vm debug_x64 language/deferred_load_constants_test/05: pass
-Done dartk-vm debug_x64 language/illegal_invocation_test/01: pass
-Done dartk-vm debug_x64 language/illegal_invocation_test/none: pass
-Done dartk-vm debug_x64 language/operator3_test: pass
-Done dartk-vm debug_x64 language/issue4515170_test: pass
-Done dartk-vm debug_x64 language/stack_overflow_stacktrace_test: pass
-Done dartk-vm debug_x64 language/issue9602_test: pass
-Done dartk-vm debug_x64 language/double_to_string_as_precision3_test: pass
-Done dartk-vm debug_x64 language/issue7525_test: pass
-Done dartk-vm debug_x64 language/type_variable_field_initializer_closure2_test: pass
-Done dartk-vm debug_x64 language/initializing_formal_promotion_test: pass
-Done dartk-vm debug_x64 language/call_this_test: pass
-Done dartk-vm debug_x64 language/await_null_aware_test: pass
-Done dartk-vm debug_x64 language/unnamed_closure_test: pass
-Done dartk-vm debug_x64 language/regress_29949_test: pass
-Done dartk-vm debug_x64 language/null_access_error_test: pass
-Done dartk-vm debug_x64 language/deferred_shadow_load_library_test: pass
-Done dartk-vm debug_x64 language/duplicate_interface_negative_test: pass
-Done dartk-vm debug_x64 language/closure_break_test: pass
-Done dartk-vm debug_x64 language/import_core_test: pass
-Done dartk-vm debug_x64 language/interface_static_non_final_fields_negative_test: pass
-Done dartk-vm debug_x64 language/function_subtype_named1_test: pass
-Done dartk-vm debug_x64 language/generic_field_mixin2_test: pass
-Done dartk-vm debug_x64 language/mixin_super_constructor_test: pass
-Done dartk-vm debug_x64 language/config_import_test: pass
-Done dartk-vm debug_x64 language/field3a_negative_test: pass
-Done dartk-vm debug_x64 language/interceptor8_test: pass
-Done dartk-vm debug_x64 language/function_subtype_factory0_test: pass
-Done dartk-vm debug_x64 language/field_parameter_test: pass
-Done dartk-vm debug_x64 language/named_parameters3_test: pass
-Done dartk-vm debug_x64 language/compile_time_constant3_test: pass
-Done dartk-vm debug_x64 language/generic_field_mixin5_test: pass
-Done dartk-vm debug_x64 language/mixin_type_parameter2_test: pass
-Done dartk-vm debug_x64 language/parse_closures_in_initializers_test: pass
-Done dartk-vm debug_x64 language/cyclic_default_values_test: pass
-Done dartk-vm debug_x64 language/do_while_test: pass
-Done dartk-vm debug_x64 language/parser_quirks_test: pass
-Done dartk-vm debug_x64 language/super_call2_test: pass
-Done dartk-vm debug_x64 language/throw6_test: pass
-Done dartk-vm debug_x64 language/function_type_parameter2_negative_test: pass
-Done dartk-vm debug_x64 language/throw2_test: pass
-Done dartk-vm debug_x64 language/typed_selector2_test: pass
-Done dartk-vm debug_x64 language/malbounded_type_literal_test: pass
-Done dartk-vm debug_x64 language/typedef_is_test: pass
-Done dartk-vm debug_x64 language/top_level_method_test: pass
-Done dartk-vm debug_x64 language/cascade_2_test: pass
-Done dartk-vm debug_x64 language/regress_22438_test: pass
-Done dartk-vm debug_x64 language/fannkuch_test: pass
-Done dartk-vm debug_x64 language/generic_field_mixin_test: pass
-Done dartk-vm debug_x64 language/deferred_no_such_method_test: pass
-Done dartk-vm debug_x64 language/top_level_entry_test: pass
-Done dartk-vm debug_x64 language/cascade_test/01: pass
-Done dartk-vm debug_x64 language/cascade_test/03: pass
-Done dartk-vm debug_x64 language/cascade_test/02: pass
-Done dartk-vm debug_x64 language/cascade_test/none: pass
-Done dartk-vm debug_x64 language/const_types_test/none: pass
-Done dartk-vm debug_x64 language/const_types_test/01: pass
-Done dartk-vm debug_x64 language/const_types_test/02: pass
-Done dartk-vm debug_x64 language/const_types_test/07: pass
-Done dartk-vm debug_x64 language/const_types_test/03: pass
-Done dartk-vm debug_x64 language/const_types_test/06: pass
-Done dartk-vm debug_x64 language/const_types_test/04: pass
-Done dartk-vm debug_x64 language/const_types_test/05: pass
-Done dartk-vm debug_x64 language/const_types_test/08: pass
-Done dartk-vm debug_x64 language/const_types_test/09: pass
-Done dartk-vm debug_x64 language/const_types_test/10: pass
-Done dartk-vm debug_x64 language/const_types_test/11: pass
-Done dartk-vm debug_x64 language/const_types_test/12: pass
-Done dartk-vm debug_x64 language/const_types_test/14: pass
-Done dartk-vm debug_x64 language/const_types_test/15: pass
-Done dartk-vm debug_x64 language/const_types_test/16: pass
-Done dartk-vm debug_x64 language/const_types_test/17: pass
-Done dartk-vm debug_x64 language/const_types_test/18: pass
-Done dartk-vm debug_x64 language/const_types_test/19: pass
-Done dartk-vm debug_x64 language/const_types_test/20: pass
-Done dartk-vm debug_x64 language/const_types_test/21: pass
-Done dartk-vm debug_x64 language/const_types_test/22: pass
-Done dartk-vm debug_x64 language/const_types_test/13: pass
-Done dartk-vm debug_x64 language/const_types_test/23: pass
-Done dartk-vm debug_x64 language/const_types_test/24: pass
-Done dartk-vm debug_x64 language/const_types_test/25: pass
-Done dartk-vm debug_x64 language/const_types_test/26: pass
-Done dartk-vm debug_x64 language/const_types_test/27: pass
-Done dartk-vm debug_x64 language/const_types_test/28: pass
-Done dartk-vm debug_x64 language/const_types_test/29: pass
-Done dartk-vm debug_x64 language/const_types_test/30: pass
-Done dartk-vm debug_x64 language/const_types_test/31: pass
-Done dartk-vm debug_x64 language/const_types_test/33: pass
-Done dartk-vm debug_x64 language/const_types_test/32: pass
-Done dartk-vm debug_x64 language/const_types_test/34: pass
-Done dartk-vm debug_x64 language/const_types_test/35: pass
-Done dartk-vm debug_x64 language/const_types_test/38: pass
-Done dartk-vm debug_x64 language/const_types_test/36: pass
-Done dartk-vm debug_x64 language/const_types_test/37: pass
-Done dartk-vm debug_x64 language/const_types_test/41: pass
-Done dartk-vm debug_x64 language/const_types_test/39: pass
-Done dartk-vm debug_x64 language/const_types_test/40: pass
-Done dartk-vm debug_x64 language/constructor_call_as_function_test/none: pass
-Done dartk-vm debug_x64 language/constructor_call_as_function_test/01: pass
-Done dartk-vm debug_x64 language/mixin_forwarding_constructor4_test/none: pass
-Done dartk-vm debug_x64 language/mixin_forwarding_constructor4_test/02: pass
-Done dartk-vm debug_x64 language/mixin_forwarding_constructor4_test/01: pass
-Done dartk-vm debug_x64 language/mixin_forwarding_constructor4_test/03: pass
-Done dartk-vm debug_x64 language/malformed_test/01: pass
-Done dartk-vm debug_x64 language/malformed_test/02: pass
-Done dartk-vm debug_x64 language/malformed_test/03: pass
-Done dartk-vm debug_x64 language/malformed_test/04: pass
-Done dartk-vm debug_x64 language/malformed_test/06: pass
-Done dartk-vm debug_x64 language/malformed_test/none: pass
-Done dartk-vm debug_x64 language/missing_const_constructor_test/03: pass
-Done dartk-vm debug_x64 language/missing_const_constructor_test/02: pass
-Done dartk-vm debug_x64 language/code_after_try_is_executed_test/none: pass
-Done dartk-vm debug_x64 language/issue_25671a_test/none: pass
-Done dartk-vm debug_x64 language/code_after_try_is_executed_test/01: pass
-Done dartk-vm debug_x64 language/issue_25671a_test/01: pass
-Done dartk-vm debug_x64 language/missing_const_constructor_test/none: pass
-Done dartk-vm debug_x64 language/missing_const_constructor_test/01: pass
-Done dartk-vm debug_x64 language/missing_const_constructor_test/05: pass
-Done dartk-vm debug_x64 language/missing_const_constructor_test/04: pass
-Done dartk-vm debug_x64 language/missing_const_constructor_test/06: pass
-Done dartk-vm debug_x64 language/const_constructor_mixin2_test/01: pass
-Done dartk-vm debug_x64 language/const_constructor_mixin2_test/none: pass
-Done dartk-vm debug_x64 language/const_dynamic_type_literal_test/01: pass
-Done dartk-vm debug_x64 language/const_dynamic_type_literal_test/none: pass
-Done dartk-vm debug_x64 language/const_dynamic_type_literal_test/03: pass
-Done dartk-vm debug_x64 language/multiline_newline_test/01: pass
-Done dartk-vm debug_x64 language/const_dynamic_type_literal_test/02: pass
-Done dartk-vm debug_x64 language/multiline_newline_test/none: pass
-Done dartk-vm debug_x64 language/multiline_newline_test/02: pass
-Done dartk-vm debug_x64 language/multiline_newline_test/03: pass
-Done dartk-vm debug_x64 language/multiline_newline_test/01r: pass
-Done dartk-vm debug_x64 language/multiline_newline_test/02r: pass
-Done dartk-vm debug_x64 language/multiline_newline_test/03r: pass
-Done dartk-vm debug_x64 language/multiline_newline_test/05: pass
-Done dartk-vm debug_x64 language/multiline_newline_test/06: pass
-Done dartk-vm debug_x64 language/multiline_newline_test/04: pass
-Done dartk-vm debug_x64 language/multiline_newline_test/04r: pass
-Done dartk-vm debug_x64 language/multiline_newline_test/05r: pass
-Done dartk-vm debug_x64 language/named_constructor_test/02: pass
-Done dartk-vm debug_x64 language/multiline_newline_test/06r: pass
-Done dartk-vm debug_x64 language/regress_19413_test/none: pass
-Done dartk-vm debug_x64 language/regress_19413_test/01: pass
-Done dartk-vm debug_x64 language/named_constructor_test/none: pass
-Done dartk-vm debug_x64 language/named_constructor_test/04: pass
-Done dartk-vm debug_x64 language/named_constructor_test/05: pass
-Done dartk-vm debug_x64 language/named_constructor_test/01: pass
-Done dartk-vm debug_x64 language/named_constructor_test/03: pass
-Done dartk-vm debug_x64 language/named_constructor_test/06: pass
-Done dartk-vm debug_x64 language/named_constructor_test/07: pass
-Done dartk-vm debug_x64 language/named_constructor_test/09: pass
-Done dartk-vm debug_x64 language/named_constructor_test/10: pass
-Done dartk-vm debug_x64 language/deferred_constraints_type_annotation_test/none: pass
-Done dartk-vm debug_x64 language/named_constructor_test/08: pass
-Done dartk-vm debug_x64 language/deferred_constraints_type_annotation_test/type_annotation_null: pass
-Done dartk-vm debug_x64 language/deferred_constraints_type_annotation_test/type_annotation_non_deferred: pass
-Done dartk-vm debug_x64 language/deferred_constraints_type_annotation_test/new_before_load: pass
-Done dartk-vm debug_x64 language/deferred_constraints_type_annotation_test/type_annotation1: pass
-Done dartk-vm debug_x64 language/deferred_constraints_type_annotation_test/type_annotation_generic2: pass
-Done dartk-vm debug_x64 language/deferred_constraints_type_annotation_test/type_annotation_generic1: pass
-Done dartk-vm debug_x64 language/deferred_constraints_type_annotation_test/type_annotation_generic3: pass
-Done dartk-vm debug_x64 language/deferred_constraints_type_annotation_test/type_annotation_generic4: pass
-Done dartk-vm debug_x64 language/deferred_constraints_type_annotation_test/new: pass
-Done dartk-vm debug_x64 language/deferred_constraints_type_annotation_test/new_generic2: pass
-Done dartk-vm debug_x64 language/deferred_constraints_type_annotation_test/new_generic1: pass
-Done dartk-vm debug_x64 language/deferred_constraints_type_annotation_test/new_generic3: pass
-Done dartk-vm debug_x64 language/deferred_constraints_type_annotation_test/is_check: pass
-Done dartk-vm debug_x64 language/deferred_constraints_type_annotation_test/as_operation: pass
-Done dartk-vm debug_x64 language/deferred_constraints_type_annotation_test/type_annotation_top_level: pass
-Done dartk-vm debug_x64 language/deferred_constraints_type_annotation_test/catch_check: pass
-Done dartk-vm debug_x64 language/deferred_constraints_type_annotation_test/static_method: pass
-Done dartk-vm debug_x64 language/issue_1751477_test: pass
-Done dartk-vm debug_x64 language/deferred_redirecting_factory_test: pass
-Done dartk-vm debug_x64 language/var_init_test: pass
-Done dartk-vm debug_x64 language/issue9664_test: pass
-Done dartk-vm debug_x64 language/unbound_getter_test: pass
-Done dartk-vm debug_x64 language/function_subtype_local6_test: pass
-Done dartk-vm debug_x64 language/regress_26543_2_test: pass
-Done dartk-vm debug_x64 language/truncdiv_test: pass
-Done dartk-vm debug_x64 language/issue1578_negative_test: pass
-Done dartk-vm debug_x64 language/initializing_formal_capture_test: pass
-Done dartk-vm debug_x64 language/string_no_operator_test: pass
-Done dartk-vm debug_x64 language/hash_code_mangling_test: pass
-Done dartk-vm debug_x64 language/canonical_const_test: pass
-Done dartk-vm debug_x64 language/generic_constructor_mixin_test: pass
-Done dartk-vm debug_x64 language/getter_closure_execution_order_test: pass
-Done dartk-vm debug_x64 language/initializing_formal_type_test: pass
-Done dartk-vm debug_x64 language/closure8_test: pass
-Done dartk-vm debug_x64 language/field_method4_negative_test: pass
-Done dartk-vm debug_x64 language/mixin_mixin2_test: pass
-Done dartk-vm debug_x64 language/string_escape4_negative_test: pass
-Done dartk-vm debug_x64 language/throw5_test: pass
-Done dartk-vm debug_x64 language/full_stacktrace2_test: pass
-Done dartk-vm debug_x64 language/static_field2a_test: pass
-Done dartk-vm debug_x64 language/list_in_closure_test: pass
-Done dartk-vm debug_x64 language/interceptor4_test: pass
-Done dartk-vm debug_x64 language/inference_list_or_null_test: pass
-Done dartk-vm debug_x64 language/inference_captured_variable2_test: pass
-Done dartk-vm debug_x64 language/constructor8_test: pass
-Done dartk-vm debug_x64 language/instance_creation_in_function_annotation_test: pass
-Done dartk-vm debug_x64 language/dynamic_test: pass
-Done dartk-vm debug_x64 language/inline_closure_with_constant_arguments_test: pass
-Done dartk-vm debug_x64 language/call_property_test: pass
-Done dartk-vm debug_x64 language/prefix2_negative_test: pass
-Done dartk-vm debug_x64 language/function_subtype_not1_test: pass
-Done dartk-vm debug_x64 language/generics3_test: pass
-Done dartk-vm debug_x64 language/scoped_variables_try_catch_test: pass
-Done dartk-vm debug_x64 language/issue_23914_test: pass
-Done dartk-vm debug_x64 language/isnot_malformed_type_test: pass
-Done dartk-vm debug_x64 language/regress_23996_test: pass
-Done dartk-vm debug_x64 language/implicit_closure1_test: pass
-Done dartk-vm debug_x64 language/generic_instanceof4_test: pass
-Done dartk-vm debug_x64 language/compile_time_constant12_test: pass
-Done dartk-vm debug_x64 language/generic_methods_function_type_test: pass
-Done dartk-vm debug_x64 language/crash_12118_test: pass
-Done dartk-vm debug_x64 language/f_bounded_quantification_test/none: pass
-Done dartk-vm debug_x64 language/f_bounded_quantification_test/01: pass
-Done dartk-vm debug_x64 language/f_bounded_quantification_test/02: pass
-Done dartk-vm debug_x64 language/reify_typevar_static_test/00: pass
-Done dartk-vm debug_x64 language/reify_typevar_static_test/none: pass
-Done dartk-vm debug_x64 language/super_no_such_method4_test/none: pass
-Done dartk-vm debug_x64 language/super_no_such_method4_test/01: pass
-Done dartk-vm debug_x64 language/reify_typevar_static_test/01: pass
-Done dartk-vm debug_x64 language/reify_typevar_static_test/02: pass
-Done dartk-vm debug_x64 language/regress_22976_test/01: pass
-Done dartk-vm debug_x64 language/regress_22976_test/none: pass
-Done dartk-vm debug_x64 language/proxy3_test/none: pass
-Done dartk-vm debug_x64 language/reify_typevar_static_test/03: pass
-Done dartk-vm debug_x64 language/regress_22976_test/02: pass
-Done dartk-vm debug_x64 language/proxy3_test/01: pass
-Done dartk-vm debug_x64 language/class_keyword_test/02: pass
-Done dartk-vm debug_x64 language/proxy3_test/02: pass
-Done dartk-vm debug_x64 language/class_keyword_test/01: pass
-Done dartk-vm debug_x64 language/proxy3_test/03: pass
-Done dartk-vm debug_x64 language/const_instance_field_test/none: pass
-Done dartk-vm debug_x64 language/class_keyword_test/none: pass
-Done dartk-vm debug_x64 language/proxy3_test/04: pass
-Done dartk-vm debug_x64 language/const_instance_field_test/01: pass
-Done dartk-vm debug_x64 language/null_bottom_test/03: pass
-Done dartk-vm debug_x64 language/null_bottom_test/none: pass
-Done dartk-vm debug_x64 language/final_param_test/none: pass
-Done dartk-vm debug_x64 language/final_param_test/01: pass
-Done dartk-vm debug_x64 language/mixin_invalid_bound_test/01: pass
-Done dartk-vm debug_x64 language/mixin_invalid_bound_test/03: pass
-Done dartk-vm debug_x64 language/mixin_invalid_bound_test/none: pass
-Done dartk-vm debug_x64 language/mixin_invalid_bound_test/02: pass
-Done dartk-vm debug_x64 language/mixin_invalid_bound_test/05: pass
-Done dartk-vm debug_x64 language/mixin_invalid_bound_test/04: pass
-Done dartk-vm debug_x64 language/mixin_invalid_bound_test/06: pass
-Done dartk-vm debug_x64 language/mixin_invalid_bound_test/07: pass
-Done dartk-vm debug_x64 language/mixin_invalid_bound_test/08: pass
-Done dartk-vm debug_x64 language/mixin_invalid_bound_test/09: pass
-Done dartk-vm debug_x64 language/mixin_invalid_bound_test/10: pass
-Done dartk-vm debug_x64 language/type_promotion_closure_test/none: pass
-Done dartk-vm debug_x64 language/type_promotion_closure_test/01: pass
-Done dartk-vm debug_x64 language/type_promotion_closure_test/02: pass
-Done dartk-vm debug_x64 language/type_promotion_closure_test/03: pass
-Done dartk-vm debug_x64 language/type_promotion_closure_test/04: pass
-Done dartk-vm debug_x64 language/type_promotion_closure_test/16: pass
-Done dartk-vm debug_x64 language/type_promotion_closure_test/05: pass
-Done dartk-vm debug_x64 language/type_promotion_closure_test/15: pass
-Done dartk-vm debug_x64 language/type_promotion_closure_test/06: pass
-Done dartk-vm debug_x64 language/type_promotion_closure_test/07: pass
-Done dartk-vm debug_x64 language/type_promotion_closure_test/14: pass
-Done dartk-vm debug_x64 language/type_promotion_closure_test/08: pass
-Done dartk-vm debug_x64 language/type_promotion_closure_test/09: pass
-Done dartk-vm debug_x64 language/type_promotion_closure_test/11: pass
-Done dartk-vm debug_x64 language/type_promotion_closure_test/12: pass
-Done dartk-vm debug_x64 language/type_promotion_closure_test/10: pass
-Done dartk-vm debug_x64 language/library_ambiguous_test/05: pass
-Done dartk-vm debug_x64 language/type_promotion_closure_test/13: pass
-Done dartk-vm debug_x64 language/library_ambiguous_test/none: pass
-Done dartk-vm debug_x64 language/library_ambiguous_test/00: pass
-Done dartk-vm debug_x64 language/library_ambiguous_test/01: pass
-Done dartk-vm debug_x64 language/function_subtype_bound_closure2_test: pass
-Done dartk-vm debug_x64 language/library_ambiguous_test/03: pass
-Done dartk-vm debug_x64 language/library_ambiguous_test/02: pass
-Done dartk-vm debug_x64 language/library_ambiguous_test/04: pass
-Done dartk-vm debug_x64 language/function_subtype_optional2_test: pass
-Done dartk-vm debug_x64 language/canonical_const3_test: pass
-Done dartk-vm debug_x64 language/regress_28610_test: pass
-Done dartk-vm debug_x64 language/closure_self_reference_test: pass
-Done dartk-vm debug_x64 language/function_subtype_bound_closure7_test: pass
-Done dartk-vm debug_x64 language/covariant_override_test: pass
-Done dartk-vm debug_x64 language/library_prefixes_test: pass
-Done dartk-vm debug_x64 language/rewrite_swap_test: pass
-Done dartk-vm debug_x64 language/local_function_non_equal_test: pass
-Done dartk-vm debug_x64 language/mixin_bound_test: pass
-Done dartk-vm debug_x64 language/library5_test: pass
-Done dartk-vm debug_x64 language/closure_break1_test: pass
-Done dartk-vm debug_x64 language/round_test: pass
-Done dartk-vm debug_x64 language/private_test: pass
-Done dartk-vm debug_x64 language/deep_nesting2_negative_test: pass
-Done dartk-vm debug_x64 language/asyncstar_concat_test: pass
-Done dartk-vm debug_x64 language/optimized_string_charat_test: pass
-Done dartk-vm debug_x64 language/no_such_method3_test: pass
-Done dartk-vm debug_x64 language/setter2_test: pass
-Done dartk-vm debug_x64 language/licm2_test: pass
-Done dartk-vm debug_x64 language/new_expression3_negative_test: pass
-Done dartk-vm debug_x64 language/multi_pass2_test: pass
-Done dartk-vm debug_x64 language/function_type3_test: pass
-Done dartk-vm debug_x64 language/symbol_conflict_test: pass
-Done dartk-vm debug_x64 language/inline_value_context_test: pass
-Done dartk-vm debug_x64 language/regress_26543_1_test: pass
-Done dartk-vm debug_x64 language/regress_27572_test: pass
-Done dartk-vm debug_x64 language/constant_fold_equals_test: pass
-Done dartk-vm debug_x64 language/regress_29349_test: pass
-Done dartk-vm debug_x64 language/static_field1a_test: pass
-Done dartk-vm debug_x64 language/factory2_negative_test: pass
-Done dartk-vm debug_x64 language/issue14014_3_test: pass
-Done dartk-vm debug_x64 language/inline_super_field_test: pass
-Done dartk-vm debug_x64 language/inline_effect_context_test: pass
-Done dartk-vm debug_x64 language/constructor12_test: pass
-Done dartk-vm debug_x64 language/context_test: pass
-Done dartk-vm debug_x64 language/super_test: pass
-Done dartk-vm debug_x64 language/exception_in_increment_test: pass
-Done dartk-vm debug_x64 language/malformed_type_test: pass
-Done dartk-vm debug_x64 language/type_argument_substitution_test: pass
-Done dartk-vm debug_x64 language/interface_inherit_field_test: pass
-Done dartk-vm debug_x64 language/double_to_string_as_exponential2_test: pass
-Done dartk-vm debug_x64 language/type_variable_field_initializer_test: pass
-Done dartk-vm debug_x64 language/conditional_rewrite_test: pass
-Done dartk-vm debug_x64 language/inferrer_this_access_test: pass
-Done dartk-vm debug_x64 language/rewrite_while_many_exits_test: pass
-Done dartk-vm debug_x64 language/super_operator_index6_test: pass
-Done dartk-vm debug_x64 language/mixin_super_bound2_test/01: pass
-Done dartk-vm debug_x64 language/mixin_super_bound2_test/none: pass
-Done dartk-vm debug_x64 language/bad_override_test/none: pass
-Done dartk-vm debug_x64 language/bad_override_test/01: pass
-Done dartk-vm debug_x64 language/bad_override_test/03: pass
-Done dartk-vm debug_x64 language/bad_override_test/02: pass
-Done dartk-vm debug_x64 language/bad_override_test/04: pass
-Done dartk-vm debug_x64 language/bad_override_test/05: pass
-Done dartk-vm debug_x64 language/bad_override_test/06: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/none: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/01: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/06: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/03: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/02: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/04: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/07: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/08: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/09: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/10: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/12: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/11: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/13: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/14: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/15: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/16: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/17: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/18: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/20: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/19: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/22: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/21: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/23: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/24: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/25: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/26: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/27: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/28: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/29: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/30: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/05: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/31: pass
-Done dartk-vm debug_x64 language/cyclic_class_member_test/01: pass
-Done dartk-vm debug_x64 language/regress_26855_test/0: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/32: pass
-Done dartk-vm debug_x64 language/regress_26855_test/1: pass
-Done dartk-vm debug_x64 language/override_inheritance_method_test/33: pass
-Done dartk-vm debug_x64 language/cyclic_class_member_test/none: pass
-Done dartk-vm debug_x64 language/regress_26855_test/2: pass
-Done dartk-vm debug_x64 language/regress_26855_test/none: pass
-Done dartk-vm debug_x64 language/regress_26855_test/3: pass
-Done dartk-vm debug_x64 language/regress_26855_test/4: pass
-Done dartk-vm debug_x64 language/const_constructor_test/01: pass
-Done dartk-vm debug_x64 language/const_constructor_test/none: pass
-Done dartk-vm debug_x64 language/static_getter_no_setter3_test/none: pass
-Done dartk-vm debug_x64 language/static_getter_no_setter3_test/01: pass
-Done dartk-vm debug_x64 language/bool_condition_check_test/01: pass
-Done dartk-vm debug_x64 language/bool_condition_check_test/none: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/none: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/01: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/02: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/23: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/24: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/03: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/25: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/04: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/26: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/27: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/28: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/05: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/06: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/07: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/08: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/29: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/09: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/30: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/31: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/10: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/11: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/12: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/13: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/32: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/20: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/21: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/34: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/35: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/33: pass
-Done dartk-vm debug_x64 language/conditional_property_assignment_test/22: pass
-Done dartk-vm debug_x64 language/enum_duplicate_test/none: pass
-Done dartk-vm debug_x64 language/enum_duplicate_test/01: pass
-Done dartk-vm debug_x64 language/enum_duplicate_test/02: pass
-Done dartk-vm debug_x64 language/mixin_type_parameter6_test: pass
-Done dartk-vm debug_x64 language/generic_syntax_test: pass
-Done dartk-vm debug_x64 language/constructor_redirect1_negative_test: pass
-Done dartk-vm debug_x64 language/inlined_conditional_test: pass
-Done dartk-vm debug_x64 language/is_interfaces_test: pass
-Done dartk-vm debug_x64 language/deferred_inlined_test: pass
-Done dartk-vm debug_x64 language/closure_call_wrong_argument_count_negative_test: pass
-Done dartk-vm debug_x64 language/source_self_negative_test: pass
-Done dartk-vm debug_x64 language/closure_internals_test: pass
-Done dartk-vm debug_x64 language/mixin_implements_test: pass
-Done dartk-vm debug_x64 language/for_in_test: pass
-Done dartk-vm debug_x64 language/stack_overflow_test: pass
-Done dartk-vm debug_x64 language/on_catch_malformed_type_test: pass
-Done dartk-vm debug_x64 language/exception_identity_test: pass
-Done dartk-vm debug_x64 language/issue10561_test: pass
-Done dartk-vm debug_x64 language/inline_super_test: pass
-Done dartk-vm debug_x64 language/positive_bit_operations_test: pass
-Done dartk-vm debug_x64 language/parameter_initializer1_negative_test: pass
-Done dartk-vm debug_x64 language/regress_12561_test: pass
-Done dartk-vm debug_x64 language/super_operator_index8_test: pass
-Done dartk-vm debug_x64 language/default_class_implicit_constructor_test: pass
-Done dartk-vm debug_x64 language/constructor_default_test: pass
-Done dartk-vm debug_x64 language/non_const_super_negative_test: pass
-Done dartk-vm debug_x64 language/optimized_lists_test: pass
-Done dartk-vm debug_x64 language/mixin_super_test: pass
-Done dartk-vm debug_x64 language/regress_23650_test: pass
-Done dartk-vm debug_x64 language/deferred_load_inval_code_test: pass
-Done dartk-vm debug_x64 language/async_star_test: pass
-Done dartk-vm debug_x64 language/regress_29243_test: pass
-Done dartk-vm debug_x64 language/constructor_with_mixin_test: pass
-Done dartk-vm debug_x64 language/map_literal8_test: pass
-Done dartk-vm debug_x64 language/instanceof_test: pass
-Done dartk-vm debug_x64 language/issue12284_test: pass
-Done dartk-vm debug_x64 language/first_class_types_test: pass
-Done dartk-vm debug_x64 language/static_field1_test: pass
-Done dartk-vm debug_x64 language/compile_time_constant_l_test: pass
-Done dartk-vm debug_x64 language/number_syntax_test: pass
-Done dartk-vm debug_x64 language/syncstar_less_than_test: pass
-Done dartk-vm debug_x64 language/prefix14_test: pass
-Done dartk-vm debug_x64 language/instance_method_negative_test: pass
-Done dartk-vm debug_x64 language/type_guard_conversion_test: pass
-Done dartk-vm debug_x64 language/interface_constants_test: pass
-Done dartk-vm debug_x64 language/prefix1_negative_test: pass
-Done dartk-vm debug_x64 language/function_subtype1_test: pass
-Done dartk-vm debug_x64 language/new_prefix_test/01: pass
-Done dartk-vm debug_x64 language/new_prefix_test/none: pass
-Done dartk-vm debug_x64 language/named_parameters_type_test/none: pass
-Done dartk-vm debug_x64 language/function_type_alias9_test/00: pass
-Done dartk-vm debug_x64 language/function_type_alias9_test/none: pass
-Done dartk-vm debug_x64 language/named_parameters_type_test/01: pass
-Done dartk-vm debug_x64 language/named_parameters_type_test/02: pass
-Done dartk-vm debug_x64 language/named_parameters_type_test/03: pass
-Done dartk-vm debug_x64 language/type_variable_scope3_test/00: pass
-Done dartk-vm debug_x64 language/const_objects_are_immutable_test/none: pass
-Done dartk-vm debug_x64 language/const_objects_are_immutable_test/01: pass
-Done dartk-vm debug_x64 language/type_variable_scope3_test/none: pass
-Done dartk-vm debug_x64 language/main_test/01: pass
-Done dartk-vm debug_x64 language/main_test/02: pass
-Done dartk-vm debug_x64 language/main_test/none: pass
-Done dartk-vm debug_x64 language/main_test/04: pass
-Done dartk-vm debug_x64 language/main_test/03: pass
-Done dartk-vm debug_x64 language/main_test/20: pass
-Done dartk-vm debug_x64 language/main_test/05: pass
-Done dartk-vm debug_x64 language/main_test/21: pass
-Done dartk-vm debug_x64 language/main_test/41: pass
-Done dartk-vm debug_x64 language/main_test/22: pass
-Done dartk-vm debug_x64 language/main_test/42: pass
-Done dartk-vm debug_x64 language/main_test/43: pass
-Done dartk-vm debug_x64 language/main_test/44: pass
-Done dartk-vm debug_x64 language/least_upper_bound_expansive_test/none: pass
-Done dartk-vm debug_x64 language/main_test/45: pass
-Done dartk-vm debug_x64 language/least_upper_bound_expansive_test/01: pass
-Done dartk-vm debug_x64 language/least_upper_bound_expansive_test/03: pass
-Done dartk-vm debug_x64 language/least_upper_bound_expansive_test/02: pass
-Done dartk-vm debug_x64 language/least_upper_bound_expansive_test/04: pass
-Done dartk-vm debug_x64 language/least_upper_bound_expansive_test/05: pass
-Done dartk-vm debug_x64 language/least_upper_bound_expansive_test/06: pass
-Done dartk-vm debug_x64 language/least_upper_bound_expansive_test/07: pass
-Done dartk-vm debug_x64 language/least_upper_bound_expansive_test/08: pass
-Done dartk-vm debug_x64 language/least_upper_bound_expansive_test/09: pass
-Done dartk-vm debug_x64 language/string_interpolation3_test/01: pass
-Done dartk-vm debug_x64 language/ref_before_declaration_test/00: pass
-Done dartk-vm debug_x64 language/ref_before_declaration_test/01: pass
-Done dartk-vm debug_x64 language/least_upper_bound_expansive_test/10: pass
-Done dartk-vm debug_x64 language/least_upper_bound_expansive_test/11: pass
-Done dartk-vm debug_x64 language/string_interpolation3_test/none: pass
-Done dartk-vm debug_x64 language/least_upper_bound_expansive_test/12: pass
-Done dartk-vm debug_x64 language/ref_before_declaration_test/02: pass
-Done dartk-vm debug_x64 language/ref_before_declaration_test/none: pass
-Done dartk-vm debug_x64 language/ref_before_declaration_test/03: pass
-Done dartk-vm debug_x64 language/ref_before_declaration_test/06: pass
-Done dartk-vm debug_x64 language/ref_before_declaration_test/07: pass
-Done dartk-vm debug_x64 language/ref_before_declaration_test/05: pass
-Done dartk-vm debug_x64 language/ref_before_declaration_test/04: pass
-Done dartk-vm debug_x64 language/super_call3_test/01: pass
-Done dartk-vm debug_x64 language/super_call3_test/02: pass
-Done dartk-vm debug_x64 language/super_call3_test/none: pass
-Done dartk-vm debug_x64 language/field3_negative_test: pass
-Done dartk-vm debug_x64 language/new_expression1_negative_test: pass
-Done dartk-vm debug_x64 language/switch8_test: pass
-Done dartk-vm debug_x64 language/constructor5_test: pass
-Done dartk-vm debug_x64 language/redirecting_factory_incompatible_signature_test: pass
-Done dartk-vm debug_x64 language/closures_with_complex_params_test: pass
-Done dartk-vm debug_x64 language/bailout7_test: pass
-Done dartk-vm debug_x64 language/interface2_negative_test: pass
-Done dartk-vm debug_x64 language/function_type_call_getter_test: pass
-Done dartk-vm debug_x64 language/method_binding_test: pass
-Done dartk-vm debug_x64 language/efficient_length_warning_test: pass
-Done dartk-vm debug_x64 language/optimized_constant_array_string_access_test: pass
-Done dartk-vm debug_x64 language/closure_variable_shadow_test: pass
-Done dartk-vm debug_x64 language/type_propagation3_test: pass
-Done dartk-vm debug_x64 language/many_calls_test: pass
-Done dartk-vm debug_x64 language/metadata_test: pass
-Done dartk-vm debug_x64 language/unary_plus_negative_test: pass
-Done dartk-vm debug_x64 language/static_initializer_type_error_test: pass
-Done dartk-vm debug_x64 language/const_redirect_skips_supertype_test: pass
-Done dartk-vm debug_x64 language/issue13474_test: pass
-Done dartk-vm debug_x64 language/do_while2_test: pass
-Done dartk-vm debug_x64 language/factory2_test: pass
-Done dartk-vm debug_x64 language/prefix13_negative_test: pass
-Done dartk-vm debug_x64 language/empty_block_case_test: pass
-Done dartk-vm debug_x64 language/function_subtype_call0_test: pass
-Done dartk-vm debug_x64 language/string_interpolation7_test: pass
-Done dartk-vm debug_x64 language/constant_string_interpolation2_test: pass
-Done dartk-vm debug_x64 language/function_subtype_simple0_test: pass
-Done dartk-vm debug_x64 language/regress_27164_test: pass
-Done dartk-vm debug_x64 language/malbounded_type_cast_test: pass
-Done dartk-vm debug_x64 language/function_subtype_inline2_test: pass
-Done dartk-vm debug_x64 language/function_subtype_local2_test: pass
-Done dartk-vm debug_x64 language/constant_string_interpolation_test: pass
-Done dartk-vm debug_x64 language/static_implicit_closure_test: pass
-Done dartk-vm debug_x64 language/static_implicit_closure_test: pass
-Done dartk-vm debug_x64 language/prefix3_negative_test: pass
-Done dartk-vm debug_x64 language/field_method_test: pass
-Done dartk-vm debug_x64 language/mixin_super_2_test: pass
-Done dartk-vm debug_x64 language/generic_creation_test: pass
-Done dartk-vm debug_x64 language/factory_implementation_test/none: pass
-Done dartk-vm debug_x64 language/function_literals_test: pass
-Done dartk-vm debug_x64 language/factory_implementation_test/00: pass
-Done dartk-vm debug_x64 language/sync_generator2_test/01: pass
-Done dartk-vm debug_x64 language/field_type_check2_test/none: pass
-Done dartk-vm debug_x64 language/sync_generator2_test/02: pass
-Done dartk-vm debug_x64 language/field_type_check2_test/01: pass
-Done dartk-vm debug_x64 language/sync_generator2_test/05: pass
-Done dartk-vm debug_x64 language/sync_generator2_test/03: pass
-Done dartk-vm debug_x64 language/sync_generator2_test/04: pass
-Done dartk-vm debug_x64 language/sync_generator2_test/none: pass
-Done dartk-vm debug_x64 language/sync_generator2_test/06: pass
-Done dartk-vm debug_x64 language/sync_generator2_test/07: pass
-Done dartk-vm debug_x64 language/sync_generator2_test/09: pass
-Done dartk-vm debug_x64 language/sync_generator2_test/10: pass
-Done dartk-vm debug_x64 language/sync_generator2_test/08: pass
-Done dartk-vm debug_x64 language/sync_generator2_test/20: pass
-Done dartk-vm debug_x64 language/sync_generator2_test/11: pass
-Done dartk-vm debug_x64 language/sync_generator2_test/30: pass
-Done dartk-vm debug_x64 language/sync_generator2_test/40: pass
-Done dartk-vm debug_x64 language/sync_generator2_test/50: pass
-Done dartk-vm debug_x64 language/sync_generator2_test/41: pass
-Done dartk-vm debug_x64 language/sync_generator2_test/51: pass
-Done dartk-vm debug_x64 language/sync_generator2_test/52: pass
-Done dartk-vm debug_x64 language/static_final_field2_test/02: pass
-Done dartk-vm debug_x64 language/static_final_field2_test/none: pass
-Done dartk-vm debug_x64 language/static_final_field2_test/01: pass
-Done dartk-vm debug_x64 language/check_member_static_test/none: pass
-Done dartk-vm debug_x64 language/check_member_static_test/01: pass
-Done dartk-vm debug_x64 language/type_variable_bounds3_test/none: pass
-Done dartk-vm debug_x64 language/get_set_syntax_test/00: pass
-Done dartk-vm debug_x64 language/check_member_static_test/02: pass
-Done dartk-vm debug_x64 language/type_variable_bounds3_test/00: pass
-Done dartk-vm debug_x64 language/get_set_syntax_test/none: pass
-Done dartk-vm debug_x64 language/get_set_syntax_test/02: pass
-Done dartk-vm debug_x64 language/get_set_syntax_test/01: pass
-Done dartk-vm debug_x64 language/get_set_syntax_test/05: pass
-Done dartk-vm debug_x64 language/get_set_syntax_test/04: pass
-Done dartk-vm debug_x64 language/get_set_syntax_test/03: pass
-Done dartk-vm debug_x64 language/get_set_syntax_test/06: pass
-Done dartk-vm debug_x64 language/get_set_syntax_test/07: pass
-Done dartk-vm debug_x64 language/get_set_syntax_test/09: pass
-Done dartk-vm debug_x64 language/get_set_syntax_test/10: pass
-Done dartk-vm debug_x64 language/get_set_syntax_test/11: pass
-Done dartk-vm debug_x64 language/get_set_syntax_test/14: pass
-Done dartk-vm debug_x64 language/get_set_syntax_test/15: pass
-Done dartk-vm debug_x64 language/get_set_syntax_test/13: pass
-Done dartk-vm debug_x64 language/mixin_illegal_constructor_test/01: pass
-Done dartk-vm debug_x64 language/redirecting_factory_infinite_steps_test/02: pass
-Done dartk-vm debug_x64 language/mixin_illegal_constructor_test/02: pass
-Done dartk-vm debug_x64 language/mixin_illegal_constructor_test/03: pass
-Done dartk-vm debug_x64 language/mixin_illegal_constructor_test/04: pass
-Done dartk-vm debug_x64 language/redirecting_factory_infinite_steps_test/none: pass
-Done dartk-vm debug_x64 language/redirecting_factory_infinite_steps_test/01: pass
-Done dartk-vm debug_x64 language/mixin_illegal_constructor_test/05: pass
-Done dartk-vm debug_x64 language/mixin_illegal_constructor_test/none: pass
-Done dartk-vm debug_x64 language/mixin_illegal_constructor_test/06: pass
-Done dartk-vm debug_x64 language/mixin_illegal_constructor_test/07: pass
-Done dartk-vm debug_x64 language/mixin_illegal_constructor_test/08: pass
-Done dartk-vm debug_x64 language/mixin_illegal_constructor_test/09: pass
-Done dartk-vm debug_x64 language/mixin_illegal_constructor_test/10: pass
-Done dartk-vm debug_x64 language/mixin_illegal_constructor_test/11: pass
-Done dartk-vm debug_x64 language/mixin_illegal_constructor_test/12: pass
-Done dartk-vm debug_x64 language/mixin_illegal_constructor_test/13: pass
-Done dartk-vm debug_x64 language/mixin_illegal_constructor_test/15: pass
-Done dartk-vm debug_x64 language/mixin_illegal_constructor_test/14: pass
-Done dartk-vm debug_x64 language/mixin_illegal_constructor_test/16: pass
-Done dartk-vm debug_x64 language/issue18628_1_test/none: pass
-Done dartk-vm debug_x64 language/library_env_test/none: pass
-Done dartk-vm debug_x64 language/issue18628_1_test/01: pass
-Done dartk-vm debug_x64 language/library_env_test/has_html_support: pass
-Done dartk-vm debug_x64 language/library_env_test/has_no_html_support: pass
-Done dartk-vm debug_x64 language/library_env_test/has_no_io_support: pass
-Done dartk-vm debug_x64 language/library_env_test/has_io_support: pass
-Done dartk-vm debug_x64 language/library_env_test/has_no_mirror_support: pass
-Done dartk-vm debug_x64 language/library_env_test/has_mirror_support: pass
-Done dartk-vm debug_x64 language/cyclic_metadata_test/none: pass
-Done dartk-vm debug_x64 language/cyclic_metadata_test/01: pass
-Done dartk-vm debug_x64 language/cyclic_metadata_test/02: pass
-Done dartk-vm debug_x64 language/override_inheritance_generic_test/none: pass
-Done dartk-vm debug_x64 language/override_inheritance_generic_test/02: pass
-Done dartk-vm debug_x64 language/override_inheritance_generic_test/01: pass
-Done dartk-vm debug_x64 language/override_inheritance_generic_test/04: pass
-Done dartk-vm debug_x64 language/override_inheritance_generic_test/07: pass
-Done dartk-vm debug_x64 language/override_inheritance_generic_test/05: pass
-Done dartk-vm debug_x64 language/override_inheritance_generic_test/03: pass
-Done dartk-vm debug_x64 language/override_inheritance_generic_test/06: pass
-Done dartk-vm debug_x64 language/toplevel_collision2_test/00: pass
-Done dartk-vm debug_x64 language/toplevel_collision2_test/01: pass
-Done dartk-vm debug_x64 language/override_inheritance_generic_test/08: pass
-Done dartk-vm debug_x64 language/override_inheritance_generic_test/09: pass
-Done dartk-vm debug_x64 language/override_inheritance_generic_test/10: pass
-Done dartk-vm debug_x64 language/toplevel_collision2_test/none: pass
-Done dartk-vm debug_x64 language/regress_26453_test: pass
-Done dartk-vm debug_x64 language/implied_interface_test: pass
-Done dartk-vm debug_x64 language/const_map4_test: pass
-Done dartk-vm debug_x64 language/inferrer_synthesized_super_constructor_test: pass
-Done dartk-vm debug_x64 language/field5_negative_test: pass
-Done dartk-vm debug_x64 language/await_not_started_immediately_test: pass
-Done dartk-vm debug_x64 language/return_in_loop_test: pass
-Done dartk-vm debug_x64 language/function_subtype_simple1_test: pass
-Done dartk-vm debug_x64 language/map_literal4_test: pass
-Done dartk-vm debug_x64 language/loop_exchange4_test: pass
-Done dartk-vm debug_x64 language/is_not_class1_negative_test: pass
-Done dartk-vm debug_x64 language/mixin_type_parameter1_test: pass
-Done dartk-vm debug_x64 language/operator_equals_test: pass
-Done dartk-vm debug_x64 language/null_to_string_test: pass
-Done dartk-vm debug_x64 language/lazy_static_test: pass
-Done dartk-vm debug_x64 language/malbounded_type_test2_test: pass
-Done dartk-vm debug_x64 language/regress_22666_test: pass
-Done dartk-vm debug_x64 language/lazy_static3_test: pass
-Done dartk-vm debug_x64 language/load_indexed_constant_test: pass
-Done dartk-vm debug_x64 language/call_through_getter_test: pass
-Done dartk-vm debug_x64 language/skip_expression_test: pass
-Done dartk-vm debug_x64 language/private2_test: pass
-Done dartk-vm debug_x64 language/rewrite_nested_if3_test: pass
-Done dartk-vm debug_x64 language/list_is_test: pass
-Done dartk-vm debug_x64 language/function_subtype_inline0_test: pass
-Done dartk-vm debug_x64 language/execute_finally10_test: pass
-Done dartk-vm debug_x64 language/top_level_in_initializer_test: pass
-Done dartk-vm debug_x64 language/stacktrace_rethrow_nonerror_test: pass
-Done dartk-vm debug_x64 language/function_subtype_bound_closure1_test: pass
-Done dartk-vm debug_x64 language/prefix6_negative_test: pass
-Done dartk-vm debug_x64 language/closure_in_field_initializer_test: pass
-Done dartk-vm debug_x64 language/many_method_calls_test: pass
-Done dartk-vm debug_x64 language/named_parameter_regression_test: pass
-Done dartk-vm debug_x64 language/deopt_smi_op_test: pass
-Done dartk-vm debug_x64 language/second_test: pass
-Done dartk-vm debug_x64 language/namer_test: pass
-Done dartk-vm debug_x64 language/dynamic_type_literal_test: pass
-Done dartk-vm debug_x64 language/hash_map_null_key_foreach_test: pass
-Done dartk-vm debug_x64 language/mixin_mixin4_test: pass
-Done dartk-vm debug_x64 language/ct_const4_test: pass
-Done dartk-vm debug_x64 language/lazy_map_test: pass
-Done dartk-vm debug_x64 language/closure_cycles_test: pass
-Done dartk-vm debug_x64 language/mixin_illegal_cycles_test/01: pass
-Done dartk-vm debug_x64 language/f_bounded_quantification4_test: pass
-Done dartk-vm debug_x64 language/mixin_illegal_cycles_test/02: pass
-Done dartk-vm debug_x64 language/mixin_illegal_cycles_test/04: pass
-Done dartk-vm debug_x64 language/mixin_illegal_cycles_test/03: pass
-Done dartk-vm debug_x64 language/const_init_test: pass
-Done dartk-vm debug_x64 language/mixin_illegal_cycles_test/05: pass
-Done dartk-vm debug_x64 language/double_int_addition_test: pass
-Done dartk-vm debug_x64 language/mixin_illegal_cycles_test/none: pass
-Done dartk-vm debug_x64 language/mixin_illegal_cycles_test/06: pass
-Done dartk-vm debug_x64 language/function_type_alias7_test/02: pass
-Done dartk-vm debug_x64 language/function_type_alias7_test/00: pass
-Done dartk-vm debug_x64 language/function_type_alias7_test/01: pass
-Done dartk-vm debug_x64 language/external_test/02: pass
-Done dartk-vm debug_x64 language/external_test/01: pass
-Done dartk-vm debug_x64 language/function_type_alias7_test/none: pass
-Done dartk-vm debug_x64 language/external_test/12: pass
-Done dartk-vm debug_x64 language/external_test/11: pass
-Done dartk-vm debug_x64 language/external_test/none: pass
-Done dartk-vm debug_x64 language/external_test/14: pass
-Done dartk-vm debug_x64 language/external_test/16: pass
-Done dartk-vm debug_x64 language/external_test/10: pass
-Done dartk-vm debug_x64 language/external_test/21: pass
-Done dartk-vm debug_x64 language/external_test/22: pass
-Done dartk-vm debug_x64 language/external_test/23: pass
-Done dartk-vm debug_x64 language/external_test/13: pass
-Done dartk-vm debug_x64 language/external_test/24: pass
-Done dartk-vm debug_x64 language/external_test/25: pass
-Done dartk-vm debug_x64 language/external_test/30: pass
-Done dartk-vm debug_x64 language/external_test/31: pass
-Done dartk-vm debug_x64 language/external_test/20: pass
-Done dartk-vm debug_x64 language/malbounded_redirecting_factory_test/none: pass
-Done dartk-vm debug_x64 language/malbounded_redirecting_factory_test/02: pass
-Done dartk-vm debug_x64 language/malbounded_redirecting_factory_test/03: pass
-Done dartk-vm debug_x64 language/static_getter_no_setter2_test/none: pass
-Done dartk-vm debug_x64 language/malbounded_redirecting_factory_test/04: pass
-Done dartk-vm debug_x64 language/malbounded_redirecting_factory_test/01: pass
-Done dartk-vm debug_x64 language/static_getter_no_setter2_test/01: pass
-Done dartk-vm debug_x64 language/const_error_multiply_initialized_test/none: pass
-Done dartk-vm debug_x64 language/const_error_multiply_initialized_test/02: pass
-Done dartk-vm debug_x64 language/const_error_multiply_initialized_test/01: pass
-Done dartk-vm debug_x64 language/const_error_multiply_initialized_test/03: pass
-Done dartk-vm debug_x64 language/const_error_multiply_initialized_test/04: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked5_test/none: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked5_test/01: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked5_test/02: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked5_test/03: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked5_test/04: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked5_test/05: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked5_test/06: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked5_test/08: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked5_test/07: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked5_test/09: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked5_test/10: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked5_test/11: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked5_test/12: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked5_test/14: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked5_test/13: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked5_test/15: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked5_test/16: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked5_test/17: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked5_test/18: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked5_test/19: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked5_test/20: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked5_test/21: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked5_test/22: pass
-Done dartk-vm debug_x64 language/string_interpolation6_test/01: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked5_test/24: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked5_test/23: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked5_test/25: pass
-Done dartk-vm debug_x64 language/string_interpolation6_test/none: pass
-Done dartk-vm debug_x64 language/const_constructor_mixin_test/01: pass
-Done dartk-vm debug_x64 language/final_is_not_const_test/01: pass
-Done dartk-vm debug_x64 language/const_constructor_mixin_test/none: pass
-Done dartk-vm debug_x64 language/final_is_not_const_test/none: pass
-Done dartk-vm debug_x64 language/type_promotion_multiple_test/none: pass
-Done dartk-vm debug_x64 language/type_promotion_multiple_test/01: pass
-Done dartk-vm debug_x64 language/type_promotion_multiple_test/02: pass
-Done dartk-vm debug_x64 language/type_promotion_multiple_test/03: pass
-Done dartk-vm debug_x64 language/type_promotion_multiple_test/04: pass
-Done dartk-vm debug_x64 language/type_promotion_multiple_test/05: pass
-Done dartk-vm debug_x64 language/type_promotion_multiple_test/06: pass
-Done dartk-vm debug_x64 language/type_promotion_multiple_test/07: pass
-Done dartk-vm debug_x64 language/type_promotion_multiple_test/08: pass
-Done dartk-vm debug_x64 language/type_promotion_multiple_test/09: pass
-Done dartk-vm debug_x64 language/type_promotion_multiple_test/10: pass
-Done dartk-vm debug_x64 language/type_promotion_multiple_test/11: pass
-Done dartk-vm debug_x64 language/type_promotion_multiple_test/12: pass
-Done dartk-vm debug_x64 language/type_promotion_multiple_test/13: pass
-Done dartk-vm debug_x64 language/type_promotion_multiple_test/14: pass
-Done dartk-vm debug_x64 language/type_promotion_multiple_test/15: pass
-Done dartk-vm debug_x64 language/type_promotion_multiple_test/16: pass
-Done dartk-vm debug_x64 language/type_promotion_multiple_test/18: pass
-Done dartk-vm debug_x64 language/type_promotion_multiple_test/19: pass
-Done dartk-vm debug_x64 language/type_promotion_multiple_test/17: pass
-Done dartk-vm debug_x64 language/type_promotion_multiple_test/20: pass
-Done dartk-vm debug_x64 language/deferred_type_dependency_test/none: pass
-Done dartk-vm debug_x64 language/type_promotion_multiple_test/21: pass
-Done dartk-vm debug_x64 language/deferred_type_dependency_test/is: pass
-Done dartk-vm debug_x64 language/deferred_type_dependency_test/as: pass
-Done dartk-vm debug_x64 language/deferred_type_dependency_test/type_annotation: pass
-Done dartk-vm debug_x64 language/type_promotion_multiple_test/22: pass
-Done dartk-vm debug_x64 language/const_escape_frog_test: pass
-Done dartk-vm debug_x64 language/null_no_such_method_test: pass
-Done dartk-vm debug_x64 language/asyncstar_throw_in_catch_test: pass
-Done dartk-vm debug_x64 language/lazy_static5_test: pass
-Done dartk-vm debug_x64 language/state_mangling_test: pass
-Done dartk-vm debug_x64 language/regress_25935_test: pass
-Done dartk-vm debug_x64 language/closure5_test: pass
-Done dartk-vm debug_x64 language/refine_receiver_null_test: pass
-Done dartk-vm debug_x64 language/regress_22443_test: pass
-Done dartk-vm debug_x64 language/function_type_parameter_test: pass
-Done dartk-vm debug_x64 language/top_level_var_test: pass
-Done dartk-vm debug_x64 language/field_override2_test: pass
-Done dartk-vm debug_x64 language/import_combinators_test: pass
-Done dartk-vm debug_x64 language/private_mixin2_test: pass
-Done dartk-vm debug_x64 language/mixin_superclass_test: pass
-Done dartk-vm debug_x64 language/initializing_formal_final_test: pass
-Done dartk-vm debug_x64 language/method_name_test: pass
-Done dartk-vm debug_x64 language/string_intrinsics_test: pass
-Done dartk-vm debug_x64 language/generic_sends_test: pass
-Done dartk-vm debug_x64 language/bailout6_test: pass
-Done dartk-vm debug_x64 language/part_test: pass
-Done dartk-vm debug_x64 language/is_object_test: pass
-Done dartk-vm debug_x64 language/super_mixin_test: pass
-Done dartk-vm debug_x64 language/multiline_strings_test: pass
-Done dartk-vm debug_x64 language/parameter_initializer4_negative_test: pass
-Done dartk-vm debug_x64 language/throw_expr_test: pass
-Done dartk-vm debug_x64 language/type_propagation_phi_test: pass
-Done dartk-vm debug_x64 language/parse_types_test: pass
-Done dartk-vm debug_x64 language/mixin_type_parameters_super_test: pass
-Done dartk-vm debug_x64 language/reg_exp3_test: pass
-Done dartk-vm debug_x64 language/export_test: pass
-Done dartk-vm debug_x64 language/evaluation_redirecting_constructor_test: pass
-Done dartk-vm debug_x64 language/closure_with_super_field_test: pass
-Done dartk-vm debug_x64 language/mul_recipr_test: pass
-Done dartk-vm debug_x64 language/closure3_test: pass
-Done dartk-vm debug_x64 language/label5_negative_test: pass
-Done dartk-vm debug_x64 language/function_subtype_not3_test: pass
-Done dartk-vm debug_x64 language/cha_deopt2_test: pass
-Done dartk-vm debug_x64 language/null_to_string2_test: pass
-Done dartk-vm debug_x64 language/super_call_test: pass
-Done dartk-vm debug_x64 language/super_operator_index3_test: pass
-Done dartk-vm debug_x64 language/super_field_test: pass
-Done dartk-vm debug_x64 language/cha_deopt2_test: pass
-Done dartk-vm debug_x64 language/import_show_test: pass
-Done dartk-vm debug_x64 language/regress_22858_test: pass
-Done dartk-vm debug_x64 language/null_is_test: pass
-Done dartk-vm debug_x64 language/library_juxtaposition_test: pass
-Done dartk-vm debug_x64 language/mint_arithmetic_test: pass
-Done dartk-vm debug_x64 language/initializing_formal_access_test: pass
-Done dartk-vm debug_x64 language/operator2_test: pass
-Done dartk-vm debug_x64 language/function_subtype_named2_test: pass
-Done dartk-vm debug_x64 language/top_level_getter_no_setter2_test/none: pass
-Done dartk-vm debug_x64 language/named_parameters_default_eq_test/01: pass
-Done dartk-vm debug_x64 language/default_factory_test/01: pass
-Done dartk-vm debug_x64 language/default_factory_test/none: pass
-Done dartk-vm debug_x64 language/top_level_getter_no_setter2_test/01: pass
-Done dartk-vm debug_x64 language/named_parameters_default_eq_test/none: pass
-Done dartk-vm debug_x64 language/override_inheritance_mixed_test/none: pass
-Done dartk-vm debug_x64 language/override_inheritance_mixed_test/01: pass
-Done dartk-vm debug_x64 language/named_parameters_default_eq_test/02: pass
-Done dartk-vm debug_x64 language/override_inheritance_mixed_test/02: pass
-Done dartk-vm debug_x64 language/override_inheritance_mixed_test/03: pass
-Done dartk-vm debug_x64 language/override_inheritance_mixed_test/04: pass
-Done dartk-vm debug_x64 language/override_inheritance_mixed_test/05: pass
-Done dartk-vm debug_x64 language/override_inheritance_mixed_test/06: pass
-Done dartk-vm debug_x64 language/override_inheritance_mixed_test/07: pass
-Done dartk-vm debug_x64 language/override_inheritance_mixed_test/08: pass
-Done dartk-vm debug_x64 language/override_inheritance_mixed_test/09: pass
-Done dartk-vm debug_x64 language/syncstar_yield_test/none: pass
-Done dartk-vm debug_x64 language/substring_test/01: pass
-Done dartk-vm debug_x64 language/syncstar_yield_test/copyParameters: pass
-Done dartk-vm debug_x64 language/substring_test/none: pass
-Done dartk-vm debug_x64 language/type_promotion_assign_test/none: pass
-Done dartk-vm debug_x64 language/type_promotion_assign_test/01: pass
-Done dartk-vm debug_x64 language/type_promotion_assign_test/03: pass
-Done dartk-vm debug_x64 language/type_promotion_assign_test/02: pass
-Done dartk-vm debug_x64 language/type_promotion_assign_test/04: pass
-Done dartk-vm debug_x64 language/positional_parameters_type_test/01: pass
-Done dartk-vm debug_x64 language/positional_parameters_type_test/none: pass
-Done dartk-vm debug_x64 language/positional_parameters_type_test/02: pass
-Done dartk-vm debug_x64 language/mixin_supertype_subclass3_test/none: pass
-Done dartk-vm debug_x64 language/mixin_supertype_subclass3_test/02: pass
-Done dartk-vm debug_x64 language/mixin_supertype_subclass3_test/01: pass
-Done dartk-vm debug_x64 language/mixin_supertype_subclass3_test/03: pass
-Done dartk-vm debug_x64 language/compile_time_constant_arguments_test/01: pass
-Done dartk-vm debug_x64 language/compile_time_constant_arguments_test/02: pass
-Done dartk-vm debug_x64 language/mixin_supertype_subclass3_test/04: pass
-Done dartk-vm debug_x64 language/compile_time_constant_arguments_test/04: pass
-Done dartk-vm debug_x64 language/compile_time_constant_arguments_test/03: pass
-Done dartk-vm debug_x64 language/compile_time_constant_arguments_test/none: pass
-Done dartk-vm debug_x64 language/mixin_supertype_subclass3_test/05: pass
-Done dartk-vm debug_x64 language/compile_time_constant_arguments_test/06: pass
-Done dartk-vm debug_x64 language/compile_time_constant_arguments_test/05: pass
-Done dartk-vm debug_x64 language/const_conditional_test/01: pass
-Done dartk-vm debug_x64 language/const_conditional_test/04: pass
-Done dartk-vm debug_x64 language/const_conditional_test/03: pass
-Done dartk-vm debug_x64 language/const_conditional_test/02: pass
-Done dartk-vm debug_x64 language/const_conditional_test/07: pass
-Done dartk-vm debug_x64 language/const_conditional_test/05: pass
-Done dartk-vm debug_x64 language/const_conditional_test/06: pass
-Done dartk-vm debug_x64 language/const_conditional_test/none: pass
-Done dartk-vm debug_x64 language/const_conditional_test/09: pass
-Done dartk-vm debug_x64 language/const_conditional_test/10: pass
-Done dartk-vm debug_x64 language/const_conditional_test/08: pass
-Done dartk-vm debug_x64 language/method_override3_test/none: pass
-Done dartk-vm debug_x64 language/method_override3_test/00: pass
-Done dartk-vm debug_x64 language/method_override3_test/02: pass
-Done dartk-vm debug_x64 language/method_override3_test/01: pass
-Done dartk-vm debug_x64 language/malbounded_instantiation_test/none: pass
-Done dartk-vm debug_x64 language/malbounded_instantiation_test/02: pass
-Done dartk-vm debug_x64 language/malbounded_instantiation_test/01: pass
-Done dartk-vm debug_x64 language/malbounded_instantiation_test/03: pass
-Done dartk-vm debug_x64 language/super_closure_test: pass
-Done dartk-vm debug_x64 language/list_double_index_in_loop2_test: pass
-Done dartk-vm debug_x64 language/methods_as_constants_test: pass
-Done dartk-vm debug_x64 language/issue11793_test: pass
-Done dartk-vm debug_x64 language/naming_test: pass
-Done dartk-vm debug_x64 language/named_parameters_passing_false_test: pass
-Done dartk-vm debug_x64 language/function_type_alias4_test: pass
-Done dartk-vm debug_x64 language/optimized_hoisting_checked_mode_assert_test: pass
-Done dartk-vm debug_x64 language/regress_30092_test: pass
-Done dartk-vm debug_x64 language/function_subtype_setter0_test: pass
-Done dartk-vm debug_x64 language/issue1363_test: pass
-Done dartk-vm debug_x64 language/mixin_illegal_static_access_test: pass
-Done dartk-vm debug_x64 language/mint_compares_test: pass
-Done dartk-vm debug_x64 language/mixin_lib_extends_method_test: pass
-Done dartk-vm debug_x64 language/function_subtype_top_level1_test: pass
-Done dartk-vm debug_x64 language/deferred_static_seperate_test: pass
-Done dartk-vm debug_x64 language/smaller_4_Interface_Types_A11_t01_test: pass
-Done dartk-vm debug_x64 language/first_class_types_constants_test: pass
-Done dartk-vm debug_x64 language/div_with_power_of_two_test: pass
-Done dartk-vm debug_x64 language/string_charcode_test: pass
-Done dartk-vm debug_x64 language/mixin_forwarding_constructor3_test: pass
-Done dartk-vm debug_x64 language/execute_finally5_test: pass
-Done dartk-vm debug_x64 language/generic_function_typedef_test: pass
-Done dartk-vm debug_x64 language/yieldstar_pause_test: pass
-Done dartk-vm debug_x64 language/regress_25609_test: pass
-Done dartk-vm debug_x64 language/regress_14105_test: pass
-Done dartk-vm debug_x64 language/closure_side_effect_test: pass
-Done dartk-vm debug_x64 language/private4_test: pass
-Done dartk-vm debug_x64 language/closure6_test: pass
-Done dartk-vm debug_x64 language/bailout4_test: pass
-Done dartk-vm debug_x64 language/const_var_test: pass
-Done dartk-vm debug_x64 language/execute_finally4_test: pass
-Done dartk-vm debug_x64 language/redirecting_factory_long_test: pass
-Done dartk-vm debug_x64 language/inline_argument_test: pass
-Done dartk-vm debug_x64 language/throw_test: pass
-Done dartk-vm debug_x64 language/guess_cid_test: pass
-Done dartk-vm debug_x64 language/value_range2_test: pass
-Done dartk-vm debug_x64 language/instance_call_wrong_argument_count_negative_test: pass
-Done dartk-vm debug_x64 language/gvn_interceptor_test: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked3_test/none: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked3_test/03: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked3_test/01: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked3_test/04: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked3_test/05: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked3_test/02: pass
-Done dartk-vm debug_x64 language/number_identifier_test/01: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked3_test/06: pass
-Done dartk-vm debug_x64 language/const_native_factory_test/none: pass
-Done dartk-vm debug_x64 language/const_native_factory_test/01: pass
-Done dartk-vm debug_x64 language/number_identifier_test/04: pass
-Done dartk-vm debug_x64 language/number_identifier_test/none: pass
-Done dartk-vm debug_x64 language/number_identifier_test/06: pass
-Done dartk-vm debug_x64 language/number_identifier_test/07: pass
-Done dartk-vm debug_x64 language/number_identifier_test/11: pass
-Done dartk-vm debug_x64 language/number_identifier_test/10: pass
-Done dartk-vm debug_x64 language/number_identifier_test/05: pass
-Done dartk-vm debug_x64 language/number_identifier_test/03: pass
-Done dartk-vm debug_x64 language/number_identifier_test/02: pass
-Done dartk-vm debug_x64 language/number_identifier_test/08: pass
-Done dartk-vm debug_x64 language/number_identifier_test/09: pass
-Done dartk-vm debug_x64 language/is_malformed_type_test/none: pass
-Done dartk-vm debug_x64 language/is_malformed_type_test/98: pass
-Done dartk-vm debug_x64 language/is_malformed_type_test/99: pass
-Done dartk-vm debug_x64 language/is_malformed_type_test/97: pass
-Done dartk-vm debug_x64 language/is_malformed_type_test/96: pass
-Done dartk-vm debug_x64 language/is_malformed_type_test/95: pass
-Done dartk-vm debug_x64 language/is_malformed_type_test/94: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/none: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/01: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/02: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/03: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/04: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/05: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/06: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/07: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/08: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/09: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/10: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/11: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/12: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/13: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/15: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/14: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/16: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/17: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/18: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/19: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/20: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/23: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/24: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/22: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/21: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/25: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/27: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/26: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/28: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/31: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/29: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/30: pass
-Done dartk-vm debug_x64 language/least_upper_bound_test/32: pass
-Done dartk-vm debug_x64 language/mixin_supertype_subclass4_test/none: pass
-Done dartk-vm debug_x64 language/mixin_supertype_subclass4_test/01: pass
-Done dartk-vm debug_x64 language/mixin_supertype_subclass4_test/02: pass
-Done dartk-vm debug_x64 language/mixin_supertype_subclass4_test/03: pass
-Done dartk-vm debug_x64 language/mixin_supertype_subclass4_test/05: pass
-Done dartk-vm debug_x64 language/mixin_supertype_subclass4_test/04: pass
-Done dartk-vm debug_x64 language/string_interpolation_test/none: pass
-Done dartk-vm debug_x64 language/string_interpolation_test/01: pass
-Done dartk-vm debug_x64 language/mixin_black_listed_test/01: pass
-Done dartk-vm debug_x64 language/mixin_black_listed_test/none: pass
-Done dartk-vm debug_x64 language/mixin_black_listed_test/03: pass
-Done dartk-vm debug_x64 language/mixin_black_listed_test/05: pass
-Done dartk-vm debug_x64 language/mixin_black_listed_test/04: pass
-Done dartk-vm debug_x64 language/mixin_black_listed_test/07: pass
-Done dartk-vm debug_x64 language/mixin_black_listed_test/06: pass
-Done dartk-vm debug_x64 language/mixin_black_listed_test/08: pass
-Done dartk-vm debug_x64 language/mixin_black_listed_test/02: pass
-Done dartk-vm debug_x64 language/class_syntax_test/01: pass
-Done dartk-vm debug_x64 language/class_cycle_test/00: pass
-Done dartk-vm debug_x64 language/class_cycle_test/01: pass
-Done dartk-vm debug_x64 language/class_syntax_test/none: pass
-Done dartk-vm debug_x64 language/class_cycle_test/none: pass
-Done dartk-vm debug_x64 language/compile_time_constant10_test/01: pass
-Done dartk-vm debug_x64 language/compile_time_constant10_test/02: pass
-Done dartk-vm debug_x64 language/class_cycle_test/02: pass
-Done dartk-vm debug_x64 language/class_cycle_test/03: pass
-Done dartk-vm debug_x64 language/illegal_declaration_test/01: pass
-Done dartk-vm debug_x64 language/compile_time_constant10_test/none: pass
-Done dartk-vm debug_x64 language/illegal_declaration_test/none: pass
-Done dartk-vm debug_x64 language/not_enough_positional_arguments_test/none: pass
-Done dartk-vm debug_x64 language/not_enough_positional_arguments_test/01: pass
-Done dartk-vm debug_x64 language/not_enough_positional_arguments_test/02: pass
-Done dartk-vm debug_x64 language/not_enough_positional_arguments_test/00: pass
-Done dartk-vm debug_x64 language/not_enough_positional_arguments_test/05: pass
-Done dartk-vm debug_x64 language/not_enough_positional_arguments_test/03: pass
-Done dartk-vm debug_x64 language/not_enough_positional_arguments_test/06: pass
-Done dartk-vm debug_x64 language/not_enough_positional_arguments_test/07: pass
-Done dartk-vm debug_x64 language/built_in_identifier_test/none: pass
-Done dartk-vm debug_x64 language/built_in_identifier_test/01: pass
-Done dartk-vm debug_x64 language/bad_named_parameters2_test/none: pass
-Done dartk-vm debug_x64 language/bad_named_parameters2_test/01: pass
-Done dartk-vm debug_x64 language/fixed_type_variable2_test/none: pass
-Done dartk-vm debug_x64 language/fixed_type_variable2_test/01: pass
-Done dartk-vm debug_x64 language/fixed_type_variable2_test/02: pass
-Done dartk-vm debug_x64 language/fixed_type_variable2_test/03: pass
-Done dartk-vm debug_x64 language/deferred_super_dependency_test/01: pass
-Done dartk-vm debug_x64 language/fixed_type_variable2_test/04: pass
-Done dartk-vm debug_x64 language/fixed_type_variable2_test/06: pass
-Done dartk-vm debug_x64 language/fixed_type_variable2_test/05: pass
-Done dartk-vm debug_x64 language/deferred_super_dependency_test/none: pass
-Done dartk-vm debug_x64 language/crash_6725_test/none: pass
-Done dartk-vm debug_x64 language/crash_6725_test/01: pass
-Done dartk-vm debug_x64 language/function_subtype_call2_test: pass
-Done dartk-vm debug_x64 language/mixin_this_use_test: pass
-Done dartk-vm debug_x64 language/rewrite_nested_if2_test: pass
-Done dartk-vm debug_x64 language/identical_closure2_test: pass
-Done dartk-vm debug_x64 language/invocation_mirror2_test: pass
-Done dartk-vm debug_x64 language/mixin_method_test: pass
-Done dartk-vm debug_x64 language/constructor3_test: pass
-Done dartk-vm debug_x64 language/regress_21016_test: pass
-Done dartk-vm debug_x64 language/temp_mangling_test: pass
-Done dartk-vm debug_x64 language/switch5_negative_test: pass
-Done dartk-vm debug_x64 language/function_subtype_local1_test: pass
-Done dartk-vm debug_x64 language/transitive_private_library_access_test: pass
-Done dartk-vm debug_x64 language/function_subtype_bound_closure5a_test: pass
-Done dartk-vm debug_x64 language/final_used_in_try_test: pass
-Done dartk-vm debug_x64 language/rewrite_compound_assign_test: pass
-Done dartk-vm debug_x64 language/local_function_test: pass
-Done dartk-vm debug_x64 language/bit_shift_test: pass
-Done dartk-vm debug_x64 language/try_catch_regress_27483_test: pass
-Done dartk-vm debug_x64 language/inline_in_for_initializer_and_bailout_test: pass
-Done dartk-vm debug_x64 language/try_catch_optimized3_test: pass
-Done dartk-vm debug_x64 language/bootstrap_test: pass
-Done dartk-vm debug_x64 language/conflicting_type_variable_and_setter_test: pass
-Done dartk-vm debug_x64 language/interceptor3_test: pass
-Done dartk-vm debug_x64 language/map_literal3_test: pass
-Done dartk-vm debug_x64 language/regress_23046_test: pass
-Done dartk-vm debug_x64 language/closure_test: pass
-Done dartk-vm debug_x64 language/top_level_multiple_files_test: pass
-Done dartk-vm debug_x64 language/generic_instanceof2_test: pass
-Done dartk-vm debug_x64 language/mixin_is_test: pass
-Done dartk-vm debug_x64 language/function_subtype_typearg5_test: pass
-Done dartk-vm debug_x64 language/regress_23537_test: pass
-Done dartk-vm debug_x64 language/mixin_type_parameter4_test: pass
-Done dartk-vm debug_x64 language/side_effect_throw_test: pass
-Done dartk-vm debug_x64 language/malbounded_type_test_test/none: pass
-Done dartk-vm debug_x64 language/malbounded_type_test_test/01: pass
-Done dartk-vm debug_x64 language/field_optimization_test: pass
-Done dartk-vm debug_x64 language/malbounded_type_test_test/02: pass
-Done dartk-vm debug_x64 language/malbounded_type_test_test/03: pass
-Done dartk-vm debug_x64 language/compile_time_constant_k_test/none: pass
-Done dartk-vm debug_x64 language/malbounded_type_test_test/04: pass
-Done dartk-vm debug_x64 language/compile_time_constant_k_test/01: pass
-Done dartk-vm debug_x64 language/compile_time_constant_k_test/02: pass
-Done dartk-vm debug_x64 language/issue_22780_test/none: pass
-Done dartk-vm debug_x64 language/compile_time_constant_k_test/03: pass
-Done dartk-vm debug_x64 language/issue_22780_test/01: pass
-Done dartk-vm debug_x64 language/interface_test/none: pass
-Done dartk-vm debug_x64 language/redirecting_factory_default_values_test/none: pass
-Done dartk-vm debug_x64 language/interface_test/00: pass
-Done dartk-vm debug_x64 language/redirecting_factory_default_values_test/01: pass
-Done dartk-vm debug_x64 language/unsigned_right_shift_test/01: pass
-Done dartk-vm debug_x64 language/unsigned_right_shift_test/02: pass
-Done dartk-vm debug_x64 language/type_variable_bounds4_test/01: pass
-Done dartk-vm debug_x64 language/type_variable_bounds4_test/none: pass
-Done dartk-vm debug_x64 language/redirecting_factory_default_values_test/02: pass
-Done dartk-vm debug_x64 language/unsigned_right_shift_test/none: pass
-Done dartk-vm debug_x64 language/regress_24935_test/none: pass
-Done dartk-vm debug_x64 language/regress_24935_test/01: pass
-Done dartk-vm debug_x64 language/cyclic_type_test/none: pass
-Done dartk-vm debug_x64 language/cyclic_type_test/00: pass
-Done dartk-vm debug_x64 language/cyclic_type_test/01: pass
-Done dartk-vm debug_x64 language/cyclic_type_test/02: pass
-Done dartk-vm debug_x64 language/cyclic_type_test/03: pass
-Done dartk-vm debug_x64 language/list_literal_syntax_test/00: pass
-Done dartk-vm debug_x64 language/cyclic_type_test/04: pass
-Done dartk-vm debug_x64 language/list_literal_syntax_test/04: pass
-Done dartk-vm debug_x64 language/list_literal_syntax_test/05: pass
-Done dartk-vm debug_x64 language/list_literal_syntax_test/none: pass
-Done dartk-vm debug_x64 language/list_literal_syntax_test/06: pass
-Done dartk-vm debug_x64 language/list_literal_syntax_test/07: pass
-Done dartk-vm debug_x64 language/list_literal_syntax_test/01: pass
-Done dartk-vm debug_x64 language/list_literal_syntax_test/02: pass
-Done dartk-vm debug_x64 language/list_literal_syntax_test/03: pass
-Done dartk-vm debug_x64 language/compile_time_constant_p_test/01: pass
-Done dartk-vm debug_x64 language/compile_time_constant_p_test/none: pass
-Done dartk-vm debug_x64 language/field_override3_test/none: pass
-Done dartk-vm debug_x64 language/field_override3_test/00: pass
-Done dartk-vm debug_x64 language/field_override3_test/01: pass
-Done dartk-vm debug_x64 language/field_override3_test/02: pass
-Done dartk-vm debug_x64 language/field_override3_test/03: pass
-Done dartk-vm debug_x64 language/const_init2_test/none: pass
-Done dartk-vm debug_x64 language/const_init2_test/01: pass
-Done dartk-vm debug_x64 language/const_init2_test/02: pass
-Done dartk-vm debug_x64 language/override_method_with_field_test/none: pass
-Done dartk-vm debug_x64 language/setter_override2_test/none: pass
-Done dartk-vm debug_x64 language/override_method_with_field_test/01: pass
-Done dartk-vm debug_x64 language/override_method_with_field_test/02: pass
-Done dartk-vm debug_x64 language/setter_override2_test/00: pass
-Done dartk-vm debug_x64 language/setter_override2_test/01: pass
-Done dartk-vm debug_x64 language/mixin_invalid_inheritance2_test/01: pass
-Done dartk-vm debug_x64 language/setter_override2_test/02: pass
-Done dartk-vm debug_x64 language/mixin_invalid_inheritance2_test/03: pass
-Done dartk-vm debug_x64 language/mixin_invalid_inheritance2_test/02: pass
-Done dartk-vm debug_x64 language/setter_override2_test/03: pass
-Done dartk-vm debug_x64 language/mixin_invalid_inheritance2_test/none: pass
-Done dartk-vm debug_x64 language/optional_named_parameters_test/none: pass
-Done dartk-vm debug_x64 language/optional_named_parameters_test/01: pass
-Done dartk-vm debug_x64 language/optional_named_parameters_test/02: pass
-Done dartk-vm debug_x64 language/optional_named_parameters_test/04: pass
-Done dartk-vm debug_x64 language/optional_named_parameters_test/03: pass
-Done dartk-vm debug_x64 language/optional_named_parameters_test/05: pass
-Done dartk-vm debug_x64 language/optional_named_parameters_test/06: pass
-Done dartk-vm debug_x64 language/optional_named_parameters_test/07: pass
-Done dartk-vm debug_x64 language/optional_named_parameters_test/08: pass
-Done dartk-vm debug_x64 language/optional_named_parameters_test/09: pass
-Done dartk-vm debug_x64 language/override_inheritance_abstract_test/none: pass
-Done dartk-vm debug_x64 language/override_inheritance_abstract_test/01: pass
-Done dartk-vm debug_x64 language/override_inheritance_abstract_test/06: pass
-Done dartk-vm debug_x64 language/override_inheritance_abstract_test/05: pass
-Done dartk-vm debug_x64 language/override_inheritance_abstract_test/08: pass
-Done dartk-vm debug_x64 language/override_inheritance_abstract_test/07: pass
-Done dartk-vm debug_x64 language/override_inheritance_abstract_test/09: pass
-Done dartk-vm debug_x64 language/override_inheritance_abstract_test/10: pass
-Done dartk-vm debug_x64 language/override_inheritance_abstract_test/12: pass
-Done dartk-vm debug_x64 language/override_inheritance_abstract_test/11: pass
-Done dartk-vm debug_x64 language/override_inheritance_abstract_test/14: pass
-Done dartk-vm debug_x64 language/override_inheritance_abstract_test/13: pass
-Done dartk-vm debug_x64 language/override_inheritance_abstract_test/18: pass
-Done dartk-vm debug_x64 language/override_inheritance_abstract_test/27: pass
-Done dartk-vm debug_x64 language/override_inheritance_abstract_test/15: pass
-Done dartk-vm debug_x64 language/override_inheritance_abstract_test/16: pass
-Done dartk-vm debug_x64 language/override_inheritance_abstract_test/19: pass
-Done dartk-vm debug_x64 language/override_inheritance_abstract_test/17: pass
-Done dartk-vm debug_x64 language/override_inheritance_abstract_test/20: pass
-Done dartk-vm debug_x64 language/override_inheritance_abstract_test/21: pass
-Done dartk-vm debug_x64 language/override_inheritance_abstract_test/22: pass
-Done dartk-vm debug_x64 language/override_inheritance_abstract_test/23: pass
-Done dartk-vm debug_x64 language/override_inheritance_abstract_test/24: pass
-Done dartk-vm debug_x64 language/override_inheritance_abstract_test/25: pass
-Done dartk-vm debug_x64 language/override_inheritance_abstract_test/26: pass
-Done dartk-vm debug_x64 language/override_inheritance_abstract_test/02: pass
-Done dartk-vm debug_x64 language/override_inheritance_abstract_test/03: pass
-Done dartk-vm debug_x64 language/override_inheritance_abstract_test/04: pass
-Done dartk-vm debug_x64 language/getter_no_setter2_test/none: pass
-Done dartk-vm debug_x64 language/getter_no_setter2_test/02: pass
-Done dartk-vm debug_x64 language/getter_no_setter2_test/03: pass
-Done dartk-vm debug_x64 language/getter_no_setter2_test/00: pass
-Done dartk-vm debug_x64 language/getter_no_setter2_test/01: pass
-Done dartk-vm debug_x64 language/const_map3_test/none: pass
-Done dartk-vm debug_x64 language/const_map3_test/00: pass
-Done dartk-vm debug_x64 language/switch_fallthru_test: pass
-Done dartk-vm debug_x64 language/bailout_test: pass
-Done dartk-vm debug_x64 language/type_variable_initializer_test: pass
-Done dartk-vm debug_x64 language/local_function3_test: pass
-Done dartk-vm debug_x64 language/private_member_test: pass
-Done dartk-vm debug_x64 language/prefix101_test: pass
-Done dartk-vm debug_x64 language/function_subtype_cast3_test: pass
-Done dartk-vm debug_x64 language/deferred_optimized_test: pass
-Done dartk-vm debug_x64 language/loop_exchange3_test: pass
-Done dartk-vm debug_x64 language/multi_pass_test: pass
-Done dartk-vm debug_x64 language/inline_test_context_test: pass
-Done dartk-vm debug_x64 language/string_unicode2_negative_test: pass
-Done dartk-vm debug_x64 language/operator2_negative_test: pass
-Done dartk-vm debug_x64 language/string_escapes_test: pass
-Done dartk-vm debug_x64 language/const_string_test: pass
-Done dartk-vm debug_x64 language/rewrite_if_swap_test: pass
-Done dartk-vm debug_x64 language/mixin_mixin_bound_test: pass
-Done dartk-vm debug_x64 language/modulo_test: pass
-Done dartk-vm debug_x64 language/invocation_mirror_empty_arguments_test: pass
-Done dartk-vm debug_x64 language/function_subtype_bound_closure3_test: pass
-Done dartk-vm debug_x64 language/optimized_setter_test: pass
-Done dartk-vm debug_x64 language/metadata_self_test: pass
-Done dartk-vm debug_x64 language/deep_nesting1_negative_test: pass
-Done dartk-vm debug_x64 language/compile_time_constant9_test: pass
-Done dartk-vm debug_x64 language/smaller_4_Interface_Types_A11_t02_test: pass
-Done dartk-vm debug_x64 language/call_through_null_getter_test: pass
-Done dartk-vm debug_x64 language/regress_22719_test: pass
-Done dartk-vm debug_x64 language/string_unicode1_negative_test: pass
-Done dartk-vm debug_x64 language/compile_time_constant_q_test: pass
-Done dartk-vm debug_x64 language/string_unicode3_negative_test: pass
-Done dartk-vm debug_x64 language/list_literal_test: pass
-Done dartk-vm debug_x64 language/function_type_alias2_test: pass
-Done dartk-vm debug_x64 language/regress_20840_test: pass
-Done dartk-vm debug_x64 language/emit_const_fields_test: pass
-Done dartk-vm debug_x64 language/ct_const2_test: pass
-Done dartk-vm debug_x64 language/catch_liveness_test: pass
-Done dartk-vm debug_x64 language/test_negative_test: pass
-Done dartk-vm debug_x64 language/async_await_test: pass
-Done dartk-vm debug_x64 language/regress_28278_test: pass
-Done dartk-vm debug_x64 language/full_stacktrace1_test: pass
-Done dartk-vm debug_x64 language/regress_28278_test: pass
-Done dartk-vm debug_x64 language/ct_const2_test: pass
-Done dartk-vm debug_x64 language/invocation_mirror_test: pass
-Done dartk-vm debug_x64 language/issue10747_test: pass
-Done dartk-vm debug_x64 language/list_literal_negative_test: pass
-Done dartk-vm debug_x64 language/regress_19728_test: pass
-Done dartk-vm debug_x64 language/context2_test: pass
-Done dartk-vm debug_x64 language/export_private_test/01: pass
-Done dartk-vm debug_x64 language/export_private_test/none: pass
-Done dartk-vm debug_x64 language/try_catch_test/01: pass
-Done dartk-vm debug_x64 language/try_catch_test/none: pass
-Done dartk-vm debug_x64 language/mixin_supertype_subclass_test/none: pass
-Done dartk-vm debug_x64 language/mixin_supertype_subclass_test/01: pass
-Done dartk-vm debug_x64 language/mixin_supertype_subclass_test/02: pass
-Done dartk-vm debug_x64 language/mixin_supertype_subclass_test/04: pass
-Done dartk-vm debug_x64 language/mixin_supertype_subclass_test/03: pass
-Done dartk-vm debug_x64 language/mixin_supertype_subclass_test/05: pass
-Done dartk-vm debug_x64 language/getter_override2_test/none: pass
-Done dartk-vm debug_x64 language/getter_override2_test/00: pass
-Done dartk-vm debug_x64 language/getter_override2_test/01: pass
-Done dartk-vm debug_x64 language/getter_override2_test/02: pass
-Done dartk-vm debug_x64 language/getter_override2_test/03: pass
-Done dartk-vm debug_x64 language/malbounded_redirecting_factory2_test/02: pass
-Done dartk-vm debug_x64 language/malbounded_redirecting_factory2_test/none: pass
-Done dartk-vm debug_x64 language/malbounded_redirecting_factory2_test/03: pass
-Done dartk-vm debug_x64 language/malbounded_redirecting_factory2_test/04: pass
-Done dartk-vm debug_x64 language/malbounded_redirecting_factory2_test/01: pass
-Done dartk-vm debug_x64 language/static_field3_test/none: pass
-Done dartk-vm debug_x64 language/static_field3_test/01: pass
-Done dartk-vm debug_x64 language/static_field3_test/02: pass
-Done dartk-vm debug_x64 language/static_field3_test/03: pass
-Done dartk-vm debug_x64 language/static_field3_test/04: pass
-Done dartk-vm debug_x64 language/bad_typedef_test/00: pass
-Done dartk-vm debug_x64 language/dynamic_field_test/none: pass
-Done dartk-vm debug_x64 language/bad_typedef_test/none: pass
-Done dartk-vm debug_x64 language/dynamic_field_test/01: pass
-Done dartk-vm debug_x64 language/dynamic_field_test/02: pass
-Done dartk-vm debug_x64 language/type_variable_bounds2_test/none: pass
-Done dartk-vm debug_x64 language/type_variable_bounds2_test/00: pass
-Done dartk-vm debug_x64 language/type_variable_bounds2_test/02: pass
-Done dartk-vm debug_x64 language/type_variable_bounds2_test/01: pass
-Done dartk-vm debug_x64 language/type_variable_bounds2_test/03: pass
-Done dartk-vm debug_x64 language/type_variable_bounds2_test/05: pass
-Done dartk-vm debug_x64 language/type_variable_bounds2_test/04: pass
-Done dartk-vm debug_x64 language/type_variable_bounds2_test/06: pass
-Done dartk-vm debug_x64 language/constructor_return_test/01: pass
-Done dartk-vm debug_x64 language/constructor_return_test/03: pass
-Done dartk-vm debug_x64 language/constructor_return_test/02: pass
-Done dartk-vm debug_x64 language/constructor_return_test/04: pass
-Done dartk-vm debug_x64 language/constructor_return_test/05: pass
-Done dartk-vm debug_x64 language/const_constructor_syntax_test/01: pass
-Done dartk-vm debug_x64 language/constructor_return_test/none: pass
-Done dartk-vm debug_x64 language/const_constructor_syntax_test/05: pass
-Done dartk-vm debug_x64 language/const_constructor_syntax_test/02: pass
-Done dartk-vm debug_x64 language/const_constructor_syntax_test/03: pass
-Done dartk-vm debug_x64 language/const_constructor_syntax_test/04: pass
-Done dartk-vm debug_x64 language/const_constructor_syntax_test/none: pass
-Done dartk-vm debug_x64 language/await_for_use_local_test: pass
-Done dartk-vm debug_x64 language/issue9949_test: pass
-Done dartk-vm debug_x64 language/map_literal9_test: pass
-Done dartk-vm debug_x64 language/non_parameterized_factory_test: pass
-Done dartk-vm debug_x64 language/setter4_test: pass
-Done dartk-vm debug_x64 language/map_literal_syntax_test: pass
-Done dartk-vm debug_x64 language/interceptor_test: pass
-Done dartk-vm debug_x64 language/named_parameters_passing_null_test: pass
-Done dartk-vm debug_x64 language/inference_mixin_field_test: pass
-Done dartk-vm debug_x64 language/prefix10_test: pass
-Done dartk-vm debug_x64 language/regress_29357_test: pass
-Done dartk-vm debug_x64 language/named_parameters2_test: pass
-Done dartk-vm debug_x64 language/generic_field_mixin3_test: pass
-Done dartk-vm debug_x64 language/parameter_initializer_test: pass
-Done dartk-vm debug_x64 language/logical_expression2_test: pass
-Done dartk-vm debug_x64 language/if_and_test: pass
-Done dartk-vm debug_x64 language/deferred_only_constant_test: pass
-Done dartk-vm debug_x64 language/compile_time_constant_i_test: pass
-Done dartk-vm debug_x64 language/double_to_string_as_precision2_test: pass
-Done dartk-vm debug_x64 language/constructor11_test: pass
-Done dartk-vm debug_x64 language/switch_case_static_const_test: pass
-Done dartk-vm debug_x64 language/function_subtype_typearg1_test: pass
-Done dartk-vm debug_x64 language/parameter_name_conflict_test: pass
-Done dartk-vm debug_x64 language/lazy_static7_test: pass
-Done dartk-vm debug_x64 language/execute_finally12_test: pass
-Done dartk-vm debug_x64 language/double_to_string_as_precision_test: pass
-Done dartk-vm debug_x64 language/propagated_argument_type_check_test: pass
-Done dartk-vm debug_x64 language/generic_functions_test: pass
-Done dartk-vm debug_x64 language/call_operator_test: pass
-Done dartk-vm debug_x64 language/call_argument_inference_test: pass
-Done dartk-vm debug_x64 language/instanceof3_test: pass
-Done dartk-vm debug_x64 language/issue21957_test: pass
-Done dartk-vm debug_x64 language/custom_await_stack_trace_test: pass
-Done dartk-vm debug_x64 language/constructor4_test: pass
-Done dartk-vm debug_x64 language/for_without_condition_test: pass
-Done dartk-vm debug_x64 language/double_to_string_test: pass
-Done dartk-vm debug_x64 language/function_subtype_top_level0_test: pass
-Done dartk-vm debug_x64 language/unary2_test: pass
-Done dartk-vm debug_x64 language/getter_setter_interceptor_test: pass
-Done dartk-vm debug_x64 language/example_constructor_test: pass
-Done dartk-vm debug_x64 language/prefix10_negative_test: pass
-Done dartk-vm debug_x64 language/function_subtype_bound_closure0_test: pass
-Done dartk-vm debug_x64 language/function_subtype_simple2_test: pass
-Done dartk-vm debug_x64 language/closure4_test: pass
-Done dartk-vm debug_x64 language/function_subtype3_test: pass
-Done dartk-vm debug_x64 language/await_postfix_expr_test: pass
-Done dartk-vm debug_x64 language/ordered_maps_test: pass
-Done dartk-vm debug_x64 language/bailout2_test: pass
-Done dartk-vm debug_x64 language/regress_23500_test/none: pass
-Done dartk-vm debug_x64 language/regress_23500_test/02: pass
-Done dartk-vm debug_x64 language/regress_23500_test/01: pass
-Done dartk-vm debug_x64 language/first_class_types_literals_test/none: pass
-Done dartk-vm debug_x64 language/first_class_types_literals_test/01: pass
-Done dartk-vm debug_x64 language/first_class_types_literals_test/02: pass
-Done dartk-vm debug_x64 language/first_class_types_literals_test/03: pass
-Done dartk-vm debug_x64 language/first_class_types_literals_test/04: pass
-Done dartk-vm debug_x64 language/first_class_types_literals_test/05: pass
-Done dartk-vm debug_x64 language/first_class_types_literals_test/07: pass
-Done dartk-vm debug_x64 language/first_class_types_literals_test/06: pass
-Done dartk-vm debug_x64 language/first_class_types_literals_test/08: pass
-Done dartk-vm debug_x64 language/first_class_types_literals_test/09: pass
-Done dartk-vm debug_x64 language/first_class_types_literals_test/11: pass
-Done dartk-vm debug_x64 language/first_class_types_literals_test/10: pass
-Done dartk-vm debug_x64 language/first_class_types_literals_test/12: pass
-Done dartk-vm debug_x64 language/type_parameter_test/none: pass
-Done dartk-vm debug_x64 language/type_parameter_test/02: pass
-Done dartk-vm debug_x64 language/type_parameter_test/01: pass
-Done dartk-vm debug_x64 language/type_parameter_test/04: pass
-Done dartk-vm debug_x64 language/type_parameter_test/03: pass
-Done dartk-vm debug_x64 language/type_parameter_test/05: pass
-Done dartk-vm debug_x64 language/switch_bad_case_test/none: pass
-Done dartk-vm debug_x64 language/type_parameter_test/06: pass
-Done dartk-vm debug_x64 language/this_test/01: pass
-Done dartk-vm debug_x64 language/this_test/02: pass
-Done dartk-vm debug_x64 language/this_test/03: pass
-Done dartk-vm debug_x64 language/switch_bad_case_test/01: pass
-Done dartk-vm debug_x64 language/this_test/04: pass
-Done dartk-vm debug_x64 language/this_test/05: pass
-Done dartk-vm debug_x64 language/switch_bad_case_test/02: pass
-Done dartk-vm debug_x64 language/this_test/06: pass
-Done dartk-vm debug_x64 language/this_test/07: pass
-Done dartk-vm debug_x64 language/this_test/none: pass
-Done dartk-vm debug_x64 language/compile_time_constant_test/01: pass
-Done dartk-vm debug_x64 language/this_test/08: pass
-Done dartk-vm debug_x64 language/compile_time_constant_test/02: pass
-Done dartk-vm debug_x64 language/deferred_constraints_constants_test/none: pass
-Done dartk-vm debug_x64 language/deferred_constraints_constants_test/reference1: pass
-Done dartk-vm debug_x64 language/deferred_constraints_constants_test/reference2: pass
-Done dartk-vm debug_x64 language/deferred_constraints_constants_test/default_argument1: pass
-Done dartk-vm debug_x64 language/deferred_constraints_constants_test/default_argument2: pass
-Done dartk-vm debug_x64 language/deferred_constraints_constants_test/metadata1: pass
-Done dartk-vm debug_x64 language/compile_time_constant_test/none: pass
-Done dartk-vm debug_x64 language/deferred_constraints_constants_test/metadata2: pass
-Done dartk-vm debug_x64 language/deferred_constraints_constants_test/constructor2: pass
-Done dartk-vm debug_x64 language/deferred_constraints_constants_test/constructor1: pass
-Done dartk-vm debug_x64 language/deferred_constraints_constants_test/metadata3: pass
-Done dartk-vm debug_x64 language/deferred_constraints_constants_test/reference_after_load: pass
-Done dartk-vm debug_x64 language/extend_type_parameter2_negative_test: pass
-Done dartk-vm debug_x64 language/library_negative_test: pass
-Done dartk-vm debug_x64 language/label6_negative_test: pass
-Done dartk-vm debug_x64 language/mixin_type_parameter5_test: pass
-Done dartk-vm debug_x64 language/regress_21998_1_test: pass
-Done dartk-vm debug_x64 language/regress_22728_test: pass
-Done dartk-vm debug_x64 language/unicode_hash_test: pass
-Done dartk-vm debug_x64 language/asyncstar_yield_test: pass
-Done dartk-vm debug_x64 language/many_named_arguments_test: pass
-Done dartk-vm debug_x64 language/regress_11010_test: pass
-Done dartk-vm debug_x64 language/type_propagation_in_for_update_test: pass
-Done dartk-vm debug_x64 language/map_literal10_test: pass
-Done dartk-vm debug_x64 language/issue10581_test: pass
-Done dartk-vm debug_x64 language/super_field_access_test: pass
-Done dartk-vm debug_x64 language/mixin_field_initializer_test: pass
-Done dartk-vm debug_x64 language/field_inference_test: pass
-Done dartk-vm debug_x64 language/inferrer_synthesized_constructor_test: pass
-Done dartk-vm debug_x64 language/deferred_not_loaded_check_test: pass
-Done dartk-vm debug_x64 language/export_double_same_main_test: pass
-Done dartk-vm debug_x64 language/mixin_mixin6_test: pass
-Done dartk-vm debug_x64 language/range_analysis3_test: pass
-Done dartk-vm debug_x64 language/function_subtype_typearg3_test: pass
-Done dartk-vm debug_x64 language/list_literal4_test: pass
-Done dartk-vm debug_x64 language/logical_expression4_test: pass
-Done dartk-vm debug_x64 language/propagate_past_constant_test: pass
-Done dartk-vm debug_x64 language/regress_26530_test: pass
-Done dartk-vm debug_x64 language/mixin_mixin5_test: pass
-Done dartk-vm debug_x64 language/type_check_const_function_typedef_test: pass
-Done dartk-vm debug_x64 language/regress_10996_test: pass
-Done dartk-vm debug_x64 language/critical_edge_test: pass
-Done dartk-vm debug_x64 language/prefix24_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type1_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type80_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type42_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type68_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type75_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type2_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type45_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type34_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type69_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type64_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type40_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type61_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type95_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type32_test: pass
-Done dartk-vm debug_x64 language/try_catch_syntax_test/01: pass
-Done dartk-vm debug_x64 language/function_type/function_type33_test: pass
-Done dartk-vm debug_x64 language/try_catch_syntax_test/none: pass
-Done dartk-vm debug_x64 language/function_type/function_type90_test: pass
-Done dartk-vm debug_x64 language/try_catch_syntax_test/03: pass
-Done dartk-vm debug_x64 language/try_catch_syntax_test/02: pass
-Done dartk-vm debug_x64 language/try_catch_syntax_test/04: pass
-Done dartk-vm debug_x64 language/try_catch_syntax_test/05: pass
-Done dartk-vm debug_x64 language/function_type/function_type10_test: pass
-Done dartk-vm debug_x64 language/try_catch_syntax_test/06: pass
-Done dartk-vm debug_x64 language/try_catch_syntax_test/10: pass
-Done dartk-vm debug_x64 language/try_catch_syntax_test/09: pass
-Done dartk-vm debug_x64 language/try_catch_syntax_test/07: pass
-Done dartk-vm debug_x64 language/try_catch_syntax_test/11: pass
-Done dartk-vm debug_x64 language/try_catch_syntax_test/12: pass
-Done dartk-vm debug_x64 language/try_catch_syntax_test/13: pass
-Done dartk-vm debug_x64 language/try_catch_syntax_test/14: pass
-Done dartk-vm debug_x64 language/try_catch_syntax_test/08: pass
-Done dartk-vm debug_x64 language/try_catch_syntax_test/17: pass
-Done dartk-vm debug_x64 language/try_catch_syntax_test/15: pass
-Done dartk-vm debug_x64 language/try_catch_syntax_test/16: pass
-Done dartk-vm debug_x64 language/bad_constructor_test/00: pass
-Done dartk-vm debug_x64 language/sync_generator3_test/test1: pass
-Done dartk-vm debug_x64 language/sync_generator3_test/none: pass
-Done dartk-vm debug_x64 language/bad_constructor_test/01: pass
-Done dartk-vm debug_x64 language/sync_generator3_test/test2: pass
-Done dartk-vm debug_x64 language/top_level_getter_no_setter1_test/none: pass
-Done dartk-vm debug_x64 language/top_level_getter_no_setter1_test/01: pass
-Done dartk-vm debug_x64 language/bad_constructor_test/none: pass
-Done dartk-vm debug_x64 language/bad_constructor_test/04: pass
-Done dartk-vm debug_x64 language/constructor10_test/00: pass
-Done dartk-vm debug_x64 language/bad_constructor_test/06: pass
-Done dartk-vm debug_x64 language/constructor10_test/01: pass
-Done dartk-vm debug_x64 language/constructor10_test/02: pass
-Done dartk-vm debug_x64 language/built_in_identifier_illegal_test/19: pass
-Done dartk-vm debug_x64 language/constructor10_test/none: pass
-Done dartk-vm debug_x64 language/built_in_identifier_illegal_test/01: pass
-Done dartk-vm debug_x64 language/bad_constructor_test/05: pass
-Done dartk-vm debug_x64 language/built_in_identifier_illegal_test/04: pass
-Done dartk-vm debug_x64 language/built_in_identifier_illegal_test/17: pass
-Done dartk-vm debug_x64 language/built_in_identifier_illegal_test/20: pass
-Done dartk-vm debug_x64 language/built_in_identifier_illegal_test/10: pass
-Done dartk-vm debug_x64 language/built_in_identifier_illegal_test/07: pass
-Done dartk-vm debug_x64 language/built_in_identifier_illegal_test/05: pass
-Done dartk-vm debug_x64 language/built_in_identifier_illegal_test/08: pass
-Done dartk-vm debug_x64 language/built_in_identifier_illegal_test/06: pass
-Done dartk-vm debug_x64 language/built_in_identifier_illegal_test/12: pass
-Done dartk-vm debug_x64 language/built_in_identifier_illegal_test/none: pass
-Done dartk-vm debug_x64 language/built_in_identifier_illegal_test/18: pass
-Done dartk-vm debug_x64 language/built_in_identifier_illegal_test/13: pass
-Done dartk-vm debug_x64 language/built_in_identifier_illegal_test/16: pass
-Done dartk-vm debug_x64 language/built_in_identifier_illegal_test/15: pass
-Done dartk-vm debug_x64 language/fixed_type_variable_test/none: pass
-Done dartk-vm debug_x64 language/fixed_type_variable_test/02: pass
-Done dartk-vm debug_x64 language/fixed_type_variable_test/01: pass
-Done dartk-vm debug_x64 language/fixed_type_variable_test/03: pass
-Done dartk-vm debug_x64 language/fixed_type_variable_test/04: pass
-Done dartk-vm debug_x64 language/fixed_type_variable_test/06: pass
-Done dartk-vm debug_x64 language/fixed_type_variable_test/05: pass
-Done dartk-vm debug_x64 language/function_type_call_getter2_test/none: pass
-Done dartk-vm debug_x64 language/function_type_call_getter2_test/00: pass
-Done dartk-vm debug_x64 language/function_type_call_getter2_test/01: pass
-Done dartk-vm debug_x64 language/function_type_call_getter2_test/02: pass
-Done dartk-vm debug_x64 language/function_type_call_getter2_test/03: pass
-Done dartk-vm debug_x64 language/function_type_call_getter2_test/04: pass
-Done dartk-vm debug_x64 language/function_type_call_getter2_test/05: pass
-Done dartk-vm debug_x64 language/override_inheritance_no_such_method_test/none: pass
-Done dartk-vm debug_x64 language/override_inheritance_no_such_method_test/06: pass
-Done dartk-vm debug_x64 language/override_inheritance_no_such_method_test/07: pass
-Done dartk-vm debug_x64 language/override_inheritance_no_such_method_test/08: pass
-Done dartk-vm debug_x64 language/override_inheritance_no_such_method_test/09: pass
-Done dartk-vm debug_x64 language/override_inheritance_no_such_method_test/10: pass
-Done dartk-vm debug_x64 language/override_inheritance_no_such_method_test/02: pass
-Done dartk-vm debug_x64 language/override_inheritance_no_such_method_test/11: pass
-Done dartk-vm debug_x64 language/override_inheritance_no_such_method_test/01: pass
-Done dartk-vm debug_x64 language/override_inheritance_no_such_method_test/03: pass
-Done dartk-vm debug_x64 language/override_inheritance_no_such_method_test/04: pass
-Done dartk-vm debug_x64 language/override_inheritance_no_such_method_test/05: pass
-Done dartk-vm debug_x64 language/override_inheritance_no_such_method_test/12: pass
-Done dartk-vm debug_x64 language/override_inheritance_no_such_method_test/13: pass
-Done dartk-vm debug_x64 language/function_type/function_type21_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type93_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type52_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type54_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type81_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type15_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type7_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type58_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type36_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type72_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type77_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type27_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type66_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type55_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type11_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type96_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type8_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type12_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type4_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type62_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type57_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type53_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type3_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type43_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type98_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type89_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type88_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type87_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type14_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type23_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type46_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type74_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type97_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type0_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type51_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type30_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type94_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type19_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type86_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type39_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type92_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type24_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type65_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type47_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type70_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type35_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type99_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type22_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type18_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type71_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type91_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type48_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type56_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type60_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type44_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type82_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type76_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type83_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type9_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type67_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type84_test: pass
-Done dartk-vm debug_x64 language/conditional_method_invocation_test/none: pass
-Done dartk-vm debug_x64 language/function_type/function_type38_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type29_test: pass
-Done dartk-vm debug_x64 language/conditional_method_invocation_test/01: pass
-Done dartk-vm debug_x64 language/conditional_method_invocation_test/02: pass
-Done dartk-vm debug_x64 language/conditional_method_invocation_test/15: pass
-Done dartk-vm debug_x64 language/conditional_method_invocation_test/14: pass
-Done dartk-vm debug_x64 language/conditional_method_invocation_test/05: pass
-Done dartk-vm debug_x64 language/conditional_method_invocation_test/04: pass
-Done dartk-vm debug_x64 language/conditional_method_invocation_test/06: pass
-Done dartk-vm debug_x64 language/conditional_method_invocation_test/03: pass
-Done dartk-vm debug_x64 language/conditional_method_invocation_test/18: pass
-Done dartk-vm debug_x64 language/conditional_method_invocation_test/16: pass
-Done dartk-vm debug_x64 language/conditional_method_invocation_test/11: pass
-Done dartk-vm debug_x64 language/conditional_method_invocation_test/17: pass
-Done dartk-vm debug_x64 language/conditional_method_invocation_test/19: pass
-Done dartk-vm debug_x64 language/conditional_method_invocation_test/08: pass
-Done dartk-vm debug_x64 language/conditional_method_invocation_test/12: pass
-Done dartk-vm debug_x64 language/conditional_method_invocation_test/07: pass
-Done dartk-vm debug_x64 language/regress_20394_test/none: pass
-Done dartk-vm debug_x64 language/conditional_method_invocation_test/13: pass
-Done dartk-vm debug_x64 language/regress_20394_test/01: pass
-Done dartk-vm debug_x64 language/function_type/function_type5_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type6_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type28_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type26_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type50_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type41_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type31_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type37_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type25_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type20_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type13_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type73_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type79_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type59_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type63_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type78_test: pass
-Done dartk-vm debug_x64 language/getter_declaration_negative_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type85_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type16_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type17_test: pass
-Done dartk-vm debug_x64 language/function_type/function_type49_test: pass
-Done dartk-vm debug_x64 language/constructor_setter_negative_test: pass
-Done dartk-vm debug_x64 language/type_variable_closure4_test: pass
-Done dartk-vm debug_x64 language/branch_canonicalization_test: pass
-Done dartk-vm debug_x64 language/namer2_test: pass
-Done dartk-vm debug_x64 language/phi_merge_test: pass
-Done dartk-vm debug_x64 language/named_parameters_with_conversions_test: pass
-Done dartk-vm debug_x64 language/regress_24283_test: pass
-Done dartk-vm debug_x64 language/function_type_alias_test: pass
-Done dartk-vm debug_x64 language/div_with_power_of_two2_test: pass
-Done dartk-vm debug_x64 language/cascade2_test: pass
-Done dartk-vm debug_x64 language/function_type_this_parameter_test: pass
-Done dartk-vm debug_x64 language/char_escape_test: pass
-Done dartk-vm debug_x64 language/no_such_method_subtype_test: pass
-Done dartk-vm debug_x64 language/regress_22700_test: pass
-Done dartk-vm debug_x64 language/closures_initializer_test: pass
-Done dartk-vm debug_x64 language/f_bounded_quantification2_test: pass
-Done dartk-vm debug_x64 language/prefix17_test: pass
-Done dartk-vm debug_x64 language/default_factory_library_test: pass
-Done dartk-vm debug_x64 language/rewrite_assign_test: pass
-Done dartk-vm debug_x64 language/string_join_test: pass
-Done dartk-vm debug_x64 language/div_by_zero_test: pass
-Done dartk-vm debug_x64 language/rewrite_nested_if1_test: pass
-Done dartk-vm debug_x64 language/issue4295001_test: pass
-Done dartk-vm debug_x64 language/list_literal3_test: pass
-Done dartk-vm debug_x64 language/switch4_negative_test: pass
-Done dartk-vm debug_x64 language/regress_25568_test: pass
-Done dartk-vm debug_x64 language/issue20476_test: pass
-Done dartk-vm debug_x64 language/double_int_to_string_test: pass
-Done dartk-vm debug_x64 language/f_bounded_quantification3_test: pass
-Done dartk-vm debug_x64 language/library_same_name_used_test: pass
-Done dartk-vm debug_x64 language/super_operator_test: pass
-Done dartk-vm debug_x64 language/multi_assign_test: pass
-Done dartk-vm debug_x64 language/const_constructor2_test/none: pass
-Done dartk-vm debug_x64 language/const_constructor2_test/01: pass
-Done dartk-vm debug_x64 language/const_constructor2_test/02: pass
-Done dartk-vm debug_x64 language/const_constructor2_test/03: pass
-Done dartk-vm debug_x64 language/const_constructor2_test/04: pass
-Done dartk-vm debug_x64 language/const_constructor2_test/05: pass
-Done dartk-vm debug_x64 language/const_constructor2_test/07: pass
-Done dartk-vm debug_x64 language/const_constructor2_test/06: pass
-Done dartk-vm debug_x64 language/const_constructor2_test/08: pass
-Done dartk-vm debug_x64 language/const_constructor2_test/09: pass
-Done dartk-vm debug_x64 language/const_constructor2_test/11: pass
-Done dartk-vm debug_x64 language/const_constructor2_test/10: pass
-Done dartk-vm debug_x64 language/const_constructor2_test/12: pass
-Done dartk-vm debug_x64 language/const_constructor2_test/13: pass
-Done dartk-vm debug_x64 language/const_constructor2_test/14: pass
-Done dartk-vm debug_x64 language/const_constructor2_test/15: pass
-Done dartk-vm debug_x64 language/const_constructor2_test/16: pass
-Done dartk-vm debug_x64 language/const_constructor2_test/17: pass
-Done dartk-vm debug_x64 language/const_constructor2_test/18: pass
-Done dartk-vm debug_x64 language/const_constructor2_test/19: pass
-Done dartk-vm debug_x64 language/const_constructor2_test/20: pass
-Done dartk-vm debug_x64 language/const_constructor2_test/21: pass
-Done dartk-vm debug_x64 language/const_constructor2_test/22: pass
-Done dartk-vm debug_x64 language/const_constructor2_test/23: pass
-Done dartk-vm debug_x64 language/const_constructor2_test/24: pass
-Done dartk-vm debug_x64 language/rewrite_implicit_this_test/none: pass
-Done dartk-vm debug_x64 language/rewrite_implicit_this_test/01: pass
-Done dartk-vm debug_x64 language/call_nonexistent_constructor_test/none: pass
-Done dartk-vm debug_x64 language/call_nonexistent_constructor_test/01: pass
-Done dartk-vm debug_x64 language/call_nonexistent_constructor_test/02: pass
-Done dartk-vm debug_x64 language/factory1_test/none: pass
-Done dartk-vm debug_x64 language/factory1_test/01: pass
-Done dartk-vm debug_x64 language/factory1_test/00: pass
-Done dartk-vm debug_x64 language/null_test/01: pass
-Done dartk-vm debug_x64 language/static_getter_no_setter1_test/none: pass
-Done dartk-vm debug_x64 language/static_getter_no_setter1_test/01: pass
-Done dartk-vm debug_x64 language/null_test/02: pass
-Done dartk-vm debug_x64 language/null_test/03: pass
-Done dartk-vm debug_x64 language/null_test/none: pass
-Done dartk-vm debug_x64 language/static_field_test/none: pass
-Done dartk-vm debug_x64 language/static_field_test/01: pass
-Done dartk-vm debug_x64 language/static_field_test/02: pass
-Done dartk-vm debug_x64 language/static_field_test/03: pass
-Done dartk-vm debug_x64 language/static_field_test/04: pass
-Done dartk-vm debug_x64 language/if_null_behavior_test/none: pass
-Done dartk-vm debug_x64 language/if_null_behavior_test/01: pass
-Done dartk-vm debug_x64 language/if_null_behavior_test/02: pass
-Done dartk-vm debug_x64 language/if_null_behavior_test/03: pass
-Done dartk-vm debug_x64 language/if_null_behavior_test/05: pass
-Done dartk-vm debug_x64 language/if_null_behavior_test/04: pass
-Done dartk-vm debug_x64 language/if_null_behavior_test/06: pass
-Done dartk-vm debug_x64 language/if_null_behavior_test/07: pass
-Done dartk-vm debug_x64 language/if_null_behavior_test/08: pass
-Done dartk-vm debug_x64 language/if_null_behavior_test/10: pass
-Done dartk-vm debug_x64 language/if_null_behavior_test/09: pass
-Done dartk-vm debug_x64 language/if_null_behavior_test/11: pass
-Done dartk-vm debug_x64 language/if_null_behavior_test/12: pass
-Done dartk-vm debug_x64 language/if_null_behavior_test/13: pass
-Done dartk-vm debug_x64 language/prefix_identifier_reference_test/01: pass
-Done dartk-vm debug_x64 language/if_null_behavior_test/14: pass
-Done dartk-vm debug_x64 language/prefix_identifier_reference_test/02: pass
-Done dartk-vm debug_x64 language/if_null_behavior_test/15: pass
-Done dartk-vm debug_x64 language/prefix_identifier_reference_test/03: pass
-Done dartk-vm debug_x64 language/if_null_behavior_test/16: pass
-Done dartk-vm debug_x64 language/prefix_identifier_reference_test/05: pass
-Done dartk-vm debug_x64 language/prefix_identifier_reference_test/04: pass
-Done dartk-vm debug_x64 language/prefix_identifier_reference_test/none: pass
-Done dartk-vm debug_x64 language/private_super_constructor_test/none: pass
-Done dartk-vm debug_x64 language/private_super_constructor_test/01: pass
-Done dartk-vm debug_x64 language/export_cyclic_test: pass
-Done dartk-vm debug_x64 language/static_field2_test: pass
-Done dartk-vm debug_x64 language/closure_in_initializer_test: pass
-Done dartk-vm debug_x64 language/regress_29405_test: pass
-Done dartk-vm debug_x64 language/list_tracer_closure_test: pass
-Done dartk-vm debug_x64 language/constant_propagation_phis_test: pass
-Done dartk-vm debug_x64 language/deferred_global_test: pass
-Done dartk-vm debug_x64 language/recursive_calls_test: pass
-Done dartk-vm debug_x64 language/range_analysis2_test: pass
-Done dartk-vm debug_x64 language/private_selector_test: pass
-Done dartk-vm debug_x64 language/top_level_non_prefixed_library_test: pass
-Done dartk-vm debug_x64 language/js_properties_test: pass
-Done dartk-vm debug_x64 language/generic_methods_test: pass
-Done dartk-vm debug_x64 language/naming3_test: pass
-Done dartk-vm debug_x64 language/instanceof2_test: pass
-Done dartk-vm debug_x64 language/branches_test: pass
-Done dartk-vm debug_x64 language/factory_return_type_checked_test: pass
-Done dartk-vm debug_x64 language/infinite_switch_label_test: pass
-Done dartk-vm debug_x64 language/cascade_in_initializer_list_test: pass
-Done dartk-vm debug_x64 language/constructor_call_wrong_argument_count_negative_test: pass
-Done dartk-vm debug_x64 language/non_dominating_loop_test: pass
-Done dartk-vm debug_x64 language/condition_bailout_test: pass
-Done dartk-vm debug_x64 language/label2_negative_test: pass
-Done dartk-vm debug_x64 language/stacktrace_demangle_ctors_test: pass
-Done dartk-vm debug_x64 language/throwing_lazy_variable_test: pass
-Done dartk-vm debug_x64 language/inline_add_constants_to_initial_env_test: pass
-Done dartk-vm debug_x64 language/static_inline_test: pass
-Done dartk-vm debug_x64 language/function_argument_test: pass
-Done dartk-vm debug_x64 language/type_argument_in_super_type_test: pass
-Done dartk-vm debug_x64 language/redirecting_factory_reflection_test: pass
-Done dartk-vm debug_x64 language/gvn_field_access_test: pass
-Done dartk-vm debug_x64 language/identical_closure_test: pass
-Done dartk-vm debug_x64 language/bind_test: pass
-Done dartk-vm debug_x64 language/regress_26230_test: pass
-Done dartk-vm debug_x64 language/memory_swap_test: pass
-Done dartk-vm debug_x64 language/part_of_uri2_test: pass
-Done dartk-vm debug_x64 language/is_operator_test: pass
-Done dartk-vm debug_x64 language/throw8_test: pass
-Done dartk-vm debug_x64 language/void_arrow_return_test: pass
-Done dartk-vm debug_x64 language/closure_type_test/none: pass
-Done dartk-vm debug_x64 language/closure_type_test/01: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked4_test/none: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked4_test/01: pass
-Done dartk-vm debug_x64 language/case_expression_with_assignment_test/01: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked4_test/02: pass
-Done dartk-vm debug_x64 language/compile_time_constant_checked4_test/03: pass
-Done dartk-vm debug_x64 language/case_expression_with_assignment_test/none: pass
-Done dartk-vm debug_x64 language/flatten_test/none: pass
-Done dartk-vm debug_x64 language/flatten_test/01: pass
-Done dartk-vm debug_x64 language/flatten_test/02: pass
-Done dartk-vm debug_x64 language/flatten_test/03: pass
-Done dartk-vm debug_x64 language/flatten_test/04: pass
-Done dartk-vm debug_x64 language/flatten_test/05: pass
-Done dartk-vm debug_x64 language/flatten_test/06: pass
-Done dartk-vm debug_x64 language/flatten_test/07: pass
-Done dartk-vm debug_x64 language/flatten_test/08: pass
-Done dartk-vm debug_x64 language/type_variable_conflict_test/01: pass
-Done dartk-vm debug_x64 language/flatten_test/09: pass
-Done dartk-vm debug_x64 language/type_variable_conflict_test/02: pass
-Done dartk-vm debug_x64 language/flatten_test/10: pass
-Done dartk-vm debug_x64 language/type_variable_conflict_test/03: pass
-Done dartk-vm debug_x64 language/flatten_test/11: pass
-Done dartk-vm debug_x64 language/type_variable_conflict_test/none: pass
-Done dartk-vm debug_x64 language/flatten_test/12: pass
-Done dartk-vm debug_x64 language/type_variable_conflict_test/04: pass
-Done dartk-vm debug_x64 language/type_variable_conflict_test/05: pass
-Done dartk-vm debug_x64 language/type_variable_conflict_test/06: pass
-Done dartk-vm debug_x64 language/named_parameters_test/none: pass
-Done dartk-vm debug_x64 language/named_parameters_test/02: pass
-Done dartk-vm debug_x64 language/named_parameters_test/01: pass
-Done dartk-vm debug_x64 language/named_parameters_test/04: pass
-Done dartk-vm debug_x64 language/named_parameters_test/03: pass
-Done dartk-vm debug_x64 language/named_parameters_test/05: pass
-Done dartk-vm debug_x64 language/named_parameters_test/06: pass
-Done dartk-vm debug_x64 language/named_parameters_test/07: pass
-Done dartk-vm debug_x64 language/named_parameters_test/08: pass
-Done dartk-vm debug_x64 language/named_parameters_test/09: pass
-Done dartk-vm debug_x64 language/static_setter_get_test/01: pass
-Done dartk-vm debug_x64 language/static_setter_get_test/none: pass
-Done dartk-vm debug_x64 language/named_parameters_test/10: pass
-Done dartk-vm debug_x64 language/no_main_test/none: pass
-Done dartk-vm debug_x64 language/super_bound_closure_test/none: pass
-Done dartk-vm debug_x64 language/super_bound_closure_test/01: pass
-Done dartk-vm debug_x64 language/regress_27617_test/none: pass
-Done dartk-vm debug_x64 language/regress_27617_test/1: pass
-Done dartk-vm debug_x64 language/parameter_metadata_test/01: pass
-Done dartk-vm debug_x64 language/parameter_metadata_test/none: pass
-Done dartk-vm debug_x64 language/parameter_metadata_test/02: pass
-Done dartk-vm debug_x64 language/parameter_metadata_test/03: pass
-Done dartk-vm debug_x64 language/parameter_metadata_test/04: pass
-Done dartk-vm debug_x64 language/hidden_import_test/none: pass
-Done dartk-vm debug_x64 language/missing_part_of_tag_test/01: pass
-Done dartk-vm debug_x64 language/hidden_import_test/01: pass
-Done dartk-vm debug_x64 language/deferred_import_core_test: pass
-Done dartk-vm debug_x64 language/hidden_import_test/02: pass
-Done dartk-vm debug_x64 language/function_subtype_local3_test: pass
-Done dartk-vm debug_x64 language/missing_part_of_tag_test/none: pass
-Done dartk-vm debug_x64 language/await_future_test: pass
-Done dartk-vm debug_x64 language/await_future_test: pass
-Done dartk-vm debug_x64 language/null2_test: pass
-Done dartk-vm debug_x64 language/conditional_import_string_test: pass
-Done dartk-vm debug_x64 language/type_variable_nested_test: pass
-Done dartk-vm debug_x64 language/library_private_in_constructor_test: pass
-Done dartk-vm debug_x64 language/switch_scope_test: pass
-Done dartk-vm debug_x64 language/prefix15_negative_test: pass
-Done dartk-vm debug_x64 language/resolution_test: pass
-Done dartk-vm debug_x64 language/mixin_type_parameters_mixin_extends_test: pass
-Done dartk-vm debug_x64 language/interceptor6_test: pass
-Done dartk-vm debug_x64 language/cyclic_import_test: pass
-Done dartk-vm debug_x64 language/rewrite_for_update_order_test: pass
-Done dartk-vm debug_x64 language/body_less_constructor_wrong_arg_negative_test: pass
-Done dartk-vm debug_x64 language/compile_time_constant_h_test: pass
-Done dartk-vm debug_x64 language/static_closure_identical_test: pass
-Done dartk-vm debug_x64 language/regress_22445_test: pass
-Done dartk-vm debug_x64 language/super_all_named_constructor_test: pass
-Done dartk-vm debug_x64 language/nullaware_opt_test: pass
-Done dartk-vm debug_x64 language/compile_time_constant8_test: pass
-Done dartk-vm debug_x64 language/named_parameters_passing_zero_test: pass
-Done dartk-vm debug_x64 language/factory_negative_test: pass
-Done dartk-vm debug_x64 language/await_test: pass
-Done dartk-vm debug_x64 language/is_nan_test: pass
-Done dartk-vm debug_x64 language/await_test: pass
-Done dartk-vm debug_x64 language/regress_13462_0_test: pass
-Done dartk-vm debug_x64 language/closure_shared_state_test: pass
-Done dartk-vm debug_x64 language/switch6_test: pass
-Done dartk-vm debug_x64 language/regress_18713_test: pass
-Done dartk-vm debug_x64 language/for_in_side_effects_test: pass
-Done dartk-vm debug_x64 language/function_literals2_test: pass
-Done dartk-vm debug_x64 language/string_interpolation8_test: pass
-Done dartk-vm debug_x64 language/type_propagation_test: pass
-Done dartk-vm debug_x64 language/super_field_2_test: pass
-Done dartk-vm debug_x64 language/methods_as_constants2_test: pass
-Done dartk-vm debug_x64 language/try_catch2_test: pass
-Done dartk-vm debug_x64 language/classes_static_method_clash_test: pass
-Done dartk-vm debug_x64 language/issue15702_test: pass
-Done dartk-vm debug_x64 language/closure2_test: pass
-Done dartk-vm debug_x64 language/override_field_method1_negative_test: pass
-Done dartk-vm debug_x64 language/reg_exp2_test: pass
-Done dartk-vm debug_x64 language/licm_test: pass
-Done dartk-vm debug_x64 language/constructor_duplicate_final_test/none: pass
-Done dartk-vm debug_x64 language/constructor_duplicate_final_test/03: pass
-Done dartk-vm debug_x64 language/constructor_duplicate_final_test/01: pass
-Done dartk-vm debug_x64 language/constructor_duplicate_final_test/02: pass
-Done dartk-vm debug_x64 language/syntax_test/none: pass
-Done dartk-vm debug_x64 language/syntax_test/01: pass
-Done dartk-vm debug_x64 language/regress_22936_test/none: pass
-Done dartk-vm debug_x64 language/syntax_test/02: pass
-Done dartk-vm debug_x64 language/syntax_test/03: pass
-Done dartk-vm debug_x64 language/regress_22936_test/01: pass
-Done dartk-vm debug_x64 language/syntax_test/04: pass
-Done dartk-vm debug_x64 language/syntax_test/06: pass
-Done dartk-vm debug_x64 language/syntax_test/05: pass
-Done dartk-vm debug_x64 language/syntax_test/08: pass
-Done dartk-vm debug_x64 language/syntax_test/07: pass
-Done dartk-vm debug_x64 language/syntax_test/09: pass
-Done dartk-vm debug_x64 language/syntax_test/10: pass
-Done dartk-vm debug_x64 language/syntax_test/11: pass
-Done dartk-vm debug_x64 language/syntax_test/12: pass
-Done dartk-vm debug_x64 language/syntax_test/14: pass
-Done dartk-vm debug_x64 language/syntax_test/13: pass
-Done dartk-vm debug_x64 language/syntax_test/15: pass
-Done dartk-vm debug_x64 language/syntax_test/18: pass
-Done dartk-vm debug_x64 language/syntax_test/16: pass
-Done dartk-vm debug_x64 language/syntax_test/17: pass
-Done dartk-vm debug_x64 language/syntax_test/20: pass
-Done dartk-vm debug_x64 language/syntax_test/22: pass
-Done dartk-vm debug_x64 language/syntax_test/21: pass
-Done dartk-vm debug_x64 language/syntax_test/19: pass
-Done dartk-vm debug_x64 language/syntax_test/23: pass
-Done dartk-vm debug_x64 language/syntax_test/25: pass
-Done dartk-vm debug_x64 language/syntax_test/26: pass
-Done dartk-vm debug_x64 language/syntax_test/24: pass
-Done dartk-vm debug_x64 language/syntax_test/27: pass
-Done dartk-vm debug_x64 language/syntax_test/28: pass
-Done dartk-vm debug_x64 language/syntax_test/29: pass
-Done dartk-vm debug_x64 language/syntax_test/32: pass
-Done dartk-vm debug_x64 language/syntax_test/31: pass
-Done dartk-vm debug_x64 language/syntax_test/30: pass
-Done dartk-vm debug_x64 language/syntax_test/33: pass
-Done dartk-vm debug_x64 language/syntax_test/36: pass
-Done dartk-vm debug_x64 language/syntax_test/34: pass
-Done dartk-vm debug_x64 language/syntax_test/35: pass
-Done dartk-vm debug_x64 language/syntax_test/38: pass
-Done dartk-vm debug_x64 language/syntax_test/39: pass
-Done dartk-vm debug_x64 language/syntax_test/37: pass
-Done dartk-vm debug_x64 language/syntax_test/40: pass
-Done dartk-vm debug_x64 language/syntax_test/42: pass
-Done dartk-vm debug_x64 language/syntax_test/41: pass
-Done dartk-vm debug_x64 language/syntax_test/43: pass
-Done dartk-vm debug_x64 language/syntax_test/45: pass
-Done dartk-vm debug_x64 language/syntax_test/46: pass
-Done dartk-vm debug_x64 language/syntax_test/44: pass
-Done dartk-vm debug_x64 language/syntax_test/49: pass
-Done dartk-vm debug_x64 language/syntax_test/48: pass
-Done dartk-vm debug_x64 language/syntax_test/50: pass
-Done dartk-vm debug_x64 language/syntax_test/47: pass
-Done dartk-vm debug_x64 language/syntax_test/52: pass
-Done dartk-vm debug_x64 language/syntax_test/51: pass
-Done dartk-vm debug_x64 language/syntax_test/53: pass
-Done dartk-vm debug_x64 language/syntax_test/54: pass
-Done dartk-vm debug_x64 language/syntax_test/57: pass
-Done dartk-vm debug_x64 language/syntax_test/56: pass
-Done dartk-vm debug_x64 language/syntax_test/55: pass
-Done dartk-vm debug_x64 language/syntax_test/59: pass
-Done dartk-vm debug_x64 language/syntax_test/58: pass
-Done dartk-vm debug_x64 language/syntax_test/60: pass
-Done dartk-vm debug_x64 language/syntax_test/62: pass
-Done dartk-vm debug_x64 language/syntax_test/61: pass
-Done dartk-vm debug_x64 language/syntax_test/63: pass
-Done dartk-vm debug_x64 language/override_field_test/none: pass
-Done dartk-vm debug_x64 language/large_class_declaration_test: pass
-Done dartk-vm debug_x64 language/override_field_test/01: pass
-Done dartk-vm debug_x64 language/override_field_test/03: pass
-Done dartk-vm debug_x64 language/class_literal_test/none: pass
-Done dartk-vm debug_x64 language/class_literal_test/01: pass
-Done dartk-vm debug_x64 language/override_field_test/02: pass
-Done dartk-vm debug_x64 language/class_literal_test/02: pass
-Done dartk-vm debug_x64 language/class_literal_test/03: pass
-Done dartk-vm debug_x64 language/class_literal_test/04: pass
-Done dartk-vm debug_x64 language/class_literal_test/05: pass
-Done dartk-vm debug_x64 language/class_literal_test/06: pass
-Done dartk-vm debug_x64 language/class_literal_test/09: pass
-Done dartk-vm debug_x64 language/class_literal_test/08: pass
-Done dartk-vm debug_x64 language/class_literal_test/07: pass
-Done dartk-vm debug_x64 language/class_literal_test/10: pass
-Done dartk-vm debug_x64 language/class_literal_test/11: pass
-Done dartk-vm debug_x64 language/class_literal_test/12: pass
-Done dartk-vm debug_x64 language/class_literal_test/13: pass
-Done dartk-vm debug_x64 language/class_literal_test/14: pass
-Done dartk-vm debug_x64 language/class_literal_test/15: pass
-Done dartk-vm debug_x64 language/class_literal_test/17: pass
-Done dartk-vm debug_x64 language/class_literal_test/16: pass
-Done dartk-vm debug_x64 language/class_literal_test/18: pass
-Done dartk-vm debug_x64 language/class_literal_test/19: pass
-Done dartk-vm debug_x64 language/class_literal_test/20: pass
-Done dartk-vm debug_x64 language/class_literal_test/21: pass
-Done dartk-vm debug_x64 language/class_literal_test/22: pass
-Done dartk-vm debug_x64 language/class_literal_test/23: pass
-Done dartk-vm debug_x64 language/class_literal_test/24: pass
-Done dartk-vm debug_x64 language/class_literal_test/25: pass
-Done dartk-vm debug_x64 language/int2_test: pass
-Done dartk-vm debug_x64 language/rewrite_while_test: pass
-Done dartk-vm debug_x64 language/unhandled_exception_negative_test: pass
-Done dartk-vm debug_x64 language/operator_test: pass
-Done dartk-vm debug_x64 language/if_test: pass
-Done dartk-vm debug_x64 language/double_to_string_as_exponential_test: pass
-Done dartk-vm debug_x64 language/map_literal6_test: pass
-Done dartk-vm debug_x64 language/inst_field_initializer1_negative_test: pass
-Done dartk-vm debug_x64 language/operations_on_non_num_operand_test: pass
-Done dartk-vm debug_x64 language/return_type_test: pass
-Done dartk-vm debug_x64 language/string_unicode4_negative_test: pass
-Done dartk-vm debug_x64 language/switch3_negative_test: pass
-Done dartk-vm debug_x64 language/method_override_test: pass
-Done dartk-vm debug_x64 language/private3_test: pass
-Done dartk-vm debug_x64 language/deopt_inlined_function_test: pass
-Done dartk-vm debug_x64 language/issue4157508_test: pass
-Done dartk-vm debug_x64 language/const_test: pass
-Done dartk-vm debug_x64 language/field6a_negative_test: pass
-Done dartk-vm debug_x64 language/string_interpolate_test: pass
-Done dartk-vm debug_x64 language/execute_finally1_test: pass
-Done dartk-vm debug_x64 language/method_override5_test: pass
-Done dartk-vm debug_x64 language/regress_18535_test: pass
-Done dartk-vm debug_x64 language/prefix18_negative_test: pass
-Done dartk-vm debug_x64 language/for_test: pass
-Done dartk-vm debug_x64 language/import_core_no_prefix_test: pass
-Done dartk-vm debug_x64 language/unicode_bom_test: pass
-Done dartk-vm debug_x64 language/optimized_string_charcodeat_test: pass
-Done dartk-vm debug_x64 language/map_literal_negative_test: pass
-Done dartk-vm debug_x64 language/private_member1_negative_test: pass
-Done dartk-vm debug_x64 language/native_test: pass
-Done dartk-vm debug_x64 language/switch_test: pass
-Done dartk-vm debug_x64 language/double_to_string_as_fixed2_test: pass
-Done dartk-vm debug_x64 language/regress_13462_1_test: pass
-Done dartk-vm debug_x64 language/generalized_void_syntax_test: pass
-Done dartk-vm debug_x64 language/parameter_initializer5_test: pass
-Done dartk-vm debug_x64 language/getters_setters_type2_test: pass
-Done dartk-vm debug_x64 language/prefix_test: pass
-Done dartk-vm debug_x64 language/regress_29025_test: pass
-Done dartk-vm debug_x64 language/typecheck_multifield_declaration_test: pass
-Done dartk-vm debug_x64 language/type_variable_closure2_test: pass
-Done dartk-vm debug_x64 language/syncstar_yieldstar_test: pass
-Done dartk-vm debug_x64 language/issue15606_test/none: pass
-Done dartk-vm debug_x64 language/issue15606_test/01: pass
-Done dartk-vm debug_x64 language/list_literal1_test/none: pass
-Done dartk-vm debug_x64 language/list_literal1_test/01: pass
-Done dartk-vm debug_x64 language/mixin_super_constructor_positionals_test/none: pass
-Done dartk-vm debug_x64 language/mixin_super_constructor_positionals_test/01: pass
-Done dartk-vm debug_x64 language/call_constructor_on_unresolvable_class_test/none: pass
-Done dartk-vm debug_x64 language/call_constructor_on_unresolvable_class_test/02: pass
-Done dartk-vm debug_x64 language/call_constructor_on_unresolvable_class_test/01: pass
-Done dartk-vm debug_x64 language/call_constructor_on_unresolvable_class_test/03: pass
-Done dartk-vm debug_x64 language/call_constructor_on_unresolvable_class_test/04: pass
-Done dartk-vm debug_x64 language/call_constructor_on_unresolvable_class_test/05: pass
-Done dartk-vm debug_x64 language/call_constructor_on_unresolvable_class_test/06: pass
-Done dartk-vm debug_x64 language/const_for_in_variable_test/01: pass
-Done dartk-vm debug_x64 language/call_constructor_on_unresolvable_class_test/07: pass
-Done dartk-vm debug_x64 language/instantiate_type_variable_test/none: pass
-Done dartk-vm debug_x64 language/instantiate_type_variable_test/01: pass
-Done dartk-vm debug_x64 language/const_for_in_variable_test/none: pass
-Done dartk-vm debug_x64 language/enum_is_keyword_test/01: pass
-Done dartk-vm debug_x64 language/const_for_in_variable_test/02: pass
-Done dartk-vm debug_x64 language/import_private_test/01: pass
-Done dartk-vm debug_x64 language/enum_is_keyword_test/none: pass
-Done dartk-vm debug_x64 language/generic_field_mixin6_test/01: pass
-Done dartk-vm debug_x64 language/generic_field_mixin6_test/none: pass
-Done dartk-vm debug_x64 language/import_private_test/none: pass
-Done dartk-vm debug_x64 language/stacktrace_rethrow_error_test/withtraceparameter: pass
-Done dartk-vm debug_x64 language/stacktrace_rethrow_error_test/none: pass
-Done dartk-vm debug_x64 language/if_null_precedence_test/none: pass
-Done dartk-vm debug_x64 language/if_null_precedence_test/01: pass
-Done dartk-vm debug_x64 language/if_null_precedence_test/02: pass
-Done dartk-vm debug_x64 language/if_null_precedence_test/04: pass
-Done dartk-vm debug_x64 language/if_null_precedence_test/03: pass
-Done dartk-vm debug_x64 language/if_null_precedence_test/05: pass
-Done dartk-vm debug_x64 language/static_parameter_test/01: pass
-Done dartk-vm debug_x64 language/if_null_precedence_test/07: pass
-Done dartk-vm debug_x64 language/if_null_precedence_test/06: pass
-Done dartk-vm debug_x64 language/static_parameter_test/03: pass
-Done dartk-vm debug_x64 language/static_parameter_test/02: pass
-Done dartk-vm debug_x64 language/if_null_precedence_test/08: pass
-Done dartk-vm debug_x64 language/static_parameter_test/04: pass
-Done dartk-vm debug_x64 language/static_parameter_test/none: pass
-Done dartk-vm debug_x64 language/static_parameter_test/06: pass
-Done dartk-vm debug_x64 language/static_parameter_test/05: pass
-Done dartk-vm debug_x64 language/static_parameter_test/07: pass
-Done dartk-vm debug_x64 language/static_parameter_test/09: pass
-Done dartk-vm debug_x64 language/static_parameter_test/08: pass
-Done dartk-vm debug_x64 language/static_parameter_test/10: pass
-Done dartk-vm debug_x64 language/static_parameter_test/11: pass
-Done dartk-vm debug_x64 language/static_parameter_test/12: pass
-Done dartk-vm debug_x64 language/nested_comments_test: pass
-Done dartk-vm debug_x64 language/regress_27659_test: pass
-Done dartk-vm debug_x64 language/runtime_type_function_test: pass
-Done dartk-vm debug_x64 language/issue12023_test: pass
-Done dartk-vm debug_x64 language/is_not_class2_test: pass
-Done dartk-vm debug_x64 language/inferrer_closure_test: pass
-Done dartk-vm debug_x64 language/static_const_field_test: pass
-Done dartk-vm debug_x64 language/ternary_test: pass
-Done dartk-vm debug_x64 language/third_test: pass
-Done dartk-vm debug_x64 language/function_subtype_cast2_test: pass
-Done dartk-vm debug_x64 language/implicit_super_constructor_call_test: pass
-Done dartk-vm debug_x64 language/local_function2_test: pass
-Done dartk-vm debug_x64 language/lazy_static4_test: pass
-Done dartk-vm debug_x64 language/top_level_func_test: pass
-Done dartk-vm debug_x64 language/regress_22822_test: pass
-Done dartk-vm debug_x64 language/regress_21998_2_test: pass
-Done dartk-vm debug_x64 language/string_interpolate2_negative_test: pass
-Done dartk-vm debug_x64 language/mixin_generic_test: pass
-Done dartk-vm debug_x64 language/super_getter_setter_test: pass
-Done dartk-vm debug_x64 language/map_literal_test: pass
-Done dartk-vm debug_x64 language/mixin_prefix_test: pass
-Done dartk-vm debug_x64 language/export_main_test: pass
-Done dartk-vm debug_x64 language/mixin_typedef_constructor_test: pass
-Done dartk-vm debug_x64 language/nan_identical_test: pass
-Done dartk-vm debug_x64 language/left_shift_test: pass
-Done dartk-vm debug_x64 language/interface_static_method_negative_test: pass
-Done dartk-vm debug_x64 language/function_subtype_optional1_test: pass
-Done dartk-vm debug_x64 language/mixin_regress_11398_test: pass
-Done dartk-vm debug_x64 language/checked_setter2_test: pass
-Done dartk-vm debug_x64 language/function_field_test: pass
-Done dartk-vm debug_x64 language/import_combinators_negative_test: pass
-Done dartk-vm debug_x64 language/param2_test: pass
-Done dartk-vm debug_x64 language/issue13673_test: pass
-Done dartk-vm debug_x64 language/parameter_initializer2_negative_test: pass
-Done dartk-vm debug_x64 language/setter_declaration2_negative_test: pass
-Done dartk-vm debug_x64 language/initializing_formal_scope_test: pass
-Done dartk-vm debug_x64 language/constructor_body_test: pass
-Done dartk-vm debug_x64 language/runtime_type_test: pass
-Done dartk-vm debug_x64 language/mixin_regress_13688_test: pass
-Done dartk-vm debug_x64 language/optimized_isempty_test: pass
-Done dartk-vm debug_x64 language/function_subtype_inline1_test: pass
-Done dartk-vm debug_x64 language/generic2_test: pass
-Done dartk-vm debug_x64 language/parameter_default_test/01: pass
-Done dartk-vm debug_x64 language/parameter_default_test/02: pass
-Done dartk-vm debug_x64 language/indirect_const_null_test: pass
-Done dartk-vm debug_x64 language/parameter_default_test/03: pass
-Done dartk-vm debug_x64 language/parameter_default_test/04: pass
-Done dartk-vm debug_x64 language/parameter_default_test/05: pass
-Done dartk-vm debug_x64 language/parameter_default_test/06: pass
-Done dartk-vm debug_x64 language/parameter_default_test/none: pass
-Done dartk-vm debug_x64 language/parameter_default_test/07: pass
-Done dartk-vm debug_x64 language/parameter_default_test/08: pass
-Done dartk-vm debug_x64 language/getters_setters_type_test/none: pass
-Done dartk-vm debug_x64 language/getters_setters_type_test/01: pass
-Done dartk-vm debug_x64 language/mixin_supertype_subclass2_test/none: pass
-Done dartk-vm debug_x64 language/mixin_supertype_subclass2_test/01: pass
-Done dartk-vm debug_x64 language/mixin_supertype_subclass2_test/02: pass
-Done dartk-vm debug_x64 language/mixin_supertype_subclass2_test/03: pass
-Done dartk-vm debug_x64 language/mixin_supertype_subclass2_test/04: pass
-Done dartk-vm debug_x64 language/mixin_supertype_subclass2_test/05: pass
-Done dartk-vm debug_x64 language/final_super_field_set_test/01: pass
-Done dartk-vm debug_x64 language/function_type_alias6_test/00: pass
-Done dartk-vm debug_x64 language/main_not_a_function_test/none: pass
-Done dartk-vm debug_x64 language/final_super_field_set_test/none: pass
-Done dartk-vm debug_x64 language/check_method_override_test/none: pass
-Done dartk-vm debug_x64 language/check_method_override_test/01: pass
-Done dartk-vm debug_x64 language/check_method_override_test/02: pass
-Done dartk-vm debug_x64 language/function_type_alias6_test/none: pass
-Done dartk-vm debug_x64 language/factory6_test/none: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/01: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/none: pass
-Done dartk-vm debug_x64 language/factory6_test/00: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/02: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/03: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/04: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/05: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/07: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/09: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/06: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/08: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/11: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/12: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/10: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/13: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/17: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/15: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/16: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/14: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/20: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/19: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/18: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/21: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/22: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/23: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/25: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/26: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/24: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/27: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/28: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/29: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/30: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/31: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/32: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/35: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/34: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/33: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/36: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/37: pass
-Done dartk-vm debug_x64 language/internal_library_test/01: pass
-Done dartk-vm debug_x64 language/internal_library_test/02: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/38: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/39: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/40: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/42: pass
-Done dartk-vm debug_x64 language/if_null_assignment_static_test/41: pass
-Done dartk-vm debug_x64 language/internal_library_test/none: pass
-Done dartk-vm debug_x64 language/const_map2_test/none: pass
-Done dartk-vm debug_x64 language/const_map2_test/00: pass
-Done dartk-vm debug_x64 language/dynamic_prefix_core_test/none: pass
-Done dartk-vm debug_x64 language/const_map_test: pass
-Done dartk-vm debug_x64 language/dynamic_prefix_core_test/01: pass
-Done dartk-vm debug_x64 language/library1_test: pass
-Done dartk-vm debug_x64 language/regress_24567_test: pass
-Done dartk-vm debug_x64 language/infinity_test: pass
-Done dartk-vm debug_x64 language/default_init_test: pass
-Done dartk-vm debug_x64 language/interceptor5_test: pass
-Done dartk-vm debug_x64 language/constructor7_test: pass
-Done dartk-vm debug_x64 language/mixin_issue10216_test: pass
-Done dartk-vm debug_x64 language/regress_30121_test: pass
-Done dartk-vm debug_x64 language/lazy_static2_test: pass
-Done dartk-vm debug_x64 language/super_operator_index5_test: pass
-Done dartk-vm debug_x64 language/closure_in_initializer2_test: pass
-Done dartk-vm debug_x64 language/deferred_function_type_test: pass
-Done dartk-vm debug_x64 language/f_bounded_quantification5_test: pass
-Done dartk-vm debug_x64 language/continue_test: pass
-Done dartk-vm debug_x64 language/issue22800_test: pass
-Done dartk-vm debug_x64 language/mixin_issue10216_2_test: pass
-Done dartk-vm debug_x64 language/final_field_initialization_order_test: pass
-Done dartk-vm debug_x64 language/do_while4_test: pass
-Done dartk-vm debug_x64 language/issue14242_test: pass
-Done dartk-vm debug_x64 language/prefix_new_test: pass
-Done dartk-vm debug_x64 language/unqual_name_test: pass
-Done dartk-vm debug_x64 language/logical_expression_test: pass
-Done dartk-vm debug_x64 language/function_malformed_result_type_test: pass
-Done dartk-vm debug_x64 language/double_to_string_as_exponential3_test: pass
-Done dartk-vm debug_x64 language/generic_closure_test: pass
-Done dartk-vm debug_x64 language/generics_test: pass
-Done dartk-vm debug_x64 language/interceptor2_test: pass
-Done dartk-vm debug_x64 language/extend_type_parameter_negative_test: pass
-Done dartk-vm debug_x64 language/regress_27957_test: pass
-Done dartk-vm debug_x64 language/deferred_shared_and_unshared_classes_test: pass
-Done dartk-vm debug_x64 language/type_variable_function_type_test: pass
-Done dartk-vm debug_x64 language/method_override4_test: pass
-Done dartk-vm debug_x64 language/rewrite_conditional_test: pass
-Done dartk-vm debug_x64 language/default_factory3_test: pass
-Done dartk-vm debug_x64 language/issue14014_test: pass
-Done dartk-vm debug_x64 language/try_catch_optimized5_test: pass
-Done dartk-vm debug_x64 language/prefix12_test: pass
-Done dartk-vm debug_x64 language/issue15720_test: pass
-Done dartk-vm debug_x64 language/await_exceptions_test: pass
-Done dartk-vm debug_x64 language/inferrer_constructor2_test: pass
-Done dartk-vm debug_x64 language/generic_constructor_mixin2_test: pass
-Done dartk-vm debug_x64 language/cyclic_type2_test: pass
-Done dartk-vm debug_x64 language/larger_implicit_getter_test: pass
-Done dartk-vm debug_x64 language/await_exceptions_test: pass
-Done dartk-vm debug_x64 language/constructor_name_test/01: pass
-Done dartk-vm debug_x64 language/constructor_name_test/none: pass
-Done dartk-vm debug_x64 language/constructor_name_test/02: pass
-Done dartk-vm debug_x64 language/constructor_name_test/03: pass
-Done dartk-vm debug_x64 language/number_identity2_test: pass
-Done dartk-vm debug_x64 language/string_interpolation4_test/01: pass
-Done dartk-vm debug_x64 language/super_no_such_method2_test/01: pass
-Done dartk-vm debug_x64 language/super_no_such_method2_test/none: pass
-Done dartk-vm debug_x64 language/string_interpolation4_test/none: pass
-Done dartk-vm debug_x64 language/metadata_scope1_test/none: pass
-Done dartk-vm debug_x64 language/metadata_scope1_test/01: pass
-Done dartk-vm debug_x64 language/call_type_literal_test/none: pass
-Done dartk-vm debug_x64 language/wrong_number_type_arguments_test/none: pass
-Done dartk-vm debug_x64 language/call_type_literal_test/01: pass
-Done dartk-vm debug_x64 language/wrong_number_type_arguments_test/02: pass
-Done dartk-vm debug_x64 language/wrong_number_type_arguments_test/01: pass
-Done dartk-vm debug_x64 language/wrong_number_type_arguments_test/00: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/none: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/01: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/02: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/04: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/03: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/05: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/06: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/07: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/08: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/21: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/22: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/24: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/23: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/25: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/26: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/27: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/28: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/29: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/30: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/41: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/31: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/42: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/43: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/44: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/45: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/46: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/47: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/48: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/49: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/50: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/51: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/52: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/53: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/54: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/09: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/10: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/11: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/32: pass
-Done dartk-vm debug_x64 language/class_cycle2_test/01: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/33a: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/33: pass
-Done dartk-vm debug_x64 language/override_inheritance_field_test/34: pass
-Done dartk-vm debug_x64 language/class_cycle2_test/02: pass
-Done dartk-vm debug_x64 language/class_cycle2_test/none: pass
-Done dartk-vm debug_x64 language/private_access_test/none: pass
-Done dartk-vm debug_x64 language/private_access_test/01: pass
-Done dartk-vm debug_x64 language/private_access_test/04: pass
-Done dartk-vm debug_x64 language/private_access_test/03: pass
-Done dartk-vm debug_x64 language/private_access_test/02: pass
-Done dartk-vm debug_x64 language/private_access_test/05: pass
-Done dartk-vm debug_x64 language/private_access_test/06: pass
-Done dartk-vm debug_x64 language/static_postfix_operator_test: pass
-Done dartk-vm debug_x64 language/bailout_container_type_test: pass
-Done dartk-vm debug_x64 language/gvn_test: pass
-Done dartk-vm debug_x64 language/regress_23408_test: pass
-Done dartk-vm debug_x64 language/prefix15_test: pass
-Done dartk-vm debug_x64 language/await_for_test: pass
-Done dartk-vm debug_x64 language/string_test: pass
-Done dartk-vm debug_x64 language/named_argument_in_const_creation_test: pass
-Done dartk-vm debug_x64 language/async_this_bound_test: pass
-Done dartk-vm debug_x64 language/mixin_mixin_test: pass
-Done dartk-vm debug_x64 language/inheritance_chain_test: pass
-Done dartk-vm debug_x64 language/call_closurization_test: pass
-Done dartk-vm debug_x64 language/function_subtype_not2_test: pass
-Done dartk-vm debug_x64 language/new_statement_test: pass
-Done dartk-vm debug_x64 language/export_not_shadowed_by_prefix_test: pass
-Done dartk-vm debug_x64 language/mixin_field_test: pass
-Done dartk-vm debug_x64 language/duplicate_interface_test: pass
-Done dartk-vm debug_x64 language/reexport_core_test: pass
-Done dartk-vm debug_x64 language/no_such_constructor2_test: pass
-Done dartk-vm debug_x64 language/type_variable_typedef_test: pass
-Done dartk-vm debug_x64 language/function_getter_test: pass
-Done dartk-vm debug_x64 language/number_constant_folding1_test: pass
-Done dartk-vm debug_x64 language/deopt_no_feedback_test: pass
-Done dartk-vm debug_x64 language/closure_type_variables_test: pass
-Done dartk-vm debug_x64 language/issue10783_test: pass
-Done dartk-vm debug_x64 language/stack_trace_test: pass
-Done dartk-vm debug_x64 language/try_finally_regress_25654_test: pass
-Done dartk-vm debug_x64 language/mixin_override_regression_test: pass
-Done dartk-vm debug_x64 language/regress_25389_test: pass
-Done dartk-vm debug_x64 language/mixin_naming_test: pass
-Done dartk-vm debug_x64 language/mixin_mixin_type_arguments_test: pass
-Done dartk-vm debug_x64 language/super_inferrer_test: pass
-Done dartk-vm debug_x64 language/field_type_check_test/none: pass
-Done dartk-vm debug_x64 language/field_type_check_test/01: pass
-Done dartk-vm debug_x64 language/regress_21793_test/01: pass
-Done dartk-vm debug_x64 language/checked_setter3_test/none: pass
-Done dartk-vm debug_x64 language/regress_21793_test/none: pass
-Done dartk-vm debug_x64 language/checked_setter3_test/01: pass
-Done dartk-vm debug_x64 language/unresolved_default_constructor_test/none: pass
-Done dartk-vm debug_x64 language/checked_setter3_test/02: pass
-Done dartk-vm debug_x64 language/unresolved_default_constructor_test/01: pass
-Done dartk-vm debug_x64 language/regress_23038_test/01: pass
-Done dartk-vm debug_x64 language/regress_23038_test/none: pass
-Done dartk-vm debug_x64 language/black_listed_test/01b: pass
-Done dartk-vm debug_x64 language/black_listed_test/01a: pass
-Done dartk-vm debug_x64 language/black_listed_test/01c: pass
-Done dartk-vm debug_x64 language/super_no_such_method3_test/01: pass
-Done dartk-vm debug_x64 language/black_listed_test/none: pass
-Done dartk-vm debug_x64 language/super_no_such_method3_test/none: pass
-Done dartk-vm debug_x64 language/black_listed_test/02a: pass
-Done dartk-vm debug_x64 language/black_listed_test/02b: pass
-Done dartk-vm debug_x64 language/black_listed_test/03a: pass
-Done dartk-vm debug_x64 language/black_listed_test/02c: pass
-Done dartk-vm debug_x64 language/black_listed_test/03b: pass
-Done dartk-vm debug_x64 language/black_listed_test/03c: pass
-Done dartk-vm debug_x64 language/black_listed_test/04a: pass
-Done dartk-vm debug_x64 language/black_listed_test/04b: pass
-Done dartk-vm debug_x64 language/black_listed_test/04c: pass
-Done dartk-vm debug_x64 language/black_listed_test/05b: pass
-Done dartk-vm debug_x64 language/black_listed_test/05a: pass
-Done dartk-vm debug_x64 language/black_listed_test/05c: pass
-Done dartk-vm debug_x64 language/black_listed_test/06a: pass
-Done dartk-vm debug_x64 language/black_listed_test/06c: pass
-Done dartk-vm debug_x64 language/black_listed_test/06b: pass
-Done dartk-vm debug_x64 language/black_listed_test/07a: pass
-Done dartk-vm debug_x64 language/black_listed_test/07b: pass
-Done dartk-vm debug_x64 language/black_listed_test/08a: pass
-Done dartk-vm debug_x64 language/black_listed_test/07c: pass
-Done dartk-vm debug_x64 language/black_listed_test/08c: pass
-Done dartk-vm debug_x64 language/black_listed_test/08b: pass
-Done dartk-vm debug_x64 language/black_listed_test/09a: pass
-Done dartk-vm debug_x64 language/black_listed_test/09c: pass
-Done dartk-vm debug_x64 language/black_listed_test/09b: pass
-Done dartk-vm debug_x64 language/black_listed_test/10a: pass
-Done dartk-vm debug_x64 language/black_listed_test/10b: pass
-Done dartk-vm debug_x64 language/black_listed_test/10c: pass
-Done dartk-vm debug_x64 language/black_listed_test/13a: pass
-Done dartk-vm debug_x64 language/black_listed_test/13b: pass
-Done dartk-vm debug_x64 language/black_listed_test/13c: pass
-Done dartk-vm debug_x64 language/black_listed_test/14a: pass
-Done dartk-vm debug_x64 language/black_listed_test/14b: pass
-Done dartk-vm debug_x64 language/black_listed_test/14c: pass
-Done dartk-vm debug_x64 language/cyclic_type_variable_test/none: pass
-Done dartk-vm debug_x64 language/cyclic_type_variable_test/03: pass
-Done dartk-vm debug_x64 language/cyclic_type_variable_test/01: pass
-Done dartk-vm debug_x64 language/cyclic_type_variable_test/02: pass
-Done dartk-vm debug_x64 language/cyclic_type_variable_test/04: pass
-Done dartk-vm debug_x64 language/generic_method_types_test/01: pass
-Done dartk-vm debug_x64 language/generic_method_types_test/none: pass
-Done dartk-vm debug_x64 language/generic_method_types_test/02: pass
-Done dartk-vm debug_x64 language/async_test/constructor2: pass
-Done dartk-vm debug_x64 language/generic_method_types_test/03: pass
-Done dartk-vm debug_x64 language/async_test/constructor3: pass
-Done dartk-vm debug_x64 language/type_check_const_function_typedef2_test/none: pass
-Done dartk-vm debug_x64 language/async_test/none: pass
-Done dartk-vm debug_x64 language/type_check_const_function_typedef2_test/00: pass
-Done dartk-vm debug_x64 language/async_test/type-mismatch2: pass
-Done dartk-vm debug_x64 language/async_test/constructor4: pass
-Done dartk-vm debug_x64 language/async_test/type-mismatch3: pass
-Done dartk-vm debug_x64 language/async_test/setter1: pass
-Done dartk-vm debug_x64 language/async_test/type-mismatch4: pass
-Done dartk-vm debug_x64 language/string_interpolate1_negative_test: pass
-Done dartk-vm debug_x64 language/async_test/type-mismatch1: pass
-Done dartk-vm debug_x64 language/issue18628_2_test/none: pass
-Done dartk-vm debug_x64 language/issue18628_2_test/01: pass
-Done dartk-vm debug_x64 language/malformed2_test/00: pass
-Done dartk-vm debug_x64 language/malformed2_test/01: pass
-Done dartk-vm debug_x64 language/malformed2_test/none: pass
-Done dartk-vm debug_x64 language/constructor6_test: pass
-Done dartk-vm debug_x64 language/rewrite_if_return_test: pass
-Done dartk-vm debug_x64 language/no_such_method_test: pass
-Done dartk-vm debug_x64 language/config_import_corelib_test: pass
-Done dartk-vm debug_x64 language/generic_native_test: pass
-Done dartk-vm debug_x64 language/function_subtype_factory1_test: pass
-Done dartk-vm debug_x64 language/named_parameters_with_object_property_names_test: pass
-Done dartk-vm debug_x64 language/comparison_test: pass
-Done dartk-vm debug_x64 language/param1_test: pass
-Done dartk-vm debug_x64 language/named_parameters4_test: pass
-Done dartk-vm debug_x64 language/null_method_test: pass
-Done dartk-vm debug_x64 language/string_interpolation_and_buffer_test: pass
-Done dartk-vm debug_x64 language/type_conversion_ssa_test: pass
-Done dartk-vm debug_x64 language/logical_expression3_test: pass
-Done dartk-vm debug_x64 language/loop_exchange2_test: pass
-Done dartk-vm debug_x64 language/const_locals_test: pass
-Done dartk-vm debug_x64 language/regress_25122_test: pass
-Done dartk-vm debug_x64 language/param_test: pass
-Done dartk-vm debug_x64 language/closures_initializer2_test: pass
-Done dartk-vm debug_x64 language/private_mixin_exception_throw_test: pass
-Done dartk-vm debug_x64 language/string_interpolate2_test: pass
-Done dartk-vm debug_x64 language/savannah_test: pass
-Done dartk-vm debug_x64 language/generic_instanceof3_test: pass
-Done dartk-vm debug_x64 language/super_abstract_method_test: pass
-Done dartk-vm debug_x64 language/mixin_extends_is_test: pass
-Done dartk-vm debug_x64 language/minify_closure_variable_collision_test: pass
-Done dartk-vm debug_x64 language/factory_arrow_test: pass
-Done dartk-vm debug_x64 language/inference_captured_variable_test: pass
-Done dartk-vm debug_x64 language/compile_time_constant_g_test: pass
-Done dartk-vm debug_x64 language/list_test: pass
-Done dartk-vm debug_x64 language/map_test: pass
-Done dartk-vm debug_x64 language/range_analysis_test: pass
-Done dartk-vm debug_x64 language/issue3806_test: pass
-Done dartk-vm debug_x64 language/mixin_mixin_bound2_test: pass
-Done dartk-vm debug_x64 language/instanceof_optimized_test: pass
-Done dartk-vm debug_x64 language/issue23244_test: pass
-Done dartk-vm debug_x64 language/const_global_test: pass
-Done dartk-vm debug_x64 language/try_catch5_test: pass
-Done dartk-vm debug_x64 language/do_while3_test: pass
-Done dartk-vm debug_x64 language/import_collection_no_prefix_test: pass
-Done dartk-vm debug_x64 language/type_promotion_more_specific_test/none: pass
-Done dartk-vm debug_x64 language/execute_finally11_test: pass
-Done dartk-vm debug_x64 language/regress_26948_test: pass
-Done dartk-vm debug_x64 language/type_promotion_more_specific_test/01: pass
-Done dartk-vm debug_x64 language/type_promotion_more_specific_test/02: pass
-Done dartk-vm debug_x64 language/type_promotion_more_specific_test/03: pass
-Done dartk-vm debug_x64 language/type_promotion_more_specific_test/04: pass
-Done dartk-vm debug_x64 language/type_promotion_more_specific_test/06: pass
-Done dartk-vm debug_x64 language/type_promotion_more_specific_test/05: pass
-Done dartk-vm debug_x64 language/type_promotion_more_specific_test/08: pass
-Done dartk-vm debug_x64 language/type_promotion_more_specific_test/07: pass
-Done dartk-vm debug_x64 language/type_promotion_more_specific_test/09: pass
-Done dartk-vm debug_x64 language/type_promotion_more_specific_test/10: pass
-Done dartk-vm debug_x64 language/unsupported_operators_test/03: pass
-Done dartk-vm debug_x64 language/type_promotion_more_specific_test/11: pass
-Done dartk-vm debug_x64 language/unsupported_operators_test/01: pass
-Done dartk-vm debug_x64 language/unsupported_operators_test/02: pass
-Done dartk-vm debug_x64 language/unsupported_operators_test/04: pass
-Done dartk-vm debug_x64 language/type_promotion_more_specific_test/12: pass
-Done dartk-vm debug_x64 language/type_promotion_more_specific_test/13: pass
-Done dartk-vm debug_x64 language/unsupported_operators_test/none: pass
-Done dartk-vm debug_x64 language/getter_parameters_test/01: pass
-Done dartk-vm debug_x64 language/getter_parameters_test/03: pass
-Done dartk-vm debug_x64 language/getter_parameters_test/02: pass
-Done dartk-vm debug_x64 language/map_literal1_test/01: pass
-Done dartk-vm debug_x64 language/map_literal1_test/none: pass
-Done dartk-vm debug_x64 language/constructor_named_arguments_test/none: pass
-Done dartk-vm debug_x64 language/constructor_named_arguments_test/01: pass
-Done dartk-vm debug_x64 language/getter_parameters_test/none: pass
-Done dartk-vm debug_x64 language/getter_parameters_test/04: pass
-Done dartk-vm debug_x64 language/constructor_redirect_test/none: pass
-Done dartk-vm debug_x64 language/constructor_redirect_test/01: pass
-Done dartk-vm debug_x64 language/proxy2_test/01: pass
-Done dartk-vm debug_x64 language/proxy2_test/none: pass
-Done dartk-vm debug_x64 language/proxy2_test/03: pass
-Done dartk-vm debug_x64 language/proxy2_test/02: pass
-Done dartk-vm debug_x64 language/proxy2_test/04: pass
-Done dartk-vm debug_x64 language/if_null_evaluation_order_test/none: pass
-Done dartk-vm debug_x64 language/if_null_evaluation_order_test/01: pass
-Done dartk-vm debug_x64 language/getter_override_test/00: pass
-Done dartk-vm debug_x64 language/const_evaluation_test/none: pass
-Done dartk-vm debug_x64 language/if_null_evaluation_order_test/02: pass
-Done dartk-vm debug_x64 language/getter_override_test/none: pass
-Done dartk-vm debug_x64 language/const_evaluation_test/01: pass
-Done dartk-vm debug_x64 language/getter_override_test/02: pass
-Done dartk-vm debug_x64 language/getter_override_test/01: pass
-Done dartk-vm debug_x64 language/string_interpolation5_test/01: pass
-Done dartk-vm debug_x64 language/string_interpolation5_test/none: pass
-Done dartk-vm debug_x64 language/getter_override_test/03: pass
-Done dartk-vm debug_x64 language/setter3_test/02: pass
-Done dartk-vm debug_x64 language/setter3_test/none: pass
-Done dartk-vm debug_x64 language/generic_metadata_test/02: pass
-Done dartk-vm debug_x64 language/setter3_test/01: pass
-Done dartk-vm debug_x64 language/generic_metadata_test/none: pass
-Done dartk-vm debug_x64 language/generic_metadata_test/01: pass
-Done dartk-vm debug_x64 language/generic_metadata_test/03: pass
-Done dartk-vm debug_x64 language/deferred_duplicate_prefix3_test/01: pass
-Done dartk-vm debug_x64 language/list_literal2_negative_test: pass
-Done dartk-vm debug_x64 language/deferred_duplicate_prefix3_test/none: pass
-Done dartk-vm debug_x64 language/override_field_method4_negative_test: pass
-Done dartk-vm debug_x64 language/rewrite_logical_test: pass
-Done dartk-vm debug_x64 language/function_subtype_local0_test: pass
-Done dartk-vm debug_x64 language/inline_getter_test: pass
-Done dartk-vm debug_x64 language/compile_time_constant2_test: pass
-Done dartk-vm debug_x64 language/named_parameters_passing_falsy_test: pass
-Done dartk-vm debug_x64 language/mixin_proto_test: pass
-Done dartk-vm debug_x64 language/issue11724_test: pass
-Done dartk-vm debug_x64 language/instance_method2_negative_test: pass
-Done dartk-vm debug_x64 language/constant_locals_test/01: pass
-Done dartk-vm debug_x64 language/await_nonfuture_test: pass
-Done dartk-vm debug_x64 language/regress_r24720_test: pass
-Done dartk-vm debug_x64 language/generic_field_mixin4_test: pass
-Done dartk-vm debug_x64 language/regress_14348_test: pass
-Done dartk-vm debug_x64 language/constant_locals_test/02: pass
-Done dartk-vm debug_x64 language/constant_locals_test/03: pass
-Done dartk-vm debug_x64 language/constant_locals_test/none: pass
-Done dartk-vm debug_x64 language/constant_locals_test/04: pass
-Done dartk-vm debug_x64 language/constant_locals_test/05: pass
-Done dartk-vm debug_x64 language/super_operator_index_test/none: pass
-Done dartk-vm debug_x64 language/super_operator_index_test/02: pass
-Done dartk-vm debug_x64 language/super_operator_index_test/01: pass
-Done dartk-vm debug_x64 language/super_operator_index_test/05: pass
-Done dartk-vm debug_x64 language/super_operator_index_test/04: pass
-Done dartk-vm debug_x64 language/super_operator_index_test/06: pass
-Done dartk-vm debug_x64 language/super_operator_index_test/03: pass
-Done dartk-vm debug_x64 language/super_operator_index_test/07: pass
-Done dartk-vm debug_x64 language/instanceof4_test/none: pass
-Done dartk-vm debug_x64 language/conditional_property_access_test/none: pass
-Done dartk-vm debug_x64 language/conditional_property_access_test/12: pass
-Done dartk-vm debug_x64 language/instanceof4_test/01: pass
-Done dartk-vm debug_x64 language/conditional_property_access_test/02: pass
-Done dartk-vm debug_x64 language/conditional_property_access_test/01: pass
-Done dartk-vm debug_x64 language/conditional_property_access_test/13: pass
-Done dartk-vm debug_x64 language/conditional_property_access_test/03: pass
-Done dartk-vm debug_x64 language/conditional_property_access_test/09: pass
-Done dartk-vm debug_x64 language/conditional_property_access_test/04: pass
-Done dartk-vm debug_x64 language/conditional_property_access_test/14: pass
-Done dartk-vm debug_x64 language/conditional_property_access_test/16: pass
-Done dartk-vm debug_x64 language/conditional_property_access_test/15: pass
-Done dartk-vm debug_x64 language/conditional_property_access_test/05: pass
-Done dartk-vm debug_x64 language/conditional_property_access_test/17: pass
-Done dartk-vm debug_x64 language/conditional_property_access_test/06: pass
-Done dartk-vm debug_x64 language/conditional_property_access_test/10: pass
-Done dartk-vm debug_x64 language/conditional_property_access_test/11: pass
-Done dartk-vm debug_x64 language/deferred_inheritance_constraints_test/none: pass
-Done dartk-vm debug_x64 language/deferred_inheritance_constraints_test/extends: pass
-Done dartk-vm debug_x64 language/deferred_inheritance_constraints_test/implements: pass
-Done dartk-vm debug_x64 language/deferred_inheritance_constraints_test/mixin: pass
-Done dartk-vm debug_x64 language/deferred_inheritance_constraints_test/redirecting_constructor: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/none: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/01: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/17: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/02: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/03: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/04: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/18: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/19: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/20: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/21: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/05: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/22: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/06: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/23: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/24: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/07: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/08: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/25: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/26: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/27: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/09: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/28: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/10: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/29: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/30: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/11: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/12: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/31: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/32: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/33: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/34: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/13: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/14: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/35: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/36: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/15: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/37: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/16: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/39: pass
-Done dartk-vm debug_x64 language/prefix_unqualified_invocation_test/01: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/38: pass
-Done dartk-vm debug_x64 language/conditional_property_increment_decrement_test/40: pass
-Done dartk-vm debug_x64 language/prefix_unqualified_invocation_test/02: pass
-Done dartk-vm debug_x64 language/prefix_unqualified_invocation_test/none: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/none: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/01: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/03: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/04: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/02: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/05: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/06: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/07: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/09: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/08: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/10: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/11: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/12: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/15: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/13: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/29: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/14: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/30: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/18: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/16: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/17: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/19: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/20: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/22: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/21: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/23: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/24: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/27: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/26: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/25: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/31: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/28: pass
-Done dartk-vm debug_x64 language/if_null_assignment_behavior_test/32: pass
-Done dartk-vm debug_x64 language/typevariable_substitution2_test/none: pass
-Done dartk-vm debug_x64 language/deferred_duplicate_prefix2_test/01: pass
-Done dartk-vm debug_x64 language/typevariable_substitution2_test/02: pass
-Done dartk-vm debug_x64 language/deferred_duplicate_prefix2_test/none: pass
-Done dartk-vm debug_x64 language/typevariable_substitution2_test/01: pass
-Done dartk-vm debug_x64 language_2/async_star_no_cancel_test: pass
-Done dartk-vm debug_x64 language_2/accessor_conflict_import_prefixed2_test: pass
-Done dartk-vm debug_x64 language_2/and_operation_on_non_integer_operand_test: pass
-Done dartk-vm debug_x64 language_2/abstract_beats_arguments_test: pass
-Done dartk-vm debug_x64 language_2/async_and_or_test: pass
-Done dartk-vm debug_x64 language_2/assert_with_type_test_or_cast_test: pass
-Done dartk-vm debug_x64 language_2/async_cascade_test: pass
-Done dartk-vm debug_x64 language_2/assert_with_type_test_or_cast_test: pass
-Done dartk-vm debug_x64 language_2/async_backwards_compatibility_1_test: pass
-Done dartk-vm debug_x64 language_2/async_regression_23058_test: pass
-Done dartk-vm debug_x64 language_2/async_control_structures_test: pass
-Done dartk-vm debug_x64 language_2/aborting_switch_case_test: pass
-Done dartk-vm debug_x64 language_2/async_await_foreign_test: pass
-Done dartk-vm debug_x64 language_2/async_star_regression_fisk_test: pass
-Done dartk-vm debug_x64 language_2/assert_with_message_test: pass
-Done dartk-vm debug_x64 language_2/assert_assignable_type_test: pass
-Done dartk-vm debug_x64 language_2/async_star_take_reyield_test: pass
-Done dartk-vm debug_x64 language_2/async_star_cancel_while_paused_test: pass
-Done dartk-vm debug_x64 language_2/accessor_conflict_import_prefixed_test: pass
-Done dartk-vm debug_x64 language_2/accessor_conflict_import_test: pass
-Done dartk-vm debug_x64 language_2/async_star_regression_2238_test: pass
-Done dartk-vm debug_x64 language_2/assign_instance_method_test: pass
-Done dartk-vm debug_x64 language_2/async_break_in_finally_test: pass
-Done dartk-vm debug_x64 language_2/async_finally_rethrow_test: pass
-Done dartk-vm debug_x64 language_2/arithmetic_test: pass
-Done dartk-vm debug_x64 language_2/async_star_pause_test: pass
-Done dartk-vm debug_x64 language_2/async_backwards_compatibility_2_test: pass
-Done dartk-vm debug_x64 language_2/async_rethrow_test: pass
-Done dartk-vm debug_x64 language_2/async_call_test: pass
-Done dartk-vm debug_x64 language_2/allocate_test: pass
-Done dartk-vm debug_x64 language_2/ackermann_test: pass
-Done dartk-vm debug_x64 language_2/assertion_test: pass
-Done dartk-vm debug_x64 language_2/allocation_sinking_inlining_test: pass
-Done dartk-vm debug_x64 language_2/abstract_getter2_test: pass
-Done dartk-vm debug_x64 language_2/assign_op_test: pass
-Done dartk-vm debug_x64 language_2/async_star_await_pauses_test: pass
-Done dartk-vm debug_x64 language_2/arithmetic_smi_overflow_test: pass
-Done dartk-vm debug_x64 language_2/assign_top_method_test: pass
-Done dartk-vm debug_x64 language_2/allocate_large_object_test: pass
-Done dartk-vm debug_x64 language_2/async_await_catch_regression_test: pass
-Done dartk-vm debug_x64 language_2/abstract_object_method_test: pass
-Done dartk-vm debug_x64 language_2/abstract_method_test: pass
-Done dartk-vm debug_x64 language_2/async_star_no_cancel2_test: pass
-Done dartk-vm debug_x64 language_2/accessor_conflict_import2_test: pass
-Done dartk-vm debug_x64 language_2/arithmetic_canonicalization_test: pass
-Done dartk-vm debug_x64 language_2/assertion_initializer_const_error_test/01: pass
-Done dartk-vm debug_x64 language_2/adjacent_const_string_literals_test: pass
-Done dartk-vm debug_x64 language_2/async_star_cancel_and_throw_in_finally_test: pass
-Done dartk-vm debug_x64 language_2/accessor_conflict_export_test: pass
-Done dartk-vm debug_x64 language_2/assertion_initializer_const_error_test/none: pass
-Done dartk-vm debug_x64 language_2/assign_to_type_test/none: pass
-Done dartk-vm debug_x64 language_2/assign_to_type_test/01: pass
-Done dartk-vm debug_x64 language_2/assign_to_type_test/02: pass
-Done dartk-vm debug_x64 language_2/assign_to_type_test/03: pass
-Done dartk-vm debug_x64 language_2/assign_to_type_test/04: pass
-Done dartk-vm debug_x64 language_2/async_continue_label_test/none: pass
-Done dartk-vm debug_x64 language_2/assignable_expression_test/01: pass
-Done dartk-vm debug_x64 language_2/async_continue_label_test/await_in_init: pass
-Done dartk-vm debug_x64 language_2/async_continue_label_test/await_in_condition: pass
-Done dartk-vm debug_x64 language_2/async_continue_label_test/await_in_update: pass
-Done dartk-vm debug_x64 language_2/assignable_expression_test/02: pass
-Done dartk-vm debug_x64 language_2/async_continue_label_test/await_in_body: pass
-Done dartk-vm debug_x64 language_2/assignable_expression_test/none: pass
-Done dartk-vm debug_x64 language_2/assignable_expression_test/03: pass
-Done dartk-vm debug_x64 language_2/assignable_expression_test/11: pass
-Done dartk-vm debug_x64 language_2/assignable_expression_test/12: pass
-Done dartk-vm debug_x64 language_2/assignable_expression_test/13: pass
-Done dartk-vm debug_x64 language_2/assignable_expression_test/21: pass
-Done dartk-vm debug_x64 language_2/assignable_expression_test/22: pass
-Done dartk-vm debug_x64 language_2/assignable_expression_test/23: pass
-Done dartk-vm debug_x64 language_2/assignable_expression_test/32: pass
-Done dartk-vm debug_x64 language_2/assignable_expression_test/31: pass
-Done dartk-vm debug_x64 language_2/assignable_expression_test/33: pass
-Done dartk-vm debug_x64 language_2/assignable_expression_test/41: pass
-Done dartk-vm debug_x64 language_2/assignable_expression_test/42: pass
-Done dartk-vm debug_x64 language_2/assignable_expression_test/43: pass
-Done dartk-vm debug_x64 language_2/assignable_expression_test/50: pass
-Done dartk-vm debug_x64 language_2/assign_static_type_test/none: pass
-Done dartk-vm debug_x64 language_2/generic_methods_generic_function_result_test/none: pass
-Done dartk-vm debug_x64 language_2/assign_static_type_test/01: pass
-Done dartk-vm debug_x64 language_2/assign_static_type_test/02: pass
-Done dartk-vm debug_x64 language_2/assign_static_type_test/03: pass
-Done dartk-vm debug_x64 language_2/assign_static_type_test/04: pass
-Done dartk-vm debug_x64 language_2/assign_static_type_test/05: pass
-Done dartk-vm debug_x64 language_2/generic_methods_generic_function_result_test/01: pass
-Done dartk-vm debug_x64 language_2/assign_static_type_test/06: pass
-Done dartk-vm debug_x64 language_2/assertion_initializer_const_error2_test/none: pass
-Done dartk-vm debug_x64 language_2/assertion_initializer_const_error2_test/cc01: pass
-Done dartk-vm debug_x64 language_2/assertion_initializer_const_error2_test/cc03: pass
-Done dartk-vm debug_x64 language_2/assertion_initializer_const_error2_test/cc04: pass
-Done dartk-vm debug_x64 language_2/assertion_initializer_const_error2_test/cc05: pass
-Done dartk-vm debug_x64 language_2/assertion_initializer_const_error2_test/cc06: pass
-Done dartk-vm debug_x64 language_2/assertion_initializer_const_error2_test/cc07: pass
-Done dartk-vm debug_x64 language_2/assertion_initializer_const_error2_test/cc08: pass
-Done dartk-vm debug_x64 language_2/assertion_initializer_const_error2_test/cc09: pass
-Done dartk-vm debug_x64 language_2/assertion_initializer_const_error2_test/cc02: pass
-Done dartk-vm debug_x64 language_2/assertion_initializer_const_error2_test/cc10: pass
-Done dartk-vm debug_x64 language_2/assertion_initializer_const_error2_test/cc11: pass
-Done dartk-vm debug_x64 language_2/abstract_syntax_test/01: pass
-Done dartk-vm debug_x64 language_2/abstract_factory_constructor_test/none: pass
-Done dartk-vm debug_x64 language_2/abstract_factory_constructor_test/00: pass
-Done dartk-vm debug_x64 language_2/abstract_syntax_test/none: pass
-Done dartk-vm debug_x64 language_2/abstract_syntax_test/00: pass
-Done dartk-vm debug_x64 language_2/assertion_initializer_const_function_error_test/none: pass
-Done dartk-vm debug_x64 language_2/assertion_initializer_const_function_error_test/01: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a01b: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a01c: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/none: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a01d: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a01a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a04b: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a02a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a03a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a04a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a03b: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a05a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a04c: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a05d: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a05b: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a05f: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a05h: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a05g: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a05c: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a06b: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a05e: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a07b: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a06a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a08b: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a11a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a07a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a08a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a09a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a10a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a12b: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a11b: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a11d: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a11c: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a12d: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a12e: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a12f: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a12a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a12c: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a13b: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a13d: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a14b: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a12g: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a13a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a14d: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a13c: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a14a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a15b: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a14c: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b00a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a15d: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a15a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b00b: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b00d: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b00c: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/e1: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/a15c: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/e4: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/e2: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/e5: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/e3: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/e6: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/e7: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/e8: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/e9: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b01b: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b01c: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b04b: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b01a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b06b: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b02a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b03a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b05a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b04a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b06a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b10b: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b11a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b07a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b09a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b08a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b10a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b11b: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b12b: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b12e: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b12d: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b11c: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b11d: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b12a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b12f: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b12c: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b13b: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b13d: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b12g: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b14b: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b14d: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b13a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b13c: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b14a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b15b: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b15d: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b14c: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/c01b: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/c01c: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b15a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/b15c: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/c01a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/c04b: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/c02a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/c03a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/c04a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/c05a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/c06a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/c11a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/c07a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/c08a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/c11b: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/c09a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/d01b: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/c10a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/d01c: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/d04b: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/d01a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/d02a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/d03a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/d04a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/d07a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/d06a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/d05a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/d08a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/d08b: pass
-Done dartk-vm debug_x64 language_2/assertion_initializer_test: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/d08c: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/d09a: pass
-Done dartk-vm debug_x64 language_2/async_await_syntax_test/d10a: pass
-Done dartk-vm debug_x64 language_2/assert_message_test: pass
-Done dartk-vm debug_x64 language_2/accessor_conflict_export2_test: pass
-Done dartk-vm debug_x64 language_2/assert_trailing_comma_test/none: pass
-Done dartk-vm debug_x64 language_2/assert_trailing_comma_test/01: pass
-Done dartk-vm debug_x64 language_2/assert_trailing_comma_test/02: pass
-Done dartk-vm debug_x64 language_2/adjacent_string_literals_test: pass
-Done dartk-vm debug_x64 language_2/async_star_regression_23116_test: pass
-Done dartk-vm debug_x64 language_2/async_star_stream_take_test: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/1: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/2: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/3: pass
-Done dartk-vm debug_x64 language_2/abstract_getter_test/none: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/4: pass
-Done dartk-vm debug_x64 language_2/abstract_getter_test/01: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/5: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/none: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/6: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/7: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/9: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/8: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/10: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/11: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/12: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/13: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/14: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/15: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/16: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/18: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/17: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/19: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/20: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/21: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/23: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/22: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/25: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/26: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/24: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/27: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/29: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/28: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/30: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/31: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/32: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/33: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/34: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/36: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/35: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/38: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/37: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/39: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/41: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/40: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/42: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/44: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/43: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/45: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/46: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/47: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/48: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/49: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/50: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/51: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/53: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/52: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/54: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/55: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/56: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/58: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/57: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/60: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/59: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/61: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/62: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/63: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/64: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/65: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/66: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/68: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/69: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/67: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/70: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/71: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/72: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/73: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/74: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/75: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/77: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/76: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/78: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/80: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/81: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/79: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/83: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/82: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/85: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/84: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/86: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/88: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/87: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/89: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/90: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/91: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/93: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/92: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/94: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/95: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/97: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/96: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/98: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/99: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/100: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/101: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/102: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/104: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/103: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/105: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/107: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/106: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/109: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/108: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/110: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/112: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/111: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/114: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/113: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/115: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/116: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/118: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/117: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/120: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/119: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/123: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/124: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/122: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/121: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/125: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/126: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/127: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/128: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/130: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/129: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/132: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/131: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/133: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/134: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/135: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/137: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/136: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/138: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/140: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/139: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/141: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/142: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/143: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/145: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/146: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/148: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/144: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/149: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/147: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/150: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/151: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/152: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/155: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/153: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/154: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/156: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/157: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/158: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/159: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/160: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/161: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/163: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/165: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/164: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/162: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/166: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/167: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/168: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/170: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/169: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/173: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/171: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/172: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/174: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/175: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/178: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/176: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/179: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/181: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/180: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/177: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/182: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/183: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/184: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/185: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/186: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/188: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/190: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/189: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/187: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/191: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/193: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/192: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/195: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/196: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/194: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/197: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/198: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/199: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/201: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/200: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/204: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/205: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/203: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/202: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/206: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/207: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/209: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/208: pass
-Done dartk-vm debug_x64 language_2/arg_param_trailing_comma_test/210: pass
-Done dartk-vm debug_x64 language_2/async_or_generator_return_type_stacktrace_test/01: pass
-Done dartk-vm debug_x64 language_2/async_or_generator_return_type_stacktrace_test/03: pass
-Done dartk-vm debug_x64 language_2/async_or_generator_return_type_stacktrace_test/none: pass
-Done dartk-vm debug_x64 language_2/async_or_generator_return_type_stacktrace_test/02: pass
-Done dartk-vm debug_x64 language_2/async_return_types_test/none: pass
-Done dartk-vm debug_x64 language_2/async_return_types_test/wrongTypeParameter: pass
-Done dartk-vm debug_x64 language_2/async_return_types_test/return_value_sync_star: pass
-Done dartk-vm debug_x64 language_2/async_return_types_test/tooManyTypeParameters: pass
-Done dartk-vm debug_x64 language_2/async_return_types_test/wrongReturnType: pass
-Done dartk-vm debug_x64 language_2/assertion_initializer_const_function_test/none: pass
-Done dartk-vm debug_x64 language_2/assertion_initializer_const_function_test/01: pass
-Done dartk-vm debug_x64 language_2/async_return_types_test/nestedFuture: pass
-Done dartk-vm debug_x64 language_2/abstract_exact_selector_test/none: pass
-Done dartk-vm debug_x64 language_2/abstract_exact_selector_test/01: pass
-Done dartk-vm debug_x64 lib/async/stack_trace15_test: pass
-Done dartk-vm debug_x64 lib/async/catch_errors25_test: pass
-Done dartk-vm debug_x64 lib/async/slow_consumer3_test: pass
-Done dartk-vm debug_x64 lib/async/zone_future_schedule_microtask_test: pass
-Done dartk-vm debug_x64 lib/async/intercept_schedule_microtask1_test: pass
-Done dartk-vm debug_x64 lib/async/run_zoned1_test: pass
-Done dartk-vm debug_x64 lib/async/stack_trace02_test: pass
-Done dartk-vm debug_x64 lib/async/future_timeout_test: pass
-Done dartk-vm debug_x64 lib/async/stream_transformer_from_handlers_test: pass
-Done dartk-vm debug_x64 lib/async/zone_root_bind_test: pass
-Done dartk-vm debug_x64 lib/async/future_foreach_test: pass
-Done dartk-vm debug_x64 lib/async/stack_trace25_test: pass
-Done dartk-vm debug_x64 lib/async/stream_state_test: pass
-Done dartk-vm debug_x64 lib/async/stream_iterator_test: pass
-Done dartk-vm debug_x64 lib/async/stack_trace14_test: pass
-Done dartk-vm debug_x64 lib/async/catch_errors28_test: pass
-Done dartk-vm debug_x64 lib/async/catch_errors5_test: pass
-Done dartk-vm debug_x64 lib/async/stack_trace17_test: pass
-Done dartk-vm debug_x64 lib/async/stack_trace13_test: pass
-Done dartk-vm debug_x64 lib/async/intercept_schedule_microtask3_test: pass
-Done dartk-vm debug_x64 lib/async/stream_distinct_test: pass
-Done dartk-vm debug_x64 lib/async/timer_cancel1_test: pass
-Done dartk-vm debug_x64 lib/async/intercept_schedule_microtask4_test: pass
-Done dartk-vm debug_x64 lib/async/timer_cancel_test: pass
-Done dartk-vm debug_x64 lib/async/stream_periodic5_test: pass
-Done dartk-vm debug_x64 lib/async/run_zoned4_test: pass
-Done dartk-vm debug_x64 lib/async/catch_errors21_test: pass
-Done dartk-vm debug_x64 lib/async/future_value_chain_test: pass
-Done dartk-vm debug_x64 lib/async/timer_test: pass
-Done dartk-vm debug_x64 lib/async/schedule_microtask3_test: pass
-Done dartk-vm debug_x64 lib/async/zone_bind_callback_unary_test: pass
-Done dartk-vm debug_x64 lib/async/timer_regress22626_test: pass
-Done dartk-vm debug_x64 lib/async/catch_errors27_test: pass
-Done dartk-vm debug_x64 lib/async/stream_type_test: pass
-Done dartk-vm debug_x64 lib/async/timer_not_available_test: pass
-Done dartk-vm debug_x64 lib/async/stream_last_where_test: pass
-Done dartk-vm debug_x64 lib/async/schedule_microtask_test: pass
-Done dartk-vm debug_x64 lib/async/stream_controller_test: pass
-Done dartk-vm debug_x64 lib/async/zone_debug_test: pass
-Done dartk-vm debug_x64 lib/async/zone_create_timer2_test: pass
-Done dartk-vm debug_x64 lib/async/multiple_timer_test: pass
-Done dartk-vm debug_x64 lib/async/zone_run_guarded_test: pass
-Done dartk-vm debug_x64 lib/async/stack_trace20_test: pass
-Done dartk-vm debug_x64 lib/async/stream_take_test: pass
-Done dartk-vm debug_x64 lib/async/stream_from_iterable_test: pass
-Done dartk-vm debug_x64 lib/async/stream_periodic2_test: pass
-Done dartk-vm debug_x64 lib/async/catch_errors16_test: pass
-Done dartk-vm debug_x64 lib/async/stack_trace11_test: pass
-Done dartk-vm debug_x64 lib/async/catch_errors3_test: pass
-Done dartk-vm debug_x64 lib/async/stack_trace10_test: pass
-Done dartk-vm debug_x64 lib/async/timer_isActive_test: pass
-Done dartk-vm debug_x64 lib/async/stream_empty_test: pass
-Done dartk-vm debug_x64 lib/async/catch_errors2_test: pass
-Done dartk-vm debug_x64 lib/async/future_value_chain2_test: pass
-Done dartk-vm debug_x64 lib/async/zone_empty_description2_test: pass
-Done dartk-vm debug_x64 lib/async/stream_event_transformed_test: pass
-Done dartk-vm debug_x64 lib/async/zone_error_callback_test: pass
-Done dartk-vm debug_x64 lib/async/wait_for_cancel_test: pass
-Done dartk-vm debug_x64 lib/async/future_or_only_in_async_test/00: pass
-Done dartk-vm debug_x64 lib/async/future_or_only_in_async_test/none: pass
-Done dartk-vm debug_x64 lib/async/async_await_zones_test: pass
-Done dartk-vm debug_x64 lib/async/stack_trace04_test: pass
-Done dartk-vm debug_x64 lib/async/stream_timeout_test: pass
-Done dartk-vm debug_x64 lib/async/stream_first_where_test: pass
-Done dartk-vm debug_x64 lib/async/zone_run_test: pass
-Done dartk-vm debug_x64 lib/async/schedule_microtask2_test: pass
-Done dartk-vm debug_x64 lib/async/catch_errors15_test: pass
-Done dartk-vm debug_x64 lib/async/catch_errors4_test: pass
-Done dartk-vm debug_x64 lib/async/stack_trace07_test: pass
-Done dartk-vm debug_x64 lib/async/zone_run_unary_test: pass
-Done dartk-vm debug_x64 lib/async/schedule_microtask5_test: pass
-Done dartk-vm debug_x64 lib/async/catch_errors6_test: pass
-Done dartk-vm debug_x64 lib/async/stack_trace05_test: pass
-Done dartk-vm debug_x64 lib/async/zone_bind_test: pass
-Done dartk-vm debug_x64 lib/async/zone_create_periodic_timer_test: pass
-Done dartk-vm debug_x64 lib/async/stream_transform_test: pass
-Done dartk-vm debug_x64 lib/async/stack_trace24_test: pass
-Done dartk-vm debug_x64 lib/async/slow_consumer2_test: pass
-Done dartk-vm debug_x64 lib/async/future_or_non_strong_test: pass
-Done dartk-vm debug_x64 lib/async/stream_subscription_as_future_test: pass
-Done dartk-vm debug_x64 lib/async/future_value_chain4_test: pass
-Done dartk-vm debug_x64 lib/async/catch_errors24_test: pass
-Done dartk-vm debug_x64 lib/async/stream_transformer_test: pass
-Done dartk-vm debug_x64 lib/async/zone_fork_test: pass
-Done dartk-vm debug_x64 lib/async/first_regression_test: pass
-Done dartk-vm debug_x64 lib/async/zone_bind_callback_test: pass
-Done dartk-vm debug_x64 lib/async/future_value_chain3_test: pass
-Done dartk-vm debug_x64 lib/async/intercept_schedule_microtask2_test: pass
-Done dartk-vm debug_x64 lib/async/catch_errors7_test: pass
-Done dartk-vm debug_x64 lib/async/catch_errors11_test: pass
-Done dartk-vm debug_x64 lib/async/catch_errors18_test: pass
-Done dartk-vm debug_x64 lib/async/stream_state_nonzero_timer_test: pass
-Done dartk-vm debug_x64 lib/async/catch_errors22_test: pass
-Done dartk-vm debug_x64 lib/async/stream_listen_zone_test: pass
-Done dartk-vm debug_x64 lib/async/stream_iterator_double_cancel_test: pass
-Done dartk-vm debug_x64 lib/async/stream_subscription_cancel_test: pass
-Done dartk-vm debug_x64 lib/async/stack_trace12_test: pass
-Done dartk-vm debug_x64 lib/async/intercept_schedule_microtask5_test: pass
-Done dartk-vm debug_x64 lib/async/future_microtask_test: pass
-Done dartk-vm debug_x64 lib/async/catch_errors12_test: pass
-Done dartk-vm debug_x64 lib/async/zone_value_test: pass
-Done dartk-vm debug_x64 lib/async/stack_trace18_test: pass
-Done dartk-vm debug_x64 lib/async/stack_trace01_test: pass
-Done dartk-vm debug_x64 lib/async/run_zoned8_test: pass
-Done dartk-vm debug_x64 lib/async/stack_trace03_test: pass
-Done dartk-vm debug_x64 lib/async/stream_join_test: pass
-Done dartk-vm debug_x64 lib/async/catch_errors20_test: pass
-Done dartk-vm debug_x64 lib/async/stream_periodic_test: pass
-Done dartk-vm debug_x64 lib/async/future_or_strong_test: pass
-Done dartk-vm debug_x64 lib/async/catch_errors_test: pass
-Done dartk-vm debug_x64 lib/async/intercept_print1_test: pass
-Done dartk-vm debug_x64 lib/async/async_await_sync_completer_test: pass
-Done dartk-vm debug_x64 lib/async/stream_single_test: pass
-Done dartk-vm debug_x64 lib/async/catch_errors19_test: pass
-Done dartk-vm debug_x64 lib/async/zone_create_timer_test: pass
-Done dartk-vm debug_x64 lib/async/run_zoned7_test: pass
-Done dartk-vm debug_x64 lib/async/stack_trace09_test: pass
-Done dartk-vm debug_x64 lib/async/stream_view_test: pass
-Done dartk-vm debug_x64 lib/async/future_delayed_error_test: pass
-Done dartk-vm debug_x64 lib/async/catch_errors26_test: pass
-Done dartk-vm debug_x64 lib/async/future_constructor2_test: pass
-Done dartk-vm debug_x64 lib/async/timer_repeat_test: pass
-Done dartk-vm debug_x64 lib/async/run_zoned6_test/01: pass
-Done dartk-vm debug_x64 lib/async/run_zoned6_test/none: pass
-Done dartk-vm debug_x64 lib/async/run_zoned9_test/none: pass
-Done dartk-vm debug_x64 lib/async/run_zoned9_test/01: pass
-Done dartk-vm debug_x64 lib/async/future_test/none: pass
-Done dartk-vm debug_x64 lib/async/future_test/01: pass
-Done dartk-vm debug_x64 lib/async/stream_from_futures_test: pass
-Done dartk-vm debug_x64 lib/async/catch_errors17_test: pass
-Done dartk-vm debug_x64 lib/async/run_zoned5_test: pass
-Done dartk-vm debug_x64 lib/async/stack_trace19_test: pass
-Done dartk-vm debug_x64 lib/async/zone_register_callback_test: pass
-Done dartk-vm debug_x64 lib/async/stack_trace22_test: pass
-Done dartk-vm debug_x64 lib/async/future_constructor_test: pass
-Done dartk-vm debug_x64 lib/async/stream_periodic6_test: pass
-Done dartk-vm debug_x64 lib/async/futures_test: pass
-Done dartk-vm debug_x64 lib/async/catch_errors23_test: pass
-Done dartk-vm debug_x64 lib/async/stream_controller_async_test: pass
-Done dartk-vm debug_x64 lib/async/stream_periodic3_test: pass
-Done dartk-vm debug_x64 lib/async/slow_consumer_test: pass
-Done dartk-vm debug_x64 lib/async/zone_empty_description_test: pass
-Done dartk-vm debug_x64 lib/async/timer_cancel2_test: pass
-Done dartk-vm debug_x64 lib/async/stack_trace08_test: pass
-Done dartk-vm debug_x64 lib/async/catch_errors13_test: pass
-Done dartk-vm debug_x64 lib/async/catch_errors8_test: pass
-Done dartk-vm debug_x64 lib/async/stream_single_to_multi_subscriber_test: pass
-Done dartk-vm debug_x64 lib/async/stream_transformation_broadcast_test: pass
-Done dartk-vm debug_x64 lib/async/stack_trace23_test: pass
-Done dartk-vm debug_x64 lib/async/zone_register_callback_unary_test: pass
-Done dartk-vm debug_x64 lib/async/stream_zones_test: pass
-Done dartk-vm debug_x64 lib/async/stack_trace21_test: pass
-Done dartk-vm debug_x64 lib/async/intercept_schedule_microtask6_test: pass
-Done dartk-vm debug_x64 lib/async/stack_trace16_test: pass
-Done dartk-vm debug_x64 lib/async/catch_errors14_test: pass
-Done dartk-vm debug_x64 lib/async/stack_trace06_test: pass
-Done dartk-vm debug_x64 lib/developer/timeline_test: pass
-Done dartk-vm debug_x64 lib/async/stream_periodic4_test: pass
-Done dartk-vm debug_x64 lib/developer/inspect_test: pass
-Done dartk-vm debug_x64 lib/mirrors/delegate_class_test: pass
-Done dartk-vm debug_x64 lib/mirrors/type_argument_is_type_variable_test: pass
-Done dartk-vm debug_x64 lib/mirrors/invoke_closurization2_test: pass
-Done dartk-vm debug_x64 lib/mirrors/library_imports_shown_test: pass
-Done dartk-vm debug_x64 lib/mirrors/invoke_call_on_closure_test: pass
-Done dartk-vm debug_x64 lib/mirrors/method_mirror_source_test: pass
-Done dartk-vm debug_x64 lib/mirrors/method_mirror_returntype_test: pass
-Done dartk-vm debug_x64 lib/mirrors/inference_and_no_such_method_test: pass
-Done dartk-vm debug_x64 lib/mirrors/method_mirror_source_line_ending_test: pass
-Done dartk-vm debug_x64 lib/mirrors/field_type_test: pass
-Done dartk-vm debug_x64 lib/mirrors/invocation_cache_test: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_class_mirror_test: pass
-Done dartk-vm debug_x64 lib/mirrors/instance_members_with_override_test: pass
-Done dartk-vm debug_x64 lib/async/future_or_bad_type_test/extends: pass
-Done dartk-vm debug_x64 lib/mirrors/relation_assignable_test: pass
-Done dartk-vm debug_x64 lib/async/future_or_bad_type_test/none: pass
-Done dartk-vm debug_x64 lib/async/future_or_bad_type_test/with: pass
-Done dartk-vm debug_x64 lib/mirrors/library_uri_io_test: pass
-Done dartk-vm debug_x64 lib/async/future_or_bad_type_test/implements: pass
-Done dartk-vm debug_x64 lib/async/future_or_bad_type_test/00: pass
-Done dartk-vm debug_x64 lib/async/future_or_bad_type_test/01: pass
-Done dartk-vm debug_x64 lib/async/print_test/none: pass
-Done dartk-vm debug_x64 lib/async/print_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/invoke_call_through_getter_test/named: pass
-Done dartk-vm debug_x64 lib/mirrors/invoke_call_through_getter_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/regress_19731_test: pass
-Done dartk-vm debug_x64 lib/mirrors/intercepted_superclass_test: pass
-Done dartk-vm debug_x64 lib/mirrors/unnamed_mixin_application_test: pass
-Done dartk-vm debug_x64 lib/mirrors/local_isolate_test: pass
-Done dartk-vm debug_x64 lib/mirrors/typedef_test: pass
-Done dartk-vm debug_x64 lib/mirrors/delegate_call_through_getter_test: pass
-Done dartk-vm debug_x64 lib/mirrors/private_types_test: pass
-Done dartk-vm debug_x64 lib/mirrors/private_symbol_mangling_test: pass
-Done dartk-vm debug_x64 lib/mirrors/hierarchy_invariants_test: pass
-Done dartk-vm debug_x64 lib/mirrors/generic_local_function_test: pass
-Done dartk-vm debug_x64 lib/mirrors/regress_14304_test: pass
-Done dartk-vm debug_x64 lib/mirrors/array_tracing_test: pass
-Done dartk-vm debug_x64 lib/mirrors/private_symbol_test: pass
-Done dartk-vm debug_x64 lib/mirrors/library_imports_hidden_test: pass
-Done dartk-vm debug_x64 lib/mirrors/reflect_runtime_type_test: pass
-Done dartk-vm debug_x64 lib/mirrors/relation_subclass_test: pass
-Done dartk-vm debug_x64 lib/mirrors/closures_test: pass
-Done dartk-vm debug_x64 lib/mirrors/spawn_function_root_library_test: pass
-Done dartk-vm debug_x64 lib/mirrors/unused_mirrors2_test: pass
-Done dartk-vm debug_x64 lib/mirrors/hot_set_field_test: pass
-Done dartk-vm debug_x64 lib/mirrors/abstract_test: pass
-Done dartk-vm debug_x64 lib/mirrors/no_metadata_test: pass
-Done dartk-vm debug_x64 lib/mirrors/delegate_library_test: pass
-Done dartk-vm debug_x64 lib/mirrors/library_metatarget_test: pass
-Done dartk-vm debug_x64 lib/mirrors/parameter_of_mixin_app_constructor_test: pass
-Done dartk-vm debug_x64 lib/mirrors/fake_function_without_call_test: pass
-Done dartk-vm debug_x64 lib/mirrors/library_imports_metadata_test: pass
-Done dartk-vm debug_x64 lib/mirrors/reflect_two_classes_test: pass
-Done dartk-vm debug_x64 lib/mirrors/mirrors_reader_test: pass
-Done dartk-vm debug_x64 lib/mirrors/superclass_test: pass
-Done dartk-vm debug_x64 lib/mirrors/reflected_type_typevars_test: pass
-Done dartk-vm debug_x64 lib/mirrors/mirrors_test: pass
-Done dartk-vm debug_x64 lib/mirrors/disable_tree_shaking_test: pass
-Done dartk-vm debug_x64 lib/mirrors/unused_mirrors_test: pass
-Done dartk-vm debug_x64 lib/mirrors/enum_test: pass
-Done dartk-vm debug_x64 lib/mirrors/declarations_type_test: pass
-Done dartk-vm debug_x64 lib/mirrors/function_type_mirror_test: pass
-Done dartk-vm debug_x64 lib/mirrors/mirrors_used_generic_types_test: pass
-Done dartk-vm debug_x64 lib/mirrors/unused_mirrors7_test: pass
-Done dartk-vm debug_x64 lib/mirrors/function_apply_test: pass
-Done dartk-vm debug_x64 lib/mirrors/model_test: pass
-Done dartk-vm debug_x64 lib/mirrors/dart2js_mirrors_test: pass
-Done dartk-vm debug_x64 lib/mirrors/constructors_test: pass
-Done dartk-vm debug_x64 lib/mirrors/proxy_type_test: pass
-Done dartk-vm debug_x64 lib/mirrors/generic_superclass_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/generic_superclass_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/mirrors_used_typedef_declaration_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/reflect_class_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/mirrors_used_typedef_declaration_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/reflect_class_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_nested_constructor_call_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/reflect_class_test/02: pass
-Done dartk-vm debug_x64 lib/mirrors/symbol_validation_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_nested_constructor_call_test/02: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_nested_constructor_call_test/03: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_nested_constructor_call_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/symbol_validation_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_nested_constructor_call_test/04: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_nested_constructor_call_test/05: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_nested_constructor_call_test/06: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_nested_constructor_call_test/07: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_nested_constructor_call_test/08: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_nested_constructor_call_test/09: pass
-Done dartk-vm debug_x64 lib/mirrors/typedef_deferred_library_test: pass
-Done dartk-vm debug_x64 lib/mirrors/reflected_type_typedefs_test: pass
-Done dartk-vm debug_x64 lib/mirrors/instance_members_easier_test: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_const_map_test: pass
-Done dartk-vm debug_x64 lib/mirrors/equality_test: pass
-Done dartk-vm debug_x64 lib/mirrors/typedef_metadata_test: pass
-Done dartk-vm debug_x64 lib/mirrors/unused_mirrors_used_test: pass
-Done dartk-vm debug_x64 lib/mirrors/io_html_mutual_exclusion_test: pass
-Done dartk-vm debug_x64 lib/mirrors/generic_class_declaration_test: pass
-Done dartk-vm debug_x64 lib/mirrors/typedef_in_signature_test: pass
-Done dartk-vm debug_x64 lib/mirrors/unused_mirrors5_test: pass
-Done dartk-vm debug_x64 lib/mirrors/parameter_annotation_mirror_test: pass
-Done dartk-vm debug_x64 lib/mirrors/get_symbol_name_test: pass
-Done dartk-vm debug_x64 lib/mirrors/repeated_private_anon_mixin_app_test: pass
-Done dartk-vm debug_x64 lib/mirrors/intercepted_class_test: pass
-Done dartk-vm debug_x64 lib/mirrors/constructor_optional_args_test: pass
-Done dartk-vm debug_x64 lib/mirrors/fake_function_with_call_test: pass
-Done dartk-vm debug_x64 lib/mirrors/removed_api_test: pass
-Done dartk-vm debug_x64 lib/mirrors/relation_subtype_test: pass
-Done dartk-vm debug_x64 lib/mirrors/generic_mixin_test: pass
-Done dartk-vm debug_x64 lib/mirrors/static_members_easier_test: pass
-Done dartk-vm debug_x64 lib/mirrors/top_level_accessors_test: pass
-Done dartk-vm debug_x64 lib/mirrors/new_instance_with_type_arguments_test: pass
-Done dartk-vm debug_x64 lib/mirrors/typedef_library_test: pass
-Done dartk-vm debug_x64 lib/mirrors/library_exports_shown_test: pass
-Done dartk-vm debug_x64 lib/mirrors/other_declarations_location_test: pass
-Done dartk-vm debug_x64 lib/mirrors/to_string_test: pass
-Done dartk-vm debug_x64 lib/mirrors/mixin_application_test: pass
-Done dartk-vm debug_x64 lib/mirrors/instantiate_abstract_class_test: pass
-Done dartk-vm debug_x64 lib/mirrors/reflectively_instantiate_uninstantiated_class_test: pass
-Done dartk-vm debug_x64 lib/mirrors/reflected_type_function_type_test: pass
-Done dartk-vm debug_x64 lib/mirrors/class_mirror_location_test: pass
-Done dartk-vm debug_x64 lib/mirrors/synthetic_accessor_properties_test: pass
-Done dartk-vm debug_x64 lib/mirrors/optional_parameters_test: pass
-Done dartk-vm debug_x64 lib/mirrors/invoke_call_through_implicit_getter_test: pass
-Done dartk-vm debug_x64 lib/mirrors/mirrors_nsm_mismatch_test: pass
-Done dartk-vm debug_x64 lib/mirrors/generics_dynamic_test: pass
-Done dartk-vm debug_x64 lib/mirrors/invoke_private_test: pass
-Done dartk-vm debug_x64 lib/mirrors/private_class_field_test: pass
-Done dartk-vm debug_x64 lib/mirrors/empty_test: pass
-Done dartk-vm debug_x64 lib/mirrors/instance_members_test: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_test: pass
-Done dartk-vm debug_x64 lib/mirrors/get_field_cache_test: pass
-Done dartk-vm debug_x64 lib/mirrors/reflect_uninstantiated_class_test: pass
-Done dartk-vm debug_x64 lib/mirrors/typevariable_mirror_metadata_test: pass
-Done dartk-vm debug_x64 lib/mirrors/hot_get_field_test: pass
-Done dartk-vm debug_x64 lib/mirrors/library_import_deferred_loading_test: pass
-Done dartk-vm debug_x64 lib/mirrors/unused_mirrors6_test: pass
-Done dartk-vm debug_x64 lib/mirrors/get_symbol_name_no_such_method_test: pass
-Done dartk-vm debug_x64 lib/mirrors/lazy_static_test: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_constructor_arguments_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/new_instance_optional_arguments_test: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_constructor_arguments_test/02: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_constructor_arguments_test/03: pass
-Done dartk-vm debug_x64 lib/mirrors/generic_list_test: pass
-Done dartk-vm debug_x64 lib/mirrors/inherit_field_test: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_constructor_arguments_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_constructor_arguments_test/06: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_constructor_arguments_test/05: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_constructor_arguments_test/07: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_constructor_arguments_test/04: pass
-Done dartk-vm debug_x64 lib/mirrors/circular_factory_redirection_test/02: pass
-Done dartk-vm debug_x64 lib/mirrors/circular_factory_redirection_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/variable_is_const_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/variable_is_const_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/circular_factory_redirection_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/type_variable_owner_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/type_variable_owner_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/reflect_model_test: pass
-Done dartk-vm debug_x64 lib/mirrors/array_tracing3_test: pass
-Done dartk-vm debug_x64 lib/mirrors/static_members_test: pass
-Done dartk-vm debug_x64 lib/mirrors/mixin_test: pass
-Done dartk-vm debug_x64 lib/mirrors/invoke_closurization_test: pass
-Done dartk-vm debug_x64 lib/mirrors/deferred_mirrors_metatarget_test: pass
-Done dartk-vm debug_x64 lib/mirrors/superclass2_test: pass
-Done dartk-vm debug_x64 lib/mirrors/is_odd_test: pass
-Done dartk-vm debug_x64 lib/mirrors/delegate_test: pass
-Done dartk-vm debug_x64 lib/mirrors/instance_members_unimplemented_interface_test: pass
-Done dartk-vm debug_x64 lib/mirrors/deferred_mirrors_update_test: pass
-Done dartk-vm debug_x64 lib/mirrors/libraries_test: pass
-Done dartk-vm debug_x64 lib/mirrors/set_field_with_final_inheritance_test: pass
-Done dartk-vm debug_x64 lib/mirrors/get_field_test: pass
-Done dartk-vm debug_x64 lib/mirrors/generic_function_typedef_test: pass
-Done dartk-vm debug_x64 lib/mirrors/invoke_test: pass
-Done dartk-vm debug_x64 lib/mirrors/deferred_mirrors_metadata_test: pass
-Done dartk-vm debug_x64 lib/mirrors/mirrors_used_get_name_test: pass
-Done dartk-vm debug_x64 lib/mirrors/generics_special_types_test: pass
-Done dartk-vm debug_x64 lib/mirrors/invoke_import_test: pass
-Done dartk-vm debug_x64 lib/mirrors/set_field_with_final_test: pass
-Done dartk-vm debug_x64 lib/mirrors/mirrors_used_merge_test: pass
-Done dartk-vm debug_x64 lib/mirrors/invoke_throws_test: pass
-Done dartk-vm debug_x64 lib/mirrors/array_tracing2_test: pass
-Done dartk-vm debug_x64 lib/mirrors/intercepted_cache_test: pass
-Done dartk-vm debug_x64 lib/mirrors/mixin_members_test: pass
-Done dartk-vm debug_x64 lib/mirrors/class_mirror_type_variables_test: pass
-Done dartk-vm debug_x64 lib/mirrors/method_mirror_name_test: pass
-Done dartk-vm debug_x64 lib/mirrors/method_mirror_location_test: pass
-Done dartk-vm debug_x64 lib/mirrors/typearguments_mirror_test: pass
-Done dartk-vm debug_x64 lib/mirrors/deferred_type_test: pass
-Done dartk-vm debug_x64 lib/mirrors/unused_mirrors8_test: pass
-Done dartk-vm debug_x64 lib/mirrors/library_metadata_test: pass
-Done dartk-vm debug_x64 lib/mirrors/native_class_test: pass
-Done dartk-vm debug_x64 lib/mirrors/type_mirror_for_type_test: pass
-Done dartk-vm debug_x64 lib/mirrors/intercepted_object_test: pass
-Done dartk-vm debug_x64 lib/mirrors/basic_types_in_dart_core_test: pass
-Done dartk-vm debug_x64 lib/mirrors/generic_type_mirror_test: pass
-Done dartk-vm debug_x64 lib/mirrors/null_test: pass
-Done dartk-vm debug_x64 lib/mirrors/mirrors_used_get_name2_test: pass
-Done dartk-vm debug_x64 lib/mirrors/load_library_test: pass
-Done dartk-vm debug_x64 lib/mirrors/get_field_static_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/get_field_static_test/00: pass
-Done dartk-vm debug_x64 lib/mirrors/globalized_closures2_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/globalized_closures2_test/00: pass
-Done dartk-vm debug_x64 lib/mirrors/globalized_closures_test/00: pass
-Done dartk-vm debug_x64 lib/mirrors/globalized_closures_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/library_imports_bad_metadata_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/library_imports_bad_metadata_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/initializing_formals_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/parameter_is_const_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/initializing_formals_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/initializing_formals_test/03: pass
-Done dartk-vm debug_x64 lib/mirrors/parameter_is_const_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/list_constructor_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/mirror_in_static_init_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/list_constructor_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/mirror_in_static_init_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/invoke_natives_malicious_test: pass
-Done dartk-vm debug_x64 lib/mirrors/accessor_cache_overflow_test: pass
-Done dartk-vm debug_x64 lib/mirrors/parameter_metadata_test: pass
-Done dartk-vm debug_x64 lib/mirrors/type_variable_is_static_test: pass
-Done dartk-vm debug_x64 lib/mirrors/unmangled_type_test: pass
-Done dartk-vm debug_x64 lib/mirrors/null2_test: pass
-Done dartk-vm debug_x64 lib/mirrors/mirrors_used_inheritance_test: pass
-Done dartk-vm debug_x64 lib/mirrors/method_mirror_properties_test: pass
-Done dartk-vm debug_x64 lib/mirrors/library_exports_hidden_test: pass
-Done dartk-vm debug_x64 lib/mirrors/delegate_function_invocation_test: pass
-Done dartk-vm debug_x64 lib/mirrors/operator_test: pass
-Done dartk-vm debug_x64 lib/mirrors/library_uri_package_test: pass
-Done dartk-vm debug_x64 lib/mirrors/return_type_test: pass
-Done dartk-vm debug_x64 lib/mirrors/constructor_private_name_test: pass
-Done dartk-vm debug_x64 lib/mirrors/local_function_is_static_test: pass
-Done dartk-vm debug_x64 lib/mirrors/regress_26187_test: pass
-Done dartk-vm debug_x64 lib/mirrors/reflected_type_special_types_test: pass
-Done dartk-vm debug_x64 lib/mirrors/closurization_equivalence_test: pass
-Done dartk-vm debug_x64 lib/mirrors/function_apply_mirrors_test: pass
-Done dartk-vm debug_x64 lib/mirrors/inherited_metadata_test: pass
-Done dartk-vm debug_x64 lib/mirrors/library_imports_prefixed_show_hide_test: pass
-Done dartk-vm debug_x64 lib/mirrors/static_const_field_test: pass
-Done dartk-vm debug_x64 lib/mirrors/runtime_type_test: pass
-Done dartk-vm debug_x64 lib/mirrors/unnamed_library_test: pass
-Done dartk-vm debug_x64 lib/mirrors/library_enumeration_deferred_loading_test: pass
-Done dartk-vm debug_x64 lib/mirrors/static_test: pass
-Done dartk-vm debug_x64 lib/mirrors/library_imports_prefixed_test: pass
-Done dartk-vm debug_x64 lib/mirrors/unused_mirrors4_test: pass
-Done dartk-vm debug_x64 lib/mirrors/library_imports_deferred_test: pass
-Done dartk-vm debug_x64 lib/mirrors/generic_mixin_applications_test: pass
-Done dartk-vm debug_x64 lib/mirrors/invoke_private_wrong_library_test: pass
-Done dartk-vm debug_x64 lib/mirrors/mirrors_resolve_fields_test: pass
-Done dartk-vm debug_x64 lib/mirrors/generics_substitution_test: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_constructed_constant_test: pass
-Done dartk-vm debug_x64 lib/mirrors/unused_mirrors3_test: pass
-Done dartk-vm debug_x64 lib/mirrors/regress_16321_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/generic_f_bounded_mixin_application_test: pass
-Done dartk-vm debug_x64 lib/mirrors/regress_16321_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/static_metatarget_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/static_metatarget_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/static_metatarget_test/02: pass
-Done dartk-vm debug_x64 lib/mirrors/static_metatarget_test/03: pass
-Done dartk-vm debug_x64 lib/mirrors/invoke_call_through_implicit_getter_previously_accessed_test/named: pass
-Done dartk-vm debug_x64 lib/mirrors/invoke_call_through_implicit_getter_previously_accessed_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/raw_type_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/syntax_error_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/raw_type_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/syntax_error_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/constructor_kinds_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/constructor_kinds_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/mirrors_nsm_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/reflected_type_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/mirrors_nsm_test/dart2js: pass
-Done dartk-vm debug_x64 lib/mirrors/reflected_type_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/reflected_type_test/02: pass
-Done dartk-vm debug_x64 lib/mirrors/reflected_type_test/03: pass
-Done dartk-vm debug_x64 lib/mirrors/immutable_collections_test: pass
-Done dartk-vm debug_x64 lib/mirrors/abstract_class_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/generics_double_substitution_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/abstract_class_test/00: pass
-Done dartk-vm debug_x64 lib/mirrors/generics_double_substitution_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/invoke_call_through_getter_previously_accessed_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/invoke_call_through_getter_previously_accessed_test/named: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_scope_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_scope_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/unused_mirrors9_test: pass
-Done dartk-vm debug_x64 lib/math/math2_test: pass
-Done dartk-vm debug_x64 lib/math/random_secure_test: pass
-Done dartk-vm debug_x64 lib/math/math_parse_double_test: pass
-Done dartk-vm debug_x64 lib/math/math_test: pass
-Done dartk-vm debug_x64 lib/math/coin_test: pass
-Done dartk-vm debug_x64 lib/math/rectangle_test: pass
-Done dartk-vm debug_x64 lib/math/low_test: pass
-Done dartk-vm debug_x64 lib/math/random_big_test: pass
-Done dartk-vm debug_x64 lib/math/random_test: pass
-Done dartk-vm debug_x64 lib/math/double_pow_test: pass
-Done dartk-vm debug_x64 lib/math/pi_test: pass
-Done dartk-vm debug_x64 lib/profiler/metrics_num_test: pass
-Done dartk-vm debug_x64 lib/math/point_test: pass
-Done dartk-vm debug_x64 lib/profiler/user_tags_test: pass
-Done dartk-vm debug_x64 lib/math/min_max_test: pass
-Done dartk-vm debug_x64 lib/profiler/metrics_test: pass
-Done dartk-vm debug_x64 lib/typed_data/typed_list_iterable_test: pass
-Done dartk-vm debug_x64 lib/typed_data/float32x4_two_arg_shuffle_test: pass
-Done dartk-vm debug_x64 lib/typed_data/int64_list_load_store_test: pass
-Done dartk-vm debug_x64 lib/typed_data/typed_data_from_list_test: pass
-Done dartk-vm debug_x64 lib/typed_data/setRange_3_test: pass
-Done dartk-vm debug_x64 lib/typed_data/typed_data_load_test: pass
-Done dartk-vm debug_x64 lib/typed_data/int32x4_list_test: pass
-Done dartk-vm debug_x64 lib/typed_data/setRange_1_test: pass
-Done dartk-vm debug_x64 lib/typed_data/constructor_checks_test: pass
-Done dartk-vm debug_x64 lib/typed_data/typed_data_list_test: pass
-Done dartk-vm debug_x64 lib/typed_data/setRange_5_test: pass
-Done dartk-vm debug_x64 lib/typed_data/float32x4_unbox_phi_test: pass
-Done dartk-vm debug_x64 lib/typed_data/typed_data_hierarchy_test: pass
-Done dartk-vm debug_x64 lib/typed_data/float32x4_cross_test: pass
-Done dartk-vm debug_x64 lib/typed_data/float32x4_test: pass
-Done dartk-vm debug_x64 lib/typed_data/float32x4_test: pass
-Done dartk-vm debug_x64 lib/typed_data/setRange_4_test: pass
-Done dartk-vm debug_x64 lib/typed_data/float64x2_functional_test: pass
-Done dartk-vm debug_x64 lib/typed_data/float64x2_functional_test: pass
-Done dartk-vm debug_x64 lib/typed_data/int32x4_arithmetic_test: pass
-Done dartk-vm debug_x64 lib/typed_data/typed_data_sublist_type_test: pass
-Done dartk-vm debug_x64 lib/typed_data/float32x4_transpose_test: pass
-Done dartk-vm debug_x64 lib/typed_data/float64x2_typed_list_test: pass
-Done dartk-vm debug_x64 lib/typed_data/float32x4_list_test: pass
-Done dartk-vm debug_x64 lib/typed_data/int32x4_sign_mask_test: pass
-Done dartk-vm debug_x64 lib/typed_data/int32x4_test: pass
-Done dartk-vm debug_x64 lib/typed_data/endianness_test: pass
-Done dartk-vm debug_x64 lib/typed_data/typed_data_hierarchy_int64_test: pass
-Done dartk-vm debug_x64 lib/typed_data/setRange_2_test: pass
-Done dartk-vm debug_x64 lib/typed_data/int32x4_test: pass
-Done dartk-vm debug_x64 lib/typed_data/typed_data_load2_test: pass
-Done dartk-vm debug_x64 lib/typed_data/int32x4_shuffle_test: pass
-Done dartk-vm debug_x64 lib/typed_data/int32x4_bigint_test: pass
-Done dartk-vm debug_x64 lib/typed_data/float32x4_clamp_test: pass
-Done dartk-vm debug_x64 lib/typed_data/float32x4_unbox_regress_test: pass
-Done dartk-vm debug_x64 lib/typed_data/float32x4_sign_mask_test: pass
-Done dartk-vm debug_x64 lib/typed_data/byte_data_test: pass
-Done dartk-vm debug_x64 lib/typed_data/native_interceptor_no_own_method_to_intercept_test: pass
-Done dartk-vm debug_x64 lib/typed_data/simd_store_to_load_forward_test: pass
-Done dartk-vm debug_x64 lib/mirrors/generic_interface_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/generic_f_bounded_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/generic_f_bounded_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/generic_interface_test/01: pass
-Done dartk-vm debug_x64 lib/collection/hash_map_test: pass
-Done dartk-vm debug_x64 lib/collection/linked_list_test: pass
-Done dartk-vm debug_x64 lib/typed_data/float32x4_shuffle_test: pass
-Done dartk-vm debug_x64 lib/collection/hash_set_test: pass
-Done dartk-vm debug_x64 lib/convert/utf82_test: pass
-Done dartk-vm debug_x64 lib/convert/line_splitter_test: pass
-Done dartk-vm debug_x64 lib/convert/chunked_conversion1_test: pass
-Done dartk-vm debug_x64 lib/convert/json_lib_test: pass
-Done dartk-vm debug_x64 lib/convert/json_toEncodable_reviver_test: pass
-Done dartk-vm debug_x64 lib/convert/chunked_conversion_utf85_test: pass
-Done dartk-vm debug_x64 lib/convert/utf8_test: pass
-Done dartk-vm debug_x64 lib/convert/chunked_conversion_utf88_test: pass
-Done dartk-vm debug_x64 lib/convert/chunked_conversion_utf86_test: pass
-Done dartk-vm debug_x64 lib/convert/chunked_conversion_utf83_test: pass
-Done dartk-vm debug_x64 lib/convert/chunked_conversion_json_decode1_test: pass
-Done dartk-vm debug_x64 lib/convert/codec1_test: pass
-Done dartk-vm debug_x64 lib/convert/html_escape_test: pass
-Done dartk-vm debug_x64 lib/convert/streamed_conversion_utf8_decode_test: pass
-Done dartk-vm debug_x64 lib/convert/streamed_conversion_json_decode1_test: pass
-Done dartk-vm debug_x64 lib/convert/ascii_test: pass
-Done dartk-vm debug_x64 lib/convert/chunked_conversion_json_encode1_test: pass
-Done dartk-vm debug_x64 lib/convert/chunked_conversion_utf89_test: pass
-Done dartk-vm debug_x64 lib/convert/streamed_conversion_utf8_encode_test: pass
-Done dartk-vm debug_x64 lib/convert/streamed_conversion_json_utf8_decode_test: pass
-Done dartk-vm debug_x64 lib/convert/json_util_test: pass
-Done dartk-vm debug_x64 lib/convert/utf83_test: pass
-Done dartk-vm debug_x64 lib/convert/json_pretty_test: pass
-Done dartk-vm debug_x64 lib/convert/streamed_conversion_json_utf8_encode_test: pass
-Done dartk-vm debug_x64 lib/convert/chunked_conversion_utf8_test: pass
-Done dartk-vm debug_x64 lib/convert/utf8_encode_test: pass
-Done dartk-vm debug_x64 lib/convert/json_chunk_test: pass
-Done dartk-vm debug_x64 lib/convert/chunked_conversion2_test: pass
-Done dartk-vm debug_x64 lib/convert/latin1_test: pass
-Done dartk-vm debug_x64 lib/convert/close_test: pass
-Done dartk-vm debug_x64 lib/convert/json_test: pass
-Done dartk-vm debug_x64 lib/convert/json_utf8_chunk_test: pass
-Done dartk-vm debug_x64 lib/convert/utf84_test: pass
-Done dartk-vm debug_x64 lib/convert/encoding_test: pass
-Done dartk-vm debug_x64 lib/convert/streamed_conversion_json_encode1_test: pass
-Done dartk-vm debug_x64 lib/convert/chunked_conversion_utf84_test: pass
-Done dartk-vm debug_x64 lib/convert/chunked_conversion_utf82_test: pass
-Done dartk-vm debug_x64 lib/convert/codec2_test: pass
-Done dartk-vm debug_x64 lib/convert/chunked_conversion_utf87_test: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/03: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/02: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/04: pass
-Done dartk-vm debug_x64 lib/convert/base64_test/none: pass
-Done dartk-vm debug_x64 lib/convert/base64_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/05: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/07: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/06: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/08: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/09: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/10: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/11: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/12: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/15: pass
-Done dartk-vm debug_x64 lib/convert/utf85_test: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/17: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/18: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/19: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/13: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/14: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/20: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/21: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/23: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/22: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/24: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/26: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/25: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/28: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/29: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/31: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/30: pass
-Done dartk-vm debug_x64 lib/mirrors/metadata_allowed_values_test/27: pass
-Done dartk-vm debug_x64 lib/mirrors/library_metadata2_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/library_metadata2_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/invoke_named_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/invoke_named_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/reflected_type_generics_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/reflected_type_generics_test/01: pass
-Done dartk-vm debug_x64 lib/convert/streamed_conversion_json_utf8_decode_test: pass
-Done dartk-vm debug_x64 lib/mirrors/reflected_type_generics_test/03: pass
-Done dartk-vm debug_x64 lib/mirrors/reflected_type_generics_test/04: pass
-Done dartk-vm debug_x64 lib/mirrors/reflected_type_generics_test/05: pass
-Done dartk-vm debug_x64 lib/mirrors/reflected_type_generics_test/06: pass
-Done dartk-vm debug_x64 lib/mirrors/reflected_type_generics_test/02: pass
-Done dartk-vm debug_x64 lib/mirrors/redirecting_factory_test/02: pass
-Done dartk-vm debug_x64 lib/mirrors/redirecting_factory_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/redirecting_factory_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/reflected_type_classes_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/reflected_type_classes_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/reflected_type_classes_test/02: pass
-Done dartk-vm debug_x64 lib/mirrors/reflected_type_classes_test/03: pass
-Done dartk-vm debug_x64 lib/mirrors/generic_bounded_test/02: pass
-Done dartk-vm debug_x64 lib/mirrors/generic_bounded_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/generic_bounded_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/parameter_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/parameter_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/library_declarations_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/library_declarations_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/typedef_reflected_type_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/typedef_reflected_type_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/generics_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/generics_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/generic_bounded_by_type_parameter_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/generic_bounded_by_type_parameter_test/02: pass
-Done dartk-vm debug_x64 lib/mirrors/generic_bounded_by_type_parameter_test/01: pass
-Done dartk-vm debug_x64 lib/mirrors/class_declarations_test/none: pass
-Done dartk-vm debug_x64 lib/mirrors/class_declarations_test/01: pass
-Done dartk-vm debug_x64 standalone/link_natives_lazily_test: pass
-Done dartk-vm debug_x64 standalone/number_identity_test: pass
-Done dartk-vm debug_x64 standalone/out_of_memory_test: pass
-Done dartk-vm debug_x64 lib_2/math/call_cmath_box_failure_path_test: pass
-Done dartk-vm debug_x64 standalone/map_insert_remove_oom_test: pass
-Done dartk-vm debug_x64 standalone/http_launch_test: pass
-Done dartk-vm debug_x64 standalone/http_launch_test: pass
-Done dartk-vm debug_x64 standalone/http_launch_test: pass
-Done dartk-vm debug_x64 standalone/http_launch_test: pass
-Done dartk-vm debug_x64 standalone/int_array_test: pass
-Done dartk-vm debug_x64 standalone/dwarf_stack_trace_test: pass
-Done dartk-vm debug_x64 standalone/typed_array_int64_uint64_test: pass
-Done dartk-vm debug_x64 standalone/int_list_test: pass
-Done dartk-vm debug_x64 standalone/no_support_disassembler_test: pass
-Done dartk-vm debug_x64 standalone/double_temp_test: pass
-Done dartk-vm debug_x64 standalone/assert_assignable_canon_test: pass
-Done dartk-vm debug_x64 standalone/no_profiler_test: pass
-Done dartk-vm debug_x64 standalone/regress_28854_1_test: pass
-Done dartk-vm debug_x64 standalone/causal_async_stack_test: pass
-Done dartk-vm debug_x64 standalone/typed_array_test: pass
-Done dartk-vm debug_x64 standalone/pow_test: pass
-Done dartk-vm debug_x64 standalone/assert_test: pass
-Done dartk-vm debug_x64 standalone/bytedata_test: pass
-Done dartk-vm debug_x64 standalone/no_lazy_dispatchers_test: pass
-Done dartk-vm debug_x64 standalone/byte_array_view_optimized_test: pass
-Done dartk-vm debug_x64 standalone/no_support_timeline_test: pass
-Done dartk-vm debug_x64 standalone/double_to_int_test: pass
-Done dartk-vm debug_x64 standalone/no_allow_absolute_addresses_test: pass
-Done dartk-vm debug_x64 standalone/medium_integer_test: pass
-Done dartk-vm debug_x64 standalone/package/package_isolate_test: pass
-Done dartk-vm debug_x64 standalone/package/invalid_uri_test: pass
-Done dartk-vm debug_x64 standalone/package/package_test: pass
-Done dartk-vm debug_x64 standalone/regress_28854_2_test: pass
-Done dartk-vm debug_x64 standalone/float_array_test: pass
-Done dartk-vm debug_x64 standalone/package/scenarios/packages_dir_only/packages_dir_only_noimports_test: pass
-Done dartk-vm debug_x64 standalone/package/scenarios/packages_dir_only/packages_dir_only_test: pass
-Done dartk-vm debug_x64 standalone/package/scenarios/packages_file_in_parent/sub/packages_file_in_parent_test: pass
-Done dartk-vm debug_x64 standalone/package/scenarios/packages_file_in_parent/sub/packages_file_in_parent_noimports_test: pass
-Done dartk-vm debug_x64 standalone/package/scenarios/both_dir_and_file/both_dir_and_file_noimports_test: pass
-Done dartk-vm debug_x64 standalone/package/scenarios/invalid/invalid_utf8_test: pass
-Done dartk-vm debug_x64 standalone/package/scenarios/invalid/non_existent_packages_file_test: pass
-Done dartk-vm debug_x64 standalone/package/scenarios/invalid/same_package_twice_test: pass
-Done dartk-vm debug_x64 standalone/package/scenarios/both_dir_and_file/prefers_packages_file_test: pass
-Done dartk-vm debug_x64 standalone/package/scenarios/packages_file_only/packages_file_only_noimports_test: pass
-Done dartk-vm debug_x64 standalone/package/scenarios/invalid/invalid_package_name_test: pass
-Done dartk-vm debug_x64 standalone/package/scenarios/packages_file_only/packages_file_only_test: pass
-Done dartk-vm debug_x64 standalone/package/scenarios/packages_file_strange_formatting/empty_package_dir_test: pass
-Done dartk-vm debug_x64 standalone/package/scenarios/empty_packages_file/empty_packages_file_option_test: pass
-Done dartk-vm debug_x64 standalone/package/scenarios/empty_packages_file/empty_packages_file_discovery_test: pass
-Done dartk-vm debug_x64 standalone/package/scenarios/packages_file_strange_formatting/mixed_line_ends_test: pass
-Done dartk-vm debug_x64 standalone/package/scenarios/packages_file_strange_formatting/empty_lines_test: pass
-Done dartk-vm debug_x64 standalone/package/package1_test: pass
-Done dartk-vm debug_x64 standalone/package/scenarios/empty_packages_file/empty_packages_file_noimports_test: pass
-Done dartk-vm debug_x64 standalone/package/scenarios/packages_option_only/packages_option_only_noimports_test: pass
-Done dartk-vm debug_x64 standalone/package/scenarios/packages_option_only/packages_option_only_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_secure_socket_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_secure_socket_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_secure_socket_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_secure_socket_test: pass
-Done dartk-vm debug_x64 standalone/io/process_invalid_arguments_test: pass
-Done dartk-vm debug_x64 standalone/io/regress_9194_test: pass
-Done dartk-vm debug_x64 standalone/typed_data_test: pass
-Done dartk-vm debug_x64 standalone/io/network_interface_test: pass
-Done dartk-vm debug_x64 standalone/fragmentation_test: pass
-Done dartk-vm debug_x64 standalone/io/http_server_idle_timeout_test: pass
-Done dartk-vm debug_x64 standalone/io/http_server_idle_timeout_test: pass
-Done dartk-vm debug_x64 standalone/io/http_server_idle_timeout_test: pass
-Done dartk-vm debug_x64 standalone/io/http_server_idle_timeout_test: pass
-Done dartk-vm debug_x64 standalone/io/link_test: pass
-Done dartk-vm debug_x64 standalone/io/process_path_test: pass
-Done dartk-vm debug_x64 standalone/io/http_no_reason_phrase_test: pass
-Done dartk-vm debug_x64 standalone/io/http_no_reason_phrase_test: pass
-Done dartk-vm debug_x64 standalone/io/http_no_reason_phrase_test: pass
-Done dartk-vm debug_x64 standalone/io/http_no_reason_phrase_test: pass
-Done dartk-vm debug_x64 standalone/io/regress_21987_test: pass
-Done dartk-vm debug_x64 standalone/io/http_close_test: pass
-Done dartk-vm debug_x64 standalone/io/http_close_test: pass
-Done dartk-vm debug_x64 standalone/io/http_server_early_client_close2_test: pass
-Done dartk-vm debug_x64 standalone/io/http_close_test: pass
-Done dartk-vm debug_x64 standalone/io/http_server_early_client_close2_test: pass
-Done dartk-vm debug_x64 standalone/io/http_close_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_socket_cross_process_test: pass
-Done dartk-vm debug_x64 standalone/io/http_server_early_client_close2_test: pass
-Done dartk-vm debug_x64 standalone/io/http_server_early_client_close2_test: pass
-Done dartk-vm debug_x64 standalone/io/socket_test: pass
-Done dartk-vm debug_x64 standalone/io/socket_test: pass
-Done dartk-vm debug_x64 standalone/io/socket_test: pass
-Done dartk-vm debug_x64 standalone/io/socket_test: pass
-Done dartk-vm debug_x64 standalone/io/secure_server_client_certificate_test: pass
-Done dartk-vm debug_x64 standalone/io/directory_list_nonexistent_test: pass
-Done dartk-vm debug_x64 standalone/io/http_connection_close_test: pass
-Done dartk-vm debug_x64 standalone/io/directory_list_sync_test: pass
-Done dartk-vm debug_x64 standalone/io/http_auth_test: pass
-Done dartk-vm debug_x64 standalone/io/create_recursive_test: pass
-Done dartk-vm debug_x64 standalone/io/sleep_test: pass
-Done dartk-vm debug_x64 standalone/io/stdout_stderr_non_blocking_test: pass
-Done dartk-vm debug_x64 standalone/io/file_non_ascii_test: pass
-Done dartk-vm debug_x64 standalone/io/socket_exception_test: pass
-Done dartk-vm debug_x64 standalone/io/web_socket_protocol_processor_test: pass
-Done dartk-vm debug_x64 standalone/io/file_error_test: pass
-Done dartk-vm debug_x64 standalone/io/process_environment_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_server_socket_cancel_test: pass
-Done dartk-vm debug_x64 standalone/io/pipe_server_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_server_socket_cancel_test: pass
-Done dartk-vm debug_x64 standalone/io/http_cross_process_test: pass
-Done dartk-vm debug_x64 standalone/io/pipe_server_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_server_socket_cancel_test: pass
-Done dartk-vm debug_x64 standalone/io/pipe_server_test: pass
-Done dartk-vm debug_x64 standalone/io/pipe_server_test: pass
-Done dartk-vm debug_x64 standalone/io/issue_22636_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_server_socket_cancel_test: pass
-Done dartk-vm debug_x64 standalone/io/system_encoding_test: pass
-Done dartk-vm debug_x64 standalone/io/http_redirect_test: pass
-Done dartk-vm debug_x64 standalone/io/directory_test: pass
-Done dartk-vm debug_x64 standalone/io/web_socket_typed_data_test: pass
-Done dartk-vm debug_x64 standalone/io/web_socket_typed_data_test: pass
-Done dartk-vm debug_x64 standalone/io/file_stat_test: pass
-Done dartk-vm debug_x64 standalone/io/socket_port_test: pass
-Done dartk-vm debug_x64 standalone/io/web_socket_typed_data_test: pass
-Done dartk-vm debug_x64 standalone/io/process_start_exception_test: pass
-Done dartk-vm debug_x64 standalone/io/web_socket_typed_data_test: pass
-Done dartk-vm debug_x64 standalone/io/process_run_output_test: pass
-Done dartk-vm debug_x64 standalone/io/directory_list_pause_test: pass
-Done dartk-vm debug_x64 standalone/io/secure_client_raw_server_test: pass
-Done dartk-vm debug_x64 standalone/io/secure_client_raw_server_test: pass
-Done dartk-vm debug_x64 standalone/io/secure_client_raw_server_test: pass
-Done dartk-vm debug_x64 standalone/io/secure_client_raw_server_test: pass
-Done dartk-vm debug_x64 standalone/io/file_absolute_path_test: pass
-Done dartk-vm debug_x64 standalone/io/stdout_bad_argument_test: pass
-Done dartk-vm debug_x64 standalone/io/process_non_ascii_test: pass
-Done dartk-vm debug_x64 standalone/io/process_stderr_test: pass
-Done dartk-vm debug_x64 standalone/io/process_stderr_test: pass
-Done dartk-vm debug_x64 standalone/io/process_stderr_test: pass
-Done dartk-vm debug_x64 standalone/io/secure_client_server_test: pass
-Done dartk-vm debug_x64 standalone/io/process_stderr_test: pass
-Done dartk-vm debug_x64 standalone/io/secure_client_server_test: pass
-Done dartk-vm debug_x64 standalone/io/secure_client_server_test: pass
-Done dartk-vm debug_x64 standalone/io/secure_client_server_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_secure_server_socket_argument_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_secure_server_socket_argument_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_secure_server_socket_argument_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_secure_server_socket_argument_test: pass
-Done dartk-vm debug_x64 standalone/io/file_windows_test: pass
-Done dartk-vm debug_x64 standalone/io/http_server_response_test: pass
-Done dartk-vm debug_x64 standalone/io/http_server_response_test: pass
-Done dartk-vm debug_x64 standalone/io/https_bad_certificate_test: pass
-Done dartk-vm debug_x64 standalone/io/test_extension_fail_test: pass
-Done dartk-vm debug_x64 standalone/io/http_server_response_test: pass
-Done dartk-vm debug_x64 standalone/io/http_server_response_test: pass
-Done dartk-vm debug_x64 standalone/io/test_runner_test: pass
-Done dartk-vm debug_x64 standalone/io/windows_file_system_async_links_test: pass
-Done dartk-vm debug_x64 standalone/io/platform_test: pass
-Done dartk-vm debug_x64 standalone/io/process_stdout_test: pass
-Done dartk-vm debug_x64 standalone/io/link_uri_test: pass
-Done dartk-vm debug_x64 standalone/io/process_stdout_test: pass
-Done dartk-vm debug_x64 standalone/io/process_stdout_test: pass
-Done dartk-vm debug_x64 standalone/io/process_stdout_test: pass
-Done dartk-vm debug_x64 standalone/io/console_unicode_test: pass
-Done dartk-vm debug_x64 standalone/io/print_sync_test: pass
-Done dartk-vm debug_x64 standalone/io/snapshot_fail_test: pass
-Done dartk-vm debug_x64 standalone/io/https_unauthorized_test: pass
-Done dartk-vm debug_x64 standalone/io/process_kill_test: pass
-Done dartk-vm debug_x64 standalone/io/file_system_delete_test: pass
-Done dartk-vm debug_x64 standalone/io/process_exit_test: pass
-Done dartk-vm debug_x64 standalone/io/secure_socket_renegotiate_test: pass
-Done dartk-vm debug_x64 standalone/io/http_requested_uri_test: pass
-Done dartk-vm debug_x64 standalone/io/file_system_watcher_test: pass
-Done dartk-vm debug_x64 standalone/io/process_path_environment_test: pass
-Done dartk-vm debug_x64 standalone/io/dart_std_io_pipe_test: pass
-Done dartk-vm debug_x64 standalone/io/dart_std_io_pipe_test: pass
-Done dartk-vm debug_x64 standalone/io/dependency_graph_test: pass
-Done dartk-vm debug_x64 standalone/io/dart_std_io_pipe_test: pass
-Done dartk-vm debug_x64 standalone/io/http_server_test: pass
-Done dartk-vm debug_x64 standalone/io/dart_std_io_pipe_test: pass
-Done dartk-vm debug_x64 standalone/io/http_session_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_socket_write_destroy_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_socket_write_destroy_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_socket_write_destroy_test: pass
-Done dartk-vm debug_x64 standalone/io/https_client_exception_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_socket_write_destroy_test: pass
-Done dartk-vm debug_x64 standalone/io/process_working_directory_test: pass
-Done dartk-vm debug_x64 standalone/io/file_write_as_test: pass
-Done dartk-vm debug_x64 standalone/io/resolve_symbolic_links_test: pass
-Done dartk-vm debug_x64 standalone/io/process_check_arguments_test: pass
-Done dartk-vm debug_x64 standalone/io/link_async_test: pass
-Done dartk-vm debug_x64 standalone/io/many_directory_operations_test: pass
-Done dartk-vm debug_x64 standalone/io/https_server_test: pass
-Done dartk-vm debug_x64 standalone/io/http_headers_test: pass
-Done dartk-vm debug_x64 standalone/io/directory_non_ascii_sync_test: pass
-Done dartk-vm debug_x64 standalone/io/windows_file_system_links_test: pass
-Done dartk-vm debug_x64 standalone/io/http_stream_close_test: pass
-Done dartk-vm debug_x64 standalone/io/stream_pipe_test: pass
-Done dartk-vm debug_x64 standalone/io/stream_pipe_test: pass
-Done dartk-vm debug_x64 standalone/io/stream_pipe_test: pass
-Done dartk-vm debug_x64 standalone/io/directory_fuzz_test: pass
-Done dartk-vm debug_x64 standalone/io/stream_pipe_test: pass
-Done dartk-vm debug_x64 standalone/io/http_keep_alive_test: pass
-Done dartk-vm debug_x64 standalone/io/http_keep_alive_test: pass
-Done dartk-vm debug_x64 standalone/io/http_keep_alive_test: pass
-Done dartk-vm debug_x64 standalone/io/uri_platform_test: pass
-Done dartk-vm debug_x64 standalone/io/http_keep_alive_test: pass
-Done dartk-vm debug_x64 standalone/io/read_into_const_list_test: pass
-Done dartk-vm debug_x64 standalone/io/process_set_exit_code_test: pass
-Done dartk-vm debug_x64 standalone/io/compile_all_test: pass
-Done dartk-vm debug_x64 standalone/io/http_cookie_test: pass
-Done dartk-vm debug_x64 standalone/io/socket_finalizer_test: pass
-Done dartk-vm debug_x64 standalone/io/socket_many_connections_test: pass
-Done dartk-vm debug_x64 standalone/io/http_client_request_test: pass
-Done dartk-vm debug_x64 standalone/io/file_system_uri_test: pass
-Done dartk-vm debug_x64 standalone/io/code_collection_test: pass
-Done dartk-vm debug_x64 standalone/io/http_connection_info_test: pass
-Done dartk-vm debug_x64 standalone/io/issue_26954_test: pass
-Done dartk-vm debug_x64 standalone/io/http_outgoing_size_test: pass
-Done dartk-vm debug_x64 standalone/io/test_extension_test: pass
-Done dartk-vm debug_x64 standalone/io/http_outgoing_size_test: pass
-Done dartk-vm debug_x64 standalone/io/stdout_close_test: pass
-Done dartk-vm debug_x64 standalone/io/http_outgoing_size_test: pass
-Done dartk-vm debug_x64 standalone/io/http_outgoing_size_test: pass
-Done dartk-vm debug_x64 standalone/io/directory_non_ascii_test: pass
-Done dartk-vm debug_x64 standalone/io/stdout_stderr_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_datagram_read_all_test: pass
-Done dartk-vm debug_x64 standalone/io/windows_environment_test: pass
-Done dartk-vm debug_x64 standalone/io/file_write_only_test: pass
-Done dartk-vm debug_x64 standalone/io/https_client_certificate_test: pass
-Done dartk-vm debug_x64 standalone/io/file_blocking_lock_test: pass
-Done dartk-vm debug_x64 standalone/io/secure_bad_certificate_test: pass
-Done dartk-vm debug_x64 standalone/io/http_read_test: pass
-Done dartk-vm debug_x64 standalone/io/socket_invalid_arguments_test: pass
-Done dartk-vm debug_x64 standalone/io/skipping_dart2js_compilations_test: pass
-Done dartk-vm debug_x64 standalone/io/stdio_nonblocking_test: pass
-Done dartk-vm debug_x64 standalone/io/http_read_test: pass
-Done dartk-vm debug_x64 standalone/io/http_read_test: pass
-Done dartk-vm debug_x64 standalone/io/http_read_test: pass
-Done dartk-vm debug_x64 standalone/io/file_uri_test: pass
-Done dartk-vm debug_x64 standalone/io/ansi_supported_test: pass
-Done dartk-vm debug_x64 standalone/io/regress_10026_test: pass
-Done dartk-vm debug_x64 standalone/io/secure_session_resume_test: pass
-Done dartk-vm debug_x64 standalone/io/secure_session_resume_test: pass
-Done dartk-vm debug_x64 standalone/io/secure_session_resume_test: pass
-Done dartk-vm debug_x64 standalone/io/secure_session_resume_test: pass
-Done dartk-vm debug_x64 standalone/io/http_basic_test: pass
-Done dartk-vm debug_x64 standalone/io/locale_name_test: pass
-Done dartk-vm debug_x64 standalone/io/process_broken_pipe_test: pass
-Done dartk-vm debug_x64 standalone/io/file_fuzz_test: pass
-Done dartk-vm debug_x64 standalone/io/http_basic_test: pass
-Done dartk-vm debug_x64 standalone/io/process_segfault_test: pass
-Done dartk-vm debug_x64 standalone/io/http_basic_test: pass
-Done dartk-vm debug_x64 standalone/io/http_basic_test: pass
-Done dartk-vm debug_x64 standalone/io/http_compression_test: pass
-Done dartk-vm debug_x64 standalone/io/http_compression_test: pass
-Done dartk-vm debug_x64 standalone/io/http_compression_test: pass
-Done dartk-vm debug_x64 standalone/io/http_compression_test: pass
-Done dartk-vm debug_x64 standalone/io/file_system_async_links_test: pass
-Done dartk-vm debug_x64 standalone/io/secure_socket_bad_data_test: pass
-Done dartk-vm debug_x64 standalone/io/secure_socket_bad_data_test: pass
-Done dartk-vm debug_x64 standalone/io/http_client_stays_alive_test: pass
-Done dartk-vm debug_x64 standalone/io/secure_socket_bad_data_test: pass
-Done dartk-vm debug_x64 standalone/io/secure_socket_bad_data_test: pass
-Done dartk-vm debug_x64 standalone/io/internet_address_invalid_arguments_test: pass
-Done dartk-vm debug_x64 standalone/io/file_copy_test: pass
-Done dartk-vm debug_x64 standalone/io/regress_8828_test: pass
-Done dartk-vm debug_x64 standalone/io/regress_8828_test: pass
-Done dartk-vm debug_x64 standalone/io/regress_8828_test: pass
-Done dartk-vm debug_x64 standalone/io/regress_8828_test: pass
-Done dartk-vm debug_x64 standalone/io/io_sink_test: pass
-Done dartk-vm debug_x64 standalone/io/http_head_test: pass
-Done dartk-vm debug_x64 standalone/io/http_request_pipeling_test: pass
-Done dartk-vm debug_x64 standalone/io/socket_close_test: pass
-Done dartk-vm debug_x64 standalone/io/socket_close_test: pass
-Done dartk-vm debug_x64 standalone/io/socket_close_test: pass
-Done dartk-vm debug_x64 standalone/io/http_request_pipeling_test: pass
-Done dartk-vm debug_x64 standalone/io/socket_close_test: pass
-Done dartk-vm debug_x64 standalone/io/http_request_pipeling_test: pass
-Done dartk-vm debug_x64 standalone/io/http_request_pipeling_test: pass
-Done dartk-vm debug_x64 standalone/io/file_read_special_device_test: pass
-Done dartk-vm debug_x64 standalone/io/file_system_exists_test: pass
-Done dartk-vm debug_x64 standalone/io/http_server_early_client_close_test: pass
-Done dartk-vm debug_x64 standalone/io/http_server_early_client_close_test: pass
-Done dartk-vm debug_x64 standalone/io/http_server_early_client_close_test: pass
-Done dartk-vm debug_x64 standalone/io/addlatexhash_test: pass
-Done dartk-vm debug_x64 standalone/io/http_server_early_client_close_test: pass
-Done dartk-vm debug_x64 standalone/io/process_info_test: pass
-Done dartk-vm debug_x64 standalone/io/http_bind_test: pass
-Done dartk-vm debug_x64 standalone/io/internet_address_test: pass
-Done dartk-vm debug_x64 standalone/io/process_detached_test: pass
-Done dartk-vm debug_x64 standalone/io/file_stream_test: pass
-Done dartk-vm debug_x64 standalone/io/web_socket_compression_test: pass
-Done dartk-vm debug_x64 standalone/io/web_socket_compression_test: pass
-Done dartk-vm debug_x64 standalone/io/secure_socket_test: pass
-Done dartk-vm debug_x64 standalone/io/web_socket_compression_test: pass
-Done dartk-vm debug_x64 standalone/io/web_socket_compression_test: pass
-Done dartk-vm debug_x64 standalone/io/secure_socket_test: pass
-Done dartk-vm debug_x64 standalone/io/secure_socket_test: pass
-Done dartk-vm debug_x64 standalone/io/signals_exception_test/none: pass
-Done dartk-vm debug_x64 standalone/io/signals_exception_test/01: pass
-Done dartk-vm debug_x64 standalone/io/secure_socket_test: pass
-Done dartk-vm debug_x64 standalone/io/file_system_links_test: pass
-Done dartk-vm debug_x64 standalone/io/web_socket_protocol_test: pass
-Done dartk-vm debug_x64 standalone/io/web_socket_protocol_test: pass
-Done dartk-vm debug_x64 standalone/io/web_socket_protocol_test: pass
-Done dartk-vm debug_x64 standalone/io/web_socket_protocol_test: pass
-Done dartk-vm debug_x64 standalone/io/web_socket_pipe_test: pass
-Done dartk-vm debug_x64 standalone/io/web_socket_pipe_test: pass
-Done dartk-vm debug_x64 standalone/io/http_auth_digest_test: pass
-Done dartk-vm debug_x64 standalone/io/web_socket_pipe_test: pass
-Done dartk-vm debug_x64 standalone/io/file_typed_data_test: pass
-Done dartk-vm debug_x64 standalone/io/web_socket_pipe_test: pass
-Done dartk-vm debug_x64 standalone/io/http_connection_header_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_socket_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_socket_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_socket_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_socket_test: pass
-Done dartk-vm debug_x64 standalone/io/zlib_test: pass
-Done dartk-vm debug_x64 standalone/io/parent_test: pass
-Done dartk-vm debug_x64 standalone/io/regress_7679_test: pass
-Done dartk-vm debug_x64 standalone/io/non_utf8_output_test: pass
-Done dartk-vm debug_x64 standalone/io/issue_22637_test: pass
-Done dartk-vm debug_x64 standalone/io/test_harness_analyzer_test: pass
-Done dartk-vm debug_x64 standalone/io/directory_create_race_test: pass
-Done dartk-vm debug_x64 standalone/io/async_catch_errors_test: pass
-Done dartk-vm debug_x64 standalone/io/process_pid_test: pass
-Done dartk-vm debug_x64 standalone/io/directory_uri_test: pass
-Done dartk-vm debug_x64 standalone/io/regress_7191_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_synchronous_socket_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_secure_socket_pause_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_secure_socket_pause_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_socket_typed_data_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_socket_typed_data_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_secure_socket_pause_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_secure_socket_pause_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_socket_typed_data_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_socket_typed_data_test: pass
-Done dartk-vm debug_x64 standalone/io/process_shell_test: pass
-Done dartk-vm debug_x64 standalone/io/directory_invalid_arguments_test: pass
-Done dartk-vm debug_x64 standalone/io/http_detach_socket_test: pass
-Done dartk-vm debug_x64 standalone/io/http_detach_socket_test: pass
-Done dartk-vm debug_x64 standalone/io/http_detach_socket_test: pass
-Done dartk-vm debug_x64 standalone/io/http_detach_socket_test: pass
-Done dartk-vm debug_x64 standalone/io/secure_unauthorized_test: pass
-Done dartk-vm debug_x64 standalone/io/many_file_operations_test: pass
-Done dartk-vm debug_x64 standalone/io/file_input_stream_test: pass
-Done dartk-vm debug_x64 standalone/io/signals_test: pass
-Done dartk-vm debug_x64 standalone/io/stdio_implicit_close_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_secure_server_socket_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_secure_server_socket_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_secure_server_socket_test: pass
-Done dartk-vm debug_x64 standalone/io/raw_secure_server_socket_test: pass
-Done dartk-vm debug_x64 standalone/io/process_stdin_transform_unsubscribe_test: pass
-Done dartk-vm debug_x64 standalone/io/socket_cross_process_test: pass
-Done dartk-vm debug_x64 standalone/io/process_stdin_transform_unsubscribe_test: pass
-Done dartk-vm debug_x64 standalone/io/process_stdin_transform_unsubscribe_test: pass
-Done dartk-vm debug_x64 standalone/io/file_invalid_arguments_test: pass
-Done dartk-vm debug_x64 standalone/io/process_stdin_transform_unsubscribe_test: pass
-Done dartk-vm debug_x64 standalone/io/security_context_argument_test: pass
-Done dartk-vm debug_x64 standalone/io/http_proxy_configuration_test: pass
-Done dartk-vm debug_x64 standalone/io/stdin_sync_test: pass
-Done dartk-vm debug_x64 standalone/io/directory_error_test: pass
-Done dartk-vm debug_x64 standalone/io/secure_socket_alpn_test: pass
-Done dartk-vm debug_x64 standalone/io/file_constructor_test: pass
-Done dartk-vm debug_x64 standalone/io/socket_upgrade_to_secure_test: pass
-Done dartk-vm debug_x64 standalone/io/socket_upgrade_to_secure_test: pass
-Done dartk-vm debug_x64 standalone/io/socket_upgrade_to_secure_test: pass
-Done dartk-vm debug_x64 standalone/io/stdio_socket_finalizer_test: pass
-Done dartk-vm debug_x64 standalone/io/process_exit_negative_test: pass
-Done dartk-vm debug_x64 standalone/io/socket_upgrade_to_secure_test: pass
-Done dartk-vm debug_x64 standalone/io/file_output_stream_test: pass
-Done dartk-vm debug_x64 standalone/io/file_read_encoded_test: pass
-Done dartk-vm debug_x64 standalone/io/arguments_test: pass
-Done dartk-vm debug_x64 standalone/io/http_cookie_date_test: pass
-Done dartk-vm debug_x64 standalone/io/socket_info_ipv4_test: pass
-Done dartk-vm debug_x64 standalone/io/secure_socket_argument_test: pass
-Done dartk-vm debug_x64 standalone/io/http_parser_test: pass
-Done dartk-vm debug_x64 standalone/io/directory_chdir_test: pass
-Done dartk-vm debug_x64 standalone/io/http_headers_state_test: pass
-Done dartk-vm debug_x64 standalone/io/stdout_stderr_terminal_test: pass
-Done dartk-vm debug_x64 standalone/io/regress_21160_test: pass
-Done dartk-vm debug_x64 standalone/io/http_client_exception_test: pass
-Done dartk-vm debug_x64 standalone/io/file_non_ascii_sync_test: pass
-Done dartk-vm debug_x64 standalone/io/bytes_builder_test: pass
-Done dartk-vm debug_x64 standalone/io/http_date_test: pass
-Done dartk-vm debug_x64 standalone/io/file_create_test: pass
-Done dartk-vm debug_x64 standalone/io/echo_server_stream_test: pass
-Done dartk-vm debug_x64 standalone/io/delete_symlink_test: pass
-Done dartk-vm debug_x64 standalone/io/echo_server_stream_test: pass
-Done dartk-vm debug_x64 standalone/io/echo_server_stream_test: pass
-Done dartk-vm debug_x64 standalone/io/named_pipe_script_test: pass
-Done dartk-vm debug_x64 standalone/io/echo_server_stream_test: pass
-Done dartk-vm debug_x64 standalone/io/process_sync_test: pass
-Done dartk-vm debug_x64 standalone/io/file_test: pass
-Done dartk-vm debug_x64 standalone/io/process_run_test: pass
-Done dartk-vm debug_x64 standalone/io/http_10_test: pass
-Done dartk-vm debug_x64 standalone/io/http_10_test: pass
-Done dartk-vm debug_x64 standalone/io/http_10_test: pass
-Done dartk-vm debug_x64 standalone/io/http_10_test: pass
-Done dartk-vm debug_x64 standalone/priority_queue_stress_test: pass
-Done dartk-vm debug_x64 standalone/dart_developer_disabled_env_test: pass
-Done dartk-vm debug_x64 standalone/io/http_advanced_test: pass
-Done dartk-vm debug_x64 standalone/no_support_service_test: pass
-Done dartk-vm debug_x64 standalone/io/http_advanced_test: pass
-Done dartk-vm debug_x64 standalone/io/http_advanced_test: pass
-Done dartk-vm debug_x64 standalone/io/http_advanced_test: pass
-Done dartk-vm debug_x64 standalone/pair_location_remapping_test: pass
-Done dartk-vm debug_x64 standalone/no_support_ast_printer_test: pass
-Done dartk-vm debug_x64 standalone/oom_error_stacktrace_test: pass
-Done dartk-vm debug_x64 standalone/dart_developer_env_test: pass
-Done dartk-vm debug_x64 standalone/regress_25335_test: pass
-Done dartk-vm debug_x64 standalone/constant_left_shift_test: pass
-Done dartk-vm debug_x64 standalone/int_array_load_elimination_test: pass
-Done dartk-vm debug_x64 standalone/no_assert_test: pass
-Done dartk-vm debug_x64 standalone/env_test: pass
-Done dartk-vm debug_x64 standalone/typed_data_view_test: pass
-Done dartk-vm debug_x64 standalone/io/platform_resolved_executable_test/none: pass
-Done dartk-vm debug_x64 standalone/array_bounds_check_generalization_test: pass
-Done dartk-vm debug_x64 standalone/slowpath_safepoints_test: pass
-Done dartk-vm debug_x64 standalone/io/platform_resolved_executable_test/00: pass
-Done dartk-vm debug_x64 standalone/io/platform_resolved_executable_test/01: pass
-Done dartk-vm debug_x64 standalone/io/platform_resolved_executable_test/02: pass
-Done dartk-vm debug_x64 standalone/io/platform_resolved_executable_test/04: pass
-Done dartk-vm debug_x64 standalone/io/platform_resolved_executable_test/06: pass
-Done dartk-vm debug_x64 standalone/io/platform_resolved_executable_test/03: pass
-Done dartk-vm debug_x64 standalone/io/platform_resolved_executable_test/05: pass
-Done dartk-vm debug_x64 standalone/fields_may_be_reset_test: pass
-Done dartk-vm debug_x64 standalone/regress_29695_test: pass
-Done dartk-vm debug_x64 standalone/typed_data_isolate_test: pass
-Done dartk-vm debug_x64 standalone/no_support_il_printer_test: pass
-Done dartk-vm debug_x64 standalone/deoptimization_test: pass
-Done dartk-vm debug_x64 standalone/double_smi_comparison_test: pass
-Done dartk-vm debug_x64 standalone/unboxed_int_converter_test: pass
-Done dartk-vm debug_x64 standalone/black_listed_test/01: pass
-Done dartk-vm debug_x64 standalone/black_listed_test/02: pass
-Done dartk-vm debug_x64 standalone/left_shift_bit_and_op_test: pass
-Done dartk-vm debug_x64 standalone/regress_29350_test/none: pass
-Done dartk-vm debug_x64 standalone/black_listed_test/none: pass
-Done dartk-vm debug_x64 standalone/black_listed_test/03: pass
-Done dartk-vm debug_x64 standalone/black_listed_test/04: pass
-Done dartk-vm debug_x64 standalone/black_listed_test/05: pass
-Done dartk-vm debug_x64 standalone/black_listed_test/06: pass
-Done dartk-vm debug_x64 standalone/io/file_lock_test: pass
-Done dartk-vm debug_x64 standalone/verbose_gc_to_bmu_test: pass
-Done dartk-vm debug_x64 standalone/black_listed_test/07: pass
-Done dartk-vm debug_x64 standalone/black_listed_test/08: pass
-Done dartk-vm debug_x64 standalone/regress_26031_test: pass
-Done dartk-vm debug_x64 standalone/black_listed_test/10: pass
-Done dartk-vm debug_x64 standalone/black_listed_test/09: pass
-Done dartk-vm debug_x64 standalone/black_listed_test/11: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Void/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Void/syntax_t08: pass
-Done dartk-vm debug_x64 standalone/black_listed_test/12: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Void/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Void/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Void/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Void/syntax_t15: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Void/returning_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Void/using_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Void/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Void/syntax_t12: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Void/syntax_t13: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Void/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Void/returning_t03: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Void/returning_t04: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Void/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Void/syntax_t14: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Void/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Void/syntax_t11: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Void/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Void/using_t02: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Void/using_t03: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Void/returning_t05: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Void/returning_t02: pass
-Done dartk-vm debug_x64 co19/Language/Types/Static_Types/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Types/Dynamic_Type_System/malbounded_type_error_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Dynamic_Type_System/malformed_type_error_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Dynamic_Type_System/deferred_type_error_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Static_Types/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Types/Static_Types/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Static_Types/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Types/Static_Types/deferred_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Static_Types/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Types/Static_Types/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Types/Static_Types/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Types/Static_Types/malformed_type_t05: pass
-Done dartk-vm debug_x64 co19/Language/Types/Static_Types/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Types/Static_Types/malformed_type_t06: pass
-Done dartk-vm debug_x64 co19/Language/Types/Static_Types/malformed_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Types/Static_Types/malformed_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Static_Types/malformed_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Types/Static_Types/malformed_type_t04: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t39: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/direct_supertype_t05: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t43: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t16: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t06: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t26: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t11: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t25: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t36: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t19: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t22: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/interface_supertypes_t02: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t40: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t18: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t17: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t38: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t33: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/direct_supertype_t04: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t45: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t15: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/direct_supertype_t02: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t03: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/direct_supertype_t03: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t32: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t37: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t09: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t28: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t34: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t04: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t02: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t21: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/direct_supertype_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t27: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t08: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t44: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t46: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/interface_supertypes_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t24: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t29: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t05: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t13: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t42: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t41: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t07: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t12: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t48: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t14: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t30: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t23: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t35: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t31: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t20: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t47: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t10: pass
-Done dartk-vm debug_x64 co19/Language/Types/Parameterized_Types/static_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Types/Interface_Types/subtype_t49: pass
-Done dartk-vm debug_x64 co19/Language/Types/Parameterized_Types/arity_mismatch_t02: pass
-Done dartk-vm debug_x64 co19/Language/Types/Parameterized_Types/arity_mismatch_t06: pass
-Done dartk-vm debug_x64 co19/Language/Types/Parameterized_Types/malbounded_t07: pass
-Done dartk-vm debug_x64 co19/Language/Types/Parameterized_Types/malbounded_t04: pass
-Done dartk-vm debug_x64 co19/Language/Types/Parameterized_Types/Actual_Type_of_Declaration/actual_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Types/Parameterized_Types/Actual_Type_of_Declaration/actual_type_t04: pass
-Done dartk-vm debug_x64 co19/Language/Types/Parameterized_Types/Actual_Type_of_Declaration/actual_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Parameterized_Types/Actual_Type_of_Declaration/actual_type_t05: pass
-Done dartk-vm debug_x64 co19/Language/Types/Parameterized_Types/malbounded_t02: pass
-Done dartk-vm debug_x64 co19/Language/Types/Parameterized_Types/Actual_Type_of_Declaration/actual_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Types/Parameterized_Types/arity_mismatch_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Parameterized_Types/arity_mismatch_t03: pass
-Done dartk-vm debug_x64 co19/Language/Types/Parameterized_Types/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Parameterized_Types/malbounded_t03: pass
-Done dartk-vm debug_x64 co19/Language/Types/Parameterized_Types/malbounded_t06: pass
-Done dartk-vm debug_x64 co19/Language/Types/Parameterized_Types/arity_mismatch_t04: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/self_reference_t08: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/self_reference_t04: pass
-Done dartk-vm debug_x64 co19/Language/Types/Parameterized_Types/malbounded_t05: pass
-Done dartk-vm debug_x64 co19/Language/Types/Parameterized_Types/arity_mismatch_t05: pass
-Done dartk-vm debug_x64 co19/Language/Types/Parameterized_Types/malbounded_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/self_reference_t17: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/self_reference_t11: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/param_default_value_t05: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/dynamic_param_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/self_reference_t15: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/dynamic_return_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/self_reference_t10: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/self_reference_t07: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/self_reference_t09: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/param_default_value_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/function_type_alias_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/self_reference_t16: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/function_type_alias_t02: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/param_default_value_t03: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/param_default_value_t04: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/self_reference_t05: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/self_reference_t14: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/self_reference_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/self_reference_t12: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/self_reference_t06: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/dynamic_param_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/self_reference_t02: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/param_default_value_t02: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/self_reference_t03: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/function_type_alias_t03: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_Declarations/Typedef/self_reference_t13: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_dynamic/dynamic_t03: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_dynamic/dynamic_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_dynamic/dynamic_t04: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_dynamic/dynamic_t02: pass
-Done dartk-vm debug_x64 co19/Language/Types/Type_dynamic/dynamic_t05: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_named_args_t04: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_named_args_t03: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_required_args_t03: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/assignment_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_named_args_t02: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_no_args_t02: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_named_args_t12: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_named_args_t08: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_named_args_t09: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_named_args_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_required_args_t02: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_required_args_t05: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_optional_args_t03: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_named_args_t11: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_named_args_t06: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_optional_args_t08: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_required_args_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/call_t03: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_optional_args_t02: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/implements_function_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_optional_args_t09: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_optional_args_t10: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_named_args_t10: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/implements_function_t02: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_optional_args_t12: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/implements_function_t04: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/implements_function_t03: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/call_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_optional_args_t06: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_optional_args_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_named_args_t05: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_optional_args_t04: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_no_args_t03: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_no_args_t01: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_no_args_t04: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/call_t02: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_required_args_t04: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_optional_args_t07: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_named_args_t07: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_optional_args_t05: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_optional_args_t11: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/subtype_no_args_t05: pass
-Done dartk-vm debug_x64 co19/Language/Types/Function_Types/implements_function_t05: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Privacy/private_and_public_t08: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Privacy/private_and_public_t20: pass
-Done dartk-vm debug_x64 co19/Language/Overview/runtime_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Privacy/private_and_public_t10: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Privacy/private_and_public_t11: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Privacy/private_and_public_t01: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Privacy/private_and_public_t02: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Privacy/private_and_public_t07: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Privacy/private_and_public_t04: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Privacy/private_and_public_t19: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Privacy/private_and_public_t14: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Privacy/private_and_public_t13: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Privacy/private_and_public_t15: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Privacy/private_and_public_t18: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Privacy/private_and_public_t06: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Privacy/private_and_public_t17: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t31: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t19: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Privacy/private_and_public_t21: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Privacy/private_and_public_t05: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Privacy/private_and_public_t16: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Privacy/private_and_public_t09: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Privacy/private_and_public_t12: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t41: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/names_introducing_t03: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/hiding_declaration_t12: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/hiding_declaration_t14: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t13: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t28: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/hiding_declaration_t06: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t30: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/hiding_declaration_t22: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t02: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t43: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/hiding_declaration_t03: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/hiding_declaration_t11: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/names_introducing_t02: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t17: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/hiding_declaration_t13: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/hiding_declaration_t32: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/hiding_declaration_t16: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t11: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t37: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/hiding_declaration_t25: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t40: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/labels_t01: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t25: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/hiding_declaration_t01: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t32: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t46: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t29: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t27: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/hiding_declaration_t07: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t16: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t06: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t09: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t34: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t05: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t35: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t33: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t21: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/hiding_declaration_t08: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t04: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/hiding_declaration_t28: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/hiding_declaration_t02: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t45: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t15: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t20: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t01: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t44: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t18: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/names_introducing_t01: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t38: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/hiding_declaration_t15: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t39: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t26: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/hiding_declaration_t04: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/hiding_declaration_t05: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/conflicting_names_t12: pass
-Done dartk-vm debug_x64 co19/Language/Enums/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/hiding_declaration_t19: pass
-Done dartk-vm debug_x64 co19/Language/Overview/Scoping/hiding_declaration_t29: pass
-Done dartk-vm debug_x64 co19/Language/Enums/restrictions_t07: pass
-Done dartk-vm debug_x64 co19/Language/Enums/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Enums/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Overview/runtime_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Enums/declaration_equivalent_t06: pass
-Done dartk-vm debug_x64 co19/Language/Enums/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Enums/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Enums/restrictions_t01: pass
-Done dartk-vm debug_x64 co19/Language/Enums/declaration_equivalent_t03: pass
-Done dartk-vm debug_x64 co19/Language/Enums/restrictions_t05: pass
-Done dartk-vm debug_x64 co19/Language/Enums/declaration_equivalent_t07: pass
-Done dartk-vm debug_x64 co19/Language/Enums/declaration_equivalent_t01: pass
-Done dartk-vm debug_x64 co19/Language/Enums/declaration_equivalent_t02: pass
-Done dartk-vm debug_x64 co19/Language/Enums/restrictions_t08: pass
-Done dartk-vm debug_x64 co19/Language/Enums/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Enums/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Enums/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Enums/declaration_equivalent_t04: pass
-Done dartk-vm debug_x64 co19/Language/Enums/restrictions_t04: pass
-Done dartk-vm debug_x64 co19/Language/Enums/restrictions_t06: pass
-Done dartk-vm debug_x64 co19/Language/Enums/restrictions_t03: pass
-Done dartk-vm debug_x64 co19/Language/Enums/restrictions_t02: pass
-Done dartk-vm debug_x64 co19/Language/Enums/declaration_equivalent_t09: pass
-Done dartk-vm debug_x64 co19/Language/Enums/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/declaring_constructor_t04: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/declaring_constructor_t08: pass
-Done dartk-vm debug_x64 co19/Language/Enums/declaration_equivalent_t08: pass
-Done dartk-vm debug_x64 co19/Language/Enums/declaration_equivalent_t05: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/declaring_constructor_t02: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/declaring_constructor_t09: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/declaring_constructor_t03: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/declaring_constructor_t05: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Composition/order_t01: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/declaring_constructor_t06: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/wrong_mixin_type_t05: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/wrong_mixin_type_t07: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/abstract_t03: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/deferred_t01: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/implicit_constructor_t02: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/wrong_mixin_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/wrong_type_t05: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/wrong_mixin_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/initializers_t03: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/superinterfaces_t01: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/syntax_t15: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/wrong_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/syntax_t21: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/superinterfaces_t02: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/syntax_t22: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/wrong_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/syntax_t16: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/superinterfaces_t07: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/warning_t01: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/static_warning_t01: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/warning_t03: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/interfaces_t02: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/static_warning_t02: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/wrong_mixin_type_t06: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/abstract_t04: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/abstract_t06: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/error_t02: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/initializers_t02: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/syntax_t13: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/syntax_t12: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/abstract_t02: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/superinterfaces_t04: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/abstract_t01: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/wrong_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/warning_t02: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/syntax_t25: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/abstract_t05: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/abstract_t08: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/syntax_t17: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/syntax_t14: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/wrong_mixin_type_t08: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/superinterfaces_t05: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/syntax_t20: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/syntax_t23: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/interfaces_t04: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/interfaces_t03: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/superinterfaces_t09: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/wrong_mixin_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/superinterfaces_t03: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/deferred_t02: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/wrong_type_t04: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/wrong_mixin_type_t04: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/implicit_constructor_t01: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/syntax_t11: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/interfaces_t05: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/superinterfaces_t08: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/interfaces_t01: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/wrong_type_t06: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/syntax_t18: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/abstract_t07: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/error_t01: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/superinterfaces_t06: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/declaring_constructor_t10: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/declaring_constructor_t01: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/initializers_t01: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/declaring_constructor_t07: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/syntax_t19: pass
-Done dartk-vm debug_x64 co19/Language/Mixins/Mixin_Application/syntax_t24: pass
-Done dartk-vm debug_x64 co19/Language/Errors_and_Warnings/compile_error_t07: pass
-Done dartk-vm debug_x64 co19/Language/Errors_and_Warnings/compile_error_t02: pass
-Done dartk-vm debug_x64 co19/Language/Errors_and_Warnings/compile_error_t06: pass
-Done dartk-vm debug_x64 co19/Language/Errors_and_Warnings/compile_error_t01: pass
-Done dartk-vm debug_x64 co19/Language/Errors_and_Warnings/compile_error_t03: pass
-Done dartk-vm debug_x64 co19/Language/Errors_and_Warnings/compile_error_t05: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Errors_and_Warnings/compile_error_t04: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/compilation_t04: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Errors_and_Warnings/static_warning_t01: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/compilation_t09: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_function_t07: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_function_t03: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_function_t02: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/compilation_t11: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_param_t08: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_part_header_t01: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_ctor_t01: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_type_param_t01: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_variable_t01: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/compilation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_export_t01: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/compilation_t03: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/compilation_t08: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/compilation_t06: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_function_t01: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_import_t01: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_param_t02: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_function_t06: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_class_t01: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/compilation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_param_t03: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_param_t07: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_ctor_t02: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_param_t01: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_param_t06: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/compilation_t05: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_library_t01: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_param_t04: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/compilation_t10: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_factory_t01: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_variable_t02: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_function_t04: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/compilation_t07: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Variables/constant_variable_t08: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_param_t09: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_function_t05: pass
-Done dartk-vm debug_x64 co19/Language/Variables/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_part_directive_t01: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_param_t05: pass
-Done dartk-vm debug_x64 co19/Language/Metadata/before_typedef_t01: pass
-Done dartk-vm debug_x64 co19/Language/Variables/final_t07: pass
-Done dartk-vm debug_x64 co19/Language/Variables/final_t05: pass
-Done dartk-vm debug_x64 co19/Language/Variables/final_t04: pass
-Done dartk-vm debug_x64 co19/Language/Variables/final_or_static_initialization_t03: pass
-Done dartk-vm debug_x64 co19/Language/Variables/implicit_getter_t04: pass
-Done dartk-vm debug_x64 co19/Language/Variables/local_variable_t03: pass
-Done dartk-vm debug_x64 co19/Language/Variables/implicit_getter_t07: pass
-Done dartk-vm debug_x64 co19/Language/Variables/Evaluation_of_Implicit_Variable_Getters/definition_t02: pass
-Done dartk-vm debug_x64 co19/Language/Variables/Evaluation_of_Implicit_Variable_Getters/definition_t03: pass
-Done dartk-vm debug_x64 co19/Language/Variables/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Variables/Evaluation_of_Implicit_Variable_Getters/definition_t01: pass
-Done dartk-vm debug_x64 co19/Language/Variables/Evaluation_of_Implicit_Variable_Getters/definition_t05: pass
-Done dartk-vm debug_x64 co19/Language/Variables/Evaluation_of_Implicit_Variable_Getters/definition_t04: pass
-Done dartk-vm debug_x64 co19/Language/Variables/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Variables/implicit_setter_t01: pass
-Done dartk-vm debug_x64 co19/Language/Variables/implicit_setter_void_t04: pass
-Done dartk-vm debug_x64 co19/Language/Variables/implicit_getter_t03: pass
-Done dartk-vm debug_x64 co19/Language/Variables/static_variable_t01: pass
-Done dartk-vm debug_x64 co19/Language/Variables/library_variable_t03: pass
-Done dartk-vm debug_x64 co19/Language/Variables/syntax_t21: pass
-Done dartk-vm debug_x64 co19/Language/Variables/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Variables/implicit_getter_t11: pass
-Done dartk-vm debug_x64 co19/Language/Variables/syntax_t15: pass
-Done dartk-vm debug_x64 co19/Language/Variables/constant_initialization_t02: pass
-Done dartk-vm debug_x64 co19/Language/Variables/local_variable_t02: pass
-Done dartk-vm debug_x64 co19/Language/Variables/constant_initialization_t01: pass
-Done dartk-vm debug_x64 co19/Language/Variables/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Variables/syntax_t22: pass
-Done dartk-vm debug_x64 co19/Language/Variables/constant_variable_t01: pass
-Done dartk-vm debug_x64 co19/Language/Variables/syntax_t16: pass
-Done dartk-vm debug_x64 co19/Language/Variables/dynamic_type_variable_t01: pass
-Done dartk-vm debug_x64 co19/Language/Variables/local_variable_t05: pass
-Done dartk-vm debug_x64 co19/Language/Variables/implicit_getter_t09: pass
-Done dartk-vm debug_x64 co19/Language/Variables/implicit_getter_dynamic_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Variables/implicit_setter_void_t02: pass
-Done dartk-vm debug_x64 co19/Language/Variables/syntax_t12: pass
-Done dartk-vm debug_x64 co19/Language/Variables/syntax_t13: pass
-Done dartk-vm debug_x64 co19/Language/Variables/not_initialized_value_t01: pass
-Done dartk-vm debug_x64 co19/Language/Variables/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Variables/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Variables/constant_initialization_t03: pass
-Done dartk-vm debug_x64 co19/Language/Variables/local_variable_t01: pass
-Done dartk-vm debug_x64 co19/Language/Variables/implicit_getter_t12: pass
-Done dartk-vm debug_x64 co19/Language/Variables/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Variables/implicit_setter_void_t06: pass
-Done dartk-vm debug_x64 co19/Language/Variables/library_variable_t07: pass
-Done dartk-vm debug_x64 co19/Language/Variables/final_t03: pass
-Done dartk-vm debug_x64 co19/Language/Variables/final_or_static_initialization_t01: pass
-Done dartk-vm debug_x64 co19/Language/Variables/final_or_static_initialization_t02: pass
-Done dartk-vm debug_x64 co19/Language/Variables/syntax_t17: pass
-Done dartk-vm debug_x64 co19/Language/Variables/library_variable_t01: pass
-Done dartk-vm debug_x64 co19/Language/Variables/syntax_t14: pass
-Done dartk-vm debug_x64 co19/Language/Variables/constant_variable_t02: pass
-Done dartk-vm debug_x64 co19/Language/Variables/implicit_setter_void_t03: pass
-Done dartk-vm debug_x64 co19/Language/Variables/local_variable_t06: pass
-Done dartk-vm debug_x64 co19/Language/Variables/implicit_setter_void_t01: pass
-Done dartk-vm debug_x64 co19/Language/Variables/implicit_getter_t10: pass
-Done dartk-vm debug_x64 co19/Language/Variables/implicit_getter_t02: pass
-Done dartk-vm debug_x64 co19/Language/Variables/local_variable_t04: pass
-Done dartk-vm debug_x64 co19/Language/Variables/syntax_t20: pass
-Done dartk-vm debug_x64 co19/Language/Variables/syntax_t23: pass
-Done dartk-vm debug_x64 co19/Language/Variables/library_variable_t02: pass
-Done dartk-vm debug_x64 co19/Language/Variables/library_variable_t06: pass
-Done dartk-vm debug_x64 co19/Language/Variables/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Variables/constant_variable_t06: pass
-Done dartk-vm debug_x64 co19/Language/Variables/constant_variable_t07: pass
-Done dartk-vm debug_x64 co19/Language/Variables/constant_variable_t10: pass
-Done dartk-vm debug_x64 co19/Language/Variables/final_t02/none: pass
-Done dartk-vm debug_x64 co19/Language/Variables/implicit_setter_void_t07: pass
-Done dartk-vm debug_x64 co19/Language/Variables/syntax_t11: pass
-Done dartk-vm debug_x64 co19/Language/Variables/final_t02/01: pass
-Done dartk-vm debug_x64 co19/Language/Variables/static_variable_initialization_t01: pass
-Done dartk-vm debug_x64 co19/Language/Variables/implicit_getter_t05: pass
-Done dartk-vm debug_x64 co19/Language/Variables/implicit_setter_t03: pass
-Done dartk-vm debug_x64 co19/Language/Variables/implicit_setter_t02: pass
-Done dartk-vm debug_x64 co19/Language/Variables/static_variable_t02: pass
-Done dartk-vm debug_x64 co19/Language/Variables/syntax_t18: pass
-Done dartk-vm debug_x64 co19/Language/Variables/final_t06: pass
-Done dartk-vm debug_x64 co19/Language/Variables/implicit_getter_t01: pass
-Done dartk-vm debug_x64 co19/Language/Variables/constant_variable_t09: pass
-Done dartk-vm debug_x64 co19/Language/Variables/constant_variable_t04: pass
-Done dartk-vm debug_x64 co19/Language/Variables/constant_variable_t05: pass
-Done dartk-vm debug_x64 co19/Language/Variables/implicit_getter_dynamic_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Variables/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Variables/library_variable_t05: pass
-Done dartk-vm debug_x64 co19/Language/Variables/implicit_getter_dynamic_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Variables/implicit_setter_void_t05: pass
-Done dartk-vm debug_x64 co19/Language/Variables/library_variable_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/member_definition_t08: pass
-Done dartk-vm debug_x64 co19/Language/Classes/member_definition_t02: pass
-Done dartk-vm debug_x64 co19/Language/Variables/syntax_t19: pass
-Done dartk-vm debug_x64 co19/Language/Classes/definition_t06: pass
-Done dartk-vm debug_x64 co19/Language/Variables/constant_variable_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/definition_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t20: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_type_variable_t03: pass
-Done dartk-vm debug_x64 co19/Language/Variables/implicit_getter_t08: pass
-Done dartk-vm debug_x64 co19/Language/Classes/definition_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/member_definition_t17: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_type_variable_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/static_setter_t09: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t27: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t28: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/name_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/return_type_not_void_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/same_name_getter_different_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/static_setter_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/name_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/no_return_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/name_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/static_setter_t08: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/name_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/name_t07: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/instance_setter_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/override_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/parameter_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/static_setter_t07: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/same_name_getter_different_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/static_setter_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/type_object_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/instance_setter_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/parameter_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/override_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/parameter_t08: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/instance_setter_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/name_t03: pass
-Done dartk-vm debug_x64 co19/Language/Variables/final_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Variables/final_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/name_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/static_setter_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/parameter_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/parameter_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/static_setter_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/parameter_t07: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/parameter_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/static_setter_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/parameter_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t14: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/override_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/instance_setter_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/type_object_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/instance_setter_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Setters/instance_setter_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_type_variable_t07: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t12: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Variables/definition_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t21: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Variables/definition_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Variables/constant_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Variables/definition_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Variables/definition_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/member_definition_t14: pass
-Done dartk-vm debug_x64 co19/Language/Classes/definition_t10: pass
-Done dartk-vm debug_x64 co19/Language/Classes/member_definition_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_instance_and_static_members_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_member_and_class_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_members_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/definition_t18: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_type_variable_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_members_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/method_definition_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/definition_t19: pass
-Done dartk-vm debug_x64 co19/Language/Classes/member_definition_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/member_definition_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/method_definition_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/mixins_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/member_definition_t22: pass
-Done dartk-vm debug_x64 co19/Language/Classes/definition_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t29: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t18: pass
-Done dartk-vm debug_x64 co19/Language/Classes/method_definition_t09: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t15: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t23: pass
-Done dartk-vm debug_x64 co19/Language/Classes/method_definition_t10: pass
-Done dartk-vm debug_x64 co19/Language/Classes/member_definition_t16: pass
-Done dartk-vm debug_x64 co19/Language/Classes/definition_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/definition_t20: pass
-Done dartk-vm debug_x64 co19/Language/Classes/definition_t17: pass
-Done dartk-vm debug_x64 co19/Language/Classes/member_definition_t25: pass
-Done dartk-vm debug_x64 co19/Language/Classes/member_definition_t21: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_members_t08: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t30: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_type_variable_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t26: pass
-Done dartk-vm debug_x64 co19/Language/Classes/member_definition_t19: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t25: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t31: pass
-Done dartk-vm debug_x64 co19/Language/Classes/member_definition_t11: pass
-Done dartk-vm debug_x64 co19/Language/Classes/method_definition_t08: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_members_t10: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t34: pass
-Done dartk-vm debug_x64 co19/Language/Classes/member_definition_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/definition_t11: pass
-Done dartk-vm debug_x64 co19/Language/Classes/method_definition_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_members_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_members_t09: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_members_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/definition_t13: pass
-Done dartk-vm debug_x64 co19/Language/Classes/definition_t09: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_members_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/definition_t14: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_instance_and_static_members_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t33: pass
-Done dartk-vm debug_x64 co19/Language/Classes/definition_t21: pass
-Done dartk-vm debug_x64 co19/Language/Classes/implements_clause_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_members_t07: pass
-Done dartk-vm debug_x64 co19/Language/Classes/member_definition_t15: pass
-Done dartk-vm debug_x64 co19/Language/Classes/member_definition_t07: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t32: pass
-Done dartk-vm debug_x64 co19/Language/Classes/member_definition_t09: pass
-Done dartk-vm debug_x64 co19/Language/Classes/definition_t22: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t17: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_member_and_class_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/method_definition_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_instance_and_static_members_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/override_default_value_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/override_not_a_subtype_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/override_default_value_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/override_default_value_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/invocation_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/inherited_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/inherited_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/invocation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/inherited_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/inherited_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/override_more_required_parameters_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/same_name_static_method_in_superclass_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/inherited_t11: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/invocation_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/inherited_t09: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/same_name_static_method_in_superclass_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/override_more_required_parameters_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/override_no_named_parameters_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/override_default_value_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/inherited_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/same_name_static_method_in_superclass_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/inherited_t08: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/override_less_positional_parameters_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/override_default_value_t08: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/invocation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/override_not_a_subtype_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/inherited_t07: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/override_no_named_parameters_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/inherited_t10: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/override_no_named_parameters_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/override_no_named_parameters_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/override_default_value_t07: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/no_implementation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/override_more_required_parameters_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/override_less_positional_parameters_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/override_default_value_t09: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/override_not_a_subtype_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/override_more_required_parameters_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/override_not_a_subtype_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/override_no_named_parameters_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/override_default_value_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/inherited_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/inherited_t12: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/override_default_value_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/same_name_static_method_in_superclass_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/member_definition_t10: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/same_name_static_method_in_superclass_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Abstract_Instance_Members/override_no_named_parameters_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/member_definition_t12: pass
-Done dartk-vm debug_x64 co19/Language/Classes/definition_t23: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_members_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_instance_and_static_members_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Static_Variables/inheritance_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t13: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t19: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/method_definition_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/same_name_method_t09: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/same_name_method_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/same_name_method_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/instance_getter_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/same_name_method_t11: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/void_return_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/static_getter_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/instance_getter_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/static_getter_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/static_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/static_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/static_getter_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/instance_getter_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/override_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/same_name_method_t08: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/same_name_method_t10: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/return_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/type_object_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/override_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/override_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/instance_getter_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/same_name_method_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/same_name_method_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/static_getter_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/instance_getter_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/instance_getter_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/same_name_method_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/same_name_method_t07: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/same_name_method_t12: pass
-Done dartk-vm debug_x64 co19/Language/Classes/definition_t08: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/override_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Getters/type_object_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/definition_t16: pass
-Done dartk-vm debug_x64 co19/Language/Classes/member_definition_t13: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_type_variable_t08: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_type_variable_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_type_variable_t09: pass
-Done dartk-vm debug_x64 co19/Language/Classes/implements_clause_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/override_more_parameters_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/same_name_static_member_in_superclass_t08: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/same_name_static_member_in_superclass_t09: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/override_subtype_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/override_different_default_values_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/override_subtype_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/override_subtype_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/same_name_static_member_in_superclass_t07: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/override_named_parameters_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/override_subtype_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/same_name_static_member_in_superclass_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/override_named_parameters_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/override_subtype_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/override_named_parameters_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/override_named_parameters_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/override_named_parameters_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/same_name_static_member_in_superclass_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/arity_1_t13: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/override_different_default_values_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/same_name_static_member_in_superclass_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/same_name_setter_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/override_more_parameters_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/override_fewer_parameters_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/same_name_static_member_in_superclass_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/arity_1_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/allowed_names_t14: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/allowed_names_t08: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/arity_1_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/arity_1_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/allowed_names_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/optional_parameter_t08: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/arity_1_t18: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/arity_0_or_1_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/allowed_names_t18: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/allowed_names_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/allowed_names_t16: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/arity_2_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/allowed_names_t21: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/arity_1_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/arity_1_t12: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/allowed_names_t15: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/allowed_names_t10: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/optional_parameter_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/arity_0_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/arity_1_t10: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/allowed_names_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/allowed_names_t13: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/optional_parameter_t07: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/arity_1_t09: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/arity_1_t11: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/allowed_names_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/arity_0_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/allowed_names_t07: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/arity_1_t15: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/allowed_names_t17: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/allowed_names_t22: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/optional_parameter_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/allowed_names_t09: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/arity_1_t17: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/allowed_names_t20: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/return_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/allowed_names_t12: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/arity_1_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/allowed_names_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/optional_parameter_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/allowed_names_t11: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/arity_2_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/arity_1_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/optional_parameter_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/arity_1_t14: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/arity_0_or_1_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/allowed_names_t19: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/arity_1_t07: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/allowed_names_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/optional_parameter_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/arity_1_t08: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/optional_parameter_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/Operators/arity_1_t16: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_member_and_class_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/override_subtype_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/definition_t07: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/name_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/same_name_setter_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/override_named_parameters_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/override_fewer_parameters_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Instance_Methods/same_name_static_member_in_superclass_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/name_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/name_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/name_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializing_other_function_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializers_t16: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/many_initializers_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/implicit_constructor_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/implicit_constructor_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializers_t11: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/formal_parameter_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/superclass_constructor_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializers_t12: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializing_other_function_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/execution_of_a_superinitializer_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/superclass_constructor_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/execution_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/formal_parameter_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializers_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/many_initializers_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/not_an_instance_variable_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializers_t09: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/formal_parameter_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/redirection_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializing_other_function_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/formal_parameter_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializers_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializer_for_a_variable_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/execution_of_an_initializer_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/formal_parameter_t08: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/superclass_constructor_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializers_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/redirection_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/execution_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/explicit_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializing_other_function_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/redirection_t11: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/explicit_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializers_t07: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/redirection_t09: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/formal_parameter_t07: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/many_initializers_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/redirection_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializers_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializers_t10: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/superclass_constructor_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/execution_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/redirection_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializers_t08: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializers_t14: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/fresh_instance_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/final_variables_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializing_other_function_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/execution_t12: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/redirection_t10: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializing_formals_execution_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/execution_t11: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializers_t13: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/formal_parameter_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializer_for_a_variable_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/execution_t10: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/implicit_superinitializer_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializing_this_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/superclass_constructor_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/redirection_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/execution_of_an_initializer_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/redirection_t08: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializing_other_function_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/execution_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/formal_parameter_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/not_an_instance_variable_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/superclass_constructor_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/explicit_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializing_other_function_t07: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/superinitializer_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/execution_t09: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/execution_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/execution_of_an_initializer_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/execution_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/redirection_t07: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/final_variables_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/execution_t07: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/not_an_instance_variable_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/redirection_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializing_formals_execution_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/superinitializer_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/not_an_instance_variable_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializing_this_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializers_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/superinitializer_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializing_this_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializers_t15: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/execution_t08: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/many_initializers_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/wrong_name_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Constant_Constructors/potentially_constant_expression_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/execution_of_an_initializer_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/initializers_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/implicit_superinitializer_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Generative_Constructors/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Constant_Constructors/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Constant_Constructors/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Constant_Constructors/initializer_not_a_constant_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Constant_Constructors/invalid_constant_initializer_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Constant_Constructors/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Constant_Constructors/potentially_constant_expression_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Constant_Constructors/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Constant_Constructors/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Constant_Constructors/const_parameter_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Constant_Constructors/invalid_constant_initializer_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Constant_Constructors/potentially_constant_expression_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Constant_Constructors/non_final_instance_variable_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Constant_Constructors/not_a_constant_in_superclass_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Constant_Constructors/not_a_constant_in_superclass_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Constant_Constructors/superinitializer_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Constant_Constructors/non_final_instance_variable_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Constant_Constructors/initializer_not_a_constant_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Constant_Constructors/superinitializer_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Constant_Constructors/invalid_constant_initializer_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Constant_Constructors/superinitializer_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Constant_Constructors/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/name_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Constant_Constructors/const_parameter_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/name_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Constant_Constructors/superinitializer_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Constant_Constructors/initializer_not_a_constant_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/redirecting_constructor_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/implicit_constructor_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/const_modifier_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/name_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/function_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/return_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/redirecting_constructor_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/return_wrong_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/name_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/default_value_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/function_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/return_wrong_type_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/redirecting_to_itself_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/arguments_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/return_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/name_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/redirecting_to_itself_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/return_type_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/const_modifier_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/accessible_class_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/return_type_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/accessible_class_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/return_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/return_wrong_type_t07: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/redirecting_to_itself_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/default_value_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/redirecting_constructor_call_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/return_wrong_type_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/return_wrong_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/return_type_t07: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/name_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/redirecting_to_itself_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/return_wrong_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/name_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/redirecting_constructor_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/redirecting_constructor_call_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/default_value_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/return_wrong_type_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/return_type_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/implicit_interface_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/mixins_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superclasses/Inheritance_and_Overriding/inheritance_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superclasses/Inheritance_and_Overriding/inheritance_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superclasses/Inheritance_and_Overriding/overriding_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superclasses/Inheritance_and_Overriding/inheritance_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superclasses/Inheritance_and_Overriding/overriding_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superclasses/superclass_of_itself_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superclasses/Inheritance_and_Overriding/overriding_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superclasses/Inheritance_and_Overriding/inheritance_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superclasses/Inheritance_and_Overriding/inheritance_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superclasses/wrong_superclass_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superclasses/Inheritance_and_Overriding/overriding_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superclasses/Inheritance_and_Overriding/inheritance_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superclasses/wrong_superclass_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superclasses/wrong_superclass_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superclasses/wrong_superclass_t07: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superclasses/wrong_superclass_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superclasses/wrong_superclass_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superclasses/wrong_superclass_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superclasses/no_extends_clause_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superclasses/superclass_of_itself_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superclasses/transition_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superclasses/extends_clause_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t16: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t24: pass
-Done dartk-vm debug_x64 co19/Language/Classes/definition_t12: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superclasses/wrong_superclass_t08: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superinterfaces/wrong_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superinterfaces/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superinterfaces/type_variable_as_superinterface_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_member_and_class_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/method_definition_t06: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superinterfaces/wrong_type_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/accessible_class_t04/none: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/accessible_class_t04/01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/accessible_class_t02/none: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/accessible_class_t04/02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/accessible_class_t03/none: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/accessible_class_t02/01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superinterfaces/wrong_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Constructors/Factories/accessible_class_t03/01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superclasses/Inheritance_and_Overriding/abstract_method_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superclasses/Inheritance_and_Overriding/abstract_method_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superinterfaces/wrong_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superinterfaces/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superinterfaces/no_member_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superinterfaces/more_than_once_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superinterfaces/superclass_as_superinterface_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superinterfaces/no_member_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superinterfaces/no_member_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superinterfaces/dynamic_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superinterfaces/wrong_type_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superinterfaces/dynamic_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superinterfaces/no_member_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superinterfaces/itself_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superinterfaces/implicit_interface_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superinterfaces/implicit_interface_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Superinterfaces/no_member_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Static_Methods/declaration_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Static_Methods/same_name_method_and_setter_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Static_Methods/declaration_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/definition_t15: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_instance_and_static_members_t05: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Static_Methods/declaration_t03: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Static_Methods/type_object_t02: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_members_t11: pass
-Done dartk-vm debug_x64 co19/Language/Classes/method_definition_t07: pass
-Done dartk-vm debug_x64 co19/Language/Classes/Static_Methods/type_object_t01: pass
-Done dartk-vm debug_x64 co19/Language/Classes/definition_t04: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t22: pass
-Done dartk-vm debug_x64 co19/Language/Classes/member_definition_t24: pass
-Done dartk-vm debug_x64 co19/Language/Classes/same_name_type_variable_t05: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t28: pass
-Done dartk-vm debug_x64 co19/Language/Classes/declarations_t08: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t13: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/URIs/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/URIs/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/URIs/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/URIs/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/URIs/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/URIs/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/URIs/syntax_t15: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/URIs/syntax_t13: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/URIs/syntax_t12: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/URIs/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/URIs/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/URIs/syntax_t14: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/URIs/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/top_level_syntax_t14: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/top_level_syntax_t19: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/URIs/syntax_t11: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/URIs/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/top_level_syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/top_level_syntax_t11: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/top_level_syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/private_access_t03: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/top_level_syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/top_level_syntax_t17: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t21: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t14: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/top_level_syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t25: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/top_level_syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t11: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/top_level_syntax_t13: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/private_access_t02: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/top_level_syntax_t16: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t24: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t29: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/top_level_syntax_t18: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t16: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t15: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/top_level_syntax_t15: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/public_namespace_t01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/top_level_syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t12: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t30: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t04: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t40: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/static_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t08: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t37: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t18: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t23: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t14: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/deferred_import_t01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t24: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t06: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/implicit_hide_t02: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t27: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t11: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t07: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/invalid_uri_deferred_t03: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/invalid_uri_t02: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t26: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t28: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t21: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t38: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/invalid_uri_t01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t22: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t16: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t22: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t16: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t33: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t15: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/library_name_t02: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t39: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t11: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t38: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t05: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/implicit_hide_t01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t13: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t19: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t27: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t08: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t23: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/invalid_uri_t03: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t12: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t39: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t28: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t30: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t04: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t14: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t09: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t21: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t34: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/library_name_t03: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t32: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t10: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/dart_core_t04: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/dart_core_t01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t35: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t25: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t19: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t10: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t17: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t28: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t03: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/deferred_import_t02: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t02: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t12: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t31: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t27: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t36: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t25: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t14: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t26: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t07: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t13: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t20: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t23: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t32: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t22: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t33: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t29: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t21: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t18: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/dart_core_t03: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t36: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t05: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t35: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t20: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t06: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t11: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t31: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/invalid_uri_deferred_t02: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/library_name_t01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t16: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t18: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t13: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t29: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t03: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t29: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t41: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t42: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t30: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t24: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t15: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t25: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/dart_core_t02: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t19: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t20: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t26: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t43: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t17: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t20: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/top_level_syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/syntax_t37: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t26: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t17: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/namespace_changes_t17: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Exports/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Exports/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Exports/invalid_uri_t02: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Exports/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Exports/same_name_t02: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Exports/invalid_uri_t01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Exports/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Exports/show_hide_t02: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Exports/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Exports/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Exports/show_hide_t01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Exports/invalid_uri_t03: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Exports/reexport__itself_t02: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Exports/implicit_hide_t01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Exports/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Exports/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Exports/syntax_t13: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Exports/syntax_t12: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Exports/public_namespace_t01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Exports/reexport__itself_t01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Exports/syntax_t14: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Exports/reexport_t02: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Exports/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t27: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Exports/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Exports/same_name_t01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t18: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/top_level_syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Exports/syntax_t11: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Exports/reexport_t01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Parts/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Parts/compilation_t12: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Parts/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Parts/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Parts/compilation_t09: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/private_access_t04: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Parts/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Parts/compilation_t04: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Parts/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Parts/compilation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Parts/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Parts/compilation_t11: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Parts/static_warning_t01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Parts/compilation_t08: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Parts/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Parts/compilation_t03: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Parts/compilation_t06: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Parts/compilation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Parts/compilation_t10: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Parts/compilation_t07: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Parts/compilation_t13: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Parts/compilation_t14: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Parts/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Parts/compilation_t15: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Parts/compilation_t05: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t19: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/top_level_syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/private_access_t01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/top_level_syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/top_level_syntax_t11: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/top_level_syntax_t14: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/top_level_syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/top_level_syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/syntax_t13: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/syntax_t15: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/top_level_syntax_t17: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/syntax_t16: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/top_level_syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/top_level_syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/top_level_syntax_t13: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/syntax_t12: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/top_level_syntax_t16: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/top_level_syntax_t18: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/top_level_syntax_t15: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/top_level_syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/top_level_syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/syntax_t17: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/top_level_main_t04: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/syntax_t14: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/top_level_syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/top_level_syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/top_level_main_t03: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/syntax_t11: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/top_level_main_t05: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/top_level_syntax_t12: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/syntax_t18: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/top_level_syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t22: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/top_level_syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/definition_syntax_t23: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/top_level_syntax_t12: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Scripts/top_level_main_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/execution_sync_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/static_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/execution_async_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/execution_sync_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/execution_async_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/execution_async_t08: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t02/none: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t02/01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t09/none: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t09/01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/invalid_uri_deferred_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/invalid_uri_deferred_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t34/none: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t34/01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t12/none: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t12/01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/location_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/execution_sync_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/execution_async_t07: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/location_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/execution_async_t11: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/execution_async_t10: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/execution_sync_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/location_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/execution_async_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/execution_async_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/execution_sync_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/execution_sync_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/location_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/execution_async_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/location_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/location_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/execution_async_t09: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/static_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield_Each/execution_async_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/execution_async_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/execution_sync_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/execution_async_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/execution_async_t08: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/location_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/location_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/execution_async_t07: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/execution_sync_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/execution_async_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/location_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/execution_sync_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/execution_async_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/location_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/location_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/location_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/execution_async_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Yield_and_Yield_Each/Yield/execution_async_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Variable_Declaration/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Variable_Declaration/executing_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Variable_Declaration/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Variable_Declaration/executing_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Variable_Declaration/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Variable_Declaration/syntax_t13: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Variable_Declaration/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Variable_Declaration/syntax_t15: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t15/none: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Variable_Declaration/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t15/01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Variable_Declaration/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Variable_Declaration/syntax_t20: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Variable_Declaration/syntax_t12: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Variable_Declaration/syntax_t11: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Variable_Declaration/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Variable_Declaration/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Variable_Declaration/syntax_t14: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Expression_Statements/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Variable_Declaration/default_initializer_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Variable_Declaration/syntax_t18: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Expression_Statements/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Variable_Declaration/syntax_t19: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Expression_Statements/syntax_t13: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Expression_Statements/syntax_t12: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Expression_Statements/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Expression_Statements/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Expression_Statements/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Expression_Statements/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/While/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/While/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Expression_Statements/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/While/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Expression_Statements/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/While/execution_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/While/condition_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/While/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/label_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/While/condition_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/While/condition_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/label_t08: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/label_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/While/execution_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/While/execution_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/label_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/label_t07: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/label_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/async_loops_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/execution_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/async_loops_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/execution_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/label_t09: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/label_t12: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/execution_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/label_t11: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/label_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/async_loops_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/label_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/execution_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/async_loops_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/async_loop_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/execution_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/execution_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/execution_t09: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/async_loops_t10: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/async_loop_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/async_loops_t08: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/execution_t07: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t24/none: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/label_t10: pass
-Done dartk-vm debug_x64 co19/Language/Libraries_and_Scripts/Imports/same_name_t24/01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/async_loops_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/async_loops_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/async_loops_t09: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/execution_t08: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Break/async_loops_t07: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/syntax_t15: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/last_statement_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/syntax_t16: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/labels_constants_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/labels_constants_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/execution_case_no_default_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/expressions_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/syntax_t12: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/syntax_t17: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/scope_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/expressions_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/equal_operator_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/syntax_t14: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/equal_operator_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/expressions_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/scope_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/execution_case_no_default_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/execution_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/execution_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/expressions_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/syntax_t11: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/last_statement_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/syntax_t18: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/execution_case_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/label_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/last_statement_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/label_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/execution_case_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Switch/syntax_t19: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/label_t08: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/label_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/label_t16: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/async_loops_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/control_transfer_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/label_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/label_t07: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/async_loops_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/async_loops_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/label_t09: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/control_transfer_t08: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/label_t12: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/control_transfer_t07: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/async_loops_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/label_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/label_t11: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/label_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/label_t17: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/control_transfer_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/control_transfer_t09: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/async_loops_t10: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/control_transfer_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/async_loops_t08: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/label_t15: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/label_t13: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/label_t14: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/control_transfer_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/async_loops_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/async_loops_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Labels/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Labels/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/control_transfer_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/async_loops_t09: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/async_loops_t07: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Labels/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/control_transfer_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Continue/label_t10: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Labels/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Labels/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Labels/scope_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Labels/scope_t07: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Labels/scope_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Labels/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Labels/scope_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Labels/scope_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Labels/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Labels/namespace_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Labels/scope_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Labels/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Do/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Do/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Do/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Do/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Labels/scope_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Do/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Do/execution_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Do/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Do/condition_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Do/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Do/condition_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Do/execution_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Do/condition_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Do/execution_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Do/execution_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Assert/production_mode_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Assert/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Assert/type_t09: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Assert/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Assert/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Assert/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Assert/execution_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Assert/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Assert/execution_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Assert/type_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Assert/execution_t11: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Assert/type_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Assert/type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Assert/type_t08: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Assert/execution_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Assert/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Assert/execution_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Assert/execution_t09: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Assert/type_t07: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Assert/execution_t08: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/type_t09: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/execution_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/wrong_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/syntax_t12: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/type_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/type_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/condition_evaluation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/condition_evaluation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/no_else_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/execution_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/wrong_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/execution_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/type_t08: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/type_t07: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/syntax_t11: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Rethrow/on_catch_clause_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/If/type_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Rethrow/execution_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Rethrow/control_transfer_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Rethrow/execution_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Rethrow/execution_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Rethrow/execution_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Rethrow/control_transfer_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Rethrow/control_transfer_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Rethrow/on_catch_clause_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Rethrow/control_transfer_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Blocks/execution_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Blocks/execution_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Rethrow/control_transfer_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Blocks/execution_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Blocks/execution_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Blocks/scope_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Blocks/execution_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Blocks/execution_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/generative_constructor_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/generator_function_t07: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/no_expression_function_t09: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/runtime_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/generator_function_t08: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/generator_function_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/execution_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/many_return_statements_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/no_expression_not_function_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/no_expression_function_t11: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/syntax_t15: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/no_expression_function_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/runtime_type_t07: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/generator_function_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/runtime_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/generative_constructor_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/syntax_t16: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/runtime_type_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/generator_function_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/generator_function_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/syntax_t13: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/syntax_t12: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/no_expression_function_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/generator_function_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/no_expression_not_function_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/type_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/no_expression_function_t07: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/many_return_statements_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/syntax_t17: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/execution_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/generative_constructor_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/syntax_t14: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/execution_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/generator_function_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/no_expression_function_t16: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/no_expression_function_t13: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/no_expression_function_t14: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/no_expression_function_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/many_return_statements_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/syntax_t11: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/many_return_statements_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/no_expression_function_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/no_expression_function_t12: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/runtime_type_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/no_expression_function_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/no_expression_function_t10: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/no_expression_function_t15: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/runtime_type_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/no_expression_function_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/no_expression_function_t08: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Return/runtime_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/syntax_t15: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/syntax_t16: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/For_in/execution_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/For_in/execution_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/For_in/execution_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/For_in/execution_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/For_in/execution_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/For_in/execution_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/For_Loop/execution_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/For_Loop/execution_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/For_Loop/execution_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/For_Loop/execution_t10: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/For_Loop/execution_t09: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/For_Loop/execution_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/For_Loop/execution_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/For_Loop/execution_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/For_Loop/execution_t07: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/syntax_t17: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/syntax_t14: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/syntax_t13: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/For_Loop/execution_t08: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/syntax_t12: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/syntax_t20: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/Asynchronous_For_in/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/syntax_t18: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/syntax_t11: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/Asynchronous_For_in/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/Asynchronous_For_in/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/Asynchronous_For_in/enclosing_loop_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/Asynchronous_For_in/execution_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/Asynchronous_For_in/execution_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/Asynchronous_For_in/execution_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/Asynchronous_For_in/execution_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Statements/For/syntax_t19: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/exception_handler_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/no_finally_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/matching_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/single_parameter_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/syntax_t21: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/exception_in_catch_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/dynamic_scope_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/syntax_t15: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/syntax_t16: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/exception_handler_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/syntax_t22: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/syntax_t13: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/syntax_t12: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/exception_in_catch_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/stack_trace_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/syntax_t17: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/syntax_t20: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/matching_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/exception_in_catch_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/malformed_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/execution_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/dynamic_catch_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/catch_scope_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/syntax_t14: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/exception_in_catch_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/syntax_t11: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/execution_finally_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/syntax_t18: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/malformed_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/matching_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/single_parameter_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/single_parameter_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/syntax_t19: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/malformed_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/exception_handler_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Try/malformed_type_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Function_Declaration/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Function_Declaration/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Function_Declaration/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Function_Declaration/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Function_Declaration/reference_before_declaration_t04: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Function_Declaration/reference_before_declaration_t03: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Function_Declaration/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Function_Declaration/scope_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Function_Declaration/reference_before_declaration_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Function_Declaration/parameters_scope_t02: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Function_Declaration/reference_before_declaration_t02: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t40: pass
-Done dartk-vm debug_x64 co19/Language/Functions/ctor_modifier_t15: pass
-Done dartk-vm debug_x64 co19/Language/Functions/ctor_modifier_t07: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Function_Declaration/parameters_scope_t01: pass
-Done dartk-vm debug_x64 co19/Language/Statements/Local_Function_Declaration/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Functions/ctor_modifier_t03: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t38: pass
-Done dartk-vm debug_x64 co19/Language/Functions/function_body_t01: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t21: pass
-Done dartk-vm debug_x64 co19/Language/Functions/function_body_short_syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Type_of_a_Function/function_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Type_of_a_Function/return_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Type_of_a_Function/return_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t15: pass
-Done dartk-vm debug_x64 co19/Language/Functions/ctor_modifier_t18: pass
-Done dartk-vm debug_x64 co19/Language/Functions/setter_modifier_t02: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Optional_Formals/name_t01: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Optional_Formals/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t22: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Optional_Formals/implicit_default_value_t01: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Optional_Formals/name_t02: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Optional_Formals/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Optional_Formals/syntax_t15: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Optional_Formals/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Optional_Formals/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Optional_Formals/syntax_t12: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Optional_Formals/syntax_t13: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Optional_Formals/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Optional_Formals/syntax_t16: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Optional_Formals/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Optional_Formals/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Optional_Formals/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Optional_Formals/default_value_t02: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Optional_Formals/syntax_t17: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Optional_Formals/default_value_t01: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Optional_Formals/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Optional_Formals/syntax_t14: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/syntax_t21: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/syntax_t15: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/syntax_t16: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/declare_as_constant_t05: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Required_Formals/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Required_Formals/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Required_Formals/syntax_t13: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Required_Formals/syntax_t12: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Required_Formals/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Required_Formals/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Required_Formals/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Required_Formals/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Required_Formals/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Required_Formals/syntax_t11: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Required_Formals/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/syntax_t13: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/Required_Formals/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/scope_t01: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/declare_as_constant_t03: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/syntax_t17: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/declare_as_constant_t02: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/syntax_t12: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/declare_as_constant_t01: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/syntax_t14: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/syntax_t20: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/declare_as_constant_t06: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/declare_as_constant_t04: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/scope_t02: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t16: pass
-Done dartk-vm debug_x64 co19/Language/Functions/setter_modifier_t06: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t39: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t33: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Formal_Parameters/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t13: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t12: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Function_Declarations/external_function_t02: pass
-Done dartk-vm debug_x64 co19/Language/Functions/ctor_modifier_t02: pass
-Done dartk-vm debug_x64 co19/Language/Functions/implicit_return_t02: pass
-Done dartk-vm debug_x64 co19/Language/Functions/External_Functions/not_connected_to_a_body_t01: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Function_Declarations/external_function_t01: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Function_Declarations/static_preface_t02: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Function_Declarations/static_preface_t01: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t28: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Functions/Function_Declarations/scope_t01: pass
-Done dartk-vm debug_x64 co19/Language/Functions/setter_modifier_t01: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t34: pass
-Done dartk-vm debug_x64 co19/Language/Functions/ctor_modifier_t05: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t25: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Functions/ctor_modifier_t12: pass
-Done dartk-vm debug_x64 co19/Language/Functions/ctor_modifier_t06: pass
-Done dartk-vm debug_x64 co19/Language/Functions/ctor_modifier_t09: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t44: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t17: pass
-Done dartk-vm debug_x64 co19/Language/Functions/ctor_modifier_t11: pass
-Done dartk-vm debug_x64 co19/Language/Functions/setter_modifier_t03: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t46: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t31: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t14: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t45: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t36: pass
-Done dartk-vm debug_x64 co19/Language/Functions/setter_modifier_t04: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t23: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t20: pass
-Done dartk-vm debug_x64 co19/Language/Functions/ctor_modifier_t13: pass
-Done dartk-vm debug_x64 co19/Language/Functions/generator_return_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Functions/ctor_modifier_t08: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t32: pass
-Done dartk-vm debug_x64 co19/Language/Functions/implicit_return_t01: pass
-Done dartk-vm debug_x64 co19/Language/Functions/ctor_modifier_t16: pass
-Done dartk-vm debug_x64 co19/Language/Functions/ctor_modifier_t01: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t35: pass
-Done dartk-vm debug_x64 co19/Language/Functions/ctor_modifier_t04: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t18: pass
-Done dartk-vm debug_x64 co19/Language/Functions/ctor_modifier_t10: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t29: pass
-Done dartk-vm debug_x64 co19/Language/Functions/async_return_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Functions/generator_return_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t11: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t41: pass
-Done dartk-vm debug_x64 co19/Language/Functions/ctor_modifier_t14: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t30: pass
-Done dartk-vm debug_x64 co19/Language/Functions/setter_modifier_t05: pass
-Done dartk-vm debug_x64 co19/Language/Functions/ctor_modifier_t17: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t42: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t24: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t19: pass
-Done dartk-vm debug_x64 co19/Language/Generics/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Functions/function_body_short_syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Generics/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t37: pass
-Done dartk-vm debug_x64 co19/Language/Generics/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Functions/syntax_t43: pass
-Done dartk-vm debug_x64 co19/Language/Generics/syntax_t15: pass
-Done dartk-vm debug_x64 co19/Language/Generics/malformed_t03: pass
-Done dartk-vm debug_x64 co19/Language/Generics/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Generics/syntax_t16: pass
-Done dartk-vm debug_x64 co19/Language/Generics/scope_t07: pass
-Done dartk-vm debug_x64 co19/Language/Generics/syntax_t13: pass
-Done dartk-vm debug_x64 co19/Language/Generics/no_extends_clause_t01: pass
-Done dartk-vm debug_x64 co19/Language/Generics/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Generics/syntax_t12: pass
-Done dartk-vm debug_x64 co19/Language/Generics/scope_t01: pass
-Done dartk-vm debug_x64 co19/Language/Generics/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Generics/scope_t06: pass
-Done dartk-vm debug_x64 co19/Language/Generics/syntax_t14: pass
-Done dartk-vm debug_x64 co19/Language/Generics/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Generics/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Generics/syntax_t17: pass
-Done dartk-vm debug_x64 co19/Language/Generics/scope_t03: pass
-Done dartk-vm debug_x64 co19/Language/Generics/syntax_t11: pass
-Done dartk-vm debug_x64 co19/Language/Generics/scope_t02: pass
-Done dartk-vm debug_x64 co19/Language/Generics/upper_bound_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Generics/malformed_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Generics/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Generics/malformed_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t25: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/variable_increment_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/variable_increment_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/variable_decrement_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/variable_negative_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/variable_negative_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/variable_decrement_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/method_invocation_equivalent_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/variable_negative_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t26: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t24: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/super_equivalent_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t21/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t21/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t02/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t22/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t02/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t22/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t01/02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t13/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t13/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t12/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t05/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t05/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t12/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t17/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t17/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t27/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t27/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t27/02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t27/03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t27/04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t27/05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t27/06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t27/09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t27/10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t27/07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t27/08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t27/12: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t27/11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t27/13: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t27/14: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t27/18: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t27/16: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t27/17: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t27/15: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t27/20: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t27/19: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t27/21: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t27/22: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t20/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t20/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/12: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/13: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/14: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/16: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/15: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/17: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/19: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/18: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/20: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/21: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/22: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/23: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/24: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/25: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/27: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/26: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/28: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/29: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/30: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/31: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/32: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t10/33: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t11/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t11/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t18/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t18/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t21: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t04/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t04/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t22: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t25: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t20: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t23: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/equivalent_super_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t18: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/equivalent_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t26: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t27: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t24: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t19: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t21: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t15: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t22: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t16: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t13: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t12: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t25: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t17: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t14: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t23: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t20: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/identifier_expression_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/getter_invocation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t18: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t24: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t19: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/super_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/subscript_expression_super_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/getter_invocation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/subscript_expression_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/parentheses_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t19/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Unary_Expressions/syntax_t19/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t15/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t15/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t16/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t16/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t01/02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t01/04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t01/03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t01/05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t01/06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t01/07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t01/08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t01/10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t01/09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t01/11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t01/12: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t01/13: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t01/14: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t01/15: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t01/16: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t01/17: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t17/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t17/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t14/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t14/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t10/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t10/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t11/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Multiplicative_Expressions/syntax_t11/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t08/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t08/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t06/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t06/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t09/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t09/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/12: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/13: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/14: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/15: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/17: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/16: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/18: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/19: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/20: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/21: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/22: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/23: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/25: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/24: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/26: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/27: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/28: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/29: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/30: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/31: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/32: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/33: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/34: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/36: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/35: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/37: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/38: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/39: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/40: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/41: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/42: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t26/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t01/43: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t26/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignable_Expressions/syntax_t26/02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Null/extend_or_implement_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Null/extend_or_implement_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Null/instance_of_class_null_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Null/instance_of_class_null_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Null/invoking_a_method_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Null/extend_or_implement_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Null/extend_or_implement_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Null/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Null/extend_or_implement_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Null/invoking_a_method_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Throw/no_catch_clause_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Null/instantiate_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Throw/throw_various_types_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Throw/evaluation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Throw/current_exception_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Throw/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Throw/evaluation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Throw/evaluation_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Throw/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Throw/no_catch_clause_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Throw/stack_trace_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Throw/no_catch_clause_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Throw/no_catch_clause_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Throw/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Throw/no_catch_clause_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Throw/no_catch_clause_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Throw/evaluation_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Booleans/extend_or_implement_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Booleans/extend_or_implement_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Booleans/extend_or_implement_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Booleans/extend_or_implement_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Throw/evaluation_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Booleans/static_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Booleans/runtime_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Booleans/boolean_literals_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Booleans/boolean_literals_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Booleans/boolean_literals_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Booleans/extend_or_implement_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Booleans/extend_or_implement_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Booleans/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Booleans/class_bool_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/If_null_Expressions/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Booleans/Boolean_Conversion/definition_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Booleans/Boolean_Conversion/conversion_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/If_null_Expressions/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Booleans/Boolean_Conversion/definition_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Booleans/Boolean_Conversion/definition_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/If_null_Expressions/static_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/If_null_Expressions/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/If_null_Expressions/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/If_null_Expressions/evaluation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/If_null_Expressions/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/If_null_Expressions/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/If_null_Expressions/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/If_null_Expressions/evaluation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/If_null_Expressions/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/If_null_Expressions/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/static_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/evaluation_super_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/syntax_t15: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/syntax_t16: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/syntax_t12: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/not_equal_equivalent_super_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/evaluation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/syntax_t11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/not_equal_equivalent_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/syntax_t20: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/syntax_t23: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/evaluation_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/evaluation_super_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/evaluation_super_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/syntax_t24: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/evaluation_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/syntax_t19: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/static_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/conditional_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/static_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/conditional_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/conditional_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/static_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/method_lookup_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/static_type_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/static_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/getter_value_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/proxy_annotation_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/proxy_annotation_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/proxy_annotation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/static_type_warning_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/static_member_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/static_type_warning_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/instance_of_type_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/class_object_member_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/method_lookup_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/getter_value_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/no_such_method_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/class_object_member_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/instance_of_type_getter_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/proxy_annotation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/expression_evaluation_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/instance_of_type_getter_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/class_object_member_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/static_type_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/class_object_member_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/expression_evaluation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/getter_value_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/class_object_member_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/instance_of_type_getter_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/method_lookup_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/proxy_annotation_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/instance_of_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/syntax_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/syntax_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/syntax_t01/02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/syntax_t01/03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/syntax_t01/04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/syntax_t01/05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/syntax_t01/06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/syntax_t01/07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Equality/syntax_t01/08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/static_type_warning_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/static_type_warning_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/static_type_warning_t04/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/static_type_warning_t04/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/expression_evaluation_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/expression_evaluation_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/proxy_annotation_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/getter_value_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/static_type_warning_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/proxy_annotation_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/static_type_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/static_type_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/instance_of_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/static_member_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/getter_value_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/class_object_member_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/class_object_member_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/static_type_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/expression_evaluation_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/method_lookup_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/expression_evaluation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/class_object_member_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/class_object_member_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/proxy_annotation_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/instance_of_type_getter_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/no_such_method_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/instance_of_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/getter_value_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Super_Closurization/method_closurization_named_params_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Super_Closurization/method_closurization_named_params_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Super_Closurization/method_closurization_positional_params_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Super_Closurization/method_closurization_positional_params_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/conditional_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/conditional_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/conditional_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/conditional_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Super_Getter_Access_and_Method_Closurization/static_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Super_Getter_Access_and_Method_Closurization/static_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Super_Getter_Access_and_Method_Closurization/static_type_warning_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Super_Getter_Access_and_Method_Closurization/method_extraction_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Super_Getter_Access_and_Method_Closurization/method_extraction_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Super_Getter_Access_and_Method_Closurization/getter_invocation_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Super_Getter_Access_and_Method_Closurization/method_extraction_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Super_Getter_Access_and_Method_Closurization/no_such_method_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Super_Getter_Access_and_Method_Closurization/getter_invocation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Super_Getter_Access_and_Method_Closurization/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Super_Getter_Access_and_Method_Closurization/getter_invocation_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Super_Getter_Access_and_Method_Closurization/no_such_method_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Super_Getter_Access_and_Method_Closurization/getter_invocation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Ordinary_Member_Closurization/method_closurization_named_params_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Ordinary_Member_Closurization/method_closurization_named_params_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Ordinary_Member_Closurization/method_closurization_positional_params_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Ordinary_Member_Closurization/method_closurization_positional_params_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/conditional_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/async_generator_invokation_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/async_cleanup_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/async_generator_invokation_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/sync_generator_invokation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Super_Getter_Access_and_Method_Closurization/no_instance_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Property_Extraction/Super_Getter_Access_and_Method_Closurization/no_instance_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Unqualified_Invocation/instance_context_invocation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Unqualified_Invocation/static_method_invocation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Unqualified_Invocation/instance_context_invocation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Unqualified_Invocation/method_invocation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Unqualified_Invocation/static_method_invocation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Unqualified_Invocation/function_expr_invocation_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Unqualified_Invocation/function_expr_invocation_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Unqualified_Invocation/function_expr_invocation_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Unqualified_Invocation/function_expr_invocation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Unqualified_Invocation/instance_method_invocation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Unqualified_Invocation/function_expr_invocation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Unqualified_Invocation/prefix_object_invocation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Unqualified_Invocation/instance_context_invocation_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Unqualified_Invocation/instance_method_invocation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Unqualified_Invocation/static_context_invocation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Unqualified_Invocation/static_context_invocation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Unqualified_Invocation/function_expr_invocation_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Unqualified_Invocation/static_context_invocation_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Unqualified_Invocation/instance_context_invocation_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Function_Expression_Invocation/static_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Function_Expression_Invocation/not_a_function_expression_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Function_Expression_Invocation/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Function_Expression_Invocation/property_extraction_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/same_name_arguments_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Function_Expression_Invocation/invocation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Function_Expression_Invocation/static_type_dynamic_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Function_Expression_Invocation/static_type_dynamic_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Function_Expression_Invocation/property_extraction_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/wrong_static_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/binding_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/optional_parameter_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/wrong_static_type_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/optional_parameter_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/wrong_static_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/optional_parameter_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/binding_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/binding_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/actual_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/binding_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/binding_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/optional_parameter_type_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/actual_type_not_a_subtype_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/wrong_static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Actual_Argument_List_Evaluation/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/sync_generator_iterable_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/terminate_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/async_cleanup_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/number_of_arguments_t05/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/sync_generator_iterable_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/number_of_arguments_t05/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/names_matching_t02/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/names_matching_t02/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/names_matching_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/names_matching_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/number_of_arguments_t08/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/number_of_arguments_t08/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/number_of_arguments_t07/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/number_of_arguments_t07/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/number_of_arguments_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/number_of_arguments_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/number_of_arguments_t02/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/number_of_arguments_t02/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/names_matching_t04/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/names_matching_t04/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/names_matching_t03/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/names_matching_t03/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/number_of_arguments_t03/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/number_of_arguments_t03/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/number_of_arguments_t04/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/number_of_arguments_t04/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Actual_Argument_List_Evaluation/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/number_of_arguments_t06/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/number_of_arguments_t06/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Actual_Argument_List_Evaluation/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Actual_Argument_List_Evaluation/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Actual_Argument_List_Evaluation/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/Actual_Argument_List_Evaluation/evaluation_order_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/sync_generator_iterable_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/async_generator_invokation_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/async_cleanup_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/async_cleanup_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/allowed_characters_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/sync_generator_iterable_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/sync_generator_iteration_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/async_generator_invokation_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/async_invokation_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/async_cleanup_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/sync_generator_iteration_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/sync_generator_iteration_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/async_generator_invokation_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/sync_generator_iteration_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/sync_generator_invokation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/terminate_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/async_invokation_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/sync_generator_iterable_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/async_invokation_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/async_cleanup_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/async_generator_invokation_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/sync_generator_iterable_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/async_invokation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/async_invokation_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/async_generator_invokation_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/async_cleanup_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/sync_generator_iteration_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/async_cleanup_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/async_generator_invokation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/async_invokation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/async_generator_invokation_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/sync_generator_iteration_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/terminate_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/async_generator_invokation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/sync_generator_iteration_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/static_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Invocation/sync_generator_iteration_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/runtime_map_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/static_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/constant_map_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/identical_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/constant_map_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/constant_map_key_value_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/order_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/constant_map_key_value_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/key_value_equals_operator_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/runtime_map_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/constant_map_key_value_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/mutate_a_constant_map_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/static_type_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/mutate_a_constant_map_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/mutate_a_constant_map_t01/03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/mutate_a_constant_map_t01/02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/mutate_a_constant_map_t01/05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/mutate_a_constant_map_t01/04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/constant_map_key_value_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/constant_map_key_value_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/constant_map_key_value_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/constant_map_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/identical_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/static_type_dynamic_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/key_value_equals_operator_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/runtime_map_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/runtime_map_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/equal_keys_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/value_of_a_constant_map_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/constant_map_key_value_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/static_type_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Maps/value_of_a_constant_map_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/static_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/type_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/static_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/evaluation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/type_not_bool_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t15: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/allowed_characters_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/evaluation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t13: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/type_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/type_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/type_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/type_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/evaluation_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/type_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/evaluation_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/constant_list_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/static_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/indices_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/static_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/identical_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/constant_list_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/value_of_a_constant_list_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t01/02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t01/14: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t01/03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t01/04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t01/05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t01/06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t01/07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t01/08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t01/09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t01/10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t12/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t01/11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t01/12: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t01/13: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t12/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t14/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t14/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t10/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/mutate_a_constant_list_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Conditional/syntax_t10/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/mutate_a_constant_list_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/mutate_a_constant_list_t01/02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/mutate_a_constant_list_t01/03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/mutate_a_constant_list_t01/04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/mutate_a_constant_list_t01/05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/mutate_a_constant_list_t01/06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/runtime_list_literal_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/static_type_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/runtime_list_literal_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/identical_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/static_type_dynamic_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/runtime_list_literal_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/static_type_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/value_of_a_constant_list_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lists/runtime_list_literal_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/evaluation_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/definition_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/definition_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/definition_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/evaluation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/definition_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/definition_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/evaluation_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/is_not_equivalent_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/evaluation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/is_not_equivalent_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/evaluation_t12: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/evaluation_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/definition_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/definition_t11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/definition_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/evaluation_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/is_not_equivalent_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/evaluation_t11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/evaluation_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/evaluation_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/definition_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/evaluation_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/definition_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/evaluation_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Test/definition_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/static_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/indexed_decrement_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/conditional_increment_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/static_type_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/static_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/expression_decrement_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/static_type_t11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/indexed_increment_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/property_increment_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/expression_increment_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/static_type_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t02/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/getter_called_once_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t02/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/variable_increment_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/getter_called_once_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/expression_decrement_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/static_type_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/getter_called_once_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/expression_increment_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/static_type_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/variable_decrement_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/variable_increment_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/conditional_decrement_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/indexed_increment_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/property_increment_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/static_type_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/static_type_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/conditional_increment_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/property_decrement_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/static_type_t12: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/variable_decrement_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/conditional_decrement_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/indexed_decrement_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/static_type_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/getter_called_once_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/property_decrement_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Method_Lookup/superclass_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Method_Lookup/method_lookup_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Method_Lookup/method_lookup_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Method_Lookup/superclass_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Method_Lookup/lookup_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Method_Lookup/instance_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Method_Lookup/method_lookup_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Method_Lookup/superclass_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Method_Lookup/superclass_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Method_Lookup/superclass_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Method_Lookup/superclass_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Method_Lookup/superclass_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Method_Lookup/superclass_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Method_Lookup/instance_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Method_Lookup/method_lookup_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Method_Lookup/instance_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Getter_and_Setter_Lookup/definition_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Method_Lookup/superclass_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Getter_and_Setter_Lookup/definition_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Getter_and_Setter_Lookup/definition_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Getter_and_Setter_Lookup/finding_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Getter_and_Setter_Lookup/definition_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Getter_and_Setter_Lookup/definition_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Getter_and_Setter_Lookup/definition_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Getter_and_Setter_Lookup/definition_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Getter_and_Setter_Lookup/definition_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Getter_and_Setter_Lookup/finding_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Getter_and_Setter_Lookup/definition_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Lookup/Getter_and_Setter_Lookup/definition_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/12: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/13: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/14: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/15: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/16: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/18: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/17: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/19: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/20: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/21: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/22: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/23: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/24: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/25: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/26: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/27: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/30: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/29: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/31: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/32: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/33: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/34: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/35: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/36: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/38: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/37: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/39: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t03/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t01/40: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t03/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t05/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Postfix_Expressions/syntax_t05/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/static_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/evaluation_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/function_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/conditional_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/method_lookup_failed_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/conditional_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/method_lookup_failed_t16: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/accessible_instance_member_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/accessible_instance_member_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/static_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/evaluation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/function_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/conditional_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/method_lookup_failed_t15: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/conditional_static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/method_lookup_failed_t13: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/conditional_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/evaluation_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/conditional_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/evaluation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/conditional_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/method_lookup_failed_t20: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/method_lookup_failed_t14: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/method_lookup_failed_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/conditional_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/method_lookup_failed_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/method_lookup_failed_t11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/accessible_instance_member_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/accessible_instance_member_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/method_lookup_failed_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/accessible_instance_member_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/method_lookup_failed_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/evaluation_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/accessible_instance_member_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/method_lookup_failed_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/method_lookup_failed_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/accessible_instance_member_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/evaluation_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/object_method_invocation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/accessible_instance_member_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/method_lookup_failed_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/method_lookup_failed_t19: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/evaluation_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/method_lookup_failed_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/object_method_invocation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/method_lookup_failed_t18: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/evaluation_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/static_type_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/method_lookup_failed_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/method_lookup_failed_t12: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/conditional_warning_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/conditional_warning_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Cascaded_Invocations/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Cascaded_Invocations/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Cascaded_Invocations/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/accessible_instance_member_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/method_lookup_failed_t17: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Ordinary_Invocation/conditional_warning_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Cascaded_Invocations/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Cascaded_Invocations/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Cascaded_Invocations/syntax_t15: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Cascaded_Invocations/cascaded_expression_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Cascaded_Invocations/syntax_t13: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Cascaded_Invocations/syntax_t12: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Cascaded_Invocations/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Cascaded_Invocations/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Cascaded_Invocations/syntax_t17: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Cascaded_Invocations/syntax_t14: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Cascaded_Invocations/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Cascaded_Invocations/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Cascaded_Invocations/syntax_t18: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Cascaded_Invocations/syntax_t11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Cascaded_Invocations/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Cascaded_Invocations/cascaded_expression_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/invocation_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Cascaded_Invocations/syntax_t20: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/invocation_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/invocation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Cascaded_Invocations/syntax_t19: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/accessible_instance_member_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/evaluation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/invocation_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/wrong_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/evaluation_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/evaluation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/getter_lookup_failed_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/invocation_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/accessible_instance_member_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/getter_lookup_failed_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/invocation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/static_type_dynamic_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/static_type_dynamic_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/accessible_instance_member_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/method_lookup_failed_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/accessible_instance_member_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/invocation_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/evaluation_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/method_lookup_failed_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/getter_lookup_failed_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/method_lookup_failed_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/method_lookup_failed_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/malformed_or_malbounded_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/evaluation_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/parameterized_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/accessibility_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/accessible_instance_member_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/malformed_or_malbounded_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/deferred_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Method_Invocation/Super_Invocation/getter_lookup_failed_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/accessibility_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/allowed_characters_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/accessibility_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/parameterized_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/constant_constructor_name_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/arguments_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/constant_constructor_name_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/arguments_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/accessibility_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/canonicalized_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/constant_constructor_same_name_as_class_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/constant_constructor_name_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/deferred_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/accessibility_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/accessibility_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/accessibility_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/canonicalized_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/constant_constructor_same_name_as_class_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/arguments_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/canonicalized_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/canonicalized_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/constant_constructor_name_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/abstract_class_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/abstract_class_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/exception_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/malformed_or_malbounded_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/canonicalized_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/malformed_or_malbounded_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/malformed_or_malbounded_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/evaluation_t20: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/execution_t14: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/generic_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/redirecting_factory_constructor_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/evaluation_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/generative_constructor_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/execution_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/argument_static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/evaluation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/evaluation_t15: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/type_argument_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/generic_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/constructor_same_name_as_class_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/evaluation_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/execution_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/evaluation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/generic_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/body_execution_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/execution_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/abstract_class_t03/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/abstract_class_t03/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/abstract_class_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/generative_constructor_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/Const/abstract_class_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/evaluation_t12: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/evaluation_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/type_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/redirecting_factory_constructor_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/evaluation_t16: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/execution_t11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/execution_t12: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/execution_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/body_execution_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/argument_static_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/execution_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/evaluation_t11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/body_execution_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/evaluation_t17: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/execution_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/execution_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/generative_constructor_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/execution_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/evaluation_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/type_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/evaluation_t18: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/evaluation_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/evaluation_t19: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/evaluation_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/execution_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/constructor_same_name_as_class_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/execution_t13: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/evaluation_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/type_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/named_constructor_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/evaluation_t14: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/evaluation_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/body_execution_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/execution_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/named_constructor_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/evaluation_t13: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t15: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/allowed_characters_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/equivalent_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/equivalent_super_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/abstract_class_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/abstract_class_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/abstract_class_t02/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Instance_Creation/New/abstract_class_t02/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t09/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t09/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t01/03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t01/02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t01/06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t01/04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t01/05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t01/07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t01/09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t01/08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t01/10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t01/11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t01/12: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t01/13: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t01/14: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t01/15: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t01/17: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t01/16: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t01/19: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t01/18: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t01/20: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t13/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t13/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t12/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t12/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t14/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t14/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t10/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t10/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t11/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Shift/syntax_t11/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t15: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t16: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t13: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t12: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t17: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t14: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/equivalent_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t24: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/equivalent_super_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Cast/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Cast/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Cast/static_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Cast/evaluation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Cast/evaluation_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Cast/evaluation_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Cast/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Cast/evaluation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Cast/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Cast/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Cast/evaluation_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Cast/evaluation_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Cast/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Cast/evaluation_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Cast/evaluation_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Cast/evaluation_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Cast/evaluation_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Type_Cast/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/method_invocation_super_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/method_invocation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/allowed_characters_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/method_invocation_super_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/method_invocation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/method_invocation_super_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t21/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t21/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t22/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t22/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t01/03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t01/02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t01/04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t01/05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t01/06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t01/07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t01/08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t01/10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t01/09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t01/12: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t01/11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t01/13: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t01/14: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t01/15: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t01/16: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t01/17: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t01/19: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t01/18: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t01/20: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t01/21: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t01/22: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t01/23: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t01/24: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t01/25: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t01/26: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t01/27: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t20/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t20/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t23/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t23/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t18/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t18/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t19/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Relational_Expressions/syntax_t19/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t15/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t15/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t16/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t16/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t01/02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t01/03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t01/04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t01/05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t01/24: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t01/06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t01/07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t01/08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t01/09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t01/10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t01/11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t01/12: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t01/13: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t01/15: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t01/16: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t01/14: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t01/17: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t01/19: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t01/18: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t01/20: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t01/21: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t01/23: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t01/22: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t13/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t13/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t12/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t12/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/method_invocation_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/This/definition_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t14: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/This/placement_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/This/definition_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/This/definition_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/This/placement_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/This/static_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/This/placement_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/This/definition_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/This/definition_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/This/placement_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/This/placement_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/This/placement_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/This/placement_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/This/definition_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/This/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/This/placement_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_form_3_asyncs_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_dynamic_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_form_2_async_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_form_3_async_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_form_3_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_form_2_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_form_2_async_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_form_1_async_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_form_3_async_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_form_3_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_dynamic_async_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_form_3_async_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_dynamic_syncs_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_dynamic_asyncs_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_form_3_asyncs_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_form_1_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_form_1_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_dynamic_asyncs_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_dynamic_async_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_form_3_syncs_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_form_3_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_form_3_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_dynamic_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_form_1_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_form_1_async_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_dynamic_asyncs_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_dynamic_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_dynamic_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_dynamic_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_form_1_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_dynamic_async_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_form_2_async_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_form_2_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_form_2_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t17/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Bitwise_Expressions/syntax_t17/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_form_2_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/class_function_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_form_1_async_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_form_3_syncs_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_form_3_syncs_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_dynamic_syncs_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_form_3_asyncs_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Function_Expressions/static_type_dynamic_syncs_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t15: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t16: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/static_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/allowed_characters_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/equivalent_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/equivalent_super_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t17: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Top_level_Getter_Invocation/evaluation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Top_level_Getter_Invocation/evaluation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Top_level_Getter_Invocation/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Top_level_Getter_Invocation/evaluation_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/parentheses_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/static_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t20: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t23: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t19: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t28: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t30: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/syntax_t16: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/allowed_characters_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t32: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/evaluation_form_and_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/evaluation_form_or_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t29: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t13: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t07/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t07/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t08/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t08/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t01/02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t01/04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t01/03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t01/06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t01/05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t01/07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t01/08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t01/09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t01/10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t01/11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t01/12: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t01/13: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t01/14: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t01/15: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t13/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t13/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t12/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t12/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t14/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t14/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t11/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/syntax_t15/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Additive_Expressions/syntax_t11/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/syntax_t15/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/syntax_t13/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/syntax_t12/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/syntax_t13/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/syntax_t12/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/evaluation_form_or_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t16: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t26: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t17: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t25: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t21: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/evaluation_form_and_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t31: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t15: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t14: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t22: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t18: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t24: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t12: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t24: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/u_four_hex_digits_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/type_t27: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/static_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/escape_unicode_scalar_value_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t16: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/escape_tab_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/extend_or_implement_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t14: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t40: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/u_four_hex_digits_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/runtime_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t32: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/static_type_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/escape_hex_digit_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t18: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t18: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/static_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t45: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t25: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t31: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t19: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t26: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/u_four_hex_digits_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t12: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t47: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/escape_vertical_tab_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/implement_class_string_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t22: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t28: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t19: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/escape_hexadecimal_digits_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/syntax_t14/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/syntax_t14/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/syntax_t10/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/syntax_t10/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/syntax_t11/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Logical_Boolean_Expressions/syntax_t11/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t17: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t15: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t49: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/escape_hexadecimal_digits_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/adjacent_strings_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t21: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/static_type_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t27: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/extend_or_implement_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/String_Interpolation/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t43: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/adjacent_strings_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/escape_backspace_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/raw_string_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/String_Interpolation/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/String_Interpolation/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/String_Interpolation/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/String_Interpolation/syntax_t15: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/String_Interpolation/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/String_Interpolation/syntax_t16: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/String_Interpolation/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/String_Interpolation/double_quote_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/String_Interpolation/single_quote_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/String_Interpolation/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/String_Interpolation/syntax_t13: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/String_Interpolation/syntax_t12: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/String_Interpolation/no_quote_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/String_Interpolation/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/String_Interpolation/syntax_t14: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/String_Interpolation/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/String_Interpolation/syntax_t17: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/String_Interpolation/single_quote_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/String_Interpolation/double_quote_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/String_Interpolation/syntax_t11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/String_Interpolation/double_quote_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/String_Interpolation/no_quote_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/String_Interpolation/double_quote_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t13: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/String_Interpolation/single_quote_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/String_Interpolation/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/escape_newline_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/ignore_whitespaces_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/adjacent_strings_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t34: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t38: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t36: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/extend_or_implement_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/adjacent_strings_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t24: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t29: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/u_four_hex_digits_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/static_type_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t33: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t35: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t22: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t14: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/escape_characters_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t21: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t29: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t27: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t23: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/u_four_hex_digits_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t41: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/escape_unicode_scalar_value_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t39: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/escape_carriage_return_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t13: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t28: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t42: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t25: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t15: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t12: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/escape_unicode_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t17: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t20: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t30: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/escape_hexadecimal_digits_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t34: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t16: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/raw_string_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/static_type_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/extend_or_implement_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/static_type_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t31: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/escape_hexadecimal_digits_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/extend_or_implement_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t44: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t20: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t26: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t32: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t30: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t33: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/escape_form_feed_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t23: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/static_type_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/escape_unicode_scalar_value_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/string_literal_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/adjacent_strings_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/static_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Strings/multi_line_t37: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/static_assignment_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/no_such_method_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/variable_assignment_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/top_level_assignment_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/indexed_expression_super_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/super_assignment_failed_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/expression_assignment_failed_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/static_warning_t03/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/super_assignment_dynamic_error_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/static_warning_t03/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/super_assignment_failed_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/expression_assignment_failed_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/expression_assignment_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/static_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/top_level_assignment_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/no_such_method_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/prefix_object_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/variable_assignment_static_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/null_aware_assignment_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/top_level_assignment_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/indexed_expression_static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/expression_assignment_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/null_aware_assignment_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/super_assignment_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/no_such_method_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/indexed_expression_super_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/expression_assignment_dynamic_error_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/no_such_method_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/super_assignment_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/no_such_method_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/prefix_object_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/null_aware_assignment_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/expression_assignment_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/static_assignment_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/expression_assignment_static_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/no_such_method_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/expression_assignment_dynamic_error_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/expression_assignment_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/variable_assignment_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/indexed_expression_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/super_assignment_static_warning_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/static_type_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/variable_assignment_static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/expression_assignment_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/indexed_expression_super_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/expression_assignment_failed_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/indexed_expression_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/expression_assignment_value_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/expression_assignment_static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/no_such_method_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/expression_assignment_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/no_such_method_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/super_assignment_static_warning_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/super_assignment_static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/variable_assignment_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/top_level_assignment_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/expression_assignment_failed_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/null_aware_assignment_static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/top_level_assignment_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/expression_assignment_failed_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/setter_assignment_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/variable_assignment_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_compound_assignment_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/setter_assignment_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/variable_assignment_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/static_warning_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/static_warning_t02/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/static_warning_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/static_warning_t02/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/variable_assignment_static_type_t04/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/variable_assignment_static_type_t04/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/indexed_expression_static_type_t02/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/indexed_expression_static_type_t02/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/super_assignment_static_warning_t04/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/static_warning_t04/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/super_assignment_static_warning_t04/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/static_warning_t04/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/null_aware_assignment_static_warning_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/null_aware_assignment_static_warning_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/expression_assignment_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_compound_assignment_static_t11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/indexed_expression_assignment_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/setter_assignment_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_compound_assignment_static_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_compound_assignment_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_compound_assignment_static_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/expression_assignment_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_compound_assignment_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_expression_assignment_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_compound_assignment_t11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/setter_assignment_t11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_compound_assignment_static_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_compound_assignment_static_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/setter_assignment_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_compound_assignment_static_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/expression_assignment_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_static_assignment_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/variable_assignment_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/variable_assignment_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/setter_assignment_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/expression_assignment_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/indexed_expression_assignment_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_expression_assignment_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/variable_assignment_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_compound_assignment_static_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/expression_assignment_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_conditional_static_assignment_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_indexed_assignment_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/variable_assignment_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_compound_assignment_static_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_super_assignment_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_super_assignment_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_compound_assignment_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/expression_assignment_t11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_compound_assignment_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/indexed_expression_assignment_t11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/expression_assignment_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/setter_assignment_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/variable_assignment_t11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_compound_assignment_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/expression_assignment_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_variable_assignment_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_compound_assignment_static_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/setter_assignment_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/variable_assignment_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_static_assignment_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_static_assignment_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/variable_assignment_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_conditional_expression_assignment_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/setter_assignment_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_conditional_static_assignment_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_variable_assignment_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/setter_assignment_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/indexed_expression_assignment_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/variable_assignment_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_indexed_assignment_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/indexed_expression_assignment_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_compound_assignment_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_static_warning_super_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_static_warning_super_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_static_warning_variable_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_static_warning_variable_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_static_warning_static_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_static_warning_static_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_static_warning_indexed_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_static_warning_indexed_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_conditional_static_assignment_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/expression_assignment_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_compound_assignment_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/indexed_expression_assignment_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/variable_assignment_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_variable_assignment_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_indexed_assignment_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/indexed_expression_assignment_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_compound_assignment_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_Conditional_expression_assignment_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_compound_assignment_static_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/indexed_expression_assignment_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/setter_assignment_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/indexed_expression_assignment_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/indexed_expression_assignment_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/expression_assignment_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_compound_assignment_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/expression_assignment_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/indexed_expression_assignment_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_expression_assignment_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_compound_assignment_static_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/this_assignment_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/variable_assignment_dynamic_error_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/indexed_expression_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/variable_assignment_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/super_assignment_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/super_assignment_value_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/expression_assignment_static_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/expression_assignment_static_warning_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/static_type_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/expression_assignment_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/super_assignment_failed_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/indexed_expression_super_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/expression_assignment_static_warning_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/expression_assignment_failed_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/super_assignment_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/super_assignment_static_warning_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/expression_assignment_static_warning_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/expression_assignment_static_type_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/super_assignment_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/super_assignment_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/variable_assignment_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/this_assignment_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/top_level_assignment_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/expression_assignment_value_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/static_type_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/static_assignment_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/super_assignment_failed_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/indexed_expression_super_static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/super_assignment_value_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/top_level_assignment_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/no_such_method_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/super_assignment_failed_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/variable_assignment_static_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/expression_assignment_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/indexed_expression_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/static_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/execution_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_static_warning_expression_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_static_warning_expression_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_static_warning_compound_t01/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/Compound_Assignment/null_aware_static_warning_compound_t01/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/indexed_expression_super_static_type_t02/none: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Assignment/indexed_expression_super_static_type_t02/01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/static_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/value_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/value_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/value_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/execution_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/no_static_warning_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/execution_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/evaluation_throws_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/value_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/evaluation_throws_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/evaluation_throws_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/evaluation_throws_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/execution_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/evaluation_throws_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/execution_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/execution_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/evaluation_throws_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/extend_or_implement_int_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/implement_num_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/static_type_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Await_Expressions/evaluation_throws_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/syntax_t21: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/syntax_t22: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/syntax_t16: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/syntax_t33: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/static_type_of_int_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/extend_or_implement_int_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/implement_num_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/extend_or_implement_int_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/implement_num_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/extend_or_implement_double_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/syntax_t25: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/static_type_of_int_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/extend_or_implement_double_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/syntax_t17: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/extend_or_implement_int_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/extend_or_implement_double_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/syntax_t31: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/syntax_t27: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/extend_or_implement_double_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/syntax_t23: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/syntax_t32: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/extend_or_implement_int_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/implement_num_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/implement_num_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/static_type_of_double_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/implement_num_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/static_type_of_double_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/syntax_t18: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/syntax_t29: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/syntax_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/extend_or_implement_double_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/extend_or_implement_double_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/syntax_t30: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/extend_or_implement_int_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/syntax_t26: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/syntax_t24: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Symbols/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Numbers/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Symbols/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Symbols/syntax_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Object_Identity/integer_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Object_Identity/bool_or_null_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Object_Identity/string_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Object_Identity/constant_lists_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Object_Identity/object_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Object_Identity/double_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Object_Identity/constant_objects_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Object_Identity/integer_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Object_Identity/constant_lists_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Object_Identity/double_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Object_Identity/bool_or_null_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Object_Identity/double_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/literal_string_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/equals_expression_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Object_Identity/constant_maps_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Object_Identity/constant_maps_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/string_length_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Object_Identity/object_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/literal_symbol_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/identical_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/bitwise_operators_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/exception_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/no_other_constant_expressions_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/no_other_constant_expressions_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/constant_list_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/constant_list_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/no_other_constant_expressions_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/no_other_constant_expressions_t13: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/logical_expression_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/exception_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/math_operators_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/bitwise_operators_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/no_other_constant_expressions_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/constant_map_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/static_constant_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/static_constant_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/identifier_denotes_a_constant_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/parenthesized_expression_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/no_other_constant_expressions_t15: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/no_other_constant_expressions_t21: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/top_level_function_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/identifier_denotes_a_constant_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/literal_string_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/no_other_constant_expressions_t12: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/static_constant_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/top_level_function_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/bitwise_operators_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/top_level_function_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/depending_on_itself_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/literal_string_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/literal_boolean_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/no_other_constant_expressions_t14: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/static_constant_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/identical_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/literal_string_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/no_other_constant_expressions_t31: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/string_length_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/constant_constructor_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/no_other_constant_expressions_t11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/static_constant_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/constant_constructor_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/null_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/no_other_constant_expressions_t18: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/identifier_denotes_a_constant_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/top_level_function_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/logical_expression_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/equals_expression_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/exception_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/logical_expression_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/ternary_operator_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/static_method_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/bitwise_operators_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/math_operators_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/math_operators_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/exception_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/math_operators_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/static_constant_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/identical_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/depending_on_itself_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/identifier_denotes_a_constant_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/identifier_denotes_a_constant_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/bitwise_operators_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/static_method_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/ternary_operator_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/static_constant_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/literal_string_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/top_level_function_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/no_other_constant_expressions_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/math_operators_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/math_operators_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/constant_map_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/static_method_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/bitwise_operators_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/depending_on_itself_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/no_other_constant_expressions_t17: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/no_other_constant_expressions_t20: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/string_length_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/exception_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/logical_expression_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/identifier_denotes_a_constant_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t16: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/equals_expression_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/literal_number_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/constant_constructor_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/math_operators_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Constants/identifier_denotes_a_constant_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/static_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t48: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/syntax_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t32: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t60: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t50: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t25: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t13: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t35: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t58: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/syntax_built_in_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/async_and_generator_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t20: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/evaluation_function_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t14: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t30: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t59: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t28: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/async_and_generator_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/static_type_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/syntax_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t41: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/static_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/syntax_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/async_and_generator_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/evaluation_library_or_getter_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/evaluation_property_extraction_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t43: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/syntax_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/syntax_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/evaluation_property_extraction_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t27: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/evaluation_function_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t46: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t20: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t61: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/async_and_generator_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t26: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t22: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t57: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/evaluation_static_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/evaluation_alias_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/undeclared_identifier_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t17: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t47: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/undeclared_identifier_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t21: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t54: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/undeclared_identifier_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/async_and_generator_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t44: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/evaluation_variable_or_parameter_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/undeclared_identifier_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/evaluation_undeclared_identifier_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t13: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t31: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t29: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t29: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/syntax_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t15: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t37: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t65: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/undeclared_identifier_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t39: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t52: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t64: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/evaluation_library_or_getter_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t27: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/evaluation_alias_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t10: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/evaluation_type_parameter_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t66: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t56: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/syntax_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/evaluation_static_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t28: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/evaluation_library_or_getter_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t19: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/async_and_generator_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/evaluation_variable_or_parameter_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t55: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/static_type_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t14: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t62: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t53: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t33: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t68: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t30: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/static_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/syntax_built_in_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/evaluation_constant_variable_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/evaluation_library_or_getter_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t34: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t18: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/evaluation_type_parameter_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t51: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t49: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/evaluation_function_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t25: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/qualified_identifiers_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t12: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t12: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/evaluation_variable_or_parameter_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/undeclared_identifier_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t24: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t15: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/evaluation_prefix_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t23: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t45: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/async_and_generator_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t08: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t67: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t26: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/evaluation_library_or_getter_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/static_type_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t17: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t16: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t02: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t38: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/async_and_generator_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t03: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/async_and_generator_t07: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t42: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t36: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t31: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t63: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t21: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t09: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/undeclared_identifier_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/undeclared_identifier_t05: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/static_type_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/evaluation_property_extraction_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t24: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t19: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_not_dynamic_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t32: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t18: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t40: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t23: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/syntax_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/evaluation_variable_or_parameter_t04: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/async_and_generator_t06: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/built_in_identifier_t22: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/whitespace_t11: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Identifier_Reference/evaluation_property_extraction_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/whitespace_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/whitespace_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/unicode_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/unicode_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/unicode_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/whitespace_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/unicode_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/whitespace_t01: pass
-Done dartk-vm debug_x64 co19/Language/Expressions/Spawning_an_Isolate/new_isolate_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/unicode_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/whitespace_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/whitespace_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/unicode_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/whitespace_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/unicode_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/whitespace_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/unicode_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/whitespace_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/unicode_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/for_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/final_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/unicode_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/unicode_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/case_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/break_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/finally_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/assert_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/finally_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/is_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/break_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/default_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/super_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/return_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/final_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/enum_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/super_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/final_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/is_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/false_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/var_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/throw_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/new_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/while_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/catch_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/var_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/this_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/true_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/extends_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/const_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/if_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/if_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/switch_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/final_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/if_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/final_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/this_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/void_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/true_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/new_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/if_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/continue_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/const_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/case_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/while_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/default_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/return_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/switch_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/while_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/true_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/catch_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/assert_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/true_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/is_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/else_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/switch_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/finally_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/continue_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/false_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/var_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/catch_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/class_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/else_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/false_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/class_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/for_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/null_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/var_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/new_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/switch_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/is_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/class_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/new_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/try_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/return_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/with_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/return_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/for_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/break_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/try_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/new_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/finally_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/extends_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/var_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/assert_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/finally_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/with_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/while_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/enum_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/case_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/final_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/var_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/extends_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/extends_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/try_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/with_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/const_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/final_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/rethrow_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/default_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/case_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/final_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/break_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/super_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/switch_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/new_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/var_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/rethrow_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/this_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/throw_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/else_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/default_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/try_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/default_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/assert_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/case_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/super_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/if_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/null_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/null_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/catch_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/while_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/extends_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/while_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/new_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/break_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/case_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/const_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/true_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/do_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/with_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/try_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/false_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/assert_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/switch_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/switch_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/const_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/enum_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/new_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/true_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/var_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/is_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/else_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/throw_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/is_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/rethrow_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/is_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/in_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/do_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/new_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/continue_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/this_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/for_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/class_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/while_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/default_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/switch_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/in_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/const_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/if_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/null_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/this_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/break_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/class_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/enum_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/finally_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/throw_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/is_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/rethrow_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/else_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/null_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/continue_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/void_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/rethrow_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/do_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/finally_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/false_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/rethrow_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/return_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/final_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/true_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/for_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/catch_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/catch_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/do_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/case_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/true_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/do_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/this_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/for_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/var_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/with_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/while_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/do_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/this_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/void_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/const_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/for_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/in_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/default_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/finally_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/for_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/return_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/in_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/is_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/rethrow_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/continue_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/false_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/false_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/throw_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/assert_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/do_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/catch_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/while_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/continue_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/try_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/break_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/if_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/do_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/rethrow_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/break_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/with_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/const_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/class_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/finally_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/extends_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/case_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/class_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/case_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/return_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/false_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/continue_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/with_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/in_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/return_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/const_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/while_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/true_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/if_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/case_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/assert_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/default_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/whitespace_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/if_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/if_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/in_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/default_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/default_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/null_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/with_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/in_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/finally_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/void_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/return_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/assert_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/false_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/do_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/throw_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/catch_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/whitespace_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/throw_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/in_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/is_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/enum_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/class_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/super_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/null_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/for_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/class_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/with_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/enum_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/for_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/enum_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/continue_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/this_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/switch_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/void_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/throw_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/enum_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/try_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/super_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/return_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/extends_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/assert_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/extends_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/extends_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/new_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/return_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/break_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/catch_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/super_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/false_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/super_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/extends_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/with_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/null_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/case_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/for_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/rethrow_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/continue_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/catch_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/final_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/false_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/default_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/extends_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/else_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/try_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/throw_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/case_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/whitespace_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/is_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/with_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/switch_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/null_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/const_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/finally_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/const_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/void_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/assert_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/rethrow_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/else_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/is_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/in_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/enum_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/throw_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/try_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/default_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/while_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/for_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/throw_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/try_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/in_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/extends_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/if_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/class_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/null_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/var_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/super_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/do_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/new_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/true_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/new_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/var_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/rethrow_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/void_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/enum_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/with_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/whitespace_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/do_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/continue_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/super_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/void_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/if_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/switch_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/void_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/in_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/class_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/in_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/else_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/while_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/null_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/enum_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/class_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/else_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/void_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/break_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/false_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/true_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/void_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/final_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/continue_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/else_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/return_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/super_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/try_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/else_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/continue_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/var_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/this_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/enum_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/true_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/switch_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/final_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/void_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/break_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/rethrow_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/do_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/this_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/this_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/this_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/assert_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/const_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/throw_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/super_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/catch_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/break_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/null_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/finally_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/catch_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/try_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/assert_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Reserved_Words/else_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/single_line_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/documentation_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/documentation_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/documentation_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/multi_line_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/multi_line_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/documentation_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/multi_line_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/documentation_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/documentation_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/multi_line_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/multi_line_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/multi_line_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/single_line_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/documentation_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/single_line_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/single_line_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/documentation_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/single_line_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/single_line_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/multi_line_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/single_line_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/multi_line_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/multi_line_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/documentation_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/single_line_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/documentation_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/single_line_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/documentation_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/documentation_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/multi_line_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/single_line_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/whitespace_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/multi_line_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/single_line_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Lexical_Rules/Comments/single_line_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_12_Shift_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_02_cascade_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_01_assignment_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_16_unary_postfix_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_08_relational_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_14_multiplicative_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_10_bitwise_xor_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_15_unary_prefix_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_08_relational_t14: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_08_relational_t16: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_14_multiplicative_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_08_relational_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_01_assignment_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_15_unary_prefix_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_13_additive_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_08_relational_t18: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_01_assignment_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_01_assignment_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_11_bitwise_and_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_08_relational_t13: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_01_assignment_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_01_assignment_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_14_multiplicative_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_05_logical_or_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_08_relational_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_14_multiplicative_t12: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_09_bitwise_or_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_07_equality_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_06_logical_and_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_14_multiplicative_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_12_Shift_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_01_assignment_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_13_additive_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_08_relational_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_16_unary_postfix_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_14_multiplicative_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_09_bitwise_or_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_13_additive_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_06_logical_and_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_07_equality_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_13_additive_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_08_relational_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_15_unary_prefix_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_01_assignment_t13: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_15_unary_prefix_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_04_if_null_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_08_relational_t15: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_14_multiplicative_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_14_multiplicative_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_08_relational_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_03_conditional_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_15_unary_prefix_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_08_relational_t17: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_16_unary_postfix_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_16_unary_postfix_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_08_relational_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_07_equality_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_14_multiplicative_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_08_relational_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_14_multiplicative_t10: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_05_logical_or_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_04_if_null_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_01_assignment_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_11_bitwise_and_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_07_equality_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_14_multiplicative_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_13_additive_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_08_relational_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_16_unary_postfix_t04: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_15_unary_prefix_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_15_unary_prefix_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_08_relational_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_10_bitwise_xor_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_16_unary_postfix_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_15_unary_prefix_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_01_assignment_t11: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_15_unary_prefix_t06: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_15_unary_prefix_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_07_equality_t05: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_14_multiplicative_t03: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_08_relational_t12: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/superinterface_of_itself_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_13_additive_t01: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_16_unary_postfix_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_08_relational_t07: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_01_assignment_t09: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_01_assignment_t08: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_12_Shift_t02: pass
-Done dartk-vm debug_x64 co19/Language/Reference/Operator_Precedence/precedence_01_assignment_t05: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/definition_t03: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/superinterface_of_itself_t03: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/inheritance_t01: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/same_name_getters_t02: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/same_name_getters_type_t05: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/not_overriden_members_t02: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/inheritance_t05: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/same_name_getters_type_t06: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/inheritance_t02: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/same_name_method_and_getter_t01: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/same_name_getters_t01: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/inheritance_t07: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/same_name_getters_type_t08: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/inheritance_t03: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/same_name_members_t02: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/same_name_getters_type_t01: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/same_name_getters_type_t09: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/same_name_getters_type_t04: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/not_overriden_members_t01: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/inheritance_t06: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/same_name_members_t01: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/same_name_method_and_getter_t02: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/same_name_getters_type_t07: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/inheritance_t08: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/same_name_getters_type_t02: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/inheritance_t04: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/superinterface_of_itself_t02: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/definition_t05: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/definition_t04: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/same_name_getters_type_t03: pass
-Done dartk-vm debug_x64 co19/Language/Interfaces/Superinterfaces/definition_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/ExpectException/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/ExpectException/ExpectException_A01_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/ExpectException/message_A01_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/setEquals_A03_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/isFalse_A01_t02: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/isTrue_A01_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/identical_A01_t02: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/setEquals_A01_t02: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/isFalse_A01_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/equals_A01_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/listEquals_A03_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/throws_A01_t04: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/stringEquals_A02_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/approxEquals_A01_t03: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/approxEquals_A01_t02: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/notEquals_A01_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/approxEquals_A04_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/equals_A02_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/listEquals_A01_t03: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/listEquals_A01_t02: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/isNotNull_A01_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/isTrue_A01_t02: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/approxEquals_A01_t04: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/throws_A01_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/isNull_A02_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/notEquals_A01_t02: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/stringEquals_A01_t02: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/setEquals_A02_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/approxEquals_A01_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/approxEquals_A02_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/notEquals_A02_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/throws_A01_t03: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/identical_A01_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/identical_A02_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/isNotNull_A02_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/identical_A01_t03: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/isTrue_A02_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/isNull_A01_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/listEquals_A02_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/equals_A01_t04: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/throws_A01_t05: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/fail_A02_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/isNotNull_A01_t02: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/throws_A02_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/setEquals_A01_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/equals_A01_t03: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/approxEquals_A03_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/listEquals_A01_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/isFalse_A02_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/equals_A01_t02: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/throws_A01_t02: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/isNull_A01_t02: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/stringEquals_A01_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/fail_A01_t01: pass
-Done dartk-vm debug_x64 co19/Utils/tests/Expect/notEquals_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/inSameErrorZone_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/handleUncaughtError_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/scheduleMicrotask_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/handleUncaughtError_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/bindBinaryCallback_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/runUnary_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/createTimer_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/registerCallback_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/fork_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/ROOT_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/handleUncaughtError_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/run_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/current_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/operator_subscript_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/bindBinaryCallback_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/createPeriodicTimer_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/handleUncaughtError_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/runUnaryGuarded_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/bindUnaryCallback_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/registerUnaryCallback_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/registerBinaryCallback_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/inSameErrorZone_A01_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/bindUnaryCallback_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/current_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/bindCallback_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/inSameErrorZone_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/inSameErrorZone_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/bindCallback_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/print_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/runBinary_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/runGuarded_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/inSameErrorZone_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/parent_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/scheduleMicrotask_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Zone/runBinaryGuarded_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamTransformer/StreamTransformer_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamTransformer/StreamTransformer.fromHandlers_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamTransformer/StreamTransformer_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamTransformer/bind_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamTransformer/StreamTransformer_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamTransformer/StreamTransformer_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamTransformer/StreamTransformer_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamTransformer/StreamTransformer_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamTransformer/StreamTransformer.fromHandlers_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamTransformer/StreamTransformer.fromHandlers_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamTransformer/StreamTransformer.fromHandlers_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamTransformer/StreamTransformer_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/close_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/addStream_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/StreamController.broadcast_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/isPaused_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/StreamController_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/EventSink_class_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/add_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/StreamController.broadcast_A07_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/StreamConsumer_class_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/close_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/addError_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/StreamController_A06_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/addStream_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/StreamController_A06_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/StreamController.broadcast_A06_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/done_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/isPaused_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/sink_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/done_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/StreamController_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/addStream_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/isClosed_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/addStream_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/hasListener_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/hasListener_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/addStream_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/isClosed_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/addError_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/stream_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/done_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/isPaused_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/StreamController.broadcast_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/StreamController.broadcast_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/StreamController.broadcast_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/StreamController.broadcast_A07_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/addError_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/StreamController_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/StreamController.broadcast_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/StreamController_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/StreamController.broadcast_A08_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Completer/complete_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamController/StreamController_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Completer/complete_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Completer/completeError_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Completer/completeError_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Completer/isCompleted_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Completer/complete_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Completer/complete_A01_t06: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Completer/Completer.sync_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Completer/complete_A01_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Completer/completeError_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Completer/complete_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Completer/future_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Completer/complete_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Completer/completeError_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Completer/completeError_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Completer/complete_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Completer/completeError_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Completer/completeError_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Completer/Completer_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/catchError_A03_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/Future_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/then_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/catchError_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/wait_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/wait_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/catchError_A03_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/wait_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/then_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/wait_A01_t07: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/then_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/doWhile_A04_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/Future_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/catchError_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/Future.sync_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/wait_A04_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/forEach_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/asStream_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/doWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/timeout_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/forEach_A04_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/wait_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/Future.error_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/forEach_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/Future_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/catchError_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/asStream_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/wait_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/any_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/wait_A01_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/doWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/wait_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/timeout_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/then_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/then_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/whenComplete_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/doWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/catchError_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/then_A05_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/asStream_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/any_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/wait_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/timeout_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/timeout_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/asStream_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/wait_A01_t06: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/then_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/Future.delayed_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/whenComplete_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/whenComplete_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/Future_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/forEach_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/whenComplete_A04_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/forEach_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/then_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/Future.microtask_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/catchError_A03_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/Future.delayed_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/any_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/timeout_A02_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/Future.value_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/then_A05_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/Future.microtask_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/Future.delayed_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/doWhile_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/Future.microtask_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/then_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/Future.sync_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/doWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/Future.sync_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/Future.value_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/Future.microtask_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/Future.sync_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/doWhile_A04_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/whenComplete_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/catchError_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/Future.error_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/then_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/then_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/any_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Future/Future.delayed_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamIterator/StreamIterator_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamIterator/current_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamIterator/current_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamIterator/moveNext_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamIterator/current_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamIterator/cancel_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamIterator/moveNext_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/elementAt_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/take_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/lastWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/take_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/first_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/drain_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/listen_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/reduce_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/first_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/firstWhere_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/single_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/Stream.periodic_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/asyncExpand_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/Stream.fromFuture_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/lastWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/forEach_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/asBroadcastStream_A04_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/contains_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/Stream.fromFuture_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/asBroadcastStream_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/timeout_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/asyncMap_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/single_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/fold_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/asBroadcastStream_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/listen_A05_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/asBroadcastStream_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/where_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/Stream.fromIterable_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/Stream.periodic_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/join_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/last_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/drain_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/drain_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/any_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/forEach_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/reduce_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/last_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/Stream_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/Stream.periodic_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/distinct_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/timeout_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/asyncMap_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/singleWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/join_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/where_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/pipe_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/Stream.fromIterable_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/Stream.eventTransformed_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/expand_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/handleError_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/distinct_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/firstWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/transform_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/map_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/Stream.eventTransformed_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/lastWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/contains_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/contains_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/asBroadcastStream_A04_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/timeout_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/takeWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/first_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/handleError_A04_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/asBroadcastStream_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/handleError_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/singleWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/listen_A06_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/forEach_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/Stream.fromFutures_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/elementAt_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/asBroadcastStream_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/isEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/join_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/asyncMap_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/listen_A05_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/isBroadcast_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/firstWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/asyncExpand_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/join_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/last_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/skipWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/take_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/any_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/fold_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/Stream.fromIterable_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/Stream.fromFutures_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/elementAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/Stream.empty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/lastWhere_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/transform_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/asBroadcastStream_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/toList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/handleError_A04_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/listen_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/reduce_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/asBroadcastStream_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/Stream.fromFuture_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/handleError_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/every_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/listen_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/skip_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/every_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/length_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/Stream.fromFutures_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/handleError_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/asBroadcastStream_A03_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/timeout_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/firstWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/single_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/toSet_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/isBroadcast_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/listen_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/listen_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/elementAt_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/first_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/any_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Stream/Stream.fromFutures_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Timer/Timer.periodic_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Timer/isActive_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Timer/run_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Timer/cancel_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Timer/isActive_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Timer/Timer.periodic_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Timer/Timer_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Timer/run_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/Timer/Timer_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamSink/close_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamSink/addStream_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamSink/addStream_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamSink/done_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamSink/add_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamSink/addStream_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamSink/done_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamSink/addError_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamSink/addStream_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/async/StreamSink/addStream_A01_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/math/min_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/sin_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Point/operator_mult_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Point/operator_equality_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Point/squaredDistanceTo_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Point/Point_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Point/operator_equality_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Point/magnitude_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Point/operator_equality_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Point/operator_subtraction_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Point/operator_mult_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Point/operator_subtraction_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Point/operator_addition_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Point/distanceTo_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Point/operator_equality_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Point/operator_addition_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Point/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Point/operator_mult_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/asin_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/sqrt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/exp_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Rectangle/operator_equality_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Rectangle/intersection_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Rectangle/operator_equality_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Rectangle/operator_equality_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Rectangle/intersects_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Rectangle/Rectangle.fromPoints_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Rectangle/containsPoint_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Rectangle/operator_equality_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Rectangle/boundingBox_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Rectangle/containsRectangle_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Rectangle/boundingBox_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Rectangle/Rectangle_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/acos_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/cos_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/cos_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/atan2_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/pow_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/math/asin_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/log_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/sqrt_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/pow_A09_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/atan2_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/pow_A10_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/atan_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/log_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/pow_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/sin_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/pow_A16_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/pow_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/MutableRectangle/operator_equality_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/MutableRectangle/intersection_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/MutableRectangle/operator_equality_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/MutableRectangle/operator_equality_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/MutableRectangle/MutableRectangle_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/MutableRectangle/intersects_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/MutableRectangle/containsPoint_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/MutableRectangle/MutableRectangle.fromPoints_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/MutableRectangle/boundingBox_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/MutableRectangle/operator_equality_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/MutableRectangle/containsRectangle_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/MutableRectangle/boundingBox_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/math/atan_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/pow_A08_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/sin_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/pow_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/pow_A13_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/sqrt_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/min_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/pow_A14_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/min_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/acos_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/log_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/pow_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/max_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/log_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/pow_A12_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/pow_A15_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/pow_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/pow_A07_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/acos_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/tan_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/exp_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/atan2_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/tan_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/asin_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Random/nextInt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Random/nextDouble_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Random/Random_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/Random/nextBool_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/exp_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/math/sqrt_A02_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/math/atan_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/sqrt_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/math/sqrt_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/math/pow_A17_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/atan2_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/cos_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/exp_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/tan_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/atan2_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/sin_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/max_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/atan_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/math/max_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/pow_A06_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/math/atan2_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/math/pow_A11_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Stopwatch/elapsedTicks_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Stopwatch/elapsed_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Stopwatch/elapsed_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Stopwatch/stop_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Stopwatch/Stopwatch_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Stopwatch/elapsedTicks_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Stopwatch/elapsedInUs_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Stopwatch/start_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Stopwatch/elapsedTicks_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Stopwatch/frequency_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Stopwatch/elapsed_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Stopwatch/elapsedInMs_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Stopwatch/start_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/roundToDouble_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Stopwatch/start_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/toRadixString_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/remainder_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/hashCode_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/operator_multiplication_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/parse_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/floorToDouble_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/operator_right_shift_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/remainder_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/toStringAsExponential_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/round_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/operator_division_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/operator_left_shift_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/toRadixString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/operator_AND_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/isOdd_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/operator_OR_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/operator_truncating_division_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/toInt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/toDouble_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/isNaN_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/compareTo_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/parse_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/operator_LT_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/truncate_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/toStringAsFixed_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/operator_NOT_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/toStringAsExponential_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/operator_right_shift_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/compareTo_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/isInfinite_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/operator_addition_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/operator_GE_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/operator_remainder_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/operator_subtraction_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/truncateToDouble_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/floor_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/operator_division_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/operator_remainder_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/isEven_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/operator_left_shift_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/operator_XOR_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/operator_division_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/remainder_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/toStringAsPrecision_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/abs_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/toStringAsFixed_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/ceilToDouble_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/operator_GT_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/ceil_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/operator_truncating_division_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/operator_remainder_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/operator_left_shift_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/operator_right_shift_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/isNegative_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/toStringAsPrecision_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/operator_unary_minus_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/operator_LE_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/int/toStringAsExponential_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Null/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Null/Null_class_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_multiplication_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_LT_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/abs_A01_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/ceilToDouble_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/NAN_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toStringAsFixed_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_multiplication_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_division_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/roundToDouble_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_division_A01_t08: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/roundToDouble_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_multiplication_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/compareTo_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/roundToDouble_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_division_A01_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/remainder_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/floor_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/ceil_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/parse_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toDouble_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/isNaN_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toStringAsExponential_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/isNegative_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/round_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toStringAsFixed_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/floorToDouble_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/round_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/truncate_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_LE_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_GT_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/ceilToDouble_A01_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_addition_A01_t06: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/remainder_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toStringAsPrecision_A01_t07: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_GE_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_subtraction_A01_t07: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/NEGATIVE_INFINITY_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_remainder_A01_t07: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_remainder_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/round_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_division_A01_t12: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toStringAsExponential_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_subtraction_A01_t08: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/ceilToDouble_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_multiplication_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/round_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_division_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_multiplication_A01_t07: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_division_A01_t07: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_truncating_division_A01_t07: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/isInfinite_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/floorToDouble_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/floorToDouble_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_GT_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/truncateToDouble_A01_t06: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_GT_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toStringAsPrecision_A01_t06: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/truncateToDouble_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toStringAsPrecision_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/truncate_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/abs_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toStringAsExponential_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/round_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_multiplication_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_truncating_division_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toInt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/NAN_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_truncating_division_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/NAN_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/ceil_A01_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/NEGATIVE_INFINITY_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/ceilToDouble_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_unary_minus_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toDouble_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toStringAsFixed_A01_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toStringAsPrecision_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_addition_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_unary_minus_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_division_A01_t06: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/isNaN_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/compareTo_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_GT_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_GE_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/parse_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/truncate_A01_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_addition_A01_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_LT_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toInt_A01_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_remainder_A01_t06: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/truncate_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_truncating_division_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_LT_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_addition_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_remainder_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_LE_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/truncate_A01_t06: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/roundToDouble_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toStringAsFixed_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_multiplication_A01_t06: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/INFINITY_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_subtraction_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/truncate_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/truncateToDouble_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/floor_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_addition_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/NEGATIVE_INFINITY_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toStringAsPrecision_A01_t08: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_addition_A01_t08: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toStringAsFixed_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_multiplication_A01_t09: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toStringAsExponential_A01_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toStringAsExponential_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/isInfinite_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/floor_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/ceil_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/compareTo_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/isInfinite_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_addition_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_GE_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_division_A01_t09: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_subtraction_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_truncating_division_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_subtraction_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_remainder_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/double_class_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_truncating_division_A01_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/abs_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/isNaN_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_subtraction_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/truncateToDouble_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/remainder_A01_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_unary_minus_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_multiplication_A01_t08: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/ceil_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/floor_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/floor_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_division_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_remainder_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_subtraction_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/ceil_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/floorToDouble_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/ceil_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/remainder_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_LT_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/truncateToDouble_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/remainder_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toDouble_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_addition_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_division_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_remainder_A01_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_LE_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/remainder_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/abs_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toStringAsPrecision_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_truncating_division_A01_t08: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toStringAsFixed_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toInt_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toStringAsExponential_A01_t06: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_division_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toInt_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/floorToDouble_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/abs_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/remainder_A01_t07: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_LT_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toStringAsFixed_A02_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toInt_A01_t06: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/ceilToDouble_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toStringAsFixed_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_addition_A01_t07: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toStringAsPrecision_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_division_A01_t11: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/INFINITY_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/roundToDouble_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_subtraction_A01_t06: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_truncating_division_A01_t06: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_multiplication_A01_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/ceilToDouble_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_GT_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/INFINITY_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toInt_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toStringAsPrecision_A01_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/NAN_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_truncating_division_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/truncateToDouble_A01_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/ceil_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_remainder_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/isNegative_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_subtraction_A01_t09: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/NEGATIVE_INFINITY_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/roundToDouble_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/remainder_A01_t06: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/ceilToDouble_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_division_A01_t10: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/INFINITY_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/floorToDouble_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_LE_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toStringAsPrecision_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_unary_minus_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/toStringAsExponential_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_subtraction_A01_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/operator_GE_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/double/round_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/List/List.generate_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/List/List_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/List/List.from_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/List/List.from_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/List/List_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/List/removeAt_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/List/List.generate_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/List/List_class_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/List/List_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/List/List.filled_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/List/List_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/List/List.from_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/List/List_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/StackOverflowError/StackOverflowError_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/List/List.generate_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/StackOverflowError/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Exception/Exception_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Function/apply_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Function/Function_class_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/startsWith_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/codeUnitAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/lastIndexOf_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/List/List_class_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/endsWith_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/endsWith_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/String.fromCharCodes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/hashCode_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/trim_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/split_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/endsWith_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/contains_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/lastIndexOf_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/substring_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/operator_equality_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/operator_equality_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/String.fromCharCodes_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/operator_subscript_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/substring_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/String.fromCharCodes_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/indexOf_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/replaceAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/toUpperCase_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/contains_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/String_class_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/toUpperCase_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/endsWith_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/compareTo_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/toUpperCase_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/startsWith_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/operator_subscript_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/contains_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/toLowerCase_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/isEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/replaceFirst_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/toLowerCase_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/indexOf_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/codeUnitAt_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/replaceFirst_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/String_class_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/split_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/startsWith_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/indexOf_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/length_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/lastIndexOf_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/startsWith_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/contains_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/replaceAll_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/String_class_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/codeUnits_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/trim_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/toUpperCase_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/toLowerCase_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/codeUnitAt_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/toLowerCase_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/String/split_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RangeError/RangeError_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RangeError/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/StringBuffer/StringBuffer_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/StringBuffer/write_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/StringBuffer/write_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/StringBuffer/writeAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/StringBuffer/writeAll_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/StringBuffer/isEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/StringBuffer/clear_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/StringBuffer/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/StringBuffer/writeAll_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/IntegerDivisionByZeroException/IntegerDivisionByZeroException_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/StringBuffer/StringBuffer_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/StringBuffer/length_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/IntegerDivisionByZeroException/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/FormatException/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/FormatException/FormatException_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/AssertionError/AssertionError_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/AssertionError/AssertionError_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/AssertionError/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/AssertionError/AssertionError_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/AssertionError/message_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/toFilePath_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/Uri.http_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/Uri.file_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/operator_eq_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/encodeComponent_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/Uri_A07_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/hashCode_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/Uri.http_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/parse_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/Uri.file_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/Uri.https_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/Uri.https_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/splitQueryString_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/fragment_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/hasAuthority_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/Uri_A06_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/scheme_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/encodeComponent_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/Uri.file_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/pathSegments_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/parse_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/toFilePath_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/toFilePath_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/encodeQueryComponent_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/Uri.https_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/Uri_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/Uri.file_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/pathSegments_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/Uri_A06_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/Uri.http_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/parse_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/toFilePath_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/decodeQueryComponent_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/authority_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/encodeQueryComponent_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/pathSegments_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/Uri_A06_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/path_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/query_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/host_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/Uri_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/pathSegments_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/origin_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/encodeFull_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/port_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/Uri.http_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/userInfo_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/splitQueryString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/isAbsolute_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/path_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/resolveUri_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/queryParameters_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/resolve_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/decodeQueryComponent_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/Uri.https_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/queryParameters_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/Uri_A05_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/decodeFull_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/Uri_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/queryParameters_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/decodeComponent_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/Uri_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/query_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/toFilePath_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/Uri_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/Uri.file_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/toFilePath_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Match/str_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Match/pattern_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Match/groups_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Uri/encodeFull_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Match/operator_subscript_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Match/end_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Match/groups_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Match/groupCount_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Match/operator_subscript_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Match/start_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Match/group_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Match/group_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/UnsupportedError/UnsupportedError_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/to8601String_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/DateTime_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/timeZoneOffset_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/toString_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/hashCode_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/parse_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/microsecond_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/DateTime_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/to8601String_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/millisecond_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/add_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/toLocal_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/to8601String_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/isAtSameMomentAs_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/millisecondsSinceEpoch_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/microsecondsSinceEpoch_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/parse_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/DateTime.utc_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/difference_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/add_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/to8601String_A01_t06: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/parse_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/subtract_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/hashCode_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/add_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/isAfter_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/operator_equality_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/DateTime.fromMillisecondsSinceEpoch_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/parse_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/difference_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/year_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/compareTo_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/microsecondsSinceEpoch_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/DateTime.fromMillisecondsSinceEpoch_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/DateTime_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/subtract_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/isBefore_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/DateTime.now_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/weekday_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/DateTime_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/difference_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/DateTime.now_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/subtract_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/subtract_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/to8601String_A01_t07: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/DateTime.fromMicrosecondsSinceEpoch_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/to8601String_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/millisecondsSinceEpoch_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/day_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/hour_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/second_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/month_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/DateTime.fromMicrosecondsSinceEpoch_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/to8601String_A01_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/toString_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/add_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/timeZoneName_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/toUtc_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/microsecondsSinceEpoch_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/DateTime.fromMillisecondsSinceEpoch_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/DateTime.now_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/parse_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/isUtc_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/DateTime/minute_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Expando/Expando_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Expando/Expando_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Expando/Expando_A03_t06: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Expando/Expando_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Expando/Expando_A03_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Expando/Expando_A03_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Expando/Expando_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Expando/Expando_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Expando/Expando_A03_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Expando/Expando_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterEscape_A09_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Expando/Expando_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/hasMatch_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_Atom_A06_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterClassEscape_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterEscape_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_Disjunction_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterEscape_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_Assertion_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_Atom_A03_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_Assertion_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_NonEmptyClassRanges_A01_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_Term_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterEscape_A07_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_Atom_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_NonEmptyClassRanges_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_AtomEscape_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_Term_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterEscape_A06_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterClass_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterClassEscape_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_Atom_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_NonEmptyClassRanges_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterClass_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_Quantifier_A06_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_Atom_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_Assertion_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterEscape_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterClassEscape_A06_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_Quantifier_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_DecimalEscape_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_Quantifier_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_Term_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_NonEmptyClassRanges_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_Atom_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterClassEscape_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_NonEmptyClassRanges_A01_t06: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterEscape_A08_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_Quantifier_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_Quantifier_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_Atom_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterEscape_A08_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_Assertion_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_DecimalEscape_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterEscape_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_Term_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterEscape_A06_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/splitQueryString_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_DecimalEscape_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_Quantifier_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_Assertion_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_Atom_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_NonEmptyClassRanges_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterEscape_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_DecimalEscape_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterClassEscape_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/pattern_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/stringMatch_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/RegExp_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/firstMatch_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/hasMatch_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/isMultiLine_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/stringMatch_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/allMatches_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/firstMatch_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/RegExp_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/hasMatch_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/RegExp_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/isCaseSensitive_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/RegExp_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/allMatches_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RegExp/firstMatch_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/ArgumentError/ArgumentError_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/ArgumentError/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Invocation/isAccessor_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Invocation/isMethod_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Invocation/isSetter_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Invocation/isGetter_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Invocation/namedArguments_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Invocation/isAccessor_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Invocation/isGetter_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Invocation/positionalArguments_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Invocation/isSetter_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Invocation/memberName_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Invocation/isMethod_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Object/operator_equality_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Object/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Object/Object_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Map/Map_class_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/NoSuchMethodError/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/NoSuchMethodError/NoSuchMethodError_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Map/Map_class_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Map/Map_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Map/Map_class_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Map/allTests_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Map/Map_class_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Map/Map_class_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/StateError/StateError_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/StateError/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Iterable/Iterable.generate_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Iterable/Iterable.generate_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Iterable/Iterable.generate_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Iterable/Iterable.generate_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Iterable/Iterable.empty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/bool/toString_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/TypeError/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/bool/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/FallThroughError/FallThroughError_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/FallThroughError/toString_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/FallThroughError/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/movePrevious_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/RuneIterator_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/currentSize_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/current_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/RuneIterator.at_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/moveNext_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/currentAsString_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/rawIndex_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/rawIndex_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/reset_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/RuneIterator.at_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/RuneIterator.at_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/reset_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/currentAsString_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/reset_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/currentAsString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/movePrevious_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/current_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/currentAsString_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/RuneIterator.at_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/moveNext_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/rawIndex_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/rawIndex_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/currentSize_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/reset_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/reset_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/reset_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/string_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/currentSize_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/RuneIterator.at_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/rawIndex_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/moveNext_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/string_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/rawIndex_A04_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/RuneIterator/movePrevious_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/remove_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/removeWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/Set.identity_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/intersection_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/add_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/retainAll_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/remove_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/remove_A01_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/Set_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/Set.from_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/containsAll_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/addAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/addAll_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/add_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/intersection_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/retainAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/removeAll_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/retainWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/forEach_A01_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/Set.from_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/every_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/lookup_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/remove_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/contains_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/removeAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/every_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/intersection_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/addAll_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/intersection_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/difference_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/forEach_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/contains_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/Set.identity_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/union_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/clear_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/isEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/forEach_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/Set.from_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/forEach_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/forEach_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/every_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/add_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/containsAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/length_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Set/add_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/operator_mult_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/MILLISECONDS_PER_SECOND_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/operator_eq_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/SECONDS_PER_DAY_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/inSeconds_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/Duration_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/operator_plus_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/HOURS_PER_DAY_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/MINUTES_PER_HOUR_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/static_properties_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/compareTo_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/operator_gt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/inDays_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/operator_minus_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/MILLISECONDS_PER_DAY_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/compareTo_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/operator_div_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/inMinutes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/SECONDS_PER_MINUTE_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/operator_lte_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/operator_lt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/MILLISECONDS_PER_HOUR_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/MILLISECONDS_PER_MINUTE_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/operator_gte_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/SECONDS_PER_HOUR_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/Duration_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/MINUTES_PER_DAY_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/inHours_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/inMilliseconds_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Duration/Duration_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/UnimplementedError/UnimplementedError_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/UnimplementedError/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/AbstractClassInstantiationError/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Symbol/Symbol_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/core/AbstractClassInstantiationError/AbstractClassInstantiationError_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Symbol/Symbol_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Symbol/Symbol_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Symbol/Symbol_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Symbol/Symbol_A01_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/elementAt_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/lastWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/iterator_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/isEmpty_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/first_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/first_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/length_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/reduce_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/singleWhere_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/skipWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/lastWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/fold_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/single_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/last_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/where_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/map_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/take_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/any_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/last_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/singleWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/skipWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/expand_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/take_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/last_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/map_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/firstWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/lastWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/skip_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/contains_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/first_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/isNotEmpty_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/takeWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/first_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/skip_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/singleWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/takeWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/forEach_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/isEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/where_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/join_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/reduce_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/firstWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/isNotEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/join_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/skipWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/take_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/single_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/elementAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/toList_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/where_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/Runes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/toList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/string_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/takeWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/skip_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/every_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/toList_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/single_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/length_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/iterator_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/skipWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/single_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/takeWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/firstWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/map_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/toSet_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/Runes/string_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/core/OutOfMemoryError/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/elementAt_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/core/OutOfMemoryError/OutOfMemoryError_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/Int16List.view_A06_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/iterator_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/lastWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/offsetInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/elementSizeInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/isEmpty_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/remove_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/first_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/removeWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/offsetInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/reduce_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/first_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/singleWhere_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/lastIndexOf_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/setAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/sort_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/sublist_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/operator_subscripted_assignment_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/hashCode_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/fillRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/skipWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/replaceRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/lastWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/Int16List.view_A05_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/add_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/lastIndexOf_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/removeRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/fold_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/getRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/addAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/single_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/lastIndexOf_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/where_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/map_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/elementSizeInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/hashCode_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/operator_equality_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/last_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/buffer_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/getRange_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/asMap_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/take_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/runtimeType_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/any_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/operator_subscript_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/last_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/Int16List.view_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/Int16List.fromList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/setAll_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/singleWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/retainWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/skipWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/getRange_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/Int16List.view_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/expand_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/take_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/map_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/last_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/Int16List_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/asMap_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/getRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/setRange_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/firstWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/lastWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/first_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/skip_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/indexOf_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/contains_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/indexOf_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/setRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/setAll_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/isNotEmpty_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/first_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/takeWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/runtimeType_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/asMap_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/skip_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/singleWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/operator_subscript_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/forEach_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/insertAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/iterator_moveNext_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/where_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/insert_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/clear_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/takeWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/isEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/indexOf_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/join_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/reduce_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/setRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/removeLast_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/firstWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/sublist_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/Int16List_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/Int16List.view_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/fillRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/isNotEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/join_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/sublist_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/skipWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/single_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/take_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/Int16List_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/sublist_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/elementAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/Int16List.fromList_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/setRange_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/toList_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/where_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/reversed_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/lengthInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/toList_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/toList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/takeWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/Int16List.view_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/length_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/indexOf_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/removeAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/skip_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/lastIndexOf_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/every_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/length_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/single_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/buffer_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/iterator_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/single_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/reversed_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/Int16List.view_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/skipWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/firstWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/takeWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/map_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/Int16List.view_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/toSet_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/Int16List.view_A05_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/lengthInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/iterator_current_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int16List/operator_subscripted_assignment_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/elementAt_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/iterator_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/lastWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/offsetInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/elementSizeInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/remove_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/first_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/isEmpty_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/removeWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/reduce_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/offsetInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/first_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/lastIndexOf_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/singleWhere_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/sort_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/setAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/Int64List_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/Int64List.view_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/sublist_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/hashCode_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/fillRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/operator_subscripted_assignment_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/skipWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/replaceRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/lastWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/add_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/lastIndexOf_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/removeRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/addAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/getRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/fold_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/single_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/lastIndexOf_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/map_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/Int64List.view_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/where_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/elementSizeInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/hashCode_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/last_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/operator_equality_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/asMap_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/getRange_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/buffer_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/take_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/runtimeType_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/any_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/setAll_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/last_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/operator_subscript_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/Int64List.view_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/singleWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/retainWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/skipWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/getRange_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/expand_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/take_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/last_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/Int64List_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/map_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/getRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/asMap_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/setRange_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/firstWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/lastWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/Int64List.fromList_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/Int64List.view_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/skip_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/indexOf_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/first_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/contains_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/indexOf_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/setRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/setAll_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/isNotEmpty_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/takeWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/runtimeType_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/skip_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/first_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/Int64List.view_A06_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/singleWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/asMap_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/forEach_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/operator_subscript_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/iterator_moveNext_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/insertAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/where_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/insert_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/clear_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/takeWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/join_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/isEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/reduce_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/Int64List.view_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/indexOf_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/setRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/firstWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/removeLast_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/sublist_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/fillRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/isNotEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/join_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/sublist_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/single_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/skipWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/take_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/sublist_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/elementAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/toList_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/setRange_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/Int64List.view_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/where_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/toList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/Int64List_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/toList_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/reversed_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/takeWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/lengthInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/length_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/Int64List.view_A05_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/indexOf_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/skip_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/removeAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/lastIndexOf_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/single_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/every_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/length_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/iterator_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/Int64List.fromList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/buffer_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/reversed_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/skipWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/single_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/firstWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/takeWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/map_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/Int64List.view_A05_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/toSet_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/iterator_current_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/lengthInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int64List/operator_subscripted_assignment_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/elementAt_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/iterator_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/lastWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/offsetInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/elementSizeInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/isEmpty_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/first_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/remove_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/removeWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/Uint16List.view_A06_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/reduce_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/offsetInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/first_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/singleWhere_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/lastIndexOf_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/setAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/sort_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/sublist_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/Uint16List.view_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/operator_subscripted_assignment_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/hashCode_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/fillRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/skipWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/replaceRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/lastWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/Uint16List.view_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/add_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/removeRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/lastIndexOf_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/fold_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/addAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/Uint16List.view_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/single_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/getRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/map_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/lastIndexOf_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/elementSizeInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/where_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/hashCode_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/operator_equality_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/last_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/buffer_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/asMap_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/getRange_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/take_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/runtimeType_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/any_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/operator_subscript_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/last_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/Uint16List.view_A05_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/setAll_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/Uint16List.view_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/singleWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/Uint16List.view_A05_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/retainWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/skipWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/getRange_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/take_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/expand_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/last_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/asMap_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/map_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/getRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/setRange_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/firstWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/lastWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/Uint16List.fromList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/skip_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/first_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/indexOf_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/contains_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/indexOf_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/setRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/isNotEmpty_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/setAll_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/takeWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/runtimeType_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/first_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/skip_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/Uint16List_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/asMap_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/singleWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/operator_subscript_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/forEach_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/iterator_moveNext_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/insertAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/where_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/insert_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/clear_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/takeWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/isEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/reduce_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/join_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/indexOf_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/setRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/removeLast_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/firstWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/sublist_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/fillRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/isNotEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/join_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/sublist_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/Uint16List.view_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/single_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/skipWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/take_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/sublist_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/Uint16List_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/elementAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/toList_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/setRange_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/where_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/toList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/toList_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/reversed_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/Uint16List.fromList_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/lengthInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/takeWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/length_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/Uint16List_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/indexOf_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/Uint16List.view_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/skip_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/removeAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/lastIndexOf_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/every_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/length_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/single_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/iterator_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/buffer_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/reversed_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/skipWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/single_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/firstWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/map_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/takeWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/toSet_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/iterator_current_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/lengthInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint16List/operator_subscripted_assignment_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/z_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/sqrt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/operator_multiplication_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/lessThanOrEqual_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/clamp_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/lessThan_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/greaterThanOrEqual_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/clamp_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/Float32x4_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/greaterThan_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/Float32x4_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/z_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/w_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/min_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/withZ_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/x_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/notEqual_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/withW_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/y_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/Float32x4.zero_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/max_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/Float32x4.fromInt32x4Bits_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/Float32x4.splat_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/operator_addition_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/withY_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/reciprocal_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/w_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/x_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/operator_subtraction_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/operator_division_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/Float32x4.fromInt32x4Bits_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/Float32x4.splat_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/operator_division_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/y_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/equal_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/abs_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/reciprocalSqrt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/shuffleMix_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/operator_unary_minus_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/shuffle_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/scale_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4/withX_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/offsetInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/elementSizeInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/offsetInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setFloat64_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getInt64_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/hashCode_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getFloat32_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setInt16_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getFloat64_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setUint32_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setUint8_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/ByteData.view_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setInt64_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setInt32_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getFloat32_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/elementSizeInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getFloat64_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/hashCode_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getInt16_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getFloat32_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/operator_equality_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/buffer_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getInt64_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getInt8_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/runtimeType_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setFloat64_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setInt16_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getInt8_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/ByteData.view_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setUint16_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setUint32_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setInt8_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setUint64_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getUint16_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setUint8_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getInt32_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/ByteData_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setUint32_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/ByteData_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/ByteData.view_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setUint16_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setInt64_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/runtimeType_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getInt16_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/ByteData.view_A05_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/ByteData.view_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setInt8_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setUint8_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getUint32_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getFloat64_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getUint16_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/ByteData.view_A05_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setInt32_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getUint32_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getInt8_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/ByteData.view_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getUint64_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setInt8_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getUint8_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setFloat32_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getInt32_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getUint8_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setInt64_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/lengthInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setFloat64_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setUint64_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/buffer_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getUint32_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setFloat32_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getUint16_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getUint8_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setFloat32_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setUint16_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setInt16_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getInt16_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getUint64_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setUint64_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/ByteData.view_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getUint64_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/ByteData_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getInt32_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/getInt64_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/lengthInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteData/setInt32_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/lastWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/elementAt_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/iterator_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/offsetInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/elementSizeInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/first_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/isEmpty_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/Float32x4List.fromList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/removeWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/remove_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/offsetInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/reduce_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/first_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/singleWhere_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/setAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/sort_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/sublist_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/hashCode_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/operator_subscripted_assignment_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/fillRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/skipWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/replaceRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/lastWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/add_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/removeRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/addAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/fold_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/getRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/single_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/lastIndexOf_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/map_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/elementSizeInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/where_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/hashCode_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/operator_equality_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/last_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/Float32x4List.view_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/asMap_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/buffer_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/getRange_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/take_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/Float32x4List.view_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/runtimeType_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/Float32x4List.view_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/any_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/operator_subscript_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/last_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/Float32x4List_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/setAll_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/retainWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/singleWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/skipWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/getRange_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/Float32x4List.view_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/expand_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/take_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/last_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/asMap_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/map_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/getRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/setRange_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/firstWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/skip_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/lastWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/first_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/contains_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/Float32x4List_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/setRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/setAll_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/isNotEmpty_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/takeWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/Float32x4List.fromList_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/first_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/runtimeType_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/skip_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/asMap_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/Float32x4List.view_A06_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/singleWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/operator_subscript_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/forEach_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/iterator_moveNext_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/insertAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/where_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/insert_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/clear_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/takeWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/isEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/join_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/reduce_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/indexOf_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/setRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/firstWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/removeLast_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/sublist_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/fillRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/isNotEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/join_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/Float32x4List.view_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/sublist_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/skipWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/single_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/take_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/sublist_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/elementAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/toList_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/setRange_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/where_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/toList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/Float32x4List.view_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/Float32x4List_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/toList_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/reversed_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/length_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/lengthInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/takeWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/indexOf_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/skip_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/lastIndexOf_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/removeAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/every_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/length_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/single_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/iterator_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/Float32x4List.view_A05_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/buffer_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/skipWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/reversed_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/Float32x4List.view_A05_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/single_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/firstWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/takeWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/map_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/toSet_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/iterator_current_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/lengthInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32x4List/operator_subscripted_assignment_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/elementAt_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/lastWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/iterator_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/offsetInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/Int8List.view_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/elementSizeInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/Int8List.fromList_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/isEmpty_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/first_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/remove_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/removeWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/reduce_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/offsetInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/first_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/singleWhere_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/lastIndexOf_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/setAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/sort_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/Int8List.view_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/sublist_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/hashCode_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/operator_subscripted_assignment_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/skipWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/fillRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/replaceRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/lastWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/add_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/removeRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/lastIndexOf_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/fold_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/addAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/getRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/single_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/lastIndexOf_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/map_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/elementSizeInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/Int8List_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/where_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/hashCode_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/operator_equality_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/last_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/asMap_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/Int8List.view_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/getRange_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/buffer_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/take_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/runtimeType_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/any_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/operator_subscript_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/last_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/Int8List_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/setAll_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/singleWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/retainWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/skipWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/getRange_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/expand_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/take_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/Int8List.view_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/last_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/Int8List.view_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/map_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/asMap_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/getRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/setRange_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/skip_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/firstWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/lastWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/indexOf_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/contains_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/first_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/indexOf_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/setRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/takeWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/setAll_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/isNotEmpty_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/runtimeType_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/first_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/skip_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/asMap_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/Int8List.view_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/singleWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/operator_subscript_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/forEach_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/iterator_moveNext_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/insertAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/where_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/insert_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/clear_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/takeWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/isEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/join_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/reduce_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/indexOf_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/setRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/removeLast_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/firstWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/fillRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/sublist_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/isNotEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/join_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/sublist_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/skipWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/single_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/take_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/sublist_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/Int8List.fromList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/elementAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/toList_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/setRange_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/where_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/toList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/Int8List.view_A05_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/toList_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/reversed_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/lengthInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/takeWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/indexOf_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/length_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/skip_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/removeAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/lastIndexOf_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/every_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/single_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/length_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/iterator_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/buffer_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/reversed_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/skipWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/single_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/firstWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/takeWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/toSet_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/map_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/Int8List_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/iterator_current_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/Int8List.view_A05_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/lengthInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int8List/operator_subscripted_assignment_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/elementAt_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/lastWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/iterator_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/offsetInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/elementSizeInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/isEmpty_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/first_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/remove_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/removeWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/reduce_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/Uint8List.view_A05_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/offsetInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/first_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/lastIndexOf_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/singleWhere_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/setAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/sort_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/hashCode_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/sublist_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/operator_subscripted_assignment_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/fillRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/skipWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/replaceRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/lastWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/add_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/Uint8List.fromList_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/lastIndexOf_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/removeRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/addAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/fold_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/Uint8List.view_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/Uint8List.fromList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/getRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/single_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/lastIndexOf_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/map_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/elementSizeInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/where_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/hashCode_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/Uint8List.view_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/operator_equality_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/Uint8List.view_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/last_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/asMap_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/take_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/getRange_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/buffer_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/Uint8List.view_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/runtimeType_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/any_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/operator_subscript_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/last_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/setAll_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/Uint8List.view_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/singleWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/retainWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/skipWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/getRange_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/expand_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/take_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/asMap_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/map_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/last_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/getRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/setRange_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/firstWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/lastWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/skip_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/indexOf_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/indexOf_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/contains_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/first_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/Uint8List.view_A05_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/setRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/setAll_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/isNotEmpty_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/takeWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/first_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/runtimeType_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/Uint8List.view_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/skip_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/asMap_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/singleWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/operator_subscript_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/where_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/forEach_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/insertAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/iterator_moveNext_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/insert_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/clear_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/takeWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/isEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/join_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/setRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/firstWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/reduce_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/indexOf_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/removeLast_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/Uint8List_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/sublist_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/fillRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/isNotEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/sublist_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/join_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/skipWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/single_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/take_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/sublist_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/setRange_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/elementAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/toList_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/where_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/Uint8List_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/toList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/toList_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/lengthInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/takeWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/reversed_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/indexOf_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/length_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/lastIndexOf_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/skip_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/removeAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/every_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/single_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/iterator_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/buffer_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/length_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/reversed_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/skipWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/single_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/takeWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/firstWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/iterator_current_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/map_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/toSet_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/Uint8List_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/lengthInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8List/operator_subscripted_assignment_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/elementAt_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/lastWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/iterator_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/offsetInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/elementSizeInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/first_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/isEmpty_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/remove_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/removeWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/reduce_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/offsetInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/first_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/singleWhere_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/setAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/lastIndexOf_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/sort_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/sublist_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/hashCode_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/operator_subscripted_assignment_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/skipWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/fillRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/replaceRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/lastWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/Uint64List.view_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/Uint64List_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/add_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/lastIndexOf_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/Uint64List.view_A05_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/Uint64List.fromList_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/fold_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/removeRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/addAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/single_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/getRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/lastIndexOf_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/map_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/elementSizeInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/hashCode_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/where_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/operator_equality_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/last_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/asMap_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/getRange_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/take_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/buffer_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/runtimeType_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/any_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/operator_subscript_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/last_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/Uint64List.view_A05_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/setAll_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/singleWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/retainWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/skipWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/getRange_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/Uint64List.view_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/Uint64List.view_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/expand_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/take_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/last_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/Uint64List_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/map_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/asMap_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/getRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/setRange_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/lastWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/skip_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/firstWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/indexOf_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/first_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/contains_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/indexOf_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/setRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/setAll_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/isNotEmpty_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/takeWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/runtimeType_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/first_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/Uint64List.view_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/skip_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/singleWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/asMap_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/Uint64List.view_A06_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/forEach_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/operator_subscript_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/iterator_moveNext_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/insertAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/Uint64List.view_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/where_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/insert_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/clear_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/takeWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/isEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/join_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/reduce_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/setRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/indexOf_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/Uint64List.view_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/firstWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/removeLast_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/sublist_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/fillRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/isNotEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/join_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/skipWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/single_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/sublist_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/take_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/sublist_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/elementAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/toList_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/setRange_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/where_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/toList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/Uint64List.fromList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/toList_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/reversed_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/lengthInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/takeWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/indexOf_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/skip_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/removeAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/length_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/lastIndexOf_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/single_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/every_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/iterator_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/length_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/reversed_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/skipWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/buffer_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/Uint64List_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/single_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/firstWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/toSet_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/takeWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/iterator_current_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/map_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/lengthInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint64List/operator_subscripted_assignment_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/flagW_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/z_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/flagX_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/flagY_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/withFlagY_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/withFlagZ_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/flagZ_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/flagY_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/operator_AND_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/flagY_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/flagZ_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/w_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/operator_OR_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/flagW_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/flagW_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/z_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/withZ_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/x_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/withW_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/y_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/withY_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/Int32x4.fromFloat32x4Bits_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/flagX_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/select_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/w_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/x_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/flagX_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/withFlagW_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/operator_XOR_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/Int32x4_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/y_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/Int32x4.fromFloat32x4Bits_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/Int32x4.bool_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/withFlagX_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/flagZ_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/lastWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/iterator_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/elementAt_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32x4/withX_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/offsetInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/elementSizeInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/Float64List.view_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/first_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/isEmpty_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/removeWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/reduce_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/remove_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/offsetInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/first_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/singleWhere_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/lastIndexOf_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/Float64List.fromList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/sort_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/setAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/Float64List.view_A05_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/hashCode_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/sublist_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/operator_subscripted_assignment_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/fillRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/replaceRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/skipWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/lastWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/add_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/lastIndexOf_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/Float64List.view_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/removeRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/fold_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/addAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/getRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/single_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/lastIndexOf_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/map_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/elementSizeInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/where_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/hashCode_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/last_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/operator_equality_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/asMap_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/getRange_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/take_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/buffer_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/runtimeType_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/any_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/operator_subscript_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/last_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/Float64List.fromList_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/setAll_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/singleWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/retainWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/skipWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/getRange_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/take_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/expand_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/map_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/last_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/asMap_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/getRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/setRange_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/firstWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/skip_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/lastWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/first_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/indexOf_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/contains_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/indexOf_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/Float64List.view_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/Float64List_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/setRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/Float64List_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/setAll_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/runtimeType_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/isNotEmpty_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/takeWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/first_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/skip_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/operator_subscript_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/singleWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/asMap_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/forEach_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/iterator_moveNext_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/insertAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/where_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/insert_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/clear_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/isEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/takeWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/join_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/reduce_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/indexOf_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/setRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/firstWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/removeLast_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/sublist_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/join_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/isNotEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/fillRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/sublist_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/skipWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/Float64List.view_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/single_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/take_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/elementAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/sublist_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/Float64List.view_A05_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/setRange_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/toList_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/where_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/toList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/Float64List_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/toList_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/Float64List.view_A06_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/Float64List.view_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/reversed_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/lengthInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/length_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/takeWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/indexOf_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/skip_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/every_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/lastIndexOf_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/removeAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/single_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/length_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/buffer_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/iterator_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/reversed_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/skipWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/firstWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/single_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/takeWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/toSet_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/map_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/iterator_current_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/operator_subscripted_assignment_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/elementAt_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/lengthInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float64List/Float64List.view_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/lastWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/iterator_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/elementSizeInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/offsetInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/remove_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/isEmpty_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/first_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/removeWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/reduce_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/offsetInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/first_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/singleWhere_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/setAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/sort_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/lastIndexOf_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/Int32List.view_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/sublist_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/operator_subscripted_assignment_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/hashCode_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/fillRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/lastWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/Int32List.view_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/replaceRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/skipWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/add_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/lastIndexOf_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/removeRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/fold_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/getRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/addAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/lastIndexOf_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/single_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/map_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/elementSizeInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/asMap_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/where_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/operator_equality_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/hashCode_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/getRange_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/last_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/buffer_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/take_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/setAll_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/last_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/any_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/runtimeType_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/singleWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/operator_subscript_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/retainWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/skipWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/getRange_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/Int32List.view_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/expand_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/Int32List_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/last_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/take_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/Int32List.view_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/map_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/firstWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/getRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/asMap_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/setRange_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/lastWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/Int32List.view_A05_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/skip_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/indexOf_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/first_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/setRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/contains_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/indexOf_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/setAll_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/isNotEmpty_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/Int32List.view_A05_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/takeWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/runtimeType_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/first_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/skip_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/singleWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/asMap_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/operator_subscript_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/forEach_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/iterator_moveNext_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/insertAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/where_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/takeWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/clear_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/insert_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/isEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/join_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/reduce_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/indexOf_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/setRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/Int32List_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/removeLast_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/firstWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/fillRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/sublist_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/isNotEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/join_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/sublist_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/skipWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/Int32List.view_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/single_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/sublist_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/take_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/elementAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/Int32List_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/toList_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/setRange_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/where_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/Int32List.fromList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/toList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/reversed_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/toList_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/lengthInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/takeWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/indexOf_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/length_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/skip_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/removeAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/every_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/lastIndexOf_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/iterator_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/buffer_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/length_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/single_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/reversed_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/skipWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/firstWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/single_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/takeWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/map_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/iterator_current_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/Int32List.fromList_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/toSet_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/Int32List.view_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/operator_subscripted_assignment_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/lengthInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/elementAt_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Int32List/Int32List.view_A06_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/lastWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/iterator_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/offsetInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/elementSizeInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/isEmpty_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/first_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/remove_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/first_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/reduce_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/offsetInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/removeWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/singleWhere_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/setAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/lastIndexOf_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/sort_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/sublist_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/operator_subscripted_assignment_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/hashCode_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/fillRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/skipWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/replaceRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/lastWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/Float32List.view_A05_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/Float32List.view_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/forEach_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/add_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/Float32List_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/lastIndexOf_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/Float32List.view_A05_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/removeRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/addAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/fold_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/getRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/single_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/lastIndexOf_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/map_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/Float32List.view_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/elementSizeInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/where_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/hashCode_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/operator_equality_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/last_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/asMap_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/buffer_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/getRange_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/take_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/Float32List.view_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/runtimeType_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/operator_subscript_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/any_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/last_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/setAll_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/singleWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/Float32List.view_A06_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/skipWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/retainWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/getRange_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/expand_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/take_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/last_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/Float32List.fromList_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/map_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/getRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/asMap_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/setRange_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/firstWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/lastWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/Float32List.fromList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/skip_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/indexOf_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/contains_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/setRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/first_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/indexOf_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/setAll_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/isNotEmpty_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/runtimeType_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/takeWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/singleWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/asMap_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/operator_subscript_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/first_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/skip_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/forEach_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/insertAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/iterator_moveNext_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/clear_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/where_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/Float32List_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/takeWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/insert_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/isEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/join_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/reduce_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/indexOf_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/firstWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/setRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/removeLast_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/sublist_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/fillRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/join_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/isNotEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/take_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/sublist_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/Float32List.view_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/single_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/skipWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/sublist_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/Float32List.view_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/elementAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/setRange_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/where_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/toList_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/toList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/toList_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/reversed_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/lengthInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/length_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/takeWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/removeAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/skip_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/indexOf_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/lastIndexOf_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/every_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/single_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/length_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/iterator_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/buffer_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/skipWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/reversed_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/single_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/firstWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/takeWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/toSet_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/iterator_current_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/map_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/Float32List.view_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/Float32List_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/lengthInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Float32List/operator_subscripted_assignment_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/elementAt_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/iterator_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/lastWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/offsetInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/elementSizeInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/Uint32List.view_A06_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/isEmpty_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/first_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/remove_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/removeWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/reduce_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/offsetInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/first_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/singleWhere_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/lastIndexOf_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/sort_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/setAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/Uint32List.fromList_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/sublist_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/hashCode_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/operator_subscripted_assignment_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/fillRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/skipWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/lastWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/replaceRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/add_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/Uint32List_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/lastIndexOf_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/removeRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/Uint32List.view_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/fold_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/addAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/Uint32List.fromList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/getRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/lastIndexOf_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/single_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/elementSizeInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/map_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/where_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/hashCode_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/operator_equality_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/last_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/getRange_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/asMap_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/Uint32List.view_A05_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/buffer_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/take_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/runtimeType_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/any_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/operator_subscript_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/last_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/setAll_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/singleWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/retainWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/skipWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/getRange_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/expand_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/take_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/last_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/map_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/setRange_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/asMap_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/getRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/firstWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/Uint32List.view_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/lastWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/Uint32List.view_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/Uint32List.view_A05_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/indexOf_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/first_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/skip_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/contains_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/indexOf_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/setRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/isNotEmpty_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/setAll_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/Uint32List.view_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/takeWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/runtimeType_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/first_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/Uint32List.view_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/skip_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/asMap_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/singleWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/forEach_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/operator_subscript_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/iterator_moveNext_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/insertAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/where_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/insert_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/clear_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/takeWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/join_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/reduce_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/isEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/setRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/indexOf_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/firstWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/removeLast_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/sublist_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/fillRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/isNotEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/join_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/sublist_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/Uint32List_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/single_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/skipWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/take_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/sublist_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/toList_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/elementAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/setRange_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/where_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/toList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/Uint32List_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/toList_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/reversed_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/lengthInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/takeWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/length_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/indexOf_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/skip_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/removeAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/lastIndexOf_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/every_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/single_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/Uint32List.view_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/length_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/iterator_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/buffer_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/reversed_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/skipWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/single_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/firstWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/map_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/takeWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/iterator_current_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/toSet_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/lengthInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint32List/operator_subscripted_assignment_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/elementAt_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/lastWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/iterator_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/offsetInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/isEmpty_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/elementSizeInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/first_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/remove_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/removeWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/offsetInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/reduce_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/first_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/singleWhere_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/lastIndexOf_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/setAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/sort_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/sublist_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/Uint8ClampedList_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/hashCode_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/operator_subscripted_assignment_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/fillRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/skipWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/replaceRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/lastWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/add_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/lastIndexOf_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/removeRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/fold_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/addAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/single_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/getRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/lastIndexOf_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/Uint8ClampedList_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/map_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/elementSizeInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/where_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/hashCode_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/operator_equality_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/last_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/asMap_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/getRange_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/buffer_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/take_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/runtimeType_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/operator_subscript_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/last_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/any_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/setAll_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/singleWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/skipWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/retainWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/getRange_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/take_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/last_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/expand_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/Uint8ClampedList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/Uint8ClampedList.view_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/map_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/asMap_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/getRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/setRange_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/firstWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/lastWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/skip_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/indexOf_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/first_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/Uint8ClampedList.view_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/contains_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/indexOf_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/setAll_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/setRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/takeWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/isNotEmpty_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/Uint8ClampedList.view_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/first_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/runtimeType_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/skip_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/Uint8ClampedList.fromList_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/operator_subscript_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/singleWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/asMap_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/forEach_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/iterator_moveNext_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/insertAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/where_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/insert_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/clear_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/isEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/takeWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/join_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/reduce_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/indexOf_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/setRange_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/firstWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/removeLast_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/fillRange_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/sublist_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/isNotEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/join_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/sublist_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/Uint8ClampedList.fromList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/single_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/skipWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/take_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/sublist_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/Uint8ClampedList.view_A05_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/Uint8ClampedList.view_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/elementAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/toList_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/where_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/setRange_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/toList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/toList_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/reversed_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/Uint8ClampedList.view_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/lengthInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/takeWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/indexOf_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/Uint8ClampedList.view_A05_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/length_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/skip_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/removeAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/lastIndexOf_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/every_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/single_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/buffer_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/iterator_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/length_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/skipWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/reversed_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/single_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/firstWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/map_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/takeWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/iterator_current_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/toSet_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/lengthInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/operator_subscripted_assignment_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/Uint8ClampedList/Uint8ClampedList.view_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteBuffer/hashCode_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteBuffer/hashCode_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteBuffer/operator_equality_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteBuffer/runtimeType_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteBuffer/runtimeType_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteBuffer/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteBuffer/lengthInBytes_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/typed_data/ByteBuffer/lengthInBytes_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeSet/SplayTreeSet.from_A02_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeSet/SplayTreeSet.from_A02_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeSet/SplayTreeSet.from_A02_t09: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeSet/SplayTreeSet_A06_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeSet/SplayTreeSet_class_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeSet/SplayTreeSet.from_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeSet/SplayTreeSet_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeSet/SplayTreeSet_A03_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeSet/SplayTreeSet.from_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeSet/SplayTreeSet_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeSet/SplayTreeSet_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeSet/SplayTreeSet_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeSet/SplayTreeSet.from_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeSet/SplayTreeSet_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeSet/SplayTreeSet.from_A02_t06: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeSet/SplayTreeSet_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeSet/SplayTreeSet_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeSet/SplayTreeSet.from_A02_t07: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeSet/SplayTreeSet_A04_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeSet/SplayTreeSet.from_A02_t08: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeSet/SplayTreeSet_A07_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeSet/SplayTreeSet.from_A02_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueueEntry/hashCode_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueueEntry/remove_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueueEntry/previousEntry_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueueEntry/prepend_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueueEntry/previousEntry_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueueEntry/nextEntry_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueueEntry/DoubleLinkedQueueEntry_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueueEntry/element_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueueEntry/DoubleLinkedQueueEntry_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueueEntry/nextEntry_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueueEntry/append_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashSet/LinkedHashSet_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashSet/LinkedHashSet_A05_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashSet/LinkedHashSet_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashSet/LinkedHashSet_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashSet/LinkedHashSet.identity_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashSet/LinkedHashSet.from_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashSet/LinkedHashSet_class_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashSet/LinkedHashSet_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashSet/LinkedHashSet_A05_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashSet/LinkedHashSet_A05_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashSet/LinkedHashSet.from_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashSet/LinkedHashSet.from_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashSet/LinkedHashSet_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashSet/LinkedHashSet_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashSet/LinkedHashSet.from_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedListEntry/insertAfter_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedListEntry/insertAfter_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedListEntry/unlink_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedListEntry/unlink_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedListEntry/insertBefore_A02_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedListEntry/unlink_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedListEntry/previous_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedListEntry/unlink_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedListEntry/unlink_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedListEntry/next_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedListEntry/insertBefore_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedListEntry/next_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedListEntry/insertBefore_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedListEntry/next_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedListEntry/previous_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedListEntry/list_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedListEntry/list_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedListEntry/insertBefore_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedListEntry/list_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedListEntry/insertAfter_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedListEntry/insertAfter_A02_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedListEntry/insertBefore_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedListEntry/previous_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedListEntry/insertAfter_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/elementAt_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/lastWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/LinkedList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/iterator_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/first_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/reduce_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/remove_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/singleWhere_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/every_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/addFirst_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/addAll_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/skipWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/lastWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/add_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/forEach_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/fold_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/single_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/addAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/where_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/map_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/last_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/any_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/last_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/ListQueue.from_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/singleWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/skipWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/expand_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/expand_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/take_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/map_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/lastWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/firstWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/skip_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/first_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/contains_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/every_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/takeWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/skip_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/addAll_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/singleWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/forEach_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/iterator_moveNext_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/clear_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/takeWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/isEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/join_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/forEach_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/firstWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/isNotEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/skipWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/take_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/elementAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/where_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/toList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/add_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/toList_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/takeWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/every_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/toList_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/skip_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/every_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/length_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/skipWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/addFirst_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/firstWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/map_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/takeWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/toSet_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedList/iterator_current_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/MapView/MapView_class_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Maps/putIfAbsent_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Maps/putIfAbsent_A01_t07: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Maps/putIfAbsent_A01_t06: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Maps/putIfAbsent_A01_t09: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Maps/forEach_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Maps/putIfAbsent_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Maps/putIfAbsent_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Maps/getValues_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Maps/forEach_A01_t08: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Maps/forEach_A01_t06: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Maps/forEach_A01_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/ListMixin/ListMixin_class_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Maps/Maps_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Maps/forEach_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Maps/isEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Maps/forEach_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Maps/isNotEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Maps/containsValue_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Maps/putIfAbsent_A01_t10: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Maps/forEach_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Maps/mapToString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Maps/putIfAbsent_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Maps/putIfAbsent_A01_t08: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Maps/mapToString_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Maps/length_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/IterableMixin/IterableMixin_class_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/IterableMixin/IterableMixin_class_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/ListMixin/ListMixin_class_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/IterableMixin/IterableMixin_class_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/ListBase/listToString_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/ListBase/listToString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SetBase/SetBase_class_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SetBase/setToString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SetBase/setToString_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/ListQueue/ListQueue_class_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/ListQueue/ListQueue.from_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/ListQueue/ListQueue_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/ListQueue/ListQueue.from_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/ListBase/ListBase_class_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/ListQueue/ListQueue.from_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/HasNextIterator/hasNext_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/HasNextIterator/next_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/HasNextIterator/HasNextIterator_class_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/HasNextIterator/hasNext_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/HashMap/HashMap.from_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/HashMap/HashMap.fromIteratables_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/HashMap/HashMap.fromIteratable_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/HashMap/HashMap_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/HashMap/HashMap.fromIteratable_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/HashMap/HashMap.fromIteratables_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/HashMap/HashMap.from_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/HashMap/HashMap.identity_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/HashMap/HashMap.fromIteratables_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/HashMap/HashMap_class_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/HashMap/HashMap.fromIteratable_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/HashMap/HashMap.fromIteratables_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Queue/Queue.from_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Queue/Queue.from_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/ListBase/ListBase_class_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Queue/Queue_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Queue/Queue.from_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/HashSet/HashSet.from_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/HashSet/HashSet.from_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/Queue/Queue_class_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/HashSet/HashSet.identity_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/HashSet/HashSet_class_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/HashSet/HashSet_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/firstKeyAfter_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SetMixin/SetMixin_class_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/SplayTreeMap_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/SplayTreeMap_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/SplayTreeMap.from_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/lastKeyBefore_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/SplayTreeMap.fromIterable_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/SplayTreeMap.fromIterable_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/SplayTreeMap.fromIterables_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/SplayTreeMap.from_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/lastKey_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/SplayTreeMap.fromIterables_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/lastKeyBefore_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/SplayTreeMap.fromIterable_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/SplayTreeMap.fromIterable_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/inherited_tests_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/lastKey_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/SplayTreeMap_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/firstKey_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/SplayTreeMap.from_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/SplayTreeMap.fromIterable_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/SplayTreeMap_A04_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/SplayTreeMap.fromIterables_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/SplayTreeMap.fromIterables_A05_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/SplayTreeMap_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/SplayTreeMap_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/SplayTreeMap.from_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/firstKey_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/SplayTreeMap_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/firstKeyAfter_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/SplayTreeMap_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/SplayTreeMap.fromIterable_A06_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/SplayTreeMap.fromIterable_A06_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/SplayTreeMap.fromIterables_A05_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/SplayTreeMap.fromIterables_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/SplayTreeMap_A02_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/SplayTreeMap/SplayTreeMap.from_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/elementAt_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/lastWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/iterator_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/removeFirst_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/first_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/remove_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/removeWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/reduce_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/addLast_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/singleWhere_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/lastEntry_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/addFirst_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/forEachEntry_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/skipWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/lastWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/iterator_moveNext_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/firstEntry_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/add_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/fold_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/addAll_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/single_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/map_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/firstEntry_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/where_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/last_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/forEachEntry_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/last_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/DoubleLinkedQueue.from_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/forEachEntry_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/every_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/retainWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/singleWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/skipWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/expand_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/forEachEntry_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/expand_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/DoubleLinkedQueue_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/take_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/map_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/firstWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/lastWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/skip_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/contains_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/every_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/removeLast_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/takeWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/first_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/addAll_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/singleWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/skip_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/forEach_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/iterator_moveNext_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/lastEntry_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/clear_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/takeWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/isEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/removeFirst_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/join_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/forEach_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/firstWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/removeLast_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/isNotEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/forEach_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/skipWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/take_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/addLast_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/elementAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/toString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/toList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/forEach_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/expand_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/add_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/toList_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/takeWhile_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/skip_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/toList_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/length_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/every_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/iterator_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/addFirst_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/skipWhile_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/firstWhere_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/takeWhile_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/map_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/DoubleLinkedQueue_class_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/toSet_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/iterator_current_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/DoubleLinkedQueue.from_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/DoubleLinkedQueue/any_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/IterableBase/IterableBase_class_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/IterableBase/IterableBase_class_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/IterableBase/iterableToFullString_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/IterableBase/iterableToShortString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/IterableBase/iterableToFullString_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/IterableBase/iterableToShortString_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/MapBase/MapBase_class_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/MapMixin/MapMixin_class_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashMap/LinkedHashMap.fromIterables_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashMap/LinkedHashMap.identity_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashMap/LinkedHashMap_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashMap/LinkedHashMap_A04_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashMap/LinkedHashMap_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashMap/LinkedHashMap_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashMap/LinkedHashMap.from_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashMap/LinkedHashMap.fromIterables_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashMap/LinkedHashMap_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashMap/LinkedHashMap.fromIterable_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashMap/LinkedHashMap_A04_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashMap/LinkedHashMap.from_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashMap/LinkedHashMap.fromIterable_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashMap/LinkedHashMap_class_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashMap/LinkedHashMap.fromIterables_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashMap/LinkedHashMap_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashMap/LinkedHashMap.fromIterable_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashMap/LinkedHashMap_A04_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashMap/LinkedHashMap_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/collection/LinkedHashMap/LinkedHashMap.fromIterable_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/convert/JsonDecoder/convert_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/convert/JsonDecoder/fuse_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/convert/JsonDecoder/JsonDecoder_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/convert/JsonDecoder/convert_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/convert/JsonDecoder/convert_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/convert/JsonEncoder/fuse_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/convert/JsonEncoder/JsonEncoder_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/convert/JsonEncoder/convert_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/convert/JsonCodec/encode_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/convert/JsonEncoder/convert_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/convert/JsonCodec/encode_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/convert/JsonCodec/decode_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/convert/JsonCodec/JsonCodec_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/convert/JsonCodec/encode_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/convert/JsonCodec/encode_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/convert/JsonCodec/encode_A02_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/convert/JsonCodec/JsonCodec.withReviver_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/convert/JsonCodec/decode_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/convert/JsonCodec/encode_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/convert/JsonCodec/decode_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/take_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/first_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/drain_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/close_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/ReceivePort_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/reduce_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/lastWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/take_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/lastWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/sendPort_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/asBroadcastStream_A04_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/firstWhere_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/asBroadcastStream_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/asBroadcastStream_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/fold_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/asBroadcastStream_A03_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/single_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/where_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/reduce_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/drain_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/ReceivePort.fromRawReceivePort_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/last_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/last_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/any_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/singleWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/distinct_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/pipe_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/where_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/transform_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/distinct_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/map_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/asBroadcastStream_A04_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/first_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/ReceivePort.fromRawReceivePort_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/contains_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/asBroadcastStream_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/takeWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/firstWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/expand_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/isBroadcast_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/singleWhere_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/asBroadcastStream_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/join_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/forEach_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/isEmpty_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/join_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/firstWhere_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/fold_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/skipWhile_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/elementAt_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/transform_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/asBroadcastStream_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/close_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/lastWhere_A04_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/reduce_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/listen_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/toList_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/take_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/asBroadcastStream_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/asBroadcastStream_A03_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/elementAt_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/isBroadcast_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/length_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/single_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/toSet_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/RawReceivePort/sendPort_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/first_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/RawReceivePort/close_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/any_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/RawReceivePort/RawReceivePort_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/every_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/RawReceivePort/RawReceivePort_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/SendPort/hashCode_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/ReceivePort/skip_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/SendPort/operator_equality_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/RawReceivePort/handler_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/SendPort/send_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/SendPort/send_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/SendPort/send_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/SendPort/send_A01_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/SendPort/send_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawn_A03_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawn_A05_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawn_A01_t06: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawnUri_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawn_A04_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawn_A04_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawn_A03_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawn_A01_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawnUri_A02_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawn_A06_t06: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawn_A01_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawn_A02_t07: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawn_A02_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawn_A01_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawn_A02_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawnUri_A02_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawn_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawnUri_A01_t05: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawn_A06_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawnUri_A01_t01: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawnUri_A02_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawn_A06_t02: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawn_A03_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawn_A05_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawn_A02_t03: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawn_A02_t04: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawn_A06_t07: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawnUri_A02_t06: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawn_A05_t01: pass
-Done dartk-vm debug_x64 vm/cc/GetRandomBytes: pass
-Done dartk-vm debug_x64 vm/cc/DirectoryCurrentNoScope: pass
-Done dartk-vm debug_x64 vm/cc/DirectoryCurrent: pass
-Done dartk-vm debug_x64 vm/cc/DirectoryExists: pass
-Done dartk-vm debug_x64 vm/cc/DirectorySystemTemp: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawnUri_A02_t07: pass
-Done dartk-vm debug_x64 vm/cc/DirectorySystemTempExists: pass
-Done dartk-vm debug_x64 vm/cc/DirectoryCreateTemp: pass
-Done dartk-vm debug_x64 vm/cc/DirectorySetCurrent: pass
-Done dartk-vm debug_x64 vm/cc/DirectoryCreateDelete: pass
-Done dartk-vm debug_x64 vm/cc/DirectoryRename: pass
-Done dartk-vm debug_x64 vm/cc/CircularLinkedList: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawn_A02_t06: pass
-Done dartk-vm debug_x64 vm/cc/Read: pass
-Done dartk-vm debug_x64 vm/cc/HashMap_Basic: pass
-Done dartk-vm debug_x64 vm/cc/FileLength: pass
-Done dartk-vm debug_x64 vm/cc/FilePosition: pass
-Done dartk-vm debug_x64 vm/cc/StackAllocatedDestruction: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawnUri_A01_t02: pass
-Done dartk-vm debug_x64 vm/cc/StackAllocatedLongJump: pass
-Done dartk-vm debug_x64 vm/cc/StackResourceDestruction: pass
-Done dartk-vm debug_x64 vm/cc/StackResourceLongJump: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawn_A06_t01: pass
-Done dartk-vm debug_x64 vm/cc/StoreIntoObject: pass
-Done dartk-vm debug_x64 vm/cc/JumpAroundCrash: pass
-Done dartk-vm debug_x64 vm/cc/SimpleLoop: pass
-Done dartk-vm debug_x64 vm/cc/ReadArgument: pass
-Done dartk-vm debug_x64 vm/cc/AddressingModes: pass
-Done dartk-vm debug_x64 vm/cc/Cmpb: pass
-Done dartk-vm debug_x64 vm/cc/Testb: pass
-Done dartk-vm debug_x64 vm/cc/Increment: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawnUri_A01_t07: pass
-Done dartk-vm debug_x64 vm/cc/IncrementLong: pass
-Done dartk-vm debug_x64 vm/cc/Decrement: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawnUri_A01_t04: pass
-Done dartk-vm debug_x64 vm/cc/DecrementLong: pass
-Done dartk-vm debug_x64 vm/cc/SignedMultiply: pass
-Done dartk-vm debug_x64 vm/cc/UnsignedMultiply: pass
-Done dartk-vm debug_x64 vm/cc/SignedMultiply64: pass
-Done dartk-vm debug_x64 vm/cc/SignedMultiplyLong: pass
-Done dartk-vm debug_x64 vm/cc/OverflowSignedMultiply: pass
-Done dartk-vm debug_x64 vm/cc/SignedMultiply2: pass
-Done dartk-vm debug_x64 vm/cc/SignedMultiply1: pass
-Done dartk-vm debug_x64 vm/cc/UnsignedMultiplyLong: pass
-Done dartk-vm debug_x64 vm/cc/SignedDivide: pass
-Done dartk-vm debug_x64 vm/cc/UnsignedDivide: pass
-Done dartk-vm debug_x64 vm/cc/SignedDivideLong: pass
-Done dartk-vm debug_x64 vm/cc/UnsignedDivideLong: pass
-Done dartk-vm debug_x64 vm/cc/Negate: pass
-Done dartk-vm debug_x64 vm/cc/BitScanReverse: pass
-Done dartk-vm debug_x64 vm/cc/MoveExtend: pass
-Done dartk-vm debug_x64 vm/cc/MoveExtend32: pass
-Done dartk-vm debug_x64 vm/cc/MoveExtendMemory: pass
-Done dartk-vm debug_x64 vm/cc/MoveExtend32Memory: pass
-Done dartk-vm debug_x64 vm/cc/MoveWord: pass
-Done dartk-vm debug_x64 vm/cc/MoveWordRex: pass
-Done dartk-vm debug_x64 vm/cc/LongAddReg: pass
-Done dartk-vm debug_x64 vm/cc/LongAddImmediate: pass
-Done dartk-vm debug_x64 vm/cc/LongAddAddress: pass
-Done dartk-vm debug_x64 vm/cc/LongSubImmediate: pass
-Done dartk-vm debug_x64 vm/cc/LongSubReg: pass
-Done dartk-vm debug_x64 vm/cc/LongSubAddress: pass
-Done dartk-vm debug_x64 vm/cc/AddReg: pass
-Done dartk-vm debug_x64 vm/cc/AddImmediate: pass
-Done dartk-vm debug_x64 vm/cc/SubReg: pass
-Done dartk-vm debug_x64 vm/cc/SubImmediate: pass
-Done dartk-vm debug_x64 vm/cc/LogicalOps64: pass
-Done dartk-vm debug_x64 vm/cc/AddAddress: pass
-Done dartk-vm debug_x64 vm/cc/SubAddress: pass
-Done dartk-vm debug_x64 vm/cc/Bitwise64: pass
-Done dartk-vm debug_x64 vm/cc/LogicalOps: pass
-Done dartk-vm debug_x64 vm/cc/Bitwise: pass
-Done dartk-vm debug_x64 vm/cc/LogicalTestQ: pass
-Done dartk-vm debug_x64 vm/cc/LogicalTestL: pass
-Done dartk-vm debug_x64 vm/cc/CompareSwapEQ: pass
-Done dartk-vm debug_x64 vm/cc/CompareSwapEQ32: pass
-Done dartk-vm debug_x64 vm/cc/CompareSwapNEQ: pass
-Done dartk-vm debug_x64 vm/cc/CompareSwapNEQ32: pass
-Done dartk-vm debug_x64 vm/cc/Exchange: pass
-Done dartk-vm debug_x64 vm/cc/LargeConstant: pass
-Done dartk-vm debug_x64 vm/cc/CallSimpleLeaf: pass
-Done dartk-vm debug_x64 vm/cc/JumpSimpleLeaf: pass
-Done dartk-vm debug_x64 vm/cc/JumpIndirect: pass
-Done dartk-vm debug_x64 vm/cc/SingleFPMoves: pass
-Done dartk-vm debug_x64 vm/cc/SingleFPMoves2: pass
-Done dartk-vm debug_x64 vm/cc/PackedDoubleAdd: pass
-Done dartk-vm debug_x64 vm/cc/PackedDoubleNegate: pass
-Done dartk-vm debug_x64 vm/cc/PackedDoubleSub: pass
-Done dartk-vm debug_x64 vm/cc/PackedDoubleAbsolute: pass
-Done dartk-vm debug_x64 vm/cc/PackedDoubleMul: pass
-Done dartk-vm debug_x64 vm/cc/PackedDoubleDiv: pass
-Done dartk-vm debug_x64 vm/cc/PackedDoubleSqrt: pass
-Done dartk-vm debug_x64 vm/cc/PackedDoubleMin: pass
-Done dartk-vm debug_x64 vm/cc/PackedDoubleMax: pass
-Done dartk-vm debug_x64 vm/cc/PackedIntOperations2: pass
-Done dartk-vm debug_x64 vm/cc/PackedDoubleShuffle: pass
-Done dartk-vm debug_x64 vm/cc/PackedDoubleToSingle: pass
-Done dartk-vm debug_x64 vm/cc/PackedSingleToDouble: pass
-Done dartk-vm debug_x64 vm/cc/PackedFPOperations: pass
-Done dartk-vm debug_x64 vm/cc/SingleFPOperations: pass
-Done dartk-vm debug_x64 vm/cc/PackedIntOperations: pass
-Done dartk-vm debug_x64 vm/cc/PackedFPOperations2: pass
-Done dartk-vm debug_x64 vm/cc/PackedCompareEQ: pass
-Done dartk-vm debug_x64 vm/cc/PackedCompareNEQ: pass
-Done dartk-vm debug_x64 vm/cc/PackedSetWZero: pass
-Done dartk-vm debug_x64 vm/cc/PackedCompareLT: pass
-Done dartk-vm debug_x64 vm/cc/PackedCompareNLT: pass
-Done dartk-vm debug_x64 vm/cc/PackedCompareLE: pass
-Done dartk-vm debug_x64 vm/cc/PackedCompareNLE: pass
-Done dartk-vm debug_x64 vm/cc/PackedNegate: pass
-Done dartk-vm debug_x64 vm/cc/PackedAbsolute: pass
-Done dartk-vm debug_x64 vm/cc/PackedMin: pass
-Done dartk-vm debug_x64 vm/cc/PackedLogicalOr: pass
-Done dartk-vm debug_x64 vm/cc/PackedMax: pass
-Done dartk-vm debug_x64 vm/cc/PackedLogicalNot: pass
-Done dartk-vm debug_x64 vm/cc/PackedLogicalAnd: pass
-Done dartk-vm debug_x64 vm/cc/PackedMoveHighLow: pass
-Done dartk-vm debug_x64 vm/cc/PackedMoveLowHigh: pass
-Done dartk-vm debug_x64 vm/cc/PackedUnpackHigh: pass
-Done dartk-vm debug_x64 vm/cc/PackedUnpackLow: pass
-Done dartk-vm debug_x64 vm/cc/PackedUnpackHighPair: pass
-Done dartk-vm debug_x64 vm/cc/PackedUnpackLowPair: pass
-Done dartk-vm debug_x64 vm/cc/DoubleFPMoves: pass
-Done dartk-vm debug_x64 vm/cc/DoubleFPOperations: pass
-Done dartk-vm debug_x64 vm/cc/Int32ToDoubleConversion: pass
-Done dartk-vm debug_x64 vm/cc/Int64ToDoubleConversion: pass
-Done dartk-vm debug_x64 vm/cc/DoubleToInt64Conversion: pass
-Done dartk-vm debug_x64 vm/cc/TestObjectCompare: pass
-Done dartk-vm debug_x64 vm/cc/TestAlign0: pass
-Done dartk-vm debug_x64 vm/cc/TestNop: pass
-Done dartk-vm debug_x64 vm/cc/TestAlign1Offset1: pass
-Done dartk-vm debug_x64 vm/cc/TestAlign1: pass
-Done dartk-vm debug_x64 vm/cc/TestAlignLarge: pass
-Done dartk-vm debug_x64 vm/cc/TestAdds: pass
-Done dartk-vm debug_x64 vm/cc/TestNot: pass
-Done dartk-vm debug_x64 vm/cc/TestNotInt32: pass
-Done dartk-vm debug_x64 vm/cc/XorpdZeroing: pass
-Done dartk-vm debug_x64 vm/cc/XorpdZeroing2: pass
-Done dartk-vm debug_x64 vm/cc/Pxor: pass
-Done dartk-vm debug_x64 vm/cc/SquareRootDouble: pass
-Done dartk-vm debug_x64 vm/cc/Sine: pass
-Done dartk-vm debug_x64 vm/cc/DoubleFPUStackMoves: pass
-Done dartk-vm debug_x64 vm/cc/Cosine: pass
-Done dartk-vm debug_x64 vm/cc/IntToDoubleConversion: pass
-Done dartk-vm debug_x64 vm/cc/ExtractSignBits: pass
-Done dartk-vm debug_x64 vm/cc/DoubleAbs: pass
-Done dartk-vm debug_x64 vm/cc/DoubleToDoubleTrunc: pass
-Done dartk-vm debug_x64 vm/cc/Assert: pass
-Done dartk-vm debug_x64 vm/cc/TestRepMovsBytes: pass
-Done dartk-vm debug_x64 vm/cc/Expect: pass
-Done dartk-vm debug_x64 vm/cc/Fail0: pass
-Done dartk-vm debug_x64 vm/cc/TestSetCC: pass
-Done dartk-vm debug_x64 vm/cc/Fail2: pass
-Done dartk-vm debug_x64 vm/cc/ConditionalMovesCompare: pass
-Done dartk-vm debug_x64 vm/cc/BitTest: pass
-Done dartk-vm debug_x64 vm/cc/FetchAndIncrement: pass
-Done dartk-vm debug_x64 vm/cc/FetchAndDecrement: pass
-Done dartk-vm debug_x64 vm/cc/FetchAndIncrementSigned: pass
-Done dartk-vm debug_x64 vm/cc/FetchAndDecrementSigned: pass
-Done dartk-vm debug_x64 vm/cc/IncrementBy: pass
-Done dartk-vm debug_x64 vm/cc/DecrementBy: pass
-Done dartk-vm debug_x64 vm/cc/LoadRelaxed: pass
-Done dartk-vm debug_x64 vm/cc/ConditionalMovesEqual: pass
-Done dartk-vm debug_x64 vm/cc/ConditionalMovesNoOverflow: pass
-Done dartk-vm debug_x64 vm/cc/BigintSmi: pass
-Done dartk-vm debug_x64 vm/cc/Fail1: pass
-Done dartk-vm debug_x64 vm/cc/Ast: pass
-Done dartk-vm debug_x64 vm/cc/AstPrinter: pass
-Done dartk-vm debug_x64 vm/cc/CompareAndSwapUint32: pass
-Done dartk-vm debug_x64 vm/cc/CompareAndSwapWord: pass
-Done dartk-vm debug_x64 vm/cc/BigintUint64: pass
-Done dartk-vm debug_x64 vm/cc/BigintInt64: pass
-Done dartk-vm debug_x64 vm/cc/BigintDouble: pass
-Done dartk-vm debug_x64 vm/cc/BitFields: pass
-Done dartk-vm debug_x64 vm/cc/BigintHexStrings: pass
-Done dartk-vm debug_x64 vm/cc/BoolField: pass
-Done dartk-vm debug_x64 vm/cc/BigintDecStrings: pass
-Done dartk-vm debug_x64 vm/cc/BigintCompare: pass
-Done dartk-vm debug_x64 vm/cc/BigintDecimalStrings: pass
-Done dartk-vm debug_x64 vm/cc/BitSetBasic: pass
-Done dartk-vm debug_x64 vm/cc/BitVector: pass
-Done dartk-vm debug_x64 vm/cc/BitmapBuilder: pass
-Done dartk-vm debug_x64 vm/cc/DescriptorList_TokenPositions: pass
-Done dartk-vm debug_x64 vm/cc/ClassFinalizer: pass
-Done dartk-vm debug_x64 vm/cc/ClassFinalize_Cycles: pass
-Done dartk-vm debug_x64 vm/cc/ClassFinalize_Resolve: pass
-Done dartk-vm debug_x64 vm/cc/StackMapCodegen: pass
-Done dartk-vm debug_x64 vm/cc/SimpleReturnCodegen: pass
-Done dartk-vm debug_x64 vm/cc/SimpleStaticCallCodegen: pass
-Done dartk-vm debug_x64 vm/cc/SmiReturnCodegen: pass
-Done dartk-vm debug_x64 vm/cc/StaticCallReturnParameterCodegen: pass
-Done dartk-vm debug_x64 vm/cc/StaticCallSmiParamSumCodegen: pass
-Done dartk-vm debug_x64 vm/cc/SmiAddCodegen: pass
-Done dartk-vm debug_x64 vm/cc/GenericAddCodegen: pass
-Done dartk-vm debug_x64 vm/cc/ClassHierarchyAnalysis: pass
-Done dartk-vm debug_x64 vm/cc/SmiBinaryOpCodegen: pass
-Done dartk-vm debug_x64 vm/cc/BoolNotCodegen: pass
-Done dartk-vm debug_x64 vm/cc/BoolAndCodegen: pass
-Done dartk-vm debug_x64 vm/cc/StackMapGC: pass
-Done dartk-vm debug_x64 vm/cc/SmiUnaryOpCodegen: pass
-Done dartk-vm debug_x64 vm/cc/BinaryOpCodegen: pass
-Done dartk-vm debug_x64 vm/cc/DoubleUnaryOpCodegen: pass
-Done dartk-vm debug_x64 vm/cc/StaticCallCodegen: pass
-Done dartk-vm debug_x64 vm/cc/InstanceCallCodegen: pass
-Done dartk-vm debug_x64 vm/cc/AllocateNewObjectCodegen: pass
-Done dartk-vm debug_x64 vm/cc/IcDataAccess: pass
-Done dartk-vm debug_x64 vm/cc/CompileScript: pass
-Done dartk-vm debug_x64 vm/cc/CompileFunctionOnHelperThread: pass
-Done dartk-vm debug_x64 vm/cc/Id: pass
-Done dartk-vm debug_x64 vm/cc/GetCpuModelTest: pass
-Done dartk-vm debug_x64 vm/cc/CompileFunction: pass
-Done dartk-vm debug_x64 vm/cc/EvalExpressionWithLazyCompile: pass
-Done dartk-vm debug_x64 vm/cc/EvalExpressionExhaustCIDs: pass
-Done dartk-vm debug_x64 vm/cc/RegenerateAllocStubs: pass
-Done dartk-vm debug_x64 vm/cc/EvalExpression: pass
-Done dartk-vm debug_x64 vm/cc/OutOfMemoryStackTraceInfo: pass
-Done dartk-vm debug_x64 vm/cc/StackTraceInfo: pass
-Done dartk-vm debug_x64 vm/cc/ErrorHandleTypes: pass
-Done dartk-vm debug_x64 vm/cc/UnhandleExceptionError: pass
-Done dartk-vm debug_x64 vm/cc/DeepStackTraceInfo: pass
-Done dartk-vm debug_x64 vm/cc/ErrorHandleBasics: pass
-Done dartk-vm debug_x64 vm/cc/Dart_Error: pass
-Done dartk-vm debug_x64 vm/cc/Null: pass
-Done dartk-vm debug_x64 vm/cc/EmptyString: pass
-Done dartk-vm debug_x64 vm/cc/IdentityEquals: pass
-Done dartk-vm debug_x64 vm/cc/ObjectEquals: pass
-Done dartk-vm debug_x64 vm/cc/Dart_PropagateError: pass
-Done dartk-vm debug_x64 vm/cc/DoubleValues: pass
-Done dartk-vm debug_x64 vm/cc/InstanceValues: pass
-Done dartk-vm debug_x64 vm/cc/CurrentStackTraceInfo: pass
-Done dartk-vm debug_x64 vm/cc/InstanceGetType: pass
-Done dartk-vm debug_x64 vm/cc/BooleanValues: pass
-Done dartk-vm debug_x64 vm/cc/BooleanConstants: pass
-Done dartk-vm debug_x64 vm/cc/CustomIsolates: pass
-Done dartk-vm debug_x64 vm/cc/IntegerValues: pass
-Done dartk-vm debug_x64 vm/cc/IntegerFitsIntoInt64: pass
-Done dartk-vm debug_x64 vm/cc/IntegerFitsIntoUint64: pass
-Done dartk-vm debug_x64 vm/cc/ArrayValues: pass
-Done dartk-vm debug_x64 vm/cc/IsString: pass
-Done dartk-vm debug_x64 vm/cc/NewString: pass
-Done dartk-vm debug_x64 vm/cc/ExternalStringCallback: pass
-Done dartk-vm debug_x64 vm/cc/ExternalStringPretenure: pass
-Done dartk-vm debug_x64 vm/cc/ExternalTypedDataPretenure: pass
-Done dartk-vm debug_x64 vm/cc/NumberValues: pass
-Done dartk-vm debug_x64 vm/cc/TypedDataAccess: pass
-Done dartk-vm debug_x64 vm/cc/MalformedStringToUTF8: pass
-Done dartk-vm debug_x64 vm/cc/ListAccess: pass
-Done dartk-vm debug_x64 vm/cc/MapAccess: pass
-Done dartk-vm debug_x64 vm/cc/ByteBufferAccess: pass
-Done dartk-vm debug_x64 vm/cc/IsFuture: pass
-Done dartk-vm debug_x64 vm/cc/TypedDataViewListGetAsBytes: pass
-Done dartk-vm debug_x64 vm/cc/TypedDataViewListIsTypedData: pass
-Done dartk-vm debug_x64 vm/cc/TypedDataDirectAccessUnverified: pass
-Done dartk-vm debug_x64 vm/cc/TypedDataDirectAccessVerified: pass
-Done dartk-vm debug_x64 vm/cc/ByteDataAccess: pass
-Done dartk-vm debug_x64 vm/cc/OptimizedExternalByteDataAccess: pass
-Done dartk-vm debug_x64 co19/LibTest/isolate/Isolate/spawn_A01_t04: pass
-Done dartk-vm debug_x64 vm/cc/ExternalByteDataAccess: pass
-Done dartk-vm debug_x64 vm/cc/TypedDataDirectAccess1Verified: pass
-Done dartk-vm debug_x64 vm/cc/ExternalTypedDataAccess: pass
-Done dartk-vm debug_x64 vm/cc/TypedDataDirectAccess1Unverified: pass
-Done dartk-vm debug_x64 vm/cc/ExternalClampedTypedDataAccess: pass
-Done dartk-vm debug_x64 vm/cc/TypedDataViewDirectAccessVerified: pass
-Done dartk-vm debug_x64 vm/cc/TypedDataViewDirectAccessUnverified: pass
-Done dartk-vm debug_x64 vm/cc/SlowFinalizer: pass
-Done dartk-vm debug_x64 vm/cc/ExternalTypedDataCallback: pass
-Done dartk-vm debug_x64 vm/cc/PersistentHandles: pass
-Done dartk-vm debug_x64 vm/cc/EnterExitScope: pass
-Done dartk-vm debug_x64 vm/cc/ByteDataDirectAccessUnverified: pass
-Done dartk-vm debug_x64 vm/cc/ByteDataDirectAccessVerified: pass
-Done dartk-vm debug_x64 vm/cc/NewPersistentHandle_FromPersistentHandle: pass
-Done dartk-vm debug_x64 vm/cc/AssignToPersistentHandle: pass
-Done dartk-vm debug_x64 vm/cc/WeakPersistentHandle: pass
-Done dartk-vm debug_x64 vm/cc/ExternalUint8ClampedArrayAccess: pass
-Done dartk-vm debug_x64 vm/cc/WeakPersistentHandleCallback: pass
-Done dartk-vm debug_x64 vm/cc/WeakPersistentHandleErrors: pass
-Done dartk-vm debug_x64 vm/cc/WeakPersistentHandleNoCallback: pass
-Done dartk-vm debug_x64 vm/cc/WeakPersistentHandlesCallbackShutdown: pass
-Done dartk-vm debug_x64 vm/cc/WeakPersistentHandleExternalAllocationSize: pass
-Done dartk-vm debug_x64 vm/cc/WeakPersistentHandleExternalAllocationSizeNewspaceGC: pass
-Done dartk-vm debug_x64 vm/cc/Float32x4List: pass
-Done dartk-vm debug_x64 vm/cc/WeakPersistentHandleExternalAllocationSizeOldspaceGC: pass
-Done dartk-vm debug_x64 vm/cc/ImplicitReferencesOldSpace: pass
-Done dartk-vm debug_x64 vm/cc/WeakPersistentHandleExternalAllocationSizeOddReferents: pass
-Done dartk-vm debug_x64 vm/cc/ImplicitReferencesNewSpace: pass
-Done dartk-vm debug_x64 vm/cc/SingleGarbageCollectionCallback: pass
-Done dartk-vm debug_x64 vm/cc/SetGarbageCollectionCallbacks: pass
-Done dartk-vm debug_x64 vm/cc/LocalHandles: pass
-Done dartk-vm debug_x64 vm/cc/Isolates: pass
-Done dartk-vm debug_x64 vm/cc/LocalZoneMemory: pass
-Done dartk-vm debug_x64 vm/cc/CurrentIsolateData: pass
-Done dartk-vm debug_x64 vm/cc/DebugName: pass
-Done dartk-vm debug_x64 vm/cc/SetMessageCallbacks: pass
-Done dartk-vm debug_x64 vm/cc/IsolateSetCheckedMode: pass
-Done dartk-vm debug_x64 vm/cc/InjectNativeFields2: pass
-Done dartk-vm debug_x64 vm/cc/SetStickyError: pass
-Done dartk-vm debug_x64 vm/cc/FieldAccess: pass
-Done dartk-vm debug_x64 vm/cc/TypeGetNonParamtericTypes: pass
-Done dartk-vm debug_x64 vm/cc/TypeGetParameterizedTypes: pass
-Done dartk-vm debug_x64 vm/cc/SetField_FunnyValue: pass
-Done dartk-vm debug_x64 vm/cc/InjectNativeFields3: pass
-Done dartk-vm debug_x64 vm/cc/NativeFieldAccess: pass
-Done dartk-vm debug_x64 vm/cc/InjectNativeFields4: pass
-Done dartk-vm debug_x64 vm/cc/InjectNativeFieldsSuperClass: pass
-Done dartk-vm debug_x64 vm/cc/TestNativeFieldsAccess: pass
-Done dartk-vm debug_x64 vm/cc/ImplicitNativeFieldAccess: pass
-Done dartk-vm debug_x64 vm/cc/NegativeNativeFieldAccess: pass
-Done dartk-vm debug_x64 vm/cc/NegativeNativeFieldInIsolateMessage: pass
-Done dartk-vm debug_x64 vm/cc/New_Issue2971: pass
-Done dartk-vm debug_x64 vm/cc/GetStaticField_RunsInitializer: pass
-Done dartk-vm debug_x64 vm/cc/Invoke_Null: pass
-Done dartk-vm debug_x64 vm/cc/Invoke_CrossLibrary: pass
-Done dartk-vm debug_x64 vm/cc/SetField_CheckIsolate: pass
-Done dartk-vm debug_x64 vm/cc/GetField_CheckIsolate: pass
-Done dartk-vm debug_x64 vm/cc/New: pass
-Done dartk-vm debug_x64 vm/cc/InvokeNoSuchMethod: pass
-Done dartk-vm debug_x64 vm/cc/Invoke: pass
-Done dartk-vm debug_x64 vm/cc/Invoke_PrivateStatic: pass
-Done dartk-vm debug_x64 vm/cc/Invoke_FunnyArgs: pass
-Done dartk-vm debug_x64 vm/cc/InvokeClosure: pass
-Done dartk-vm debug_x64 vm/cc/GetNativeArguments: pass
-Done dartk-vm debug_x64 vm/cc/ThrowException: pass
-Done dartk-vm debug_x64 vm/cc/LookupLibrary: pass
-Done dartk-vm debug_x64 vm/cc/LibraryName: pass
-Done dartk-vm debug_x64 vm/cc/LibraryId: pass
-Done dartk-vm debug_x64 vm/cc/LibraryUrl: pass
-Done dartk-vm debug_x64 vm/cc/LibraryGetClassNames: pass
-Done dartk-vm debug_x64 vm/cc/GetFunctionNames: pass
-Done dartk-vm debug_x64 vm/cc/GetType: pass
-Done dartk-vm debug_x64 vm/cc/LibraryImportLibrary: pass
-Done dartk-vm debug_x64 vm/cc/ImportLibraryWithPrefix: pass
-Done dartk-vm debug_x64 vm/cc/LoadLibrary: pass
-Done dartk-vm debug_x64 vm/cc/LoadSource: pass
-Done dartk-vm debug_x64 vm/cc/LoadLibrary_CompileError: pass
-Done dartk-vm debug_x64 vm/cc/LoadSource_LateLoad: pass
-Done dartk-vm debug_x64 vm/cc/LoadPatch: pass
-Done dartk-vm debug_x64 vm/cc/LoadPatchSignatureMismatch: pass
-Done dartk-vm debug_x64 vm/cc/ParsePatchLibrary: pass
-Done dartk-vm debug_x64 vm/cc/GetNativeArgumentCount: pass
-Done dartk-vm debug_x64 vm/cc/ImportLibrary2: pass
-Done dartk-vm debug_x64 vm/cc/ImportLibrary3: pass
-Done dartk-vm debug_x64 vm/cc/ImportLibrary4: pass
-Done dartk-vm debug_x64 vm/cc/ImportLibrary5: pass
-Done dartk-vm debug_x64 vm/cc/InstanceOf: pass
-Done dartk-vm debug_x64 vm/cc/LoadScript: pass
-Done dartk-vm debug_x64 vm/cc/RootLibrary: pass
-Done dartk-vm debug_x64 vm/cc/IllegalPost: pass
-Done dartk-vm debug_x64 vm/cc/LoadScript_CompileError: pass
-Done dartk-vm debug_x64 vm/cc/IllegalNewSendPort: pass
-Done dartk-vm debug_x64 vm/cc/IsolateShutdown: pass
-Done dartk-vm debug_x64 vm/cc/SetNativeResolver: pass
-Done dartk-vm debug_x64 vm/cc/NewNativePort: pass
-Done dartk-vm debug_x64 vm/cc/NativePortReceiveInteger: pass
-Done dartk-vm debug_x64 vm/cc/RunLoop_Success: pass
-Done dartk-vm debug_x64 vm/cc/NativePortReceiveNull: pass
-Done dartk-vm debug_x64 vm/cc/NativePortPostInteger: pass
-Done dartk-vm debug_x64 vm/cc/RunLoop_Exception: pass
-Done dartk-vm debug_x64 vm/cc/TwoNewSpacePeers: pass
-Done dartk-vm debug_x64 vm/cc/RangeLimits: pass
-Done dartk-vm debug_x64 vm/cc/NativeFunctionClosure: pass
-Done dartk-vm debug_x64 vm/cc/OneNewSpacePeer: pass
-Done dartk-vm debug_x64 vm/cc/InvalidGetSetPeer: pass
-Done dartk-vm debug_x64 vm/cc/NewString_Null: pass
-Done dartk-vm debug_x64 vm/cc/CollectTwoNewSpacePeers: pass
-Done dartk-vm debug_x64 vm/cc/CollectOneNewSpacePeer: pass
-Done dartk-vm debug_x64 vm/cc/CopyNewSpacePeers: pass
-Done dartk-vm debug_x64 vm/cc/OnePromotedPeer: pass
-Done dartk-vm debug_x64 vm/cc/OneOldSpacePeer: pass
-Done dartk-vm debug_x64 vm/cc/NativeStaticFunctionClosure: pass
-Done dartk-vm debug_x64 vm/cc/CollectOneOldSpacePeer: pass
-Done dartk-vm debug_x64 vm/cc/TwoOldSpacePeers: pass
-Done dartk-vm debug_x64 vm/cc/MakeExternalString: pass
-Done dartk-vm debug_x64 vm/cc/CollectTwoOldSpacePeers: pass
-Done dartk-vm debug_x64 vm/cc/ExternalizeConstantStrings: pass
-Done dartk-vm debug_x64 vm/cc/LazyLoadDeoptimizes: pass
-Done dartk-vm debug_x64 vm/cc/GuardExternalizedString: pass
-Done dartk-vm debug_x64 vm/cc/ExternalStringDeoptimize: pass
-Done dartk-vm debug_x64 vm/cc/ExternalStringPolymorphicDeoptimize: pass
-Done dartk-vm debug_x64 vm/cc/ExternalStringLoadElimination: pass
-Done dartk-vm debug_x64 vm/cc/ExternalStringGuardFieldDeoptimize: pass
-Done dartk-vm debug_x64 vm/cc/ExternalStringStaticFieldDeoptimize: pass
-Done dartk-vm debug_x64 vm/cc/Timeline_Dart_TimelineAsyncDisabled: pass
-Done dartk-vm debug_x64 vm/cc/Timeline_Dart_TimelineInstant: pass
-Done dartk-vm debug_x64 vm/cc/Timeline_Dart_TimelineDuration: pass
-Done dartk-vm debug_x64 vm/cc/Timeline_Dart_TimelineAsync: pass
-Done dartk-vm debug_x64 vm/cc/ExternalStringTrimDoubleParse: pass
-Done dartk-vm debug_x64 vm/cc/ExternalStringDoubleParse: pass
-Done dartk-vm debug_x64 vm/cc/ExternalStringIndexOf: pass
-Done dartk-vm debug_x64 vm/cc/Timeline_Dart_EmbedderTimelineStartStopRecording: pass
-Done dartk-vm debug_x64 vm/cc/StringFromExternalTypedData: pass
-Done dartk-vm debug_x64 vm/cc/Timeline_Dart_TimelineGetTraceGlobalOverride: pass
-Done dartk-vm debug_x64 vm/cc/Timeline_Dart_TimelineGetTraceWithDartEvents: pass
-Done dartk-vm debug_x64 vm/cc/Timeline_Dart_TimelineGetTrace: pass
-Done dartk-vm debug_x64 vm/cc/Timeline_Dart_TimelineGetTraceOnlyDartEvents: pass
-Done dartk-vm debug_x64 vm/cc/DartEntry: pass
-Done dartk-vm debug_x64 vm/cc/Timeline_Dart_GlobalTimelineGetTrace: pass
-Done dartk-vm debug_x64 vm/cc/InvokeStatic_CompileError: pass
-Done dartk-vm debug_x64 vm/cc/InvokeDynamic_CompileError: pass
-Done dartk-vm debug_x64 vm/cc/Timeline_Dart_GlobalTimelineGetTrace_Threaded: pass
-Done dartk-vm debug_x64 vm/cc/Dart_LoadLibraryPatch_1: pass
-Done dartk-vm debug_x64 vm/cc/Dart_LoadLibraryPatch_Error1: pass
-Done dartk-vm debug_x64 vm/cc/Dart_LoadLibraryPatch_Error3: pass
-Done dartk-vm debug_x64 vm/cc/Dart_LoadLibraryPatch_Error2: pass
-Done dartk-vm debug_x64 vm/cc/Debugger_SetBreakpointInPartOfLibrary: pass
-Done dartk-vm debug_x64 vm/cc/Debugger_GetBreakpointsById: pass
-Done dartk-vm debug_x64 vm/cc/Debugger_SetBreakpointInFunctionLiteralFieldInitializers: pass
-Done dartk-vm debug_x64 vm/cc/Debugger_RemoveBreakpoint: pass
-Done dartk-vm debug_x64 vm/cc/Debugger_PrintBreakpointsToJSONArray: pass
-Done dartk-vm debug_x64 vm/cc/Debugger_PauseEvent: pass
-Done dartk-vm debug_x64 vm/cc/Debugger_RewindOneFrame_Unoptimized: pass
-Done dartk-vm debug_x64 vm/cc/Debugger_RewindTwoFrames_Unoptimized: pass
-Done dartk-vm debug_x64 vm/cc/Debug_Breakpoint: pass
-Done dartk-vm debug_x64 vm/cc/Debug_InspectStack_NotOptimized: pass
-Done dartk-vm debug_x64 vm/cc/Debug_InspectStackWithClosure_NotOptimized: pass
-Done dartk-vm debug_x64 vm/cc/Debug_InspectStack_Optimized: pass
-Done dartk-vm debug_x64 vm/cc/Debug_InspectStackWithClosure_Optimized: pass
-Done dartk-vm debug_x64 vm/cc/Debug_StepOut: pass
-Done dartk-vm debug_x64 vm/cc/Debug_StepInto: pass
-Done dartk-vm debug_x64 vm/cc/Debug_IgnoreBP: pass
-Done dartk-vm debug_x64 vm/cc/Debug_DeoptimizeFunction: pass
-Done dartk-vm debug_x64 vm/cc/Debug_SingleStep: pass
-Done dartk-vm debug_x64 vm/cc/Debug_ClosureBreakpoint: pass
-Done dartk-vm debug_x64 vm/cc/Debug_ExprClosureBreakpoint: pass
-Done dartk-vm debug_x64 vm/cc/Debug_DeleteBreakpoint: pass
-Done dartk-vm debug_x64 vm/cc/Debug_BreakpointStubPatching: pass
-Done dartk-vm debug_x64 vm/cc/Debug_InspectStaticField: pass
-Done dartk-vm debug_x64 vm/cc/Debug_InspectObject: pass
-Done dartk-vm debug_x64 vm/cc/Debug_IsolateID: pass
-Done dartk-vm debug_x64 vm/cc/Debug_StackTraceDump1: pass
-Done dartk-vm debug_x64 vm/cc/Debug_StackTraceDump2: pass
-Done dartk-vm debug_x64 vm/cc/Debug_EvaluateExpr: pass
-Done dartk-vm debug_x64 vm/cc/Debug_EvaluateInActivationOfEvaluate: pass
-Done dartk-vm debug_x64 vm/cc/Debug_BreakOnUnhandledException: pass
-Done dartk-vm debug_x64 vm/cc/Disassembler: pass
-Done dartk-vm debug_x64 vm/cc/BasicFlags: pass
-Done dartk-vm debug_x64 vm/cc/ParseFlags: pass
-Done dartk-vm debug_x64 vm/cc/Debug_GetClosureInfo: pass
-Done dartk-vm debug_x64 vm/cc/Debug_GetSupertype: pass
-Done dartk-vm debug_x64 vm/cc/Debug_ListSuperType: pass
-Done dartk-vm debug_x64 vm/cc/Debug_ScriptGetTokenInfo_Basic: pass
-Done dartk-vm debug_x64 vm/cc/Debug_ScriptGetTokenInfo_MultiLineInterpolation: pass
-Done dartk-vm debug_x64 vm/cc/UnhandledExceptions: pass
-Done dartk-vm debug_x64 vm/cc/SourcePosition_InstanceCalls: pass
-Done dartk-vm debug_x64 vm/cc/SourcePosition_If: pass
-Done dartk-vm debug_x64 vm/cc/SourcePosition_ForLoop: pass
-Done dartk-vm debug_x64 vm/cc/SourcePosition_While: pass
-Done dartk-vm debug_x64 vm/cc/SourcePosition_WhileContinueBreak: pass
-Done dartk-vm debug_x64 vm/cc/SourcePosition_LoadIndexed: pass
-Done dartk-vm debug_x64 vm/cc/SourcePosition_StoreIndexed: pass
-Done dartk-vm debug_x64 vm/cc/SourcePosition_SyntheticTokens: pass
-Done dartk-vm debug_x64 vm/cc/SourcePosition_BitwiseOperations: pass
-Done dartk-vm debug_x64 vm/cc/RangeTests: pass
-Done dartk-vm debug_x64 vm/cc/RangeTestsInfinity: pass
-Done dartk-vm debug_x64 vm/cc/SourcePosition_Switch: pass
-Done dartk-vm debug_x64 vm/cc/SourcePosition_IfElse: pass
-Done dartk-vm debug_x64 vm/cc/RangeSub: pass
-Done dartk-vm debug_x64 vm/cc/SourcePosition_TryCatchFinally: pass
-Done dartk-vm debug_x64 vm/cc/RangeUtils: pass
-Done dartk-vm debug_x64 vm/cc/SourcePosition_InstanceFields: pass
-Done dartk-vm debug_x64 vm/cc/RangeBinaryOp: pass
-Done dartk-vm debug_x64 vm/cc/RangeAdd: pass
-Done dartk-vm debug_x64 vm/cc/RangeAnd: pass
-Done dartk-vm debug_x64 vm/cc/SourcePosition_Async: pass
-Done dartk-vm debug_x64 vm/cc/FreeList: pass
-Done dartk-vm debug_x64 vm/cc/RangeIntersectionMinMax: pass
-Done dartk-vm debug_x64 vm/cc/FreeListProtected: pass
-Done dartk-vm debug_x64 vm/cc/RangeJoinMinMax: pass
-Done dartk-vm debug_x64 vm/cc/GrowableArray: pass
-Done dartk-vm debug_x64 vm/cc/FreeListProtectedVariableSizeObjects: pass
-Done dartk-vm debug_x64 vm/cc/GrowableArraySort: pass
-Done dartk-vm debug_x64 vm/cc/MallocGrowableArray: pass
-Done dartk-vm debug_x64 vm/cc/GrowableHandlePtr: pass
-Done dartk-vm debug_x64 vm/cc/FreeListProtectedTinyObjects: pass
-Done dartk-vm debug_x64 vm/cc/AllocateScopeHandle: pass
-Done dartk-vm debug_x64 vm/cc/AllocateZoneHandle: pass
-Done dartk-vm debug_x64 vm/cc/CheckHandleValidity: pass
-Done dartk-vm debug_x64 vm/cc/DirectChainedHashMapInsertRemove: pass
-Done dartk-vm debug_x64 vm/cc/DirectChainedHashMap: pass
-Done dartk-vm debug_x64 vm/cc/GuardFieldSimpleTest: pass
-Done dartk-vm debug_x64 vm/cc/GuardFieldFinalListTest: pass
-Done dartk-vm debug_x64 vm/cc/GuardFieldFinalVariableLengthListTest: pass
-Done dartk-vm debug_x64 vm/cc/MallocDirectChainedHashMap: pass
-Done dartk-vm debug_x64 vm/cc/GuardFieldConstructor2Test: pass
-Done dartk-vm debug_x64 vm/cc/DirectChainedHashMapIterator: pass
-Done dartk-vm debug_x64 vm/cc/GuardFieldConstructorTest: pass
-Done dartk-vm debug_x64 vm/cc/Sets: pass
-Done dartk-vm debug_x64 vm/cc/HashTable: pass
-Done dartk-vm debug_x64 vm/cc/Maps: pass
-Done dartk-vm debug_x64 vm/cc/IterateReadOnly: pass
-Done dartk-vm debug_x64 vm/cc/FindObject: pass
-Done dartk-vm debug_x64 vm/cc/BecomeFowardNewToNew: pass
-Done dartk-vm debug_x64 vm/cc/BecomeFowardOldToOld: pass
-Done dartk-vm debug_x64 vm/cc/OldGC: pass
-Done dartk-vm debug_x64 vm/cc/OldGC_Unsync: pass
-Done dartk-vm debug_x64 vm/cc/LargeSweep: pass
-Done dartk-vm debug_x64 vm/cc/ClassHeapStats: pass
-Done dartk-vm debug_x64 vm/cc/ArrayHeapStats: pass
-Done dartk-vm debug_x64 vm/cc/BecomeFowardOldToNew: pass
-Done dartk-vm debug_x64 vm/cc/BecomeFowardNewToOld: pass
-Done dartk-vm debug_x64 vm/cc/BecomeForwardRememberedObject: pass
-Done dartk-vm debug_x64 vm/cc/CollectAllGarbage_DeadOldToNew: pass
-Done dartk-vm debug_x64 vm/cc/CollectAllGarbage_DeadNewToOld: pass
-Done dartk-vm debug_x64 vm/cc/CollectAllGarbage_DeadGenCycle: pass
-Done dartk-vm debug_x64 vm/cc/CollectAllGarbage_LiveNewToOld: pass
-Done dartk-vm debug_x64 vm/cc/CollectAllGarbage_LiveOldDeadNew: pass
-Done dartk-vm debug_x64 vm/cc/CollectAllGarbage_LiveOldToNew: pass
-Done dartk-vm debug_x64 vm/cc/CollectAllGarbage_LiveNewToOldChain: pass
-Done dartk-vm debug_x64 vm/cc/CollectAllGarbage_LiveNewDeadOld: pass
-Done dartk-vm debug_x64 vm/cc/CollectAllGarbage_LiveOldToNewChain: pass
-Done dartk-vm debug_x64 vm/cc/InstructionTests: pass
-Done dartk-vm debug_x64 vm/cc/OptimizationTests: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_BadClass: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_FunctionReplacement: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_SavedClosure: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_StaticValuePreserved: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_TopLevelFieldAdded: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_ClassFieldAdded2: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_ClassFieldAdded: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_ClassFieldRemoved: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_ClassAdded: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_LibraryDebuggable: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_LibraryImportRemoved: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_LibraryImportAdded: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_ConstructorChanged: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_ImplicitConstructorChanged: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_TypeIdentity: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_TypeIdentityParameter: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_TypeIdentityGeneric: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_SuperClassChanged: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_LibraryHide: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_LiveStack: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_Generics: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_LibraryShow: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_MixinChanged: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_SmiFastPathStubs: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_ImportedMixinFunction: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_PendingSuperCall: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_LibraryLookup: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_TearOff_Instance_Equality: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_TearOff_Library_Identity: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_ComplexInheritanceChange: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_TearOff_Class_Identity: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_TopLevelParseError: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_TearOff_List_Set: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_DanglingGetter_Instance: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_DanglingGetter_Library: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_DanglingGetter_Class: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_DanglingSetter_Instance: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_DanglingSetter_Class: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_DanglingSetter_Library: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_TearOff_AddArguments: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_TearOff_AddArguments2: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_EnumIdentical: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_EnumEquality: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_EnumAddition: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_EnumReorderIdentical: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_ConstantIdentical: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_EnumIdentityReload: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_EnumDelete: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_DirectSubclasses_Failure: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_DirectSubclasses_GhostSubclass: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_EnumValuesToString: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_ChangeInstanceFormat0: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_ChangeInstanceFormat4: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_ChangeInstanceFormat5: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_ChangeInstanceFormat2: pass
-Done dartk-vm debug_x64 vm/cc/FindCodeObject: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_NoLibsModified: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_MainLibModified: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_ImportedLibModified: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_PrefixImportedLibModified: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_ExportedLibModified: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_ChangeInstanceFormat6: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_ShapeChangeRetainsHash: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_StaticTearOffRetainsHash: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_SimpleConstFieldUpdate: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_RunNewFieldInitializers: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_ConstFieldUpdate: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_RunNewFieldInitializersSyntaxError: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_RunNewFieldInitializersReferenceStaticField: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_RunNewFieldInitializersSyntaxError2: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_RunNewFieldInitializersMutateStaticField: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_RunNewFieldInitializersThrows: pass
-Done dartk-vm debug_x64 vm/cc/IsolateCurrent: pass
-Done dartk-vm debug_x64 vm/cc/StackLimitInterrupts: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_RunNewFieldInitializersSyntaxError3: pass
-Done dartk-vm debug_x64 vm/cc/NoOOBMessageScope: pass
-Done dartk-vm debug_x64 vm/cc/JSON_TextBuffer: pass
-Done dartk-vm debug_x64 vm/cc/JSON_JSONStream_Array: pass
-Done dartk-vm debug_x64 vm/cc/JSON_JSONStream_Primitives: pass
-Done dartk-vm debug_x64 vm/cc/IsolateSpawn: pass
-Done dartk-vm debug_x64 vm/cc/JSON_JSONStream_Object: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_RunNewFieldInitialiazersSuperClass: pass
-Done dartk-vm debug_x64 vm/cc/JSON_JSONStream_ObjectArray: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_NotTypedefToTypedef: pass
-Done dartk-vm debug_x64 vm/cc/JSON_JSONStream_NestedObject: pass
-Done dartk-vm debug_x64 vm/cc/JSON_JSONStream_ArrayArray: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_TypedefAddParameter: pass
-Done dartk-vm debug_x64 vm/cc/IsolateReload_TypedefToNotTypedef: pass
-Done dartk-vm debug_x64 vm/cc/JSON_JSONStream_Printf: pass
-Done dartk-vm debug_x64 vm/cc/JSON_JSONStream_ObjectPrintf: pass
-Done dartk-vm debug_x64 vm/cc/JSON_JSONStream_EscapedString: pass
-Done dartk-vm debug_x64 vm/cc/JSON_JSONStream_DartObject: pass
-Done dartk-vm debug_x64 vm/cc/JSON_JSONStream_Params: pass
-Done dartk-vm debug_x64 vm/cc/StackTraceMallocHookSimpleTest: pass
-Done dartk-vm debug_x64 vm/cc/StackTraceMallocHookLengthTest: pass
-Done dartk-vm debug_x64 vm/cc/NullRegion: pass
-Done dartk-vm debug_x64 vm/cc/NewRegion: pass
-Done dartk-vm debug_x64 vm/cc/JSON_JSONStream_AppendJSONStreamConsumer: pass
-Done dartk-vm debug_x64 vm/cc/Subregion: pass
-Done dartk-vm debug_x64 vm/cc/Log_Macro: pass
-Done dartk-vm debug_x64 vm/cc/MessageHandler_PostMessage: pass
-Done dartk-vm debug_x64 vm/cc/MessageHandler_HasOOBMessages: pass
-Done dartk-vm debug_x64 vm/cc/MessageHandler_ClosePort: pass
-Done dartk-vm debug_x64 vm/cc/MessageHandler_CloseAllPorts: pass
-Done dartk-vm debug_x64 vm/cc/MessageHandler_HandleNextMessage: pass
-Done dartk-vm debug_x64 vm/cc/Log_Basic: pass
-Done dartk-vm debug_x64 vm/cc/MessageHandler_HandleNextMessage_ProcessOOBAfterError: pass
-Done dartk-vm debug_x64 vm/cc/MessageHandler_HandleNextMessage_Shutdown: pass
-Done dartk-vm debug_x64 vm/cc/MessageHandler_HandleOOBMessages: pass
-Done dartk-vm debug_x64 vm/cc/Log_Block: pass
-Done dartk-vm debug_x64 vm/cc/LongJump: pass
-Done dartk-vm debug_x64 vm/cc/StackTraceMallocHookSimpleJSONTest: pass
-Done dartk-vm debug_x64 vm/cc/ExtendedRegion: pass
-Done dartk-vm debug_x64 vm/cc/MessageQueue_BasicOperations: pass
-Done dartk-vm debug_x64 vm/cc/MessageHandler_Run: pass
-Done dartk-vm debug_x64 vm/cc/Metric_Simple: pass
-Done dartk-vm debug_x64 vm/cc/MessageQueue_Clear: pass
-Done dartk-vm debug_x64 vm/cc/Metric_OnDemand: pass
-Done dartk-vm debug_x64 vm/cc/JSON_JSONStream_DartString: pass
-Done dartk-vm debug_x64 vm/cc/ObjectGraph: pass
-Done dartk-vm debug_x64 vm/cc/ObjectIdRingSerialWrapTest: pass
-Done dartk-vm debug_x64 vm/cc/ObjectIdRingExpiredEntryTest: pass
-Done dartk-vm debug_x64 vm/cc/ObjectIdRingOldGCTest: pass
-Done dartk-vm debug_x64 vm/cc/Class: pass
-Done dartk-vm debug_x64 vm/cc/TypeArguments: pass
-Done dartk-vm debug_x64 vm/cc/TokenStream: pass
-Done dartk-vm debug_x64 vm/cc/GenerateExactSource: pass
-Done dartk-vm debug_x64 vm/cc/StringCompareTo: pass
-Done dartk-vm debug_x64 vm/cc/InstanceClass: pass
-Done dartk-vm debug_x64 vm/cc/StringEncodeIRI: pass
-Done dartk-vm debug_x64 vm/cc/Smi: pass
-Done dartk-vm debug_x64 vm/cc/StringDecodeIRI: pass
-Done dartk-vm debug_x64 vm/cc/Class_ComputeEndTokenPos: pass
-Done dartk-vm debug_x64 vm/cc/StringDecodeIRIInvalid: pass
-Done dartk-vm debug_x64 vm/cc/StringIRITwoByte: pass
-Done dartk-vm debug_x64 vm/cc/ObjectIdRingScavengeMoveTest: pass
-Done dartk-vm debug_x64 vm/cc/Mint: pass
-Done dartk-vm debug_x64 vm/cc/Double: pass
-Done dartk-vm debug_x64 vm/cc/Bigint: pass
-Done dartk-vm debug_x64 vm/cc/String: pass
-Done dartk-vm debug_x64 vm/cc/Integer: pass
-Done dartk-vm debug_x64 vm/cc/StringFormat: pass
-Done dartk-vm debug_x64 vm/cc/StringHashConcat: pass
-Done dartk-vm debug_x64 vm/cc/StringConcat: pass
-Done dartk-vm debug_x64 vm/cc/StringSubStringDifferentWidth: pass
-Done dartk-vm debug_x64 vm/cc/StringFromUtf8Literal: pass
-Done dartk-vm debug_x64 vm/cc/StringEqualsUtf8: pass
-Done dartk-vm debug_x64 vm/cc/StringEqualsUTF32: pass
-Done dartk-vm debug_x64 vm/cc/ExternalOneByteString: pass
-Done dartk-vm debug_x64 vm/cc/EscapeSpecialCharactersOneByteString: pass
-Done dartk-vm debug_x64 vm/cc/EscapeSpecialCharactersTwoByteString: pass
-Done dartk-vm debug_x64 vm/cc/EscapeSpecialCharactersExternalOneByteString: pass
-Done dartk-vm debug_x64 vm/cc/EscapeSpecialCharactersExternalTwoByteString: pass
-Done dartk-vm debug_x64 vm/cc/ExternalTwoByteString: pass
-Done dartk-vm debug_x64 vm/cc/Symbol: pass
-Done dartk-vm debug_x64 vm/cc/Bool: pass
-Done dartk-vm debug_x64 vm/cc/SymbolUnicode: pass
-Done dartk-vm debug_x64 vm/cc/Array: pass
-Done dartk-vm debug_x64 vm/cc/ArrayLengthNegativeOne: pass
-Done dartk-vm debug_x64 vm/cc/ArrayLengthSmiMin: pass
-Done dartk-vm debug_x64 vm/cc/ArrayLengthMaxElements: pass
-Done dartk-vm debug_x64 vm/cc/ArrayLengthOneTooMany: pass
-Done dartk-vm debug_x64 vm/cc/Int8ListLengthNegativeOne: pass
-Done dartk-vm debug_x64 vm/cc/Int8ListLengthSmiMin: pass
-Done dartk-vm debug_x64 vm/cc/Int8ListLengthOneTooMany: pass
-Done dartk-vm debug_x64 vm/cc/Int8ListLengthMaxElements: pass
-Done dartk-vm debug_x64 vm/cc/StringCodePointIteratorRange: pass
-Done dartk-vm debug_x64 vm/cc/StringCodePointIterator: pass
-Done dartk-vm debug_x64 vm/cc/GrowableObjectArray: pass
-Done dartk-vm debug_x64 vm/cc/InternalTypedData: pass
-Done dartk-vm debug_x64 vm/cc/ExternalTypedData: pass
-Done dartk-vm debug_x64 vm/cc/EmbeddedScript: pass
-Done dartk-vm debug_x64 vm/cc/CodeImmutability: pass
-Done dartk-vm debug_x64 vm/cc/Context: pass
-Done dartk-vm debug_x64 vm/cc/ContextScope: pass
-Done dartk-vm debug_x64 vm/cc/Closure: pass
-Done dartk-vm debug_x64 vm/cc/CheckedHandle: pass
-Done dartk-vm debug_x64 vm/cc/ObjectPrinting: pass
-Done dartk-vm debug_x64 vm/cc/Code: pass
-Done dartk-vm debug_x64 vm/cc/EmbedStringInCode: pass
-Done dartk-vm debug_x64 vm/cc/EmbedSmiIn64BitCode: pass
-Done dartk-vm debug_x64 vm/cc/EmbedSmiInCode: pass
-Done dartk-vm debug_x64 vm/cc/ExceptionHandlers: pass
-Done dartk-vm debug_x64 vm/cc/PcDescriptors: pass
-Done dartk-vm debug_x64 vm/cc/PcDescriptorsLargeDeltas: pass
-Done dartk-vm debug_x64 vm/cc/ClassDictionaryIterator: pass
-Done dartk-vm debug_x64 vm/cc/Script: pass
-Done dartk-vm debug_x64 vm/cc/ICData: pass
-Done dartk-vm debug_x64 vm/cc/SubtypeTestCache: pass
-Done dartk-vm debug_x64 vm/cc/FieldTests: pass
-Done dartk-vm debug_x64 vm/cc/EqualsIgnoringPrivate: pass
-Done dartk-vm debug_x64 vm/cc/WeakProperty_PreserveCrossGen: pass
-Done dartk-vm debug_x64 vm/cc/WeakProperty_PreserveOne_NewSpace: pass
-Done dartk-vm debug_x64 vm/cc/WeakProperty_PreserveRecurse: pass
-Done dartk-vm debug_x64 vm/cc/WeakProperty_PreserveTwoShared_NewSpace: pass
-Done dartk-vm debug_x64 vm/cc/WeakProperty_PreserveTwo_NewSpace: pass
-Done dartk-vm debug_x64 vm/cc/WeakProperty_PreserveOne_OldSpace: pass
-Done dartk-vm debug_x64 vm/cc/WeakProperty_PreserveTwo_OldSpace: pass
-Done dartk-vm debug_x64 vm/cc/WeakProperty_PreserveTwoShared_OldSpace: pass
-Done dartk-vm debug_x64 vm/cc/WeakProperty_ClearTwoShared_NewSpace: pass
-Done dartk-vm debug_x64 vm/cc/WeakProperty_ClearOne_NewSpace: pass
-Done dartk-vm debug_x64 vm/cc/WeakProperty_ClearOne_OldSpace: pass
-Done dartk-vm debug_x64 vm/cc/WeakProperty_ClearTwoShared_OldSpace: pass
-Done dartk-vm debug_x64 vm/cc/MirrorReference: pass
-Done dartk-vm debug_x64 vm/cc/FindInvocationDispatcherFunctionIndex: pass
-Done dartk-vm debug_x64 vm/cc/FindClosureIndex: pass
-Done dartk-vm debug_x64 vm/cc/StackTraceFormat: pass
-Done dartk-vm debug_x64 vm/cc/SpecialClassesHaveEmptyArrays: pass
-Done dartk-vm debug_x64 vm/cc/PrintJSONPrimitives: pass
-Done dartk-vm debug_x64 vm/cc/Metadata: pass
-Done dartk-vm debug_x64 vm/cc/FunctionWithBreakpointNotInlined: pass
-Done dartk-vm debug_x64 vm/cc/FunctionSourceFingerprint: pass
-Done dartk-vm debug_x64 vm/cc/InstanceEquality: pass
-Done dartk-vm debug_x64 vm/cc/HashCode: pass
-Done dartk-vm debug_x64 vm/cc/Symbols_FromConcatAll: pass
-Done dartk-vm debug_x64 vm/cc/SNPrint: pass
-Done dartk-vm debug_x64 vm/cc/OsFuncs: pass
-Done dartk-vm debug_x64 vm/cc/ParseClassDefinition: pass
-Done dartk-vm debug_x64 vm/cc/String_EqualsUTF32: pass
-Done dartk-vm debug_x64 vm/cc/String_ScrubName: pass
-Done dartk-vm debug_x64 vm/cc/LinkedHashMap: pass
-Done dartk-vm debug_x64 vm/cc/LinkedHashMap_iteration: pass
-Done dartk-vm debug_x64 vm/cc/Pages: pass
-Done dartk-vm debug_x64 vm/cc/Parser_TopLevel: pass
-Done dartk-vm debug_x64 vm/cc/PortMap_CreateAndCloseOnePort: pass
-Done dartk-vm debug_x64 vm/cc/PrintJSON: pass
-Done dartk-vm debug_x64 vm/cc/PortMap_CreateAndCloseTwoPorts: pass
-Done dartk-vm debug_x64 vm/cc/Parser_AllocateVariables_TwoChains: pass
-Done dartk-vm debug_x64 vm/cc/Parser_AllocateVariables_CapturedVar: pass
-Done dartk-vm debug_x64 vm/cc/PortMap_ClosePorts: pass
-Done dartk-vm debug_x64 vm/cc/Parser_AllocateVariables_NestedCapturedVar: pass
-Done dartk-vm debug_x64 vm/cc/Parser_AllocateVariables_Issue7681: pass
-Done dartk-vm debug_x64 vm/cc/PortMap_CreateManyPorts: pass
-Done dartk-vm debug_x64 vm/cc/Parser_AllocateVariables_MiddleChain: pass
-Done dartk-vm debug_x64 vm/cc/Parser_AllocateVariables_CaptureLoopVar: pass
-Done dartk-vm debug_x64 vm/cc/PortMap_SetPortState: pass
-Done dartk-vm debug_x64 vm/cc/PortMap_PostMessage: pass
-Done dartk-vm debug_x64 vm/cc/PortMap_PostIntegerMessage: pass
-Done dartk-vm debug_x64 vm/cc/PortMap_PostNullMessage: pass
-Done dartk-vm debug_x64 vm/cc/PortMap_PostMessageClosedPort: pass
-Done dartk-vm debug_x64 vm/cc/Profiler_SampleBufferWrapTest: pass
-Done dartk-vm debug_x64 vm/cc/Profiler_SampleBufferIterateTest: pass
-Done dartk-vm debug_x64 vm/cc/Profiler_AllocationSampleTest: pass
-Done dartk-vm debug_x64 vm/cc/Profiler_TrivialRecordAllocation: pass
-Done dartk-vm debug_x64 vm/cc/Profiler_CodeTicks: pass
-Done dartk-vm debug_x64 vm/cc/Profiler_ArrayAllocation: pass
-Done dartk-vm debug_x64 vm/cc/Profiler_ToggleRecordAllocation: pass
-Done dartk-vm debug_x64 vm/cc/Profiler_FunctionTicks: pass
-Done dartk-vm debug_x64 vm/cc/Profiler_ContextAllocation: pass
-Done dartk-vm debug_x64 vm/cc/Profiler_IntrinsicAllocation: pass
-Done dartk-vm debug_x64 vm/cc/Profiler_ClosureAllocation: pass
-Done dartk-vm debug_x64 vm/cc/Profiler_StringAllocation: pass
-Done dartk-vm debug_x64 vm/cc/Profiler_TypedArrayAllocation: pass
-Done dartk-vm debug_x64 vm/cc/Profiler_StringInterpolation: pass
-Done dartk-vm debug_x64 vm/cc/Profiler_ChainedSamples: pass
-Done dartk-vm debug_x64 vm/cc/Profiler_SourcePosition: pass
-Done dartk-vm debug_x64 vm/cc/Profiler_BasicSourcePosition: pass
-Done dartk-vm debug_x64 vm/cc/Profiler_BinaryOperatorSourcePosition: pass
-Done dartk-vm debug_x64 vm/cc/Profiler_ProfileCodeTableTest: pass
-Done dartk-vm debug_x64 vm/cc/RegExp_OneByteString: pass
-Done dartk-vm debug_x64 vm/cc/RegExp_TwoByteString: pass
-Done dartk-vm debug_x64 vm/cc/RegExp_ExternalOneByteString: pass
-Done dartk-vm debug_x64 vm/cc/RegExp_ExternalTwoByteString: pass
-Done dartk-vm debug_x64 vm/cc/DartStaticResolve: pass
-Done dartk-vm debug_x64 vm/cc/Profiler_FunctionInline: pass
-Done dartk-vm debug_x64 vm/cc/DartDynamicResolve: pass
-Done dartk-vm debug_x64 vm/cc/RingBuffer: pass
-Done dartk-vm debug_x64 vm/cc/Scanner_Test: pass
-Done dartk-vm debug_x64 vm/cc/LocalScope: pass
-Done dartk-vm debug_x64 vm/cc/Profiler_GetSourceReport: pass
-Done dartk-vm debug_x64 vm/cc/Service_IdZones: pass
-Done dartk-vm debug_x64 vm/cc/Service_IsolateStickyError: pass
-Done dartk-vm debug_x64 vm/cc/Service_TokenStream: pass
-Done dartk-vm debug_x64 vm/cc/Service_PcDescriptors: pass
-Done dartk-vm debug_x64 vm/cc/Service_PersistentHandles: pass
-Done dartk-vm debug_x64 vm/cc/Service_Code: pass
-Done dartk-vm debug_x64 vm/cc/Service_LocalVarDescriptors: pass
-Done dartk-vm debug_x64 vm/cc/Service_Address: pass
-Done dartk-vm debug_x64 vm/cc/SerializeSmi2: pass
-Done dartk-vm debug_x64 vm/cc/Service_EmbedderRootHandler: pass
-Done dartk-vm debug_x64 vm/cc/SerializeSmi1: pass
-Done dartk-vm debug_x64 vm/cc/SerializeMints: pass
-Done dartk-vm debug_x64 vm/cc/SerializeDouble: pass
-Done dartk-vm debug_x64 vm/cc/SerializeFalse: pass
-Done dartk-vm debug_x64 vm/cc/SerializeBigint: pass
-Done dartk-vm debug_x64 vm/cc/SerializeTrue: pass
-Done dartk-vm debug_x64 vm/cc/SerializeCapability: pass
-Done dartk-vm debug_x64 vm/cc/SerializeBigint2: pass
-Done dartk-vm debug_x64 vm/cc/SerializeNull: pass
-Done dartk-vm debug_x64 vm/cc/SerializeNull: pass
-Done dartk-vm debug_x64 vm/cc/Service_EmbedderIsolateHandler: pass
-Done dartk-vm debug_x64 vm/cc/Service_Profile: pass
-Done dartk-vm debug_x64 vm/cc/SerializeString: pass
-Done dartk-vm debug_x64 vm/cc/SerializeSingletons: pass
-Done dartk-vm debug_x64 vm/cc/SerializeArray: pass
-Done dartk-vm debug_x64 vm/cc/FailSerializeLargeNestedArray: pass
-Done dartk-vm debug_x64 vm/cc/FailSerializeLargeArray: pass
-Done dartk-vm debug_x64 vm/cc/FailSerializeLargeTypedDataInt8: pass
-Done dartk-vm debug_x64 vm/cc/FailSerializeLargeTypedDataUint8: pass
-Done dartk-vm debug_x64 vm/cc/FailSerializeLargeExternalTypedData: pass
-Done dartk-vm debug_x64 vm/cc/SerializeTypedArray: pass
-Done dartk-vm debug_x64 vm/cc/SerializeEmptyArray: pass
-Done dartk-vm debug_x64 vm/cc/SerializeByteArray: pass
-Done dartk-vm debug_x64 vm/cc/SerializeEmptyByteArray: pass
-Done dartk-vm debug_x64 vm/cc/SerializeExternalTypedArray: pass
-Done dartk-vm debug_x64 vm/cc/SerializeScript: pass
-Done dartk-vm debug_x64 vm/cc/ScriptSnapshot: pass
-Done dartk-vm debug_x64 vm/cc/ScriptSnapshot2: pass
-Done dartk-vm debug_x64 vm/cc/IntArrayMessage: pass
-Done dartk-vm debug_x64 vm/cc/CanonicalizationInScriptSnapshots: pass
-Done dartk-vm debug_x64 vm/cc/ScriptSnapshotsUpdateSubclasses: pass
-Done dartk-vm debug_x64 vm/cc/FullSnapshot: pass
-Done dartk-vm debug_x64 vm/cc/ScriptSnapshot1: pass
-Done dartk-vm debug_x64 vm/cc/GenerateSource: pass
-Done dartk-vm debug_x64 vm/cc/FullSnapshot1: pass
-Done dartk-vm debug_x64 vm/cc/MismatchedSnapshotKinds: pass
-Done dartk-vm debug_x64 vm/cc/DartGeneratedMessages: pass
-Done dartk-vm debug_x64 vm/cc/OmittedObjectEncodingLength: pass
-Done dartk-vm debug_x64 vm/cc/DartGeneratedListMessages: pass
-Done dartk-vm debug_x64 vm/cc/DartGeneratedArrayLiteralMessages: pass
-Done dartk-vm debug_x64 vm/cc/DartGeneratedArrayLiteralMessagesWithBackref: pass
-Done dartk-vm debug_x64 vm/cc/DartGeneratedListMessagesWithBackref: pass
-Done dartk-vm debug_x64 vm/cc/DartGeneratedListMessagesWithTypedData: pass
-Done dartk-vm debug_x64 vm/cc/PostCObject: pass
-Done dartk-vm debug_x64 vm/cc/SourceReport_Coverage_NoCalls: pass
-Done dartk-vm debug_x64 vm/cc/SourceReport_Coverage_UnusedClass_ForceCompileError: pass
-Done dartk-vm debug_x64 vm/cc/SourceReport_Coverage_ForceCompile: pass
-Done dartk-vm debug_x64 vm/cc/SourceReport_Coverage_UnusedClass_NoForceCompile: pass
-Done dartk-vm debug_x64 vm/cc/SourceReport_Coverage_SimpleCall: pass
-Done dartk-vm debug_x64 vm/cc/SourceReport_Coverage_UnusedClass_ForceCompile: pass
-Done dartk-vm debug_x64 vm/cc/SourceReport_Coverage_NestedFunctions: pass
-Done dartk-vm debug_x64 vm/cc/SourceReport_Coverage_RestrictedRange: pass
-Done dartk-vm debug_x64 vm/cc/EmptyDartStackFrameIteration: pass
-Done dartk-vm debug_x64 vm/cc/EmptyStackFrameIteration: pass
-Done dartk-vm debug_x64 vm/cc/SourceReport_Coverage_AllFunctions: pass
-Done dartk-vm debug_x64 vm/cc/SourceReport_CallSites_SimpleCall: pass
-Done dartk-vm debug_x64 vm/cc/SourceReport_CallSites_PolymorphicCall: pass
-Done dartk-vm debug_x64 vm/cc/SourceReport_MultipleReports: pass
-Done dartk-vm debug_x64 vm/cc/ThreadPool_Create: pass
-Done dartk-vm debug_x64 vm/cc/ThreadPool_RunOne: pass
-Done dartk-vm debug_x64 vm/cc/CallRuntimeStubCode: pass
-Done dartk-vm debug_x64 vm/cc/SourceReport_PossibleBreakpoints_Simple: pass
-Done dartk-vm debug_x64 vm/cc/ThreadPool_WorkerTimeout: pass
-Done dartk-vm debug_x64 vm/cc/CallLeafRuntimeStubCode: pass
-Done dartk-vm debug_x64 vm/cc/ThreadPool_RunMany: pass
-Done dartk-vm debug_x64 vm/cc/ThreadPool_WorkerShutdown: pass
-Done dartk-vm debug_x64 vm/cc/ThreadPool_RecursiveSpawn: pass
-Done dartk-vm debug_x64 vm/cc/Mutex: pass
-Done dartk-vm debug_x64 vm/cc/ValidateStackFrameIteration: pass
-Done dartk-vm debug_x64 vm/cc/ThreadBarrier: pass
-Done dartk-vm debug_x64 vm/cc/ValidateNoSuchMethodStackFrameIteration: pass
-Done dartk-vm debug_x64 vm/cc/ManyTasksWithZones: pass
-Done dartk-vm debug_x64 vm/cc/ManySimpleTasksWithZones: pass
-Done dartk-vm debug_x64 vm/cc/RecursiveSafepointTest1: pass
-Done dartk-vm debug_x64 vm/cc/ThreadRegistry: pass
-Done dartk-vm debug_x64 vm/cc/SafepointTestVM: pass
-Done dartk-vm debug_x64 vm/cc/ThreadIterator_Count: pass
-Done dartk-vm debug_x64 vm/cc/ThreadIterator_FindSelf: pass
-Done dartk-vm debug_x64 vm/cc/SafepointTestVM2: pass
-Done dartk-vm debug_x64 vm/cc/Monitor: pass
-Done dartk-vm debug_x64 vm/cc/RecursiveSafepointTest2: pass
-Done dartk-vm debug_x64 vm/cc/ThreadIterator_AddFindRemove: pass
-Done dartk-vm debug_x64 vm/cc/HelperAllocAndGC: pass
-Done dartk-vm debug_x64 vm/cc/TimelineEventIsValid: pass
-Done dartk-vm debug_x64 vm/cc/TimelineEventPrintSystrace: pass
-Done dartk-vm debug_x64 vm/cc/TimelineEventDurationPrintJSON: pass
-Done dartk-vm debug_x64 vm/cc/TimelineEventArguments: pass
-Done dartk-vm debug_x64 vm/cc/TimelineEventArgumentsPrintJSON: pass
-Done dartk-vm debug_x64 vm/cc/TimelineEventDuration: pass
-Done dartk-vm debug_x64 vm/cc/TimelineEventBufferPrintJSON: pass
-Done dartk-vm debug_x64 vm/cc/TimelineEventCallbackRecorderBasic: pass
-Done dartk-vm debug_x64 vm/cc/TimelinePauses_BeginEnd: pass
-Done dartk-vm debug_x64 vm/cc/TimelineAnalysis_ThreadBlockCount: pass
-Done dartk-vm debug_x64 vm/cc/TimelinePauses_Basic: pass
-Done dartk-vm debug_x64 vm/cc/TimelineRingRecorderJSONOrder: pass
-Done dartk-vm debug_x64 vm/cc/Utf8Decode: pass
-Done dartk-vm debug_x64 vm/cc/ParseUri_WithScheme_NoQueryNoUser: pass
-Done dartk-vm debug_x64 vm/cc/ParseUri_WithScheme_WithFragment: pass
-Done dartk-vm debug_x64 vm/cc/ParseUri_WithScheme_WithQuery: pass
-Done dartk-vm debug_x64 vm/cc/ParseUri_WithScheme_WithUser: pass
-Done dartk-vm debug_x64 vm/cc/ParseUri_WithScheme_WithQueryWithFragment: pass
-Done dartk-vm debug_x64 vm/cc/ParseUri_WithScheme_ShortPath: pass
-Done dartk-vm debug_x64 vm/cc/ParseUri_WithScheme_EmptyPath: pass
-Done dartk-vm debug_x64 vm/cc/ParseUri_WithScheme_Rootless1: pass
-Done dartk-vm debug_x64 vm/cc/ParseUri_NoScheme_AbsPath_WithAuthority: pass
-Done dartk-vm debug_x64 vm/cc/ParseUri_WithScheme_Rootless2: pass
-Done dartk-vm debug_x64 vm/cc/ParseUri_NoScheme_AbsPath_NoAuthority: pass
-Done dartk-vm debug_x64 vm/cc/ParseUri_NoScheme_FragmentOnly: pass
-Done dartk-vm debug_x64 vm/cc/ParseUri_NoScheme_AbsPath_StrayColon: pass
-Done dartk-vm debug_x64 vm/cc/ParseUri_NoScheme_Rootless1: pass
-Done dartk-vm debug_x64 vm/cc/SourceReport_Coverage_AllFunctions_ForceCompile: pass
-Done dartk-vm debug_x64 vm/cc/ParseUri_NoScheme_Rootless2: pass
-Done dartk-vm debug_x64 vm/cc/ParseUri_NoScheme_QueryOnly: pass
-Done dartk-vm debug_x64 vm/cc/ParseUri_NoScheme_Empty: pass
-Done dartk-vm debug_x64 vm/cc/ParseUri_LowerCaseScheme: pass
-Done dartk-vm debug_x64 vm/cc/ParseUri_NormalizeEscapes_PathQueryFragment: pass
-Done dartk-vm debug_x64 vm/cc/ParseUri_NormalizeEscapes_UppercaseEscapesPreferred: pass
-Done dartk-vm debug_x64 vm/cc/ParseUri_NormalizeEscapes_Authority: pass
-Done dartk-vm debug_x64 vm/cc/ParseUri_BrokenEscapeSequence: pass
-Done dartk-vm debug_x64 vm/cc/ParseUri_NormalizeEscapes_UppercaseEscapeInHost: pass
-Done dartk-vm debug_x64 vm/cc/ResolveUri_WithScheme_WithAuthorityWithQuery: pass
-Done dartk-vm debug_x64 vm/cc/ResolveUri_WithScheme_NoAuthorityNoQuery: pass
-Done dartk-vm debug_x64 vm/cc/ResolveUri_NoSchemeNoAuthority_EmptyPathWithQuery: pass
-Done dartk-vm debug_x64 vm/cc/ResolveUri_NoScheme_WithAuthority: pass
-Done dartk-vm debug_x64 vm/cc/SafepointTestDart: pass
-Done dartk-vm debug_x64 vm/cc/ResolveUri_NoSchemeNoAuthority_AbsolutePath: pass
-Done dartk-vm debug_x64 vm/cc/ResolveUri_NoSchemeNoAuthority_RelativePath: pass
-Done dartk-vm debug_x64 vm/cc/ResolveUri_NoSchemeNoAuthority_RelativePathEmptyBasePath: pass
-Done dartk-vm debug_x64 vm/cc/ResolveUri_NoSchemeNoAuthority_RelativePathWeirdBasePath: pass
-Done dartk-vm debug_x64 vm/cc/ResolveUri_NoSchemeNoAuthority_EmptyPath: pass
-Done dartk-vm debug_x64 vm/cc/ResolveUri_NoSchemeNoAuthority_EmptyPathWithFragment: pass
-Done dartk-vm debug_x64 vm/cc/ResolveUri_RemoveDots_RemoveOneDotSegment: pass
-Done dartk-vm debug_x64 vm/cc/ResolveUri_RemoveDots_RemoveTwoDotSegments: pass
-Done dartk-vm debug_x64 vm/cc/ResolveUri_RemoveDots_RemoveOneDotDotSegment: pass
-Done dartk-vm debug_x64 vm/cc/ResolveUri_RemoveDots_RemoveTwoDotDotSegments: pass
-Done dartk-vm debug_x64 vm/cc/ResolveUri_RemoveDots_RemoveDotSegmentsNothingLeft1: pass
-Done dartk-vm debug_x64 vm/cc/ResolveUri_RemoveDots_RemoveTooManyDotDotSegments: pass
-Done dartk-vm debug_x64 vm/cc/ResolveUri_RemoveDots_RemoveDotSegmentsNothingLeft2: pass
-Done dartk-vm debug_x64 vm/cc/ResolveUri_RemoveDots_RemoveDotSegmentsInitialPrefix: pass
-Done dartk-vm debug_x64 vm/cc/ResolveUri_RemoveDots_RemoveDotSegmentsMixed: pass
-Done dartk-vm debug_x64 vm/cc/ResolveUri_NormalizeEscapes_PathQueryFragment: pass
-Done dartk-vm debug_x64 vm/cc/Minimum: pass
-Done dartk-vm debug_x64 vm/cc/ResolveUri_NormalizeEscapes_UppercaseHexPreferred: pass
-Done dartk-vm debug_x64 vm/cc/Maximum: pass
-Done dartk-vm debug_x64 vm/cc/ShiftForPowerOfTwo: pass
-Done dartk-vm debug_x64 vm/cc/IsAligned: pass
-Done dartk-vm debug_x64 vm/cc/RoundDown: pass
-Done dartk-vm debug_x64 vm/cc/ResolveUri_NormalizeEscapes_BrokenEscapeSequence: pass
-Done dartk-vm debug_x64 vm/cc/RoundUp: pass
-Done dartk-vm debug_x64 vm/cc/RoundUpToPowerOfTwo: pass
-Done dartk-vm debug_x64 vm/cc/CountOneBits: pass
-Done dartk-vm debug_x64 vm/cc/ResolveUri_NormalizeEscapes_Authority: pass
-Done dartk-vm debug_x64 vm/cc/CountZeros: pass
-Done dartk-vm debug_x64 vm/cc/IsInt: pass
-Done dartk-vm debug_x64 vm/cc/IsUint: pass
-Done dartk-vm debug_x64 vm/cc/IsAbsoluteUint: pass
-Done dartk-vm debug_x64 vm/cc/ResolveUri_RelativeBase_NotImplemented: pass
-Done dartk-vm debug_x64 vm/cc/ResolveUri_DataUri: pass
-Done dartk-vm debug_x64 vm/cc/LowBits: pass
-Done dartk-vm debug_x64 vm/cc/Endianity: pass
-Done dartk-vm debug_x64 vm/cc/ResolveUri_TestUriPerRFCs: pass
-Done dartk-vm debug_x64 vm/cc/DoublesBitEqual: pass
-Done dartk-vm debug_x64 vm/cc/AllocateVirtualMemory: pass
-Done dartk-vm debug_x64 vm/cc/VirtualMemoryCommitPartial: pass
-Done dartk-vm debug_x64 vm/cc/NativeScopeZoneAllocation: pass
-Done dartk-vm debug_x64 vm/cc/ResolveUri_MoreDotSegmentTests: pass
-Done dartk-vm debug_x64 vm/cc/IsPowerOfTwo: pass
-Done dartk-vm debug_x64 vm/cc/Dart2JSCompilerStats: pass
-Done dartk-vm debug_x64 vm/cc/FreeVirtualMemory: pass
-Done dartk-vm debug_x64 vm/cc/ZoneAllocated: pass
-Done dartk-vm debug_x64 vm/cc/AllocGeneric_Success: pass
-Done dartk-vm debug_x64 vm/cc/AllocateZone: pass
-Done dartk-vm debug_x64 vm/cc/PrintToString: pass
-Done dartk-vm debug_x64 vm/cc/Dart2JSCompileAll: pass
-Done dartk-vm debug_x64 vm/cc/UseDartApi: pass
-Done dartk-vm debug_x64 vm/cc/StandaloneSnapshotSize: pass
-Done dartk-vm debug_x64 vm/cc/CoreSnapshotSize: pass
-Done dartk-vm debug_x64 vm/cc/CreateMirrorSystem: pass
-Done dartk-vm debug_x64 vm/cc/FrameLookup: pass
-Done dartk-vm debug_x64 vm/cc/InitialRSS: pass
-Done dartk-vm debug_x64 vm/cc/FixedCacheEmpty: pass
-Done dartk-vm debug_x64 vm/cc/FixedCacheHalfFull: pass
-Done dartk-vm debug_x64 vm/cc/FixedCacheFullResource: pass
-Done dartk-vm debug_x64 vm/cc/BasicMallocHookTest: pass
-Done dartk-vm debug_x64 vm/cc/CorelibCompileAll: pass
-Done dartk-vm debug_x64 vm/cc/FreeUnseenMemoryMallocHookTest: pass
-Done dartk-vm debug_x64 vm/cc/SerializeSmi: pass
-Done dartk-vm debug_x64 vm/cc/CorelibCompilerStats: pass
-Done dartk-vm debug_x64 vm/cc/DartStringAccess: pass
-Done dartk-vm debug_x64 vm/cc/EnterExitIsolate: pass
-Done dartk-vm debug_x64 vm/cc/SimpleMessage: pass
-Done dartk-vm debug_x64 vm/cc/LargeMap: pass
-
-=== Failure summary:
-
-
-FAILED: dartk-vm debug_x64 corelib_2/map_keys2_test
-Expected: RuntimeError
-Actual: Pass
-CommandOutput[vm]:
-
-Command[vm]: DART_CONFIGURATION=DebugX64 out/DebugX64/dart --dfe=out/DebugX64/gen/kernel-service.dart.snapshot --kernel-binaries=out/DebugX64/patched_sdk --no-background-compilation --no-enable-malloc-hooks --ignore-unrecognized-flags --packages=/b/build/slave/vm-kernel-linux-debug-x64-be/build/sdk/.packages /b/build/slave/vm-kernel-linux-debug-x64-be/build/sdk/tests/corelib_2/map_keys2_test.dart
-Took 0:00:06.289269
-
-Short reproduction command (experimental):
- python tools/test.py -c dartk --builder-tag no_ipv6 --vm-options --no-enable-malloc-hooks corelib_2/map_keys2_test
-
-
-
-===
-=== 1 test failed
-===
-
-
---- Total time: 186:17 ---
-0:02:18.702080 - vm - dartk-vm debug_x64/standalone/io/file_lock_test
-0:02:00.123189 - vm - dartk-vm debug_x64/isolate/ping_pause_test
-0:02:00.100438 - vm - dartk-vm debug_x64/isolate/spawn_uri_nested_vm_test
-0:02:00.090577 - vm - dartk-vm debug_x64/isolate/spawn_function_custom_class_test
-0:01:13.704333 - vm - dartk-vm debug_x64/isolate/mandel_isolate_test
-0:01:13.294601 - vm - dartk-vm debug_x64/language/large_class_declaration_test
-0:00:54.799289 - vm - dartk-vm debug_x64/co19/LibTest/isolate/ReceivePort/elementAt_A01_t01
-0:00:52.333997 - vm - dartk-vm debug_x64/lib/convert/streamed_conversion_json_utf8_decode_test
-0:00:50.388382 - vm - dartk-vm debug_x64/standalone/fragmentation_test
-0:00:45.691145 - vm - dartk-vm debug_x64/isolate/function_send_test
-0:00:43.326282 - vm - dartk-vm debug_x64/co19/LibTest/isolate/Isolate/spawn_A01_t04
-0:00:42.399188 - vm - dartk-vm debug_x64/co19/LibTest/isolate/ReceivePort/take_A01_t01
-0:00:41.436464 - vm - dartk-vm debug_x64/co19/LibTest/isolate/ReceivePort/skip_A01_t01
-0:00:41.049934 - vm - dartk-vm debug_x64/co19/LibTest/isolate/Isolate/spawnUri_A01_t04
-0:00:40.409659 - vm - dartk-vm debug_x64/co19/LibTest/isolate/ReceivePort/expand_A01_t01
-0:00:37.703963 - vm - dartk-vm debug_x64/co19/LibTest/isolate/ReceivePort/every_A01_t01
-0:00:37.321819 - vm - dartk-vm debug_x64/standalone/io/process_sync_test
-0:00:35.421735 - vm - dartk-vm debug_x64/standalone/io/http_advanced_test
-0:00:34.670011 - run_vm_unittest - dartk-vm debug_x64/vm/cc/FindCodeObject
-0:00:34.393454 - vm - dartk-vm debug_x64/co19/LibTest/isolate/ReceivePort/elementAt_A03_t01
-step returned non-zero exit code: 1
-@@@STEP_FAILURE@@@
diff --git a/tools/gardening/test/gardening.status b/tools/gardening/test/gardening.status
deleted file mode 100644
index 3642988..0000000
--- a/tools/gardening/test/gardening.status
+++ /dev/null
@@ -1,3 +0,0 @@
-# Copyright (c) 2017, 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.md file.
diff --git a/tools/gardening/test/parse_build_results_test.dart b/tools/gardening/test/parse_build_results_test.dart
deleted file mode 100644
index f40e593..0000000
--- a/tools/gardening/test/parse_build_results_test.dart
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright (c) 2017, 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 'package:args/args.dart';
-import 'package:expect/expect.dart';
-import 'package:gardening/src/buildbot_structures.dart';
-import 'package:gardening/src/util.dart';
-
-import 'test_client.dart';
-
-main(List<String> args) async {
- ArgParser argParser = createArgParser();
- argParser.addFlag('force', abbr: 'f');
- ArgResults argResults = argParser.parse(args);
- processArgResults(argResults);
-
- TestClient client = new TestClient(force: argResults['force']);
- BuildUri buildUri =
- new BuildUri.fromUrl('https://build.chromium.org/p/client.dart/builders/'
- 'vm-kernel-linux-debug-x64-be/builds/1884/steps/'
- 'vm%20tests/logs/stdio');
- BuildResult result = await client.readResult(buildUri);
-
- void checkTest(String testName, String expectedStatus) {
- TestStatus status;
- for (TestStatus s in result.results) {
- if (s.config.testName == testName) {
- status = s;
- break;
- }
- }
- Expect.isNotNull(status, "TestStatus for '$testName' not found.");
- Expect.equals(
- expectedStatus, status.status, "Unexpected status for '$testName'.");
- }
-
- checkTest('corelib/list_growable_test', 'pass');
- checkTest('corelib_2/map_keys2_test', 'fail');
- client.close();
-}
diff --git a/tools/gardening/test/test_client.dart b/tools/gardening/test/test_client.dart
deleted file mode 100644
index 81758f1..0000000
--- a/tools/gardening/test/test_client.dart
+++ /dev/null
@@ -1,79 +0,0 @@
-// Copyright (c) 2017, 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.
-
-/// Compares the test log of a build step with previous builds.
-///
-/// Use this to detect flakiness of failures, especially timeouts.
-
-import 'dart:async';
-import 'dart:io';
-
-import 'package:gardening/src/buildbot_loading.dart';
-import 'package:gardening/src/buildbot_structures.dart';
-import 'package:gardening/src/cache.dart';
-import 'package:gardening/src/client.dart';
-import 'package:gardening/src/util.dart';
-
-class TestClient implements BuildbotClient {
- BuildbotClient _client;
-
- /// Creates a mock client using logs stored in the `data` folder. If [force]
- /// is `true`, missing logs are pulling from http and stored in the `data`
- /// folder.
- TestClient({bool force: false})
- : _client = force ? new HttpBuildbotClient() : null;
-
- String computePath(BuildUri buildUri) {
- return 'data/${buildUri.botName}/${buildUri.buildNumber}'
- '/${buildUri.stepName.replaceAll(' ', '_')}.log';
- }
-
- Future<String> readData(BuildUri buildUri) async {
- String path = computePath(buildUri);
- File file = new File.fromUri(Platform.script.resolve(path));
- if (!file.existsSync() && _client != null) {
- await file.parent.create(recursive: true);
- BuildResult result = await _client.readResult(buildUri);
- if (result.buildNumber != null) {
- print('Writing test data to $file');
- String text = await cache.read(
- result.buildUri.logdogPath,
- () => throw new ArgumentError(
- 'Cache missing for ${result.buildUri.logdogPath}.'));
- await file.writeAsString(text);
- }
- }
- assert(file.existsSync(), "File $file not found.");
- log('Reading test data from $file');
- return file.readAsString();
- }
-
- @override
- Future<BuildResult> readResult(BuildUri buildUri) async {
- String text = await readData(buildUri);
- return parseTestStepResult(buildUri, text);
- }
-
- @override
- void close() {
- _client?.close();
- }
-
- @override
- int get mostRecentBuildNumber => -1;
-}
-
-class DummyClient implements BuildbotClient {
- @override
- Future<BuildResult> readResult(BuildUri buildUri) {
- return new Future.value(
- new BuildResult(buildUri, 1, '', const [], const [], const []));
- }
-
- @override
- void close() {}
-
- @override
- int get mostRecentBuildNumber => -1;
-}
diff --git a/tools/gardening/testing.json b/tools/gardening/testing.json
deleted file mode 100644
index 1ff929f..0000000
--- a/tools/gardening/testing.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- "":"Copyright (c) 2017, 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.md file.",
-
- "packages": ".packages",
-
- "suites": [
- {
- "name": "dart_vm",
- "kind": "Chain",
- "source": "package:testing/dart_vm_suite.dart",
- "path": "test/",
- "status": "test/gardening.status",
- "pattern": [
- "\\_test.dart$"
- ],
- "exclude": [
- "buildbot_data_test.dart"
- ]
- }
- ],
-
- "analyze": {
- "options": "analysis_options.yaml",
-
- "uris": [
- "bin/",
- "lib/",
- "test/"
- ]
- }
-}
\ No newline at end of file
diff --git a/tools/generate_package_config.dart b/tools/generate_package_config.dart
index 1833b60..169fbbc 100755
--- a/tools/generate_package_config.dart
+++ b/tools/generate_package_config.dart
@@ -23,7 +23,6 @@
packageDirectory('sdk/lib/_internal/sdk_library_metadata'),
packageDirectory('sdk/lib/_internal/js_runtime'),
packageDirectory('third_party/pkg/protobuf/protobuf'),
- packageDirectory('tools/gardening'),
];
var cfePackageDirs = [
@@ -31,6 +30,7 @@
packageDirectory('pkg/front_end/testcases/general_nnbd_opt_out/'),
packageDirectory('pkg/front_end/testcases/late_lowering/'),
packageDirectory('pkg/front_end/testcases/nnbd/'),
+ packageDirectory('pkg/front_end/testcases/nnbd_mixed/'),
packageDirectory('pkg/front_end/testcases/nonfunction_type_aliases/'),
];
@@ -82,7 +82,9 @@
yield {
'name': p.basename(packageDir),
- 'rootUri': p.relative(packageDir, from: p.dirname(configFilePath)),
+ 'rootUri': p
+ .toUri(p.relative(packageDir, from: p.dirname(configFilePath)))
+ .toString(),
if (hasLibDirectory) 'packageUri': 'lib/',
if (version != null)
'languageVersion': '${version.major}.${version.minor}'
@@ -97,7 +99,9 @@
for (var packageDir in packageDirs) {
yield {
'name': 'front_end_${p.basename(packageDir)}',
- 'rootUri': p.relative(packageDir, from: p.dirname(configFilePath)),
+ 'rootUri': p
+ .toUri(p.relative(packageDir, from: p.dirname(configFilePath)))
+ .toString(),
'packageUri': '.nonexisting/',
};
}
diff --git a/tools/migration/lib/src/analyze.dart b/tools/migration/lib/src/analyze.dart
index 0a34076..f1f4c5e 100644
--- a/tools/migration/lib/src/analyze.dart
+++ b/tools/migration/lib/src/analyze.dart
@@ -96,10 +96,7 @@
"${nnbd ? ' with NNBD' : ''}...");
var result = await Process.run("dartanalyzer", [
"--packages=${p.join(sdkRoot, '.packages')}",
- if (nnbd) ...[
- "--dart-sdk=$nnbdSdkBuildDir",
- "--enable-experiment=non-nullable",
- ],
+ if (nnbd) "--enable-experiment=non-nullable",
"--format=machine",
inputDir,
]);
diff --git a/tools/migration/lib/src/io.dart b/tools/migration/lib/src/io.dart
index faa68cb..b64c378 100644
--- a/tools/migration/lib/src/io.dart
+++ b/tools/migration/lib/src/io.dart
@@ -6,8 +6,6 @@
import 'package:path/path.dart' as p;
-import 'log.dart';
-
/// True if the file system should be left untouched.
bool dryRun = false;
@@ -16,21 +14,6 @@
final String testRoot = p.join(sdkRoot, "tests");
-final String nnbdSdkBuildDir = () {
- var buildDir = Platform.isMacOS ? "xcodebuild" : "out";
- var path = p.join(sdkRoot, buildDir, "ReleaseX64NNBD", "dart-sdk");
-
- if (!Directory(path).existsSync()) {
- print(red("Could not find an NNBD SDK at $path"));
- print(red("Please build the NNBD SDK using:"));
- print("");
- print(red(" ./tools/build.py -m release --nnbd create_sdk"));
- exit(1);
- }
-
- return path;
-}();
-
/// Copies the file from [from] to [to], which are both assumed to be relative
/// paths inside "tests".
void copyFile(String from, String to) {
diff --git a/tools/validate_test_matrix.dart b/tools/validate_test_matrix.dart
new file mode 100644
index 0000000..8902eb0
--- /dev/null
+++ b/tools/validate_test_matrix.dart
@@ -0,0 +1,26 @@
+// Copyright (c) 2020, 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 the test matrix in the SDK can be parsed correctly.
+
+import 'dart:convert' show jsonDecode;
+import 'dart:io' show File, Platform;
+import 'package:smith/smith.dart' show TestMatrix;
+
+main() {
+ var path = Platform.script.resolve("bots/test_matrix.json").toFilePath();
+ var json;
+ try {
+ json = jsonDecode(File(path).readAsStringSync());
+ } catch (e) {
+ print("The test matrix at $path is not valid JSON!\n\n$e");
+ return;
+ }
+ try {
+ TestMatrix.fromJson(json);
+ } catch (e) {
+ print("The test matrix at $path is invalid!\n\n$e");
+ return;
+ }
+}
diff --git a/utils/bazel/kernel_worker.dart b/utils/bazel/kernel_worker.dart
index a374fc2..779ec62 100644
--- a/utils/bazel/kernel_worker.dart
+++ b/utils/bazel/kernel_worker.dart
@@ -143,7 +143,8 @@
..addFlag('track-widget-creation', defaultsTo: false)
..addMultiOption('enable-experiment',
help: 'Enable a language experiment when invoking the CFE.')
- ..addMultiOption('define', abbr: 'D');
+ ..addMultiOption('define', abbr: 'D')
+ ..addFlag('verbose', defaultsTo: false);
class ComputeKernelResult {
final bool succeeded;
@@ -247,6 +248,7 @@
bool usingIncrementalCompiler = false;
bool recordUsedInputs = parsedArgs["used-inputs"] != null;
var environmentDefines = _parseEnvironmentDefines(parsedArgs['define']);
+ var verbose = parsedArgs['verbose'] as bool;
if (parsedArgs['use-incremental-compiler']) {
usingIncrementalCompiler = true;
@@ -291,7 +293,8 @@
(parsedArgs['enable-experiment'] as List<String>),
summaryOnly,
environmentDefines,
- trackNeededDillLibraries: recordUsedInputs);
+ trackNeededDillLibraries: recordUsedInputs,
+ verbose: verbose);
} else {
state = await fe.initializeCompiler(
// TODO(sigmund): pass an old state once we can make use of it.
@@ -303,12 +306,15 @@
target,
fileSystem,
parsedArgs['enable-experiment'] as List<String>,
- environmentDefines);
+ environmentDefines,
+ verbose: verbose);
}
void onDiagnostic(fe.DiagnosticMessage message) {
fe.printDiagnosticMessage(message, out.writeln);
- succeeded = false;
+ if (message.severity == fe.Severity.error) {
+ succeeded = false;
+ }
}
List<int> kernel;
diff --git a/utils/compiler/BUILD.gn b/utils/compiler/BUILD.gn
index 0ccee9d..bc553a8 100644
--- a/utils/compiler/BUILD.gn
+++ b/utils/compiler/BUILD.gn
@@ -55,11 +55,14 @@
application_snapshot("dart2js") {
deps = [
":compile_dart2js_platform",
+ ":compile_dart2js_nnbd_strong_platform",
":dart2js_create_snapshot_entry",
]
inputs = [
"$root_out_dir/dart2js_platform.dill",
"$root_out_dir/dart2js_outline.dill",
+ "$root_out_dir/dart2js_nnbd_strong_platform.dill",
+ "$root_out_dir/dart2js_nnbd_strong_outline.dill",
]
vm_args = []
main_dart = "$target_gen_dir/dart2js.dart"
@@ -95,6 +98,30 @@
args += [ "--enable-experiment=non-nullable" ]
}
}
+compile_platform("compile_dart2js_nnbd_strong_platform") {
+ single_root_scheme = "org-dartlang-sdk"
+ single_root_base = rebase_path("../../")
+ libraries_specification_uri =
+ "org-dartlang-sdk:///$libraries_specification_path"
+
+ outputs = [
+ "$root_out_dir/dart2js_nnbd_strong_platform.dill",
+ "$root_out_dir/dart2js_nnbd_strong_outline.dill",
+ ]
+
+ args = [
+ "--target=dart2js",
+ "--no-defines",
+ "dart:core",
+ ]
+
+ if (!dont_use_nnbd) {
+ args += [
+ "--enable-experiment=non-nullable",
+ "--nnbd-strong",
+ ]
+ }
+}
compile_platform("compile_dart2js_server_platform") {
single_root_scheme = "org-dartlang-sdk"
single_root_base = rebase_path("../../")
@@ -116,3 +143,27 @@
args += [ "--enable-experiment=non-nullable" ]
}
}
+compile_platform("compile_dart2js_server_nnbd_strong_platform") {
+ single_root_scheme = "org-dartlang-sdk"
+ single_root_base = rebase_path("../../")
+ libraries_specification_uri =
+ "org-dartlang-sdk:///$libraries_specification_path"
+
+ outputs = [
+ "$root_out_dir/dart2js_server_nnbd_strong_platform.dill",
+ "$root_out_dir/dart2js_server_nnbd_strong_outline.dill",
+ ]
+
+ args = [
+ "--target=dart2js_server",
+ "--no-defines",
+ "dart:core",
+ ]
+
+ if (!dont_use_nnbd) {
+ args += [
+ "--enable-experiment=non-nullable",
+ "--nnbd-strong",
+ ]
+ }
+}
diff --git a/utils/dartdev/BUILD.gn b/utils/dartdev/BUILD.gn
index 44a5426..45a52ca 100644
--- a/utils/dartdev/BUILD.gn
+++ b/utils/dartdev/BUILD.gn
@@ -18,6 +18,13 @@
],
"list lines")
+dds_files = exec_script("../../tools/list_dart_files.py",
+ [
+ "absolute",
+ rebase_path("../../pkg/dds"),
+ ],
+ "list lines")
+
group("dartdev") {
deps = [ ":copy_dartdev_snapshot" ]
}
@@ -32,6 +39,6 @@
application_snapshot("generate_dartdev_snapshot") {
main_dart = "../../pkg/dartdev/bin/dartdev.dart"
training_args = [ "--help" ]
- inputs = dartdev_files + dartfix_files
+ inputs = dartdev_files + dartfix_files + dds_files
output = "$root_gen_dir/dartdev.dart.snapshot"
}
diff --git a/utils/dartdevc/BUILD.gn b/utils/dartdevc/BUILD.gn
index 3f4f974..fd3acc8 100644
--- a/utils/dartdevc/BUILD.gn
+++ b/utils/dartdevc/BUILD.gn
@@ -33,22 +33,9 @@
"-k",
"-o",
"dartdevc.js",
+ rebase_path("../../pkg/dev_compiler/bin/dartdevc.dart"),
]
- if (dont_use_nnbd) {
- training_args += [ rebase_path("../../pkg/dev_compiler/bin/dartdevc.dart") ]
- } else {
- training_args += [
- "--enable-experiment=non-nullable",
-
- # TODO(sigmund): restore training with dartdevc.dart. Currently blocked by
- # some regressions in type-promotion in the CFE when nnbd is enabled.
- # The following test file is pretty simple and has no imports, so it
- # should be easier to compile while we bootstrap NNBD.
- rebase_path("../../tests/language_2/abstract/equal_test.dart"),
- ]
- }
-
deps = [
":dartdevc_kernel_sdk",
":dartdevc_platform",